@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,380 @@
1
+ import { promises as fs } from "node:fs";
2
+ import path from "node:path";
3
+ import { ValidationError } from "../errors.js";
4
+ import { canonicalStoreFileStem, ensurePrivateDirectory, writePrivateFile } from "../store-security.js";
5
+ import { artifactParts, resolveArtifactServiceLimits, assertByteLimit, validateArtifactRecordLimits, normalizeArtifactRecord, artifactKey, externalBlobReference, validateArtifactLookup, matchesArtifactLookup, cloneArtifact, randomId, assertExpectedRevision, createArtifact, bytesFromBinaryInput, resolveBinarySha256, validateArtifactListInput, matchesListInput } from "./shared.js";
6
+ const fileNameForArtifact = (input) => `${canonicalStoreFileStem("artifact", artifactParts(input))}.json`;
7
+ const blobPathForArtifact = (input) => path.join("blobs", `${canonicalStoreFileStem("artifact", artifactParts(input))}.bin`);
8
+ const legacyFileNameForArtifact = (input) => artifactParts(input).map((part) => encodeURIComponent(part)).join("__") + ".json";
9
+ const legacyBlobPathForArtifact = (input) => path.join("blobs", artifactParts(input).map((part) => encodeURIComponent(part)).join("__") + ".bin");
10
+ const resolveFileArtifactBlobPath = (directory, artifact) => {
11
+ if (!artifact.blobPath) {
12
+ return undefined;
13
+ }
14
+ const normalizedBlobPath = path.normalize(artifact.blobPath);
15
+ const expectedBlobPaths = new Set([
16
+ blobPathForArtifact(artifact),
17
+ legacyBlobPathForArtifact(artifact)
18
+ ]);
19
+ if (!expectedBlobPaths.has(normalizedBlobPath)) {
20
+ throw new ValidationError(`Artifact "${artifact.id}" has an unsafe blobPath.`);
21
+ }
22
+ const root = path.resolve(directory);
23
+ const resolved = path.resolve(root, artifact.blobPath);
24
+ if (resolved !== root && !resolved.startsWith(`${root}${path.sep}`)) {
25
+ throw new ValidationError(`Artifact "${artifact.id}" blobPath escapes the configured directory.`);
26
+ }
27
+ return resolved;
28
+ };
29
+ const listFilesRecursive = async (directory) => {
30
+ try {
31
+ const entries = await fs.readdir(directory, { withFileTypes: true });
32
+ const files = await Promise.all(entries.map(async (entry) => {
33
+ const fullPath = path.join(directory, entry.name);
34
+ if (entry.isDirectory()) {
35
+ return listFilesRecursive(fullPath);
36
+ }
37
+ return [fullPath];
38
+ }));
39
+ return files.flat();
40
+ }
41
+ catch (error) {
42
+ if (error.code === "ENOENT") {
43
+ return [];
44
+ }
45
+ throw error;
46
+ }
47
+ };
48
+ export const inspectFileArtifactStore = async (options) => {
49
+ const limits = resolveArtifactServiceLimits(options.limits);
50
+ const artifacts = new Map();
51
+ const issues = [];
52
+ const referencedBlobPaths = new Set();
53
+ let entries = [];
54
+ try {
55
+ entries = await fs.readdir(options.directory);
56
+ }
57
+ catch (error) {
58
+ if (error.code !== "ENOENT") {
59
+ throw error;
60
+ }
61
+ }
62
+ for (const entry of entries) {
63
+ if (!entry.endsWith(".json")) {
64
+ continue;
65
+ }
66
+ const metadataPath = path.join(options.directory, entry);
67
+ try {
68
+ const stat = await fs.stat(metadataPath);
69
+ assertByteLimit(stat.size, limits.maxRecordBytes, "record");
70
+ const artifact = validateArtifactRecordLimits(normalizeArtifactRecord(JSON.parse(await fs.readFile(metadataPath, "utf8"))), limits);
71
+ const fullBlobPath = resolveFileArtifactBlobPath(options.directory, artifact);
72
+ const key = artifactKey(artifact);
73
+ if (!artifacts.has(key) || entry === fileNameForArtifact(artifact)) {
74
+ artifacts.set(key, artifact);
75
+ }
76
+ if (artifact.blobPath) {
77
+ referencedBlobPaths.add(path.normalize(artifact.blobPath));
78
+ }
79
+ if (artifact.storageMode === "binary") {
80
+ if (!artifact.blobPath) {
81
+ if (!externalBlobReference(artifact.metadata)) {
82
+ issues.push({
83
+ type: "missing-blob",
84
+ path: metadataPath,
85
+ artifact,
86
+ message: `Artifact "${artifact.id}" has no blobPath.`
87
+ });
88
+ }
89
+ }
90
+ else {
91
+ try {
92
+ await fs.stat(fullBlobPath);
93
+ }
94
+ catch (error) {
95
+ if (error.code === "ENOENT") {
96
+ issues.push({
97
+ type: "missing-blob",
98
+ path: fullBlobPath,
99
+ artifact,
100
+ message: `Artifact "${artifact.id}" references a missing blob.`
101
+ });
102
+ }
103
+ else {
104
+ throw error;
105
+ }
106
+ }
107
+ }
108
+ }
109
+ }
110
+ catch (error) {
111
+ issues.push({
112
+ type: "invalid-metadata",
113
+ path: metadataPath,
114
+ message: error instanceof Error ? error.message : String(error)
115
+ });
116
+ }
117
+ }
118
+ const blobRoot = path.join(options.directory, "blobs");
119
+ for (const blobFile of await listFilesRecursive(blobRoot)) {
120
+ const relative = path.normalize(path.relative(options.directory, blobFile));
121
+ if (!referencedBlobPaths.has(relative)) {
122
+ issues.push({
123
+ type: "orphan-blob",
124
+ path: blobFile,
125
+ message: `Blob "${relative}" is not referenced by artifact metadata.`
126
+ });
127
+ }
128
+ }
129
+ return {
130
+ directory: options.directory,
131
+ artifacts: [...artifacts.values()].sort((left, right) => left.createdAt - right.createdAt || left.id.localeCompare(right.id)),
132
+ issues
133
+ };
134
+ };
135
+ export const cleanupFileArtifactStore = async (options) => {
136
+ const inspection = await inspectFileArtifactStore(options);
137
+ const deletedBlobPaths = [];
138
+ for (const issue of inspection.issues) {
139
+ if (issue.type !== "orphan-blob") {
140
+ continue;
141
+ }
142
+ if (!options.dryRun) {
143
+ await fs.unlink(issue.path);
144
+ }
145
+ deletedBlobPaths.push(issue.path);
146
+ }
147
+ return {
148
+ ...inspection,
149
+ dryRun: Boolean(options.dryRun),
150
+ deletedBlobPaths
151
+ };
152
+ };
153
+ export const pruneFileArtifactStore = async (options) => {
154
+ const now = options.now ?? Date.now();
155
+ const dryRun = options.dryRun ?? true;
156
+ const inspection = await inspectFileArtifactStore({
157
+ directory: options.directory,
158
+ limits: options.limits
159
+ });
160
+ const sorted = inspection.artifacts.sort((left, right) => right.updatedAt - left.updatedAt || artifactKey(left).localeCompare(artifactKey(right)));
161
+ const keepByCount = new Set(options.keepLast === undefined ? [] : sorted.slice(0, Math.max(0, options.keepLast)).map((artifact) => artifactKey(artifact)));
162
+ const shouldDelete = (artifact) => !keepByCount.has(artifactKey(artifact)) &&
163
+ (options.olderThanMs !== undefined ? now - artifact.updatedAt > options.olderThanMs : options.keepLast !== undefined);
164
+ const deleted = sorted.filter(shouldDelete);
165
+ const deletedBlobPaths = deleted.flatMap((artifact) => artifact.blobPath ? [artifact.blobPath] : []);
166
+ if (!dryRun) {
167
+ for (const artifact of deleted) {
168
+ await fs.unlink(path.join(options.directory, fileNameForArtifact(artifact))).catch((error) => {
169
+ if (error.code !== "ENOENT") {
170
+ throw error;
171
+ }
172
+ });
173
+ if (artifact.blobPath) {
174
+ await fs.unlink(resolveFileArtifactBlobPath(options.directory, artifact)).catch((error) => {
175
+ if (error.code !== "ENOENT") {
176
+ throw error;
177
+ }
178
+ });
179
+ }
180
+ }
181
+ }
182
+ return {
183
+ directory: options.directory,
184
+ dryRun,
185
+ deletedArtifactKeys: deleted.map((artifact) => artifactKey(artifact)),
186
+ keptArtifactKeys: sorted.filter((artifact) => !shouldDelete(artifact)).map((artifact) => artifactKey(artifact)),
187
+ deletedBlobPaths
188
+ };
189
+ };
190
+ export const createFileArtifactService = (options) => {
191
+ const limits = resolveArtifactServiceLimits(options.limits);
192
+ const filePath = (input) => path.join(options.directory, fileNameForArtifact(input));
193
+ const binaryPath = (input) => path.join(options.directory, blobPathForArtifact(input));
194
+ const legacyFilePath = (input) => path.join(options.directory, legacyFileNameForArtifact(input));
195
+ const load = async (input) => {
196
+ validateArtifactLookup(input);
197
+ for (const candidate of [filePath(input), legacyFilePath(input)]) {
198
+ try {
199
+ const stat = await fs.stat(candidate);
200
+ assertByteLimit(stat.size, limits.maxRecordBytes, "record");
201
+ const content = await fs.readFile(candidate, "utf8");
202
+ const artifact = validateArtifactRecordLimits(normalizeArtifactRecord(JSON.parse(content)), limits);
203
+ if (!matchesArtifactLookup(artifact, input)) {
204
+ continue;
205
+ }
206
+ resolveFileArtifactBlobPath(options.directory, artifact);
207
+ return artifact;
208
+ }
209
+ catch (error) {
210
+ if (error.code !== "ENOENT") {
211
+ throw error;
212
+ }
213
+ }
214
+ }
215
+ return undefined;
216
+ };
217
+ const save = async (artifact) => {
218
+ await ensurePrivateDirectory(options.directory);
219
+ await writePrivateFile(filePath(artifact), JSON.stringify(cloneArtifact(artifact)));
220
+ try {
221
+ const legacyArtifact = normalizeArtifactRecord(JSON.parse(await fs.readFile(legacyFilePath(artifact), "utf8")));
222
+ if (matchesArtifactLookup(legacyArtifact, artifact)) {
223
+ const legacyBlob = resolveFileArtifactBlobPath(options.directory, legacyArtifact);
224
+ await fs.unlink(legacyFilePath(artifact));
225
+ if (legacyBlob && legacyArtifact.blobPath !== artifact.blobPath) {
226
+ await fs.unlink(legacyBlob).catch((error) => {
227
+ if (error.code !== "ENOENT") {
228
+ throw error;
229
+ }
230
+ });
231
+ }
232
+ }
233
+ }
234
+ catch (error) {
235
+ if (error.code !== "ENOENT") {
236
+ throw error;
237
+ }
238
+ }
239
+ };
240
+ return {
241
+ async saveArtifact(input) {
242
+ const id = input.id ?? randomId("art");
243
+ const lookup = {
244
+ appName: input.appName,
245
+ userId: input.userId,
246
+ sessionId: input.sessionId,
247
+ id
248
+ };
249
+ validateArtifactLookup(lookup);
250
+ const existing = await load(lookup);
251
+ assertExpectedRevision(existing, input.expectedRevision, "ArtifactRecord");
252
+ const artifact = createArtifact({ ...input, id }, limits, existing);
253
+ await save(artifact);
254
+ const existingBlob = binaryPath(lookup);
255
+ await fs.unlink(existingBlob).catch((error) => {
256
+ if (error.code !== "ENOENT") {
257
+ throw error;
258
+ }
259
+ });
260
+ return cloneArtifact(artifact);
261
+ },
262
+ async saveBinaryArtifact(input) {
263
+ const id = input.id ?? randomId("art");
264
+ const lookup = {
265
+ appName: input.appName,
266
+ userId: input.userId,
267
+ sessionId: input.sessionId,
268
+ id
269
+ };
270
+ validateArtifactLookup(lookup);
271
+ const bytes = bytesFromBinaryInput(input.data, limits.maxBinaryBytes);
272
+ const sha256 = resolveBinarySha256(bytes, input.sha256);
273
+ const blobPath = blobPathForArtifact(lookup);
274
+ const existing = await load(lookup);
275
+ assertExpectedRevision(existing, input.expectedRevision, "ArtifactRecord");
276
+ const artifact = createArtifact({
277
+ ...input,
278
+ id,
279
+ data: null,
280
+ encoding: "base64",
281
+ size: bytes.byteLength,
282
+ sha256,
283
+ storageMode: "binary"
284
+ }, limits, existing, { blobPath, managedBinary: true });
285
+ await ensurePrivateDirectory(path.dirname(binaryPath(lookup)));
286
+ await writePrivateFile(binaryPath(lookup), bytes);
287
+ await save(artifact);
288
+ return cloneArtifact(artifact);
289
+ },
290
+ async loadArtifact(input) {
291
+ return load(input);
292
+ },
293
+ async loadBinaryArtifact(input) {
294
+ const artifact = await load(input);
295
+ if (!artifact || artifact.storageMode !== "binary" || !artifact.blobPath) {
296
+ return undefined;
297
+ }
298
+ try {
299
+ const resolvedBlobPath = resolveFileArtifactBlobPath(options.directory, artifact);
300
+ const stat = await fs.stat(resolvedBlobPath);
301
+ assertByteLimit(stat.size, limits.maxBinaryBytes, "binary data");
302
+ const data = await fs.readFile(resolvedBlobPath);
303
+ assertByteLimit(data.byteLength, limits.maxBinaryBytes, "binary data");
304
+ return {
305
+ artifact,
306
+ data: new Uint8Array(data)
307
+ };
308
+ }
309
+ catch (error) {
310
+ if (error.code === "ENOENT") {
311
+ return undefined;
312
+ }
313
+ throw error;
314
+ }
315
+ },
316
+ async listArtifacts(input) {
317
+ validateArtifactListInput(input);
318
+ let entries;
319
+ try {
320
+ entries = await fs.readdir(options.directory);
321
+ }
322
+ catch (error) {
323
+ if (error.code === "ENOENT") {
324
+ return [];
325
+ }
326
+ throw error;
327
+ }
328
+ const artifacts = new Map();
329
+ for (const entry of entries) {
330
+ if (!entry.endsWith(".json")) {
331
+ continue;
332
+ }
333
+ const metadataPath = path.join(options.directory, entry);
334
+ const stat = await fs.stat(metadataPath);
335
+ assertByteLimit(stat.size, limits.maxRecordBytes, "record");
336
+ const content = await fs.readFile(metadataPath, "utf8");
337
+ const artifact = validateArtifactRecordLimits(normalizeArtifactRecord(JSON.parse(content)), limits);
338
+ resolveFileArtifactBlobPath(options.directory, artifact);
339
+ if (matchesListInput(artifact, input)) {
340
+ const key = artifactKey(artifact);
341
+ if (!artifacts.has(key) || entry === fileNameForArtifact(artifact)) {
342
+ artifacts.set(key, cloneArtifact(artifact));
343
+ }
344
+ }
345
+ }
346
+ return [...artifacts.values()].sort((left, right) => left.createdAt - right.createdAt || left.id.localeCompare(right.id));
347
+ },
348
+ async deleteArtifact(input) {
349
+ validateArtifactLookup(input);
350
+ const artifact = await load(input);
351
+ await fs.unlink(filePath(input)).catch((error) => {
352
+ if (error.code !== "ENOENT") {
353
+ throw error;
354
+ }
355
+ });
356
+ try {
357
+ const legacyArtifact = normalizeArtifactRecord(JSON.parse(await fs.readFile(legacyFilePath(input), "utf8")));
358
+ if (matchesArtifactLookup(legacyArtifact, input)) {
359
+ await fs.unlink(legacyFilePath(input));
360
+ }
361
+ }
362
+ catch (error) {
363
+ if (error.code !== "ENOENT") {
364
+ throw error;
365
+ }
366
+ }
367
+ if (artifact?.blobPath) {
368
+ try {
369
+ await fs.unlink(resolveFileArtifactBlobPath(options.directory, artifact));
370
+ }
371
+ catch (error) {
372
+ if (error.code !== "ENOENT") {
373
+ throw error;
374
+ }
375
+ }
376
+ }
377
+ }
378
+ };
379
+ };
380
+ //# sourceMappingURL=file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/artifact/file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type InMemoryArtifactServiceOptions, type ArtifactService } from "./shared.js";
2
+ export declare const createInMemoryArtifactService: (options?: InMemoryArtifactServiceOptions) => ArtifactService;
3
+ //# sourceMappingURL=memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/artifact/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,8BAA8B,EACnC,KAAK,eAAe,EAarB,MAAM,aAAa,CAAC;AAErB,eAAO,MAAM,6BAA6B,aAC/B,8BAA8B,KACtC,eAmFF,CAAC"}
@@ -0,0 +1,80 @@
1
+ import { resolveArtifactServiceLimits, randomId, validateArtifactLookup, artifactKey, assertExpectedRevision, createArtifact, cloneArtifact, bytesFromBinaryInput, resolveBinarySha256, validateArtifactListInput, matchesListInput } from "./shared.js";
2
+ export const createInMemoryArtifactService = (options = {}) => {
3
+ const limits = resolveArtifactServiceLimits(options.limits);
4
+ const artifacts = new Map();
5
+ const binaryData = new Map();
6
+ return {
7
+ saveArtifact(input) {
8
+ const id = input.id ?? randomId("art");
9
+ const lookup = {
10
+ appName: input.appName,
11
+ userId: input.userId,
12
+ sessionId: input.sessionId,
13
+ id
14
+ };
15
+ validateArtifactLookup(lookup);
16
+ const existing = artifacts.get(artifactKey(lookup));
17
+ assertExpectedRevision(existing, input.expectedRevision, "ArtifactRecord");
18
+ const artifact = createArtifact({ ...input, id }, limits, existing);
19
+ artifacts.set(artifactKey(lookup), cloneArtifact(artifact));
20
+ binaryData.delete(artifactKey(lookup));
21
+ return cloneArtifact(artifact);
22
+ },
23
+ saveBinaryArtifact(input) {
24
+ const id = input.id ?? randomId("art");
25
+ const lookup = {
26
+ appName: input.appName,
27
+ userId: input.userId,
28
+ sessionId: input.sessionId,
29
+ id
30
+ };
31
+ validateArtifactLookup(lookup);
32
+ const bytes = bytesFromBinaryInput(input.data, limits.maxBinaryBytes);
33
+ const sha256 = resolveBinarySha256(bytes, input.sha256);
34
+ const existing = artifacts.get(artifactKey(lookup));
35
+ assertExpectedRevision(existing, input.expectedRevision, "ArtifactRecord");
36
+ const artifact = createArtifact({
37
+ ...input,
38
+ id,
39
+ data: null,
40
+ encoding: "base64",
41
+ size: bytes.byteLength,
42
+ sha256,
43
+ storageMode: "binary"
44
+ }, limits, existing, { managedBinary: true });
45
+ artifacts.set(artifactKey(lookup), cloneArtifact(artifact));
46
+ binaryData.set(artifactKey(lookup), new Uint8Array(bytes));
47
+ return cloneArtifact(artifact);
48
+ },
49
+ loadArtifact(input) {
50
+ validateArtifactLookup(input);
51
+ const artifact = artifacts.get(artifactKey(input));
52
+ return artifact ? cloneArtifact(artifact) : undefined;
53
+ },
54
+ loadBinaryArtifact(input) {
55
+ validateArtifactLookup(input);
56
+ const artifact = artifacts.get(artifactKey(input));
57
+ const data = binaryData.get(artifactKey(input));
58
+ if (!artifact || !data) {
59
+ return undefined;
60
+ }
61
+ return {
62
+ artifact: cloneArtifact(artifact),
63
+ data: new Uint8Array(data)
64
+ };
65
+ },
66
+ listArtifacts(input) {
67
+ validateArtifactListInput(input);
68
+ return [...artifacts.values()]
69
+ .filter((artifact) => matchesListInput(artifact, input))
70
+ .sort((left, right) => left.createdAt - right.createdAt || left.id.localeCompare(right.id))
71
+ .map(cloneArtifact);
72
+ },
73
+ deleteArtifact(input) {
74
+ validateArtifactLookup(input);
75
+ artifacts.delete(artifactKey(input));
76
+ binaryData.delete(artifactKey(input));
77
+ }
78
+ };
79
+ };
80
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/artifact/memory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type PostgresArtifactServiceOptions, type ArtifactService } from "./shared.js";
2
+ export declare const createPostgresArtifactService: (options: PostgresArtifactServiceOptions) => ArtifactService;
3
+ //# sourceMappingURL=postgres.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../src/artifact/postgres.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,8BAA8B,EACnC,KAAK,eAAe,EAoBrB,MAAM,aAAa,CAAC;AAsBrB,eAAO,MAAM,6BAA6B,YAAa,8BAA8B,KAAG,eA6SvF,CAAC"}