@zhivex-ai/core 1.17.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 (272) 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-evaluation.d.ts.map +1 -1
  59. package/dist/agent-evaluation.js +2 -0
  60. package/dist/agent-evaluation.js.map +1 -1
  61. package/dist/agent-reconciliation.d.ts +12 -0
  62. package/dist/agent-reconciliation.d.ts.map +1 -0
  63. package/dist/agent-reconciliation.js +87 -0
  64. package/dist/agent-reconciliation.js.map +1 -0
  65. package/dist/agent-run-view.d.ts +9 -0
  66. package/dist/agent-run-view.d.ts.map +1 -0
  67. package/dist/agent-run-view.js +42 -0
  68. package/dist/agent-run-view.js.map +1 -0
  69. package/dist/agent-state.d.ts.map +1 -1
  70. package/dist/agent-state.js +34 -0
  71. package/dist/agent-state.js.map +1 -1
  72. package/dist/agent-store/file.d.ts +11 -0
  73. package/dist/agent-store/file.d.ts.map +1 -0
  74. package/dist/agent-store/file.js +534 -0
  75. package/dist/agent-store/file.js.map +1 -0
  76. package/dist/agent-store/memory.d.ts +9 -0
  77. package/dist/agent-store/memory.d.ts.map +1 -0
  78. package/dist/agent-store/memory.js +198 -0
  79. package/dist/agent-store/memory.js.map +1 -0
  80. package/dist/agent-store/postgres.d.ts +4 -0
  81. package/dist/agent-store/postgres.d.ts.map +1 -0
  82. package/dist/agent-store/postgres.js +374 -0
  83. package/dist/agent-store/postgres.js.map +1 -0
  84. package/dist/agent-store/shared.d.ts +19 -0
  85. package/dist/agent-store/shared.d.ts.map +1 -0
  86. package/dist/agent-store/shared.js +137 -0
  87. package/dist/agent-store/shared.js.map +1 -0
  88. package/dist/agent-store/sqlite.d.ts +4 -0
  89. package/dist/agent-store/sqlite.d.ts.map +1 -0
  90. package/dist/agent-store/sqlite.js +362 -0
  91. package/dist/agent-store/sqlite.js.map +1 -0
  92. package/dist/agent-store.d.ts +5 -21
  93. package/dist/agent-store.d.ts.map +1 -1
  94. package/dist/agent-store.js +5 -1540
  95. package/dist/agent-store.js.map +1 -1
  96. package/dist/agent.d.ts +6 -57
  97. package/dist/agent.d.ts.map +1 -1
  98. package/dist/agent.js +6 -2622
  99. package/dist/agent.js.map +1 -1
  100. package/dist/agents-entry.d.ts +19 -0
  101. package/dist/agents-entry.d.ts.map +1 -0
  102. package/dist/agents-entry.js +14 -0
  103. package/dist/agents-entry.js.map +1 -0
  104. package/dist/api-stability.d.ts.map +1 -1
  105. package/dist/api-stability.js +1 -0
  106. package/dist/api-stability.js.map +1 -1
  107. package/dist/artifact/file.d.ts +6 -0
  108. package/dist/artifact/file.d.ts.map +1 -0
  109. package/dist/artifact/file.js +380 -0
  110. package/dist/artifact/file.js.map +1 -0
  111. package/dist/artifact/memory.d.ts +3 -0
  112. package/dist/artifact/memory.d.ts.map +1 -0
  113. package/dist/artifact/memory.js +80 -0
  114. package/dist/artifact/memory.js.map +1 -0
  115. package/dist/artifact/postgres.d.ts +3 -0
  116. package/dist/artifact/postgres.d.ts.map +1 -0
  117. package/dist/artifact/postgres.js +283 -0
  118. package/dist/artifact/postgres.js.map +1 -0
  119. package/dist/artifact/shared.d.ts +208 -0
  120. package/dist/artifact/shared.d.ts.map +1 -0
  121. package/dist/artifact/shared.js +523 -0
  122. package/dist/artifact/shared.js.map +1 -0
  123. package/dist/artifact/sqlite.d.ts +3 -0
  124. package/dist/artifact/sqlite.d.ts.map +1 -0
  125. package/dist/artifact/sqlite.js +283 -0
  126. package/dist/artifact/sqlite.js.map +1 -0
  127. package/dist/artifact.d.ts +6 -186
  128. package/dist/artifact.d.ts.map +1 -1
  129. package/dist/artifact.js +6 -1536
  130. package/dist/artifact.js.map +1 -1
  131. package/dist/catalog-contracts.d.ts +52 -0
  132. package/dist/catalog-contracts.d.ts.map +1 -0
  133. package/dist/catalog-contracts.js +250 -0
  134. package/dist/catalog-contracts.js.map +1 -0
  135. package/dist/catalog.d.ts +3 -52
  136. package/dist/catalog.d.ts.map +1 -1
  137. package/dist/catalog.js +3 -249
  138. package/dist/catalog.js.map +1 -1
  139. package/dist/generate-cache-file.d.ts +11 -0
  140. package/dist/generate-cache-file.d.ts.map +1 -0
  141. package/dist/generate-cache-file.js +124 -0
  142. package/dist/generate-cache-file.js.map +1 -0
  143. package/dist/generate-text.d.ts +2 -5
  144. package/dist/generate-text.d.ts.map +1 -1
  145. package/dist/generate-text.js +3 -18
  146. package/dist/generate-text.js.map +1 -1
  147. package/dist/generation-entry.d.ts +6 -0
  148. package/dist/generation-entry.d.ts.map +1 -0
  149. package/dist/generation-entry.js +6 -0
  150. package/dist/generation-entry.js.map +1 -0
  151. package/dist/index.d.ts +3 -0
  152. package/dist/index.d.ts.map +1 -1
  153. package/dist/index.js +1 -0
  154. package/dist/index.js.map +1 -1
  155. package/dist/middleware-runtime.d.ts +35 -0
  156. package/dist/middleware-runtime.d.ts.map +1 -0
  157. package/dist/middleware-runtime.js +532 -0
  158. package/dist/middleware-runtime.js.map +1 -0
  159. package/dist/middleware.d.ts +3 -43
  160. package/dist/middleware.d.ts.map +1 -1
  161. package/dist/middleware.js +3 -653
  162. package/dist/middleware.js.map +1 -1
  163. package/dist/normalize-messages.d.ts +3 -0
  164. package/dist/normalize-messages.d.ts.map +1 -0
  165. package/dist/normalize-messages.js +16 -0
  166. package/dist/normalize-messages.js.map +1 -0
  167. package/dist/provider-entry.d.ts +17 -0
  168. package/dist/provider-entry.d.ts.map +1 -0
  169. package/dist/provider-entry.js +13 -0
  170. package/dist/provider-entry.js.map +1 -0
  171. package/dist/realtime.d.ts +2 -0
  172. package/dist/realtime.d.ts.map +1 -1
  173. package/dist/realtime.js +6 -0
  174. package/dist/realtime.js.map +1 -1
  175. package/dist/store-key.d.ts +3 -0
  176. package/dist/store-key.d.ts.map +1 -0
  177. package/dist/store-key.js +5 -0
  178. package/dist/store-key.js.map +1 -0
  179. package/dist/store-security.d.ts +1 -2
  180. package/dist/store-security.d.ts.map +1 -1
  181. package/dist/store-security.js +2 -4
  182. package/dist/store-security.js.map +1 -1
  183. package/dist/types/agent-state.d.ts +236 -0
  184. package/dist/types/agent-state.d.ts.map +1 -0
  185. package/dist/types/agent-state.js +2 -0
  186. package/dist/types/agent-state.js.map +1 -0
  187. package/dist/types/agents.d.ts +429 -0
  188. package/dist/types/agents.d.ts.map +1 -0
  189. package/dist/types/agents.js +2 -0
  190. package/dist/types/agents.js.map +1 -0
  191. package/dist/types/common.d.ts +179 -0
  192. package/dist/types/common.d.ts.map +1 -0
  193. package/dist/types/common.js +2 -0
  194. package/dist/types/common.js.map +1 -0
  195. package/dist/types/generation.d.ts +109 -0
  196. package/dist/types/generation.d.ts.map +1 -0
  197. package/dist/types/generation.js +2 -0
  198. package/dist/types/generation.js.map +1 -0
  199. package/dist/types/media-data.d.ts +65 -0
  200. package/dist/types/media-data.d.ts.map +1 -0
  201. package/dist/types/media-data.js +2 -0
  202. package/dist/types/media-data.js.map +1 -0
  203. package/dist/types/media.d.ts +141 -0
  204. package/dist/types/media.d.ts.map +1 -0
  205. package/dist/types/media.js +2 -0
  206. package/dist/types/media.js.map +1 -0
  207. package/dist/types/messages.d.ts +82 -0
  208. package/dist/types/messages.d.ts.map +1 -0
  209. package/dist/types/messages.js +2 -0
  210. package/dist/types/messages.js.map +1 -0
  211. package/dist/types/middleware.d.ts +130 -0
  212. package/dist/types/middleware.d.ts.map +1 -0
  213. package/dist/types/middleware.js +2 -0
  214. package/dist/types/middleware.js.map +1 -0
  215. package/dist/types/model-tools.d.ts +409 -0
  216. package/dist/types/model-tools.d.ts.map +1 -0
  217. package/dist/types/model-tools.js +2 -0
  218. package/dist/types/model-tools.js.map +1 -0
  219. package/dist/types/persistence.d.ts +168 -0
  220. package/dist/types/persistence.d.ts.map +1 -0
  221. package/dist/types/persistence.js +2 -0
  222. package/dist/types/persistence.js.map +1 -0
  223. package/dist/types/provider-resources.d.ts +336 -0
  224. package/dist/types/provider-resources.d.ts.map +1 -0
  225. package/dist/types/provider-resources.js +2 -0
  226. package/dist/types/provider-resources.js.map +1 -0
  227. package/dist/types/provider.d.ts +23 -0
  228. package/dist/types/provider.d.ts.map +1 -0
  229. package/dist/types/provider.js +2 -0
  230. package/dist/types/provider.js.map +1 -0
  231. package/dist/types/resource-options.d.ts +88 -0
  232. package/dist/types/resource-options.d.ts.map +1 -0
  233. package/dist/types/resource-options.js +2 -0
  234. package/dist/types/resource-options.js.map +1 -0
  235. package/dist/types/stream.d.ts +70 -0
  236. package/dist/types/stream.d.ts.map +1 -0
  237. package/dist/types/stream.js +2 -0
  238. package/dist/types/stream.js.map +1 -0
  239. package/dist/types/ui.d.ts +110 -0
  240. package/dist/types/ui.d.ts.map +1 -0
  241. package/dist/types/ui.js +2 -0
  242. package/dist/types/ui.js.map +1 -0
  243. package/dist/types.d.ts +16 -2442
  244. package/dist/types.d.ts.map +1 -1
  245. package/dist/ui.d.ts.map +1 -1
  246. package/dist/ui.js +2 -0
  247. package/dist/ui.js.map +1 -1
  248. package/dist/workflow-state-service/file.d.ts +5 -0
  249. package/dist/workflow-state-service/file.d.ts.map +1 -0
  250. package/dist/workflow-state-service/file.js +142 -0
  251. package/dist/workflow-state-service/file.js.map +1 -0
  252. package/dist/workflow-state-service/memory.d.ts +3 -0
  253. package/dist/workflow-state-service/memory.d.ts.map +1 -0
  254. package/dist/workflow-state-service/memory.js +27 -0
  255. package/dist/workflow-state-service/memory.js.map +1 -0
  256. package/dist/workflow-state-service/postgres.d.ts +4 -0
  257. package/dist/workflow-state-service/postgres.d.ts.map +1 -0
  258. package/dist/workflow-state-service/postgres.js +179 -0
  259. package/dist/workflow-state-service/postgres.js.map +1 -0
  260. package/dist/workflow-state-service/shared.d.ts +43 -0
  261. package/dist/workflow-state-service/shared.d.ts.map +1 -0
  262. package/dist/workflow-state-service/shared.js +107 -0
  263. package/dist/workflow-state-service/shared.js.map +1 -0
  264. package/dist/workflow-state-service/sqlite.d.ts +4 -0
  265. package/dist/workflow-state-service/sqlite.d.ts.map +1 -0
  266. package/dist/workflow-state-service/sqlite.js +183 -0
  267. package/dist/workflow-state-service/sqlite.js.map +1 -0
  268. package/dist/workflow-state-service.d.ts +6 -33
  269. package/dist/workflow-state-service.d.ts.map +1 -1
  270. package/dist/workflow-state-service.js +6 -626
  271. package/dist/workflow-state-service.js.map +1 -1
  272. package/package.json +17 -1
@@ -0,0 +1,283 @@
1
+ import { ConflictError } from "../errors.js";
2
+ import { assertPostgresClient } from "../postgres-client.js";
3
+ import { resolveArtifactServiceLimits, validateIdentifier, validateArtifactLookup, artifactKey, legacyArtifactKey, parseArtifactJson, getRecordField, matchesArtifactLookup, lookupFromArtifact, cloneArtifact, randomId, assertExpectedRevision, createArtifact, bytesFromBinaryInput, resolveBinarySha256, base64Bytes, validateArtifactListInput } from "./shared.js";
4
+ const ensurePostgresTable = (() => {
5
+ const initializedTables = new WeakMap();
6
+ return async (client, tableName, createSql) => {
7
+ let tables = initializedTables.get(client);
8
+ if (!tables) {
9
+ tables = new Map();
10
+ initializedTables.set(client, tables);
11
+ }
12
+ let initialization = tables.get(tableName);
13
+ if (!initialization) {
14
+ initialization = Promise.resolve(client.query(createSql, [])).then(() => undefined);
15
+ tables.set(tableName, initialization);
16
+ }
17
+ await initialization;
18
+ };
19
+ })();
20
+ export const createPostgresArtifactService = (options) => {
21
+ assertPostgresClient(options.client);
22
+ const limits = resolveArtifactServiceLimits(options.limits);
23
+ const tableName = validateIdentifier(options.tableName ?? "zhivex_artifacts", "tableName");
24
+ const createSql = `
25
+ CREATE TABLE IF NOT EXISTS ${tableName} (
26
+ artifact_key TEXT PRIMARY KEY,
27
+ app_name TEXT NOT NULL,
28
+ user_id TEXT NOT NULL,
29
+ session_id TEXT NOT NULL,
30
+ artifact_id TEXT NOT NULL,
31
+ workflow_run_id TEXT,
32
+ workflow_step_id TEXT,
33
+ agent_run_id TEXT,
34
+ artifact_json JSONB NOT NULL,
35
+ created_at_ms BIGINT NOT NULL,
36
+ updated_at_ms BIGINT NOT NULL
37
+ )
38
+ `;
39
+ const load = async (input) => {
40
+ validateArtifactLookup(input);
41
+ await ensurePostgresTable(options.client, tableName, createSql);
42
+ for (const key of [artifactKey(input), legacyArtifactKey(input)]) {
43
+ const result = await options.client.query(`SELECT artifact_json FROM ${tableName} WHERE artifact_key = $1`, [key]);
44
+ const artifact = parseArtifactJson(getRecordField(result.rows[0], ["artifact_json", "artifactJson"]), limits);
45
+ if (artifact && matchesArtifactLookup(artifact, input)) {
46
+ return artifact;
47
+ }
48
+ }
49
+ return undefined;
50
+ };
51
+ const save = async (artifact, saveOptions) => {
52
+ await ensurePostgresTable(options.client, tableName, createSql);
53
+ if (saveOptions?.expectedRevision === 0 && !saveOptions.existing) {
54
+ const result = await options.client.query(`INSERT INTO ${tableName} (
55
+ artifact_key,
56
+ app_name,
57
+ user_id,
58
+ session_id,
59
+ artifact_id,
60
+ workflow_run_id,
61
+ workflow_step_id,
62
+ agent_run_id,
63
+ artifact_json,
64
+ created_at_ms,
65
+ updated_at_ms
66
+ )
67
+ VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9::jsonb, $10, $11)
68
+ ON CONFLICT(artifact_key) DO NOTHING
69
+ RETURNING artifact_json`, [
70
+ artifactKey(lookupFromArtifact(artifact)),
71
+ artifact.appName,
72
+ artifact.userId,
73
+ artifact.sessionId,
74
+ artifact.id,
75
+ artifact.workflowRunId ?? null,
76
+ artifact.workflowStepId ?? null,
77
+ artifact.agentRunId ?? null,
78
+ JSON.stringify(artifact),
79
+ artifact.createdAt,
80
+ artifact.updatedAt
81
+ ]);
82
+ if (result.rows.length === 0) {
83
+ throw new ConflictError("ArtifactRecord revision conflict.");
84
+ }
85
+ }
86
+ else if (saveOptions?.expectedRevision !== undefined && saveOptions.existing) {
87
+ const result = await options.client.query(`UPDATE ${tableName}
88
+ SET app_name = $2,
89
+ user_id = $3,
90
+ session_id = $4,
91
+ artifact_id = $5,
92
+ workflow_run_id = $6,
93
+ workflow_step_id = $7,
94
+ agent_run_id = $8,
95
+ artifact_json = $9::jsonb,
96
+ updated_at_ms = $10
97
+ WHERE artifact_key = $1
98
+ AND updated_at_ms = $11
99
+ RETURNING artifact_json`, [
100
+ artifactKey(lookupFromArtifact(artifact)),
101
+ artifact.appName,
102
+ artifact.userId,
103
+ artifact.sessionId,
104
+ artifact.id,
105
+ artifact.workflowRunId ?? null,
106
+ artifact.workflowStepId ?? null,
107
+ artifact.agentRunId ?? null,
108
+ JSON.stringify(artifact),
109
+ artifact.updatedAt,
110
+ saveOptions.existing.updatedAt
111
+ ]);
112
+ if (result.rows.length === 0) {
113
+ const migrated = await options.client.query(`UPDATE ${tableName}
114
+ SET artifact_key = $1,
115
+ app_name = $2,
116
+ user_id = $3,
117
+ session_id = $4,
118
+ artifact_id = $5,
119
+ workflow_run_id = $6,
120
+ workflow_step_id = $7,
121
+ agent_run_id = $8,
122
+ artifact_json = $9::jsonb,
123
+ updated_at_ms = $10
124
+ WHERE artifact_key = $11
125
+ AND updated_at_ms = $12
126
+ RETURNING artifact_json`, [
127
+ artifactKey(artifact),
128
+ artifact.appName,
129
+ artifact.userId,
130
+ artifact.sessionId,
131
+ artifact.id,
132
+ artifact.workflowRunId ?? null,
133
+ artifact.workflowStepId ?? null,
134
+ artifact.agentRunId ?? null,
135
+ JSON.stringify(artifact),
136
+ artifact.updatedAt,
137
+ legacyArtifactKey(artifact),
138
+ saveOptions.existing.updatedAt
139
+ ]);
140
+ if (migrated.rows.length === 0) {
141
+ throw new ConflictError("ArtifactRecord revision conflict.");
142
+ }
143
+ }
144
+ }
145
+ else {
146
+ await options.client.query(`INSERT INTO ${tableName} (
147
+ artifact_key,
148
+ app_name,
149
+ user_id,
150
+ session_id,
151
+ artifact_id,
152
+ workflow_run_id,
153
+ workflow_step_id,
154
+ agent_run_id,
155
+ artifact_json,
156
+ created_at_ms,
157
+ updated_at_ms
158
+ )
159
+ VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9::jsonb, $10, $11)
160
+ ON CONFLICT(artifact_key) DO UPDATE SET
161
+ app_name = EXCLUDED.app_name,
162
+ user_id = EXCLUDED.user_id,
163
+ session_id = EXCLUDED.session_id,
164
+ artifact_id = EXCLUDED.artifact_id,
165
+ workflow_run_id = EXCLUDED.workflow_run_id,
166
+ workflow_step_id = EXCLUDED.workflow_step_id,
167
+ agent_run_id = EXCLUDED.agent_run_id,
168
+ artifact_json = EXCLUDED.artifact_json,
169
+ updated_at_ms = EXCLUDED.updated_at_ms`, [
170
+ artifactKey(lookupFromArtifact(artifact)),
171
+ artifact.appName,
172
+ artifact.userId,
173
+ artifact.sessionId,
174
+ artifact.id,
175
+ artifact.workflowRunId ?? null,
176
+ artifact.workflowStepId ?? null,
177
+ artifact.agentRunId ?? null,
178
+ JSON.stringify(artifact),
179
+ artifact.createdAt,
180
+ artifact.updatedAt
181
+ ]);
182
+ }
183
+ const legacyResult = await options.client.query(`SELECT artifact_json FROM ${tableName} WHERE artifact_key = $1`, [legacyArtifactKey(artifact)]);
184
+ const legacy = parseArtifactJson(getRecordField(legacyResult.rows[0], ["artifact_json", "artifactJson"]), limits);
185
+ if (legacy && matchesArtifactLookup(legacy, artifact)) {
186
+ await options.client.query(`DELETE FROM ${tableName} WHERE artifact_key = $1`, [legacyArtifactKey(artifact)]);
187
+ }
188
+ return cloneArtifact(artifact);
189
+ };
190
+ return {
191
+ async saveArtifact(input) {
192
+ const id = input.id ?? randomId("art");
193
+ validateArtifactLookup({ appName: input.appName, userId: input.userId, sessionId: input.sessionId, id });
194
+ const existing = await load({
195
+ appName: input.appName,
196
+ userId: input.userId,
197
+ sessionId: input.sessionId,
198
+ id
199
+ });
200
+ assertExpectedRevision(existing, input.expectedRevision, "ArtifactRecord");
201
+ return save(createArtifact({ ...input, id }, limits, existing), {
202
+ existing,
203
+ expectedRevision: input.expectedRevision
204
+ });
205
+ },
206
+ async saveBinaryArtifact(input) {
207
+ const id = input.id ?? randomId("art");
208
+ validateArtifactLookup({ appName: input.appName, userId: input.userId, sessionId: input.sessionId, id });
209
+ const bytes = bytesFromBinaryInput(input.data, limits.maxBinaryBytes);
210
+ const sha256 = resolveBinarySha256(bytes, input.sha256);
211
+ const existing = await load({
212
+ appName: input.appName,
213
+ userId: input.userId,
214
+ sessionId: input.sessionId,
215
+ id
216
+ });
217
+ assertExpectedRevision(existing, input.expectedRevision, "ArtifactRecord");
218
+ return save(createArtifact({
219
+ ...input,
220
+ id,
221
+ data: Buffer.from(bytes).toString("base64"),
222
+ encoding: "base64",
223
+ size: bytes.byteLength,
224
+ sha256,
225
+ storageMode: "json"
226
+ }, limits, existing), {
227
+ existing,
228
+ expectedRevision: input.expectedRevision
229
+ });
230
+ },
231
+ loadArtifact(input) {
232
+ return load(input);
233
+ },
234
+ async loadBinaryArtifact(input) {
235
+ const artifact = await load(input);
236
+ if (!artifact || artifact.encoding !== "base64" || typeof artifact.data !== "string") {
237
+ return undefined;
238
+ }
239
+ return {
240
+ artifact,
241
+ data: base64Bytes(artifact.data, limits.maxBase64Bytes)
242
+ };
243
+ },
244
+ async listArtifacts(input) {
245
+ validateArtifactListInput(input);
246
+ await ensurePostgresTable(options.client, tableName, createSql);
247
+ const result = await options.client.query(`SELECT artifact_json FROM ${tableName}
248
+ WHERE app_name = $1
249
+ AND user_id = $2
250
+ AND session_id = $3
251
+ AND ($4::text IS NULL OR workflow_run_id = $4)
252
+ AND ($5::text IS NULL OR workflow_step_id = $5)
253
+ AND ($6::text IS NULL OR agent_run_id = $6)
254
+ ORDER BY created_at_ms ASC, artifact_id ASC`, [
255
+ input.appName,
256
+ input.userId,
257
+ input.sessionId,
258
+ input.workflowRunId ?? null,
259
+ input.workflowStepId ?? null,
260
+ input.agentRunId ?? null
261
+ ]);
262
+ const artifacts = new Map();
263
+ for (const row of result.rows) {
264
+ const artifact = parseArtifactJson(getRecordField(row, ["artifact_json", "artifactJson"]), limits);
265
+ if (artifact) {
266
+ artifacts.set(artifactKey(artifact), artifact);
267
+ }
268
+ }
269
+ return [...artifacts.values()];
270
+ },
271
+ async deleteArtifact(input) {
272
+ validateArtifactLookup(input);
273
+ await ensurePostgresTable(options.client, tableName, createSql);
274
+ await options.client.query(`DELETE FROM ${tableName} WHERE artifact_key = $1`, [artifactKey(input)]);
275
+ const legacyResult = await options.client.query(`SELECT artifact_json FROM ${tableName} WHERE artifact_key = $1`, [legacyArtifactKey(input)]);
276
+ const legacy = parseArtifactJson(getRecordField(legacyResult.rows[0], ["artifact_json", "artifactJson"]), limits);
277
+ if (legacy && matchesArtifactLookup(legacy, input)) {
278
+ await options.client.query(`DELETE FROM ${tableName} WHERE artifact_key = $1`, [legacyArtifactKey(input)]);
279
+ }
280
+ }
281
+ };
282
+ };
283
+ //# sourceMappingURL=postgres.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../src/artifact/postgres.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,EAGL,4BAA4B,EAC5B,kBAAkB,EAGlB,sBAAsB,EACtB,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EAClB,aAAa,EACb,QAAQ,EACR,sBAAsB,EACtB,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,WAAW,EACX,yBAAyB,EAC1B,MAAM,aAAa,CAAC;AAErB,MAAM,mBAAmB,GAAG,CAAC,GAAG,EAAE;IAChC,MAAM,iBAAiB,GAAG,IAAI,OAAO,EAAkD,CAAC;IAExF,OAAO,KAAK,EAAE,MAA0B,EAAE,SAAiB,EAAE,SAAiB,EAAE,EAAE;QAChF,IAAI,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,IAAI,GAAG,EAAyB,CAAC;YAC1C,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxC,CAAC;QAED,IAAI,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YACpF,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,cAAc,CAAC;IACvB,CAAC,CAAC;AACJ,CAAC,CAAC,EAAE,CAAC;AAEL,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,OAAuC,EAAmB,EAAE;IACxG,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,4BAA4B,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC,SAAS,IAAI,kBAAkB,EAAE,WAAW,CAAC,CAAC;IAC3F,MAAM,SAAS,GAAG;iCACa,SAAS;;;;;;;;;;;;;GAavC,CAAC;IAEF,MAAM,IAAI,GAAG,KAAK,EAAE,KAAqB,EAAuC,EAAE;QAChF,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,mBAAmB,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAChE,KAAK,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACjE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,CACvC,6BAA6B,SAAS,0BAA0B,EAChE,CAAC,GAAG,CAAC,CACN,CAAC;YACF,MAAM,QAAQ,GAAG,iBAAiB,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YAC9G,IAAI,QAAQ,IAAI,qBAAqB,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;gBACvD,OAAO,QAAQ,CAAC;YAClB,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,KAAK,EAChB,QAAwB,EACxB,WAAsE,EAC7C,EAAE;QAC3B,MAAM,mBAAmB,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAChE,IAAI,WAAW,EAAE,gBAAgB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;YACjE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,CACvC,eAAe,SAAS;;;;;;;;;;;;;;;iCAeC,EACzB;gBACE,WAAW,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;gBACzC,QAAQ,CAAC,OAAO;gBAChB,QAAQ,CAAC,MAAM;gBACf,QAAQ,CAAC,SAAS;gBAClB,QAAQ,CAAC,EAAE;gBACX,QAAQ,CAAC,aAAa,IAAI,IAAI;gBAC9B,QAAQ,CAAC,cAAc,IAAI,IAAI;gBAC/B,QAAQ,CAAC,UAAU,IAAI,IAAI;gBAC3B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;gBACxB,QAAQ,CAAC,SAAS;gBAClB,QAAQ,CAAC,SAAS;aACnB,CACF,CAAC;YACF,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,aAAa,CAAC,mCAAmC,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;aAAM,IAAI,WAAW,EAAE,gBAAgB,KAAK,SAAS,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC/E,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,CACvC,UAAU,SAAS;;;;;;;;;;;;iCAYM,EACzB;gBACE,WAAW,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;gBACzC,QAAQ,CAAC,OAAO;gBAChB,QAAQ,CAAC,MAAM;gBACf,QAAQ,CAAC,SAAS;gBAClB,QAAQ,CAAC,EAAE;gBACX,QAAQ,CAAC,aAAa,IAAI,IAAI;gBAC9B,QAAQ,CAAC,cAAc,IAAI,IAAI;gBAC/B,QAAQ,CAAC,UAAU,IAAI,IAAI;gBAC3B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;gBACxB,QAAQ,CAAC,SAAS;gBAClB,WAAW,CAAC,QAAQ,CAAC,SAAS;aAC/B,CACF,CAAC;YACF,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,CACzC,UAAU,SAAS;;;;;;;;;;;;;mCAaM,EACzB;oBACE,WAAW,CAAC,QAAQ,CAAC;oBACrB,QAAQ,CAAC,OAAO;oBAChB,QAAQ,CAAC,MAAM;oBACf,QAAQ,CAAC,SAAS;oBAClB,QAAQ,CAAC,EAAE;oBACX,QAAQ,CAAC,aAAa,IAAI,IAAI;oBAC9B,QAAQ,CAAC,cAAc,IAAI,IAAI;oBAC/B,QAAQ,CAAC,UAAU,IAAI,IAAI;oBAC3B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;oBACxB,QAAQ,CAAC,SAAS;oBAClB,iBAAiB,CAAC,QAAQ,CAAC;oBAC3B,WAAW,CAAC,QAAQ,CAAC,SAAS;iBAC/B,CACF,CAAC;gBACF,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC/B,MAAM,IAAI,aAAa,CAAC,mCAAmC,CAAC,CAAC;gBAC/D,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,CACxB,eAAe,SAAS;;;;;;;;;;;;;;;;;;;;;;;kDAuBkB,EAC1C;gBACE,WAAW,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;gBACzC,QAAQ,CAAC,OAAO;gBAChB,QAAQ,CAAC,MAAM;gBACf,QAAQ,CAAC,SAAS;gBAClB,QAAQ,CAAC,EAAE;gBACX,QAAQ,CAAC,aAAa,IAAI,IAAI;gBAC9B,QAAQ,CAAC,cAAc,IAAI,IAAI;gBAC/B,QAAQ,CAAC,UAAU,IAAI,IAAI;gBAC3B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;gBACxB,QAAQ,CAAC,SAAS;gBAClB,QAAQ,CAAC,SAAS;aACnB,CACF,CAAC;QACJ,CAAC;QACD,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,CAC7C,6BAA6B,SAAS,0BAA0B,EAChE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAC9B,CAAC;QACF,MAAM,MAAM,GAAG,iBAAiB,CAC9B,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,EACvE,MAAM,CACP,CAAC;QACF,IAAI,MAAM,IAAI,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC;YACtD,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,SAAS,0BAA0B,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAChH,CAAC;QACD,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC,CAAC;IAEF,OAAO;QACL,KAAK,CAAC,YAAY,CAAC,KAAK;YACtB,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;YACvC,sBAAsB,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;YACzG,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC;gBAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,EAAE;aACH,CAAC,CAAC;YACH,sBAAsB,CAAC,QAAQ,EAAE,KAAK,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;YAC3E,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE;gBAC9D,QAAQ;gBACR,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;aACzC,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,kBAAkB,CAAC,KAAK;YAC5B,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;YACvC,sBAAsB,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;YACzG,MAAM,KAAK,GAAG,oBAAoB,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;YACtE,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YACxD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC;gBAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,EAAE;aACH,CAAC,CAAC;YACH,sBAAsB,CAAC,QAAQ,EAAE,KAAK,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;YAC3E,OAAO,IAAI,CAAC,cAAc,CAAC;gBACzB,GAAG,KAAK;gBACR,EAAE;gBACF,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAC3C,QAAQ,EAAE,QAAQ;gBAClB,IAAI,EAAE,KAAK,CAAC,UAAU;gBACtB,MAAM;gBACN,WAAW,EAAE,MAAM;aACpB,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE;gBACpB,QAAQ;gBACR,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;aACzC,CAAC,CAAC;QACL,CAAC;QAED,YAAY,CAAC,KAAK;YAChB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QAED,KAAK,CAAC,kBAAkB,CAAC,KAAK;YAC5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACrF,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,OAAO;gBACL,QAAQ;gBACR,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,cAAc,CAAC;aACxD,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,aAAa,CAAC,KAAK;YACvB,yBAAyB,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,mBAAmB,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YAChE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,CACvC,6BAA6B,SAAS;;;;;;;qDAOO,EAC7C;gBACE,KAAK,CAAC,OAAO;gBACb,KAAK,CAAC,MAAM;gBACZ,KAAK,CAAC,SAAS;gBACf,KAAK,CAAC,aAAa,IAAI,IAAI;gBAC3B,KAAK,CAAC,cAAc,IAAI,IAAI;gBAC5B,KAAK,CAAC,UAAU,IAAI,IAAI;aACzB,CACF,CAAC;YACF,MAAM,SAAS,GAAG,IAAI,GAAG,EAA0B,CAAC;YACpD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC9B,MAAM,QAAQ,GAAG,iBAAiB,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBACnG,IAAI,QAAQ,EAAE,CAAC;oBACb,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;YACD,OAAO,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;QACjC,CAAC;QAED,KAAK,CAAC,cAAc,CAAC,KAAK;YACxB,sBAAsB,CAAC,KAAK,CAAC,CAAC;YAC9B,MAAM,mBAAmB,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YAChE,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,SAAS,0BAA0B,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACrG,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,CAC7C,6BAA6B,SAAS,0BAA0B,EAChE,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAC3B,CAAC;YACF,MAAM,MAAM,GAAG,iBAAiB,CAC9B,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,EACvE,MAAM,CACP,CAAC;YACF,IAAI,MAAM,IAAI,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;gBACnD,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,SAAS,0BAA0B,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC7G,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,208 @@
1
+ import type { JsonValue, PostgresClientLike, SqliteDatabaseLike } from "../types.js";
2
+ export declare const randomId: (prefix: string) => string;
3
+ export declare const ARTIFACT_SCHEMA_VERSION: 1;
4
+ export interface ArtifactServiceLimits {
5
+ maxJsonBytes?: number;
6
+ maxTextBytes?: number;
7
+ maxBase64Bytes?: number;
8
+ maxBinaryBytes?: number;
9
+ maxMetadataBytes?: number;
10
+ maxRecordBytes?: number;
11
+ }
12
+ export interface ResolvedArtifactServiceLimits {
13
+ maxJsonBytes: number;
14
+ maxTextBytes: number;
15
+ maxBase64Bytes: number;
16
+ maxBinaryBytes: number;
17
+ maxMetadataBytes: number;
18
+ maxRecordBytes: number;
19
+ }
20
+ export declare const DEFAULT_ARTIFACT_SERVICE_LIMITS: Readonly<ResolvedArtifactServiceLimits>;
21
+ export interface ArtifactServiceOptions {
22
+ limits?: ArtifactServiceLimits;
23
+ }
24
+ export interface ArtifactLookup {
25
+ appName: string;
26
+ userId: string;
27
+ sessionId: string;
28
+ id: string;
29
+ }
30
+ export interface ArtifactListInput {
31
+ appName: string;
32
+ userId: string;
33
+ sessionId: string;
34
+ workflowRunId?: string;
35
+ workflowStepId?: string;
36
+ agentRunId?: string;
37
+ }
38
+ export interface ArtifactSaveInput {
39
+ appName: string;
40
+ userId: string;
41
+ sessionId: string;
42
+ id?: string;
43
+ workflowRunId?: string;
44
+ workflowStepId?: string;
45
+ agentRunId?: string;
46
+ name: string;
47
+ contentType: string;
48
+ data: JsonValue | string;
49
+ encoding?: ArtifactEncoding;
50
+ size?: number;
51
+ sha256?: string;
52
+ storageMode?: ArtifactStorageMode;
53
+ expectedRevision?: number;
54
+ metadata?: Record<string, JsonValue>;
55
+ }
56
+ export type ArtifactEncoding = "json" | "text" | "base64";
57
+ export type ArtifactStorageMode = "json" | "binary";
58
+ export interface ArtifactRecord {
59
+ schemaVersion: typeof ARTIFACT_SCHEMA_VERSION;
60
+ revision: number;
61
+ id: string;
62
+ appName: string;
63
+ userId: string;
64
+ sessionId: string;
65
+ workflowRunId?: string;
66
+ workflowStepId?: string;
67
+ agentRunId?: string;
68
+ name: string;
69
+ contentType: string;
70
+ data: JsonValue | string;
71
+ encoding?: ArtifactEncoding;
72
+ size?: number;
73
+ sha256?: string;
74
+ storageMode?: ArtifactStorageMode;
75
+ blobPath?: string;
76
+ metadata?: Record<string, JsonValue>;
77
+ createdAt: number;
78
+ updatedAt: number;
79
+ }
80
+ export interface ArtifactBinarySaveInput extends Omit<ArtifactSaveInput, "data" | "encoding" | "size" | "sha256"> {
81
+ data: string | ArrayBuffer | Uint8Array;
82
+ sha256?: string;
83
+ metadata?: Record<string, JsonValue>;
84
+ }
85
+ export interface ArtifactBinaryLoadOutput {
86
+ artifact: ArtifactRecord;
87
+ data: Uint8Array;
88
+ }
89
+ export interface Base64ArtifactDataInput {
90
+ data: string | ArrayBuffer | Uint8Array;
91
+ }
92
+ export interface Base64ArtifactData {
93
+ data: string;
94
+ encoding: "base64";
95
+ size: number;
96
+ }
97
+ export interface ArtifactService {
98
+ saveArtifact(input: ArtifactSaveInput): Promise<ArtifactRecord> | ArtifactRecord;
99
+ saveBinaryArtifact(input: ArtifactBinarySaveInput): Promise<ArtifactRecord> | ArtifactRecord;
100
+ loadArtifact(input: ArtifactLookup): Promise<ArtifactRecord | undefined> | ArtifactRecord | undefined;
101
+ loadBinaryArtifact(input: ArtifactLookup): Promise<ArtifactBinaryLoadOutput | undefined> | ArtifactBinaryLoadOutput | undefined;
102
+ listArtifacts(input: ArtifactListInput): Promise<ArtifactRecord[]> | ArtifactRecord[];
103
+ deleteArtifact(input: ArtifactLookup): Promise<void> | void;
104
+ }
105
+ export interface InMemoryArtifactServiceOptions extends ArtifactServiceOptions {
106
+ }
107
+ export interface FileArtifactServiceOptions extends ArtifactServiceOptions {
108
+ directory: string;
109
+ }
110
+ export interface SqliteArtifactServiceOptions extends ArtifactServiceOptions {
111
+ db: SqliteDatabaseLike;
112
+ tableName?: string;
113
+ }
114
+ export interface PostgresArtifactServiceOptions extends ArtifactServiceOptions {
115
+ client: PostgresClientLike;
116
+ tableName?: string;
117
+ }
118
+ export interface ArtifactIntegrityIssue {
119
+ type: "missing-artifact" | "missing-blob" | "external-data-unavailable" | "size-mismatch" | "sha256-mismatch" | "invalid-base64" | "metadata-invalid";
120
+ message: string;
121
+ expected?: JsonValue;
122
+ actual?: JsonValue;
123
+ }
124
+ export interface ArtifactIntegrityResult {
125
+ ok: boolean;
126
+ artifact?: ArtifactRecord;
127
+ issues: ArtifactIntegrityIssue[];
128
+ }
129
+ export interface FileArtifactStoreInspectionIssue {
130
+ type: "orphan-blob" | "missing-blob" | "invalid-metadata";
131
+ path: string;
132
+ artifact?: ArtifactRecord;
133
+ message: string;
134
+ }
135
+ export interface FileArtifactStoreInspection {
136
+ directory: string;
137
+ artifacts: ArtifactRecord[];
138
+ issues: FileArtifactStoreInspectionIssue[];
139
+ }
140
+ export interface FileArtifactStoreCleanupOptions extends FileArtifactServiceOptions {
141
+ dryRun?: boolean;
142
+ }
143
+ export interface FileArtifactStoreCleanupResult extends FileArtifactStoreInspection {
144
+ dryRun: boolean;
145
+ deletedBlobPaths: string[];
146
+ }
147
+ export interface FileArtifactStorePruneOptions extends FileArtifactServiceOptions {
148
+ olderThanMs?: number;
149
+ keepLast?: number;
150
+ now?: number;
151
+ dryRun?: boolean;
152
+ }
153
+ export interface FileArtifactStorePruneResult {
154
+ directory: string;
155
+ dryRun: boolean;
156
+ deletedArtifactKeys: string[];
157
+ keptArtifactKeys: string[];
158
+ deletedBlobPaths: string[];
159
+ }
160
+ export interface ExternalArtifactReferenceInput {
161
+ uri: string;
162
+ size?: number;
163
+ sha256?: string;
164
+ metadata?: Record<string, JsonValue>;
165
+ }
166
+ export interface ExternalArtifactReference {
167
+ data: null;
168
+ storageMode: "binary";
169
+ metadata: Record<string, JsonValue>;
170
+ size?: number;
171
+ sha256?: string;
172
+ }
173
+ export type ArtifactRecordMigrationTarget = typeof ARTIFACT_SCHEMA_VERSION;
174
+ export declare const artifactParts: (input: ArtifactLookup) => readonly [string, string, string, string];
175
+ export declare const artifactKey: (input: ArtifactLookup) => string;
176
+ export declare const legacyArtifactKey: (input: ArtifactLookup) => string;
177
+ export declare const matchesArtifactLookup: (artifact: ArtifactRecord, input: ArtifactLookup) => boolean;
178
+ export declare const resolveArtifactServiceLimits: (limits?: ArtifactServiceLimits) => ResolvedArtifactServiceLimits;
179
+ export declare const assertByteLimit: (actual: number, maximum: number, fieldName: string) => void;
180
+ export declare const validateArtifactLookup: (input: ArtifactLookup) => void;
181
+ export declare const validateArtifactListInput: (input: ArtifactListInput) => void;
182
+ export declare const externalBlobReference: (metadata: Record<string, JsonValue> | undefined) => {
183
+ uri: string;
184
+ } | undefined;
185
+ export declare const normalizeArtifactRecord: (value: unknown) => ArtifactRecord;
186
+ export declare const migrateArtifactRecord: (value: unknown, targetVersion?: ArtifactRecordMigrationTarget) => ArtifactRecord;
187
+ export declare const cloneArtifact: (artifact: ArtifactRecord) => ArtifactRecord;
188
+ export declare const bytesFromBinaryInput: (data: string | ArrayBuffer | Uint8Array, maxBytes: number) => Uint8Array;
189
+ export declare const resolveBinarySha256: (data: Uint8Array, expectedSha256: string | undefined) => string;
190
+ export declare const assertExpectedRevision: (current: {
191
+ revision: number;
192
+ } | undefined, expectedRevision: number | undefined, resource: string) => void;
193
+ export declare const base64Bytes: (value: string, maxBytes: number) => Uint8Array;
194
+ export declare const validateArtifactRecordLimits: (artifact: ArtifactRecord, limits: ResolvedArtifactServiceLimits) => ArtifactRecord;
195
+ export declare const validateIdentifier: (value: string, fieldName: string) => string;
196
+ export declare const getRecordField: (value: unknown, candidates: string[]) => unknown;
197
+ export declare const parseArtifactJson: (value: unknown, limits: ResolvedArtifactServiceLimits) => ArtifactRecord | undefined;
198
+ export declare const createArtifact: (input: ArtifactSaveInput, limits: ResolvedArtifactServiceLimits, existing?: ArtifactRecord, internal?: {
199
+ blobPath?: string;
200
+ managedBinary?: boolean;
201
+ }) => ArtifactRecord;
202
+ export declare const matchesListInput: (artifact: ArtifactRecord, input: ArtifactListInput) => boolean;
203
+ export declare const lookupFromArtifact: (artifact: ArtifactRecord) => ArtifactLookup;
204
+ export declare const createBase64ArtifactData: (input: Base64ArtifactDataInput | string | ArrayBuffer | Uint8Array, limits?: ArtifactServiceLimits) => Base64ArtifactData;
205
+ export declare const createExternalArtifactReference: (input: ExternalArtifactReferenceInput, limits?: ArtifactServiceLimits) => ExternalArtifactReference;
206
+ export declare const verifyArtifactRecordIntegrity: (record: ArtifactRecord, data?: Uint8Array, limits?: ArtifactServiceLimits) => ArtifactIntegrityResult;
207
+ export declare const verifyArtifactIntegrity: (service: ArtifactService, lookup: ArtifactLookup, limits?: ArtifactServiceLimits) => Promise<ArtifactIntegrityResult>;
208
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/artifact/shared.ts"],"names":[],"mappings":"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"}