@vertesia/client 0.24.0-dev.202601221707

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 (339) hide show
  1. package/LICENSE +13 -0
  2. package/README.md +110 -0
  3. package/lib/cjs/AccountApi.js +85 -0
  4. package/lib/cjs/AccountApi.js.map +1 -0
  5. package/lib/cjs/AccountsApi.js +16 -0
  6. package/lib/cjs/AccountsApi.js.map +1 -0
  7. package/lib/cjs/AnalyticsApi.js +41 -0
  8. package/lib/cjs/AnalyticsApi.js.map +1 -0
  9. package/lib/cjs/ApiKeysApi.js +63 -0
  10. package/lib/cjs/ApiKeysApi.js.map +1 -0
  11. package/lib/cjs/AppsApi.js +119 -0
  12. package/lib/cjs/AppsApi.js.map +1 -0
  13. package/lib/cjs/CommandsApi.js +19 -0
  14. package/lib/cjs/CommandsApi.js.map +1 -0
  15. package/lib/cjs/EnvironmentsApi.js +72 -0
  16. package/lib/cjs/EnvironmentsApi.js.map +1 -0
  17. package/lib/cjs/GroupsApi.js +78 -0
  18. package/lib/cjs/GroupsApi.js.map +1 -0
  19. package/lib/cjs/IamApi.js +53 -0
  20. package/lib/cjs/IamApi.js.map +1 -0
  21. package/lib/cjs/InteractionBase.js +44 -0
  22. package/lib/cjs/InteractionBase.js.map +1 -0
  23. package/lib/cjs/InteractionCatalogApi.js +64 -0
  24. package/lib/cjs/InteractionCatalogApi.js.map +1 -0
  25. package/lib/cjs/InteractionOutput.js +300 -0
  26. package/lib/cjs/InteractionOutput.js.map +1 -0
  27. package/lib/cjs/InteractionResult.example.js +57 -0
  28. package/lib/cjs/InteractionResult.example.js.map +1 -0
  29. package/lib/cjs/InteractionsApi.js +262 -0
  30. package/lib/cjs/InteractionsApi.js.map +1 -0
  31. package/lib/cjs/MCPOAuthApi.js +62 -0
  32. package/lib/cjs/MCPOAuthApi.js.map +1 -0
  33. package/lib/cjs/ProjectsApi.js +72 -0
  34. package/lib/cjs/ProjectsApi.js.map +1 -0
  35. package/lib/cjs/PromptsApi.js +133 -0
  36. package/lib/cjs/PromptsApi.js.map +1 -0
  37. package/lib/cjs/RefsApi.js +14 -0
  38. package/lib/cjs/RefsApi.js.map +1 -0
  39. package/lib/cjs/RunsApi.js +113 -0
  40. package/lib/cjs/RunsApi.js.map +1 -0
  41. package/lib/cjs/SkillsApi.js +39 -0
  42. package/lib/cjs/SkillsApi.js.map +1 -0
  43. package/lib/cjs/StreamSource.js +17 -0
  44. package/lib/cjs/StreamSource.js.map +1 -0
  45. package/lib/cjs/TrainingApi.js +54 -0
  46. package/lib/cjs/TrainingApi.js.map +1 -0
  47. package/lib/cjs/UsersApi.js +13 -0
  48. package/lib/cjs/UsersApi.js.map +1 -0
  49. package/lib/cjs/client.js +360 -0
  50. package/lib/cjs/client.js.map +1 -0
  51. package/lib/cjs/execute.js +158 -0
  52. package/lib/cjs/execute.js.map +1 -0
  53. package/lib/cjs/index.js +22 -0
  54. package/lib/cjs/index.js.map +1 -0
  55. package/lib/cjs/nodejs/NodeStreamSource.js +45 -0
  56. package/lib/cjs/nodejs/NodeStreamSource.js.map +1 -0
  57. package/lib/cjs/nodejs/index.js +18 -0
  58. package/lib/cjs/nodejs/index.js.map +1 -0
  59. package/lib/cjs/package.json +3 -0
  60. package/lib/cjs/store/AnalyzeDocApi.js +56 -0
  61. package/lib/cjs/store/AnalyzeDocApi.js.map +1 -0
  62. package/lib/cjs/store/CollectionsApi.js +131 -0
  63. package/lib/cjs/store/CollectionsApi.js.map +1 -0
  64. package/lib/cjs/store/CommandsApi.js +17 -0
  65. package/lib/cjs/store/CommandsApi.js.map +1 -0
  66. package/lib/cjs/store/DashboardApi.js +182 -0
  67. package/lib/cjs/store/DashboardApi.js.map +1 -0
  68. package/lib/cjs/store/DataApi.js +433 -0
  69. package/lib/cjs/store/DataApi.js.map +1 -0
  70. package/lib/cjs/store/EmailApi.js +103 -0
  71. package/lib/cjs/store/EmailApi.js.map +1 -0
  72. package/lib/cjs/store/EmbeddingsApi.js +29 -0
  73. package/lib/cjs/store/EmbeddingsApi.js.map +1 -0
  74. package/lib/cjs/store/FilesApi.js +237 -0
  75. package/lib/cjs/store/FilesApi.js.map +1 -0
  76. package/lib/cjs/store/ObjectsApi.js +314 -0
  77. package/lib/cjs/store/ObjectsApi.js.map +1 -0
  78. package/lib/cjs/store/PendingAsksApi.js +43 -0
  79. package/lib/cjs/store/PendingAsksApi.js.map +1 -0
  80. package/lib/cjs/store/SchedulesApi.js +103 -0
  81. package/lib/cjs/store/SchedulesApi.js.map +1 -0
  82. package/lib/cjs/store/ToolsApi.js +21 -0
  83. package/lib/cjs/store/ToolsApi.js.map +1 -0
  84. package/lib/cjs/store/TypesApi.js +57 -0
  85. package/lib/cjs/store/TypesApi.js.map +1 -0
  86. package/lib/cjs/store/WorkersApi.js +16 -0
  87. package/lib/cjs/store/WorkersApi.js.map +1 -0
  88. package/lib/cjs/store/WorkflowsApi.js +596 -0
  89. package/lib/cjs/store/WorkflowsApi.js.map +1 -0
  90. package/lib/cjs/store/client.js +81 -0
  91. package/lib/cjs/store/client.js.map +1 -0
  92. package/lib/cjs/store/errors.js +11 -0
  93. package/lib/cjs/store/errors.js.map +1 -0
  94. package/lib/cjs/store/index.js +27 -0
  95. package/lib/cjs/store/index.js.map +1 -0
  96. package/lib/cjs/store/version.js +6 -0
  97. package/lib/cjs/store/version.js.map +1 -0
  98. package/lib/esm/AccountApi.js +82 -0
  99. package/lib/esm/AccountApi.js.map +1 -0
  100. package/lib/esm/AccountsApi.js +13 -0
  101. package/lib/esm/AccountsApi.js.map +1 -0
  102. package/lib/esm/AnalyticsApi.js +38 -0
  103. package/lib/esm/AnalyticsApi.js.map +1 -0
  104. package/lib/esm/ApiKeysApi.js +59 -0
  105. package/lib/esm/ApiKeysApi.js.map +1 -0
  106. package/lib/esm/AppsApi.js +116 -0
  107. package/lib/esm/AppsApi.js.map +1 -0
  108. package/lib/esm/CommandsApi.js +16 -0
  109. package/lib/esm/CommandsApi.js.map +1 -0
  110. package/lib/esm/EnvironmentsApi.js +69 -0
  111. package/lib/esm/EnvironmentsApi.js.map +1 -0
  112. package/lib/esm/GroupsApi.js +74 -0
  113. package/lib/esm/GroupsApi.js.map +1 -0
  114. package/lib/esm/IamApi.js +47 -0
  115. package/lib/esm/IamApi.js.map +1 -0
  116. package/lib/esm/InteractionBase.js +40 -0
  117. package/lib/esm/InteractionBase.js.map +1 -0
  118. package/lib/esm/InteractionCatalogApi.js +60 -0
  119. package/lib/esm/InteractionCatalogApi.js.map +1 -0
  120. package/lib/esm/InteractionOutput.js +293 -0
  121. package/lib/esm/InteractionOutput.js.map +1 -0
  122. package/lib/esm/InteractionResult.example.js +55 -0
  123. package/lib/esm/InteractionResult.example.js.map +1 -0
  124. package/lib/esm/InteractionsApi.js +259 -0
  125. package/lib/esm/InteractionsApi.js.map +1 -0
  126. package/lib/esm/MCPOAuthApi.js +59 -0
  127. package/lib/esm/MCPOAuthApi.js.map +1 -0
  128. package/lib/esm/ProjectsApi.js +69 -0
  129. package/lib/esm/ProjectsApi.js.map +1 -0
  130. package/lib/esm/PromptsApi.js +130 -0
  131. package/lib/esm/PromptsApi.js.map +1 -0
  132. package/lib/esm/RefsApi.js +10 -0
  133. package/lib/esm/RefsApi.js.map +1 -0
  134. package/lib/esm/RunsApi.js +109 -0
  135. package/lib/esm/RunsApi.js.map +1 -0
  136. package/lib/esm/SkillsApi.js +36 -0
  137. package/lib/esm/SkillsApi.js.map +1 -0
  138. package/lib/esm/StreamSource.js +13 -0
  139. package/lib/esm/StreamSource.js.map +1 -0
  140. package/lib/esm/TrainingApi.js +51 -0
  141. package/lib/esm/TrainingApi.js.map +1 -0
  142. package/lib/esm/UsersApi.js +10 -0
  143. package/lib/esm/UsersApi.js.map +1 -0
  144. package/lib/esm/client.js +351 -0
  145. package/lib/esm/client.js.map +1 -0
  146. package/lib/esm/execute.js +118 -0
  147. package/lib/esm/execute.js.map +1 -0
  148. package/lib/esm/index.js +6 -0
  149. package/lib/esm/index.js.map +1 -0
  150. package/lib/esm/nodejs/NodeStreamSource.js +41 -0
  151. package/lib/esm/nodejs/NodeStreamSource.js.map +1 -0
  152. package/lib/esm/nodejs/index.js +2 -0
  153. package/lib/esm/nodejs/index.js.map +1 -0
  154. package/lib/esm/store/AnalyzeDocApi.js +52 -0
  155. package/lib/esm/store/AnalyzeDocApi.js.map +1 -0
  156. package/lib/esm/store/CollectionsApi.js +127 -0
  157. package/lib/esm/store/CollectionsApi.js.map +1 -0
  158. package/lib/esm/store/CommandsApi.js +13 -0
  159. package/lib/esm/store/CommandsApi.js.map +1 -0
  160. package/lib/esm/store/DashboardApi.js +178 -0
  161. package/lib/esm/store/DashboardApi.js.map +1 -0
  162. package/lib/esm/store/DataApi.js +429 -0
  163. package/lib/esm/store/DataApi.js.map +1 -0
  164. package/lib/esm/store/EmailApi.js +99 -0
  165. package/lib/esm/store/EmailApi.js.map +1 -0
  166. package/lib/esm/store/EmbeddingsApi.js +25 -0
  167. package/lib/esm/store/EmbeddingsApi.js.map +1 -0
  168. package/lib/esm/store/FilesApi.js +231 -0
  169. package/lib/esm/store/FilesApi.js.map +1 -0
  170. package/lib/esm/store/ObjectsApi.js +309 -0
  171. package/lib/esm/store/ObjectsApi.js.map +1 -0
  172. package/lib/esm/store/PendingAsksApi.js +39 -0
  173. package/lib/esm/store/PendingAsksApi.js.map +1 -0
  174. package/lib/esm/store/SchedulesApi.js +99 -0
  175. package/lib/esm/store/SchedulesApi.js.map +1 -0
  176. package/lib/esm/store/ToolsApi.js +17 -0
  177. package/lib/esm/store/ToolsApi.js.map +1 -0
  178. package/lib/esm/store/TypesApi.js +53 -0
  179. package/lib/esm/store/TypesApi.js.map +1 -0
  180. package/lib/esm/store/WorkersApi.js +12 -0
  181. package/lib/esm/store/WorkersApi.js.map +1 -0
  182. package/lib/esm/store/WorkflowsApi.js +590 -0
  183. package/lib/esm/store/WorkflowsApi.js.map +1 -0
  184. package/lib/esm/store/client.js +77 -0
  185. package/lib/esm/store/client.js.map +1 -0
  186. package/lib/esm/store/errors.js +7 -0
  187. package/lib/esm/store/errors.js.map +1 -0
  188. package/lib/esm/store/index.js +11 -0
  189. package/lib/esm/store/index.js.map +1 -0
  190. package/lib/esm/store/version.js +3 -0
  191. package/lib/esm/store/version.js.map +1 -0
  192. package/lib/tsconfig.tsbuildinfo +1 -0
  193. package/lib/types/AccountApi.d.ts +59 -0
  194. package/lib/types/AccountApi.d.ts.map +1 -0
  195. package/lib/types/AccountsApi.d.ts +7 -0
  196. package/lib/types/AccountsApi.d.ts.map +1 -0
  197. package/lib/types/AnalyticsApi.d.ts +11 -0
  198. package/lib/types/AnalyticsApi.d.ts.map +1 -0
  199. package/lib/types/ApiKeysApi.d.ts +42 -0
  200. package/lib/types/ApiKeysApi.d.ts.map +1 -0
  201. package/lib/types/AppsApi.d.ts +65 -0
  202. package/lib/types/AppsApi.d.ts.map +1 -0
  203. package/lib/types/CommandsApi.d.ts +10 -0
  204. package/lib/types/CommandsApi.d.ts.map +1 -0
  205. package/lib/types/EnvironmentsApi.d.ts +40 -0
  206. package/lib/types/EnvironmentsApi.d.ts.map +1 -0
  207. package/lib/types/GroupsApi.d.ts +65 -0
  208. package/lib/types/GroupsApi.d.ts.map +1 -0
  209. package/lib/types/IamApi.d.ts +41 -0
  210. package/lib/types/IamApi.d.ts.map +1 -0
  211. package/lib/types/InteractionBase.d.ts +22 -0
  212. package/lib/types/InteractionBase.d.ts.map +1 -0
  213. package/lib/types/InteractionCatalogApi.d.ts +36 -0
  214. package/lib/types/InteractionCatalogApi.d.ts.map +1 -0
  215. package/lib/types/InteractionOutput.d.ts +174 -0
  216. package/lib/types/InteractionOutput.d.ts.map +1 -0
  217. package/lib/types/InteractionResult.example.d.ts +6 -0
  218. package/lib/types/InteractionResult.example.d.ts.map +1 -0
  219. package/lib/types/InteractionsApi.d.ts +183 -0
  220. package/lib/types/InteractionsApi.d.ts.map +1 -0
  221. package/lib/types/MCPOAuthApi.d.ts +45 -0
  222. package/lib/types/MCPOAuthApi.d.ts.map +1 -0
  223. package/lib/types/ProjectsApi.d.ts +28 -0
  224. package/lib/types/ProjectsApi.d.ts.map +1 -0
  225. package/lib/types/PromptsApi.d.ts +106 -0
  226. package/lib/types/PromptsApi.d.ts.map +1 -0
  227. package/lib/types/RefsApi.d.ts +6 -0
  228. package/lib/types/RefsApi.d.ts.map +1 -0
  229. package/lib/types/RunsApi.d.ts +79 -0
  230. package/lib/types/RunsApi.d.ts.map +1 -0
  231. package/lib/types/SkillsApi.d.ts +26 -0
  232. package/lib/types/SkillsApi.d.ts.map +1 -0
  233. package/lib/types/StreamSource.d.ts +7 -0
  234. package/lib/types/StreamSource.d.ts.map +1 -0
  235. package/lib/types/TrainingApi.d.ts +27 -0
  236. package/lib/types/TrainingApi.d.ts.map +1 -0
  237. package/lib/types/UsersApi.d.ts +6 -0
  238. package/lib/types/UsersApi.d.ts.map +1 -0
  239. package/lib/types/client.d.ts +136 -0
  240. package/lib/types/client.d.ts.map +1 -0
  241. package/lib/types/execute.d.ts +37 -0
  242. package/lib/types/execute.d.ts.map +1 -0
  243. package/lib/types/index.d.ts +10 -0
  244. package/lib/types/index.d.ts.map +1 -0
  245. package/lib/types/nodejs/NodeStreamSource.d.ts +9 -0
  246. package/lib/types/nodejs/NodeStreamSource.d.ts.map +1 -0
  247. package/lib/types/nodejs/index.d.ts +1 -0
  248. package/lib/types/nodejs/index.d.ts.map +1 -0
  249. package/lib/types/store/AnalyzeDocApi.d.ts +17 -0
  250. package/lib/types/store/AnalyzeDocApi.d.ts.map +1 -0
  251. package/lib/types/store/CollectionsApi.d.ts +82 -0
  252. package/lib/types/store/CollectionsApi.d.ts.map +1 -0
  253. package/lib/types/store/CommandsApi.d.ts +10 -0
  254. package/lib/types/store/CommandsApi.d.ts.map +1 -0
  255. package/lib/types/store/DashboardApi.d.ts +149 -0
  256. package/lib/types/store/DashboardApi.d.ts.map +1 -0
  257. package/lib/types/store/DataApi.d.ts +392 -0
  258. package/lib/types/store/DataApi.d.ts.map +1 -0
  259. package/lib/types/store/EmailApi.d.ts +185 -0
  260. package/lib/types/store/EmailApi.d.ts.map +1 -0
  261. package/lib/types/store/EmbeddingsApi.d.ts +12 -0
  262. package/lib/types/store/EmbeddingsApi.d.ts.map +1 -0
  263. package/lib/types/store/FilesApi.d.ts +110 -0
  264. package/lib/types/store/FilesApi.d.ts.map +1 -0
  265. package/lib/types/store/ObjectsApi.d.ts +139 -0
  266. package/lib/types/store/ObjectsApi.d.ts.map +1 -0
  267. package/lib/types/store/PendingAsksApi.d.ts +79 -0
  268. package/lib/types/store/PendingAsksApi.d.ts.map +1 -0
  269. package/lib/types/store/SchedulesApi.d.ts +89 -0
  270. package/lib/types/store/SchedulesApi.d.ts.map +1 -0
  271. package/lib/types/store/ToolsApi.d.ts +13 -0
  272. package/lib/types/store/ToolsApi.d.ts.map +1 -0
  273. package/lib/types/store/TypesApi.d.ts +23 -0
  274. package/lib/types/store/TypesApi.d.ts.map +1 -0
  275. package/lib/types/store/WorkersApi.d.ts +6 -0
  276. package/lib/types/store/WorkersApi.d.ts.map +1 -0
  277. package/lib/types/store/WorkflowsApi.d.ts +167 -0
  278. package/lib/types/store/WorkflowsApi.d.ts.map +1 -0
  279. package/lib/types/store/client.d.ts +45 -0
  280. package/lib/types/store/client.d.ts.map +1 -0
  281. package/lib/types/store/errors.d.ts +4 -0
  282. package/lib/types/store/errors.d.ts.map +1 -0
  283. package/lib/types/store/index.d.ts +10 -0
  284. package/lib/types/store/index.d.ts.map +1 -0
  285. package/lib/types/store/version.d.ts +2 -0
  286. package/lib/types/store/version.d.ts.map +1 -0
  287. package/lib/vertesia-client.js +2 -0
  288. package/lib/vertesia-client.js.map +1 -0
  289. package/package.json +71 -0
  290. package/src/AccountApi.ts +96 -0
  291. package/src/AccountsApi.ts +22 -0
  292. package/src/AnalyticsApi.ts +36 -0
  293. package/src/ApiKeysApi.ts +67 -0
  294. package/src/AppsApi.ts +134 -0
  295. package/src/CommandsApi.ts +23 -0
  296. package/src/EnvironmentsApi.ts +94 -0
  297. package/src/GroupsApi.ts +92 -0
  298. package/src/IamApi.ts +70 -0
  299. package/src/InteractionBase.ts +44 -0
  300. package/src/InteractionCatalogApi.ts +72 -0
  301. package/src/InteractionOutput.test.ts +305 -0
  302. package/src/InteractionOutput.ts +328 -0
  303. package/src/InteractionResult.example.ts +72 -0
  304. package/src/InteractionsApi.ts +308 -0
  305. package/src/MCPOAuthApi.ts +67 -0
  306. package/src/ProjectsApi.ts +85 -0
  307. package/src/PromptsApi.ts +160 -0
  308. package/src/RefsApi.ts +18 -0
  309. package/src/RunsApi.ts +151 -0
  310. package/src/SkillsApi.ts +46 -0
  311. package/src/StreamSource.ts +3 -0
  312. package/src/TrainingApi.ts +71 -0
  313. package/src/UsersApi.ts +18 -0
  314. package/src/client.test.ts +99 -0
  315. package/src/client.ts +419 -0
  316. package/src/execute.ts +126 -0
  317. package/src/index.ts +10 -0
  318. package/src/nodejs/NodeStreamSource.ts +43 -0
  319. package/src/nodejs/index.ts +1 -0
  320. package/src/store/AnalyzeDocApi.ts +61 -0
  321. package/src/store/CollectionsApi.ts +166 -0
  322. package/src/store/CommandsApi.ts +15 -0
  323. package/src/store/DashboardApi.ts +216 -0
  324. package/src/store/DataApi.ts +516 -0
  325. package/src/store/EmailApi.ts +211 -0
  326. package/src/store/EmbeddingsApi.ts +39 -0
  327. package/src/store/FilesApi.ts +288 -0
  328. package/src/store/ObjectsApi.ts +432 -0
  329. package/src/store/PendingAsksApi.ts +98 -0
  330. package/src/store/SchedulesApi.ts +114 -0
  331. package/src/store/ToolsApi.ts +19 -0
  332. package/src/store/TypesApi.ts +65 -0
  333. package/src/store/WorkersApi.ts +17 -0
  334. package/src/store/WorkflowsApi.ts +752 -0
  335. package/src/store/client.ts +95 -0
  336. package/src/store/errors.ts +7 -0
  337. package/src/store/index.ts +11 -0
  338. package/src/store/version.ts +2 -0
  339. package/tsconfig.dist.json +20 -0
@@ -0,0 +1,231 @@
1
+ import { ApiTopic } from "@vertesia/api-fetch-client";
2
+ import { StreamSource } from "../StreamSource.js";
3
+ export const MEMORIES_PREFIX = "memories";
4
+ export const ARTIFACTS_PREFIX = "agents";
5
+ export function getMemoryFilePath(name) {
6
+ const nameWithExt = name.endsWith(".tar.gz") ? name : name + ".tar.gz";
7
+ return `${MEMORIES_PREFIX}/${nameWithExt}`;
8
+ }
9
+ /**
10
+ * Build the storage path for an agent artifact
11
+ * @param runId - The workflow run ID
12
+ * @param name - The artifact filename
13
+ */
14
+ export function getAgentArtifactPath(runId, name) {
15
+ return `${ARTIFACTS_PREFIX}/${runId}/${name}`;
16
+ }
17
+ export class FilesApi extends ApiTopic {
18
+ constructor(parent) {
19
+ super(parent, "/api/v1/files");
20
+ }
21
+ async deleteFile(path, prefix) {
22
+ const res = await this.delete(`/${path}`, { query: { prefix } });
23
+ return res.count;
24
+ }
25
+ /**
26
+ * get the metadata of a blob given its URI. Supported URI are:
27
+ * starting with s3:// and gs://.
28
+ * For s3 blobs use #region to specify the region. Ex: s3://bucket/key#us-west-2
29
+ * @param uri
30
+ * @returns
31
+ */
32
+ getMetadata(uri) {
33
+ return this.get("/metadata", {
34
+ query: {
35
+ file: uri,
36
+ },
37
+ });
38
+ }
39
+ /**
40
+ * Set custom metadata on a file
41
+ * @param file - The file path or URI
42
+ * @param metadata - Custom metadata key-value pairs
43
+ * @returns Success status
44
+ */
45
+ setFileMetadata(file, metadata) {
46
+ const payload = { file, metadata };
47
+ return this.put("/metadata", { payload });
48
+ }
49
+ /**
50
+ * Get or create a bucket for the project. If the bucket already exists, it does nothing.
51
+ * The bucket URI is returned.
52
+ * @returns
53
+ */
54
+ getOrCreateBucket() {
55
+ return this.post("/bucket");
56
+ }
57
+ getUploadUrl(payload) {
58
+ return this.post("/upload-url", {
59
+ payload,
60
+ });
61
+ }
62
+ // Strictly typed: provide either simple args or a full payload via a separate method
63
+ getDownloadUrl(file, name, disposition) {
64
+ const payload = { file, name, disposition };
65
+ return this.post("/download-url", { payload });
66
+ }
67
+ getDownloadUrlWithOptions(payload) {
68
+ return this.post("/download-url", { payload });
69
+ }
70
+ /**
71
+ * Upload content to a file and return the full path (including bucket name) of the uploaded file
72
+ * @param source
73
+ * @returns
74
+ */
75
+ async uploadFile(source) {
76
+ const isStream = source instanceof StreamSource;
77
+ const { url, id, path } = await this.getUploadUrl(source);
78
+ await fetch(url, {
79
+ method: "PUT",
80
+ body: isStream ? source.stream : source,
81
+ //@ts-ignore: duplex is not in the types. See https://github.com/node-fetch/node-fetch/issues/1769
82
+ duplex: isStream ? "half" : undefined,
83
+ headers: {
84
+ "Content-Type": source.type || "application/gzip",
85
+ },
86
+ })
87
+ .then((res) => {
88
+ if (res.ok) {
89
+ return res;
90
+ }
91
+ else {
92
+ console.log(res);
93
+ throw new Error(`Failed to upload file: ${res.statusText}`);
94
+ }
95
+ })
96
+ .catch((err) => {
97
+ console.error("Failed to upload file", { err, url, id, path });
98
+ throw err;
99
+ });
100
+ return id;
101
+ }
102
+ /**
103
+ *
104
+ * @param location can be a relative path in the project, a reference to a cloud storage, or a accessible HTTPS URL (typically signed URL)
105
+ * @returns ReadableStream
106
+ */
107
+ async downloadFile(location) {
108
+ //if start with HTTPS, no download url needed - assume it's signed already
109
+ const needSign = !location.startsWith("https:");
110
+ const { url } = needSign
111
+ ? await this.getDownloadUrl(location)
112
+ : { url: location };
113
+ const res = await fetch(url, {
114
+ method: "GET",
115
+ })
116
+ .then((res) => {
117
+ if (res.ok) {
118
+ return res;
119
+ }
120
+ else if (res.status === 404) {
121
+ throw new Error(`File at ${url} not found`); //TODO: type fetch error better with a fetch error class
122
+ }
123
+ else if (res.status === 403) {
124
+ throw new Error(`File at ${url} is forbidden`);
125
+ }
126
+ else {
127
+ console.log(res);
128
+ throw new Error(`Failed to download file ${location}: ${res.statusText}`);
129
+ }
130
+ })
131
+ .catch((err) => {
132
+ console.error(`Failed to download file ${location}.`, err);
133
+ throw err;
134
+ });
135
+ if (!res.body) {
136
+ throw new Error(`No body in response while downloading file ${location}`);
137
+ }
138
+ return res.body;
139
+ }
140
+ /**
141
+ * Copy a file to a new destination within the same bucket.
142
+ * @param source - Source file path (relative to project bucket)
143
+ * @param dest - Destination file path (relative to project bucket)
144
+ * @returns The destination file URI
145
+ */
146
+ async copyFile(source, dest) {
147
+ const response = await this.post("/copy", {
148
+ payload: { source, dest },
149
+ });
150
+ return response.dest;
151
+ }
152
+ async uploadMemoryPack(source) {
153
+ const fileId = getMemoryFilePath(source.name);
154
+ const nameWithExt = source.name.endsWith(".tar.gz")
155
+ ? source.name
156
+ : source.name + ".tar.gz";
157
+ if (source instanceof File) {
158
+ let file = source;
159
+ return this.uploadFile(new StreamSource(file.stream(), nameWithExt, file.type, fileId));
160
+ }
161
+ else {
162
+ return this.uploadFile(new StreamSource(source.stream, nameWithExt, source.type, fileId));
163
+ }
164
+ }
165
+ async downloadMemoryPack(name, gunzip = false) {
166
+ let stream = await this.downloadFile(getMemoryFilePath(name));
167
+ if (gunzip) {
168
+ const ds = new DecompressionStream("gzip");
169
+ stream = stream.pipeThrough(ds);
170
+ }
171
+ return stream;
172
+ }
173
+ // ==================== Agent Artifact Methods ====================
174
+ /**
175
+ * List files by prefix
176
+ * @param prefix - Path prefix to filter files
177
+ * @returns Array of file paths matching the prefix
178
+ */
179
+ listByPrefix(prefix) {
180
+ return this.get("/list", { query: { prefix } });
181
+ }
182
+ /**
183
+ * Upload an artifact for an agent run
184
+ * @param runId - The workflow run ID
185
+ * @param name - Artifact name (e.g., "output.json")
186
+ * @param source - File content source
187
+ * @returns The full path of the uploaded artifact
188
+ */
189
+ async uploadArtifact(runId, name, source) {
190
+ const artifactPath = getAgentArtifactPath(runId, name);
191
+ if (source instanceof File) {
192
+ const file = source;
193
+ return this.uploadFile(new StreamSource(file.stream(), name, file.type, artifactPath));
194
+ }
195
+ else {
196
+ return this.uploadFile(new StreamSource(source.stream, name, source.type, artifactPath));
197
+ }
198
+ }
199
+ /**
200
+ * Download an artifact from an agent run
201
+ * @param runId - The workflow run ID
202
+ * @param name - Artifact name
203
+ * @returns ReadableStream of the artifact content
204
+ */
205
+ async downloadArtifact(runId, name) {
206
+ const artifactPath = getAgentArtifactPath(runId, name);
207
+ return this.downloadFile(artifactPath);
208
+ }
209
+ /**
210
+ * Get download URL for an artifact
211
+ * @param runId - The workflow run ID
212
+ * @param name - Artifact name
213
+ * @param disposition - Content disposition (inline or attachment)
214
+ * @returns Signed URL response
215
+ */
216
+ getArtifactDownloadUrl(runId, name, disposition) {
217
+ const artifactPath = getAgentArtifactPath(runId, name);
218
+ return this.getDownloadUrl(artifactPath, name, disposition);
219
+ }
220
+ /**
221
+ * List artifacts for an agent run
222
+ * @param runId - The workflow run ID
223
+ * @returns Array of artifact file paths
224
+ */
225
+ async listArtifacts(runId) {
226
+ const prefix = `${ARTIFACTS_PREFIX}/${runId}/`;
227
+ const result = await this.listByPrefix(prefix);
228
+ return result.files;
229
+ }
230
+ }
231
+ //# sourceMappingURL=FilesApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilesApi.js","sourceRoot":"","sources":["../../../src/store/FilesApi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,309 @@
1
+ import { ApiTopic } from "@vertesia/api-fetch-client";
2
+ import { canGenerateRendition, ContentObjectApiHeaders, getSupportedRenditionFormats, supportsVisualRendition, } from "@vertesia/common";
3
+ // Re-export rendition utilities for consumers
4
+ export { canGenerateRendition, getSupportedRenditionFormats, supportsVisualRendition };
5
+ import { StreamSource } from "../StreamSource.js";
6
+ import { AnalyzeDocApi } from "./AnalyzeDocApi.js";
7
+ export class ObjectsApi extends ApiTopic {
8
+ constructor(parent) {
9
+ super(parent, "/api/v1/objects");
10
+ }
11
+ analyze(objectId) {
12
+ return new AnalyzeDocApi(this, objectId);
13
+ }
14
+ getUploadUrl(payload) {
15
+ return this.post("/upload-url", {
16
+ payload,
17
+ });
18
+ }
19
+ getDownloadUrl(fileUri, name, disposition) {
20
+ return this.post("/download-url", {
21
+ payload: { file: fileUri, name, disposition },
22
+ });
23
+ }
24
+ getDownloadUrlWithOptions(payload) {
25
+ return this.post("/download-url", { payload });
26
+ }
27
+ getContentSource(objectId) {
28
+ return this.get(`/${objectId}/content-source`);
29
+ }
30
+ /**
31
+ * List objects with revision filtering options
32
+ *
33
+ * @param payload Search/filter parameters
34
+ * @returns Matching content objects
35
+ */
36
+ list(payload = {}) {
37
+ const limit = payload.limit || 100;
38
+ const offset = payload.offset || 0;
39
+ const query = payload.query || {};
40
+ return this.get("/", {
41
+ query: {
42
+ limit,
43
+ offset,
44
+ ...query,
45
+ all_revisions: payload.all_revisions,
46
+ from_root: payload.from_root || undefined,
47
+ },
48
+ });
49
+ }
50
+ computeFacets(query) {
51
+ return this.post("/facets", {
52
+ payload: query,
53
+ });
54
+ }
55
+ listFolders(path = "/") {
56
+ path; //TODO
57
+ }
58
+ /** Find object based on query */
59
+ find(payload) {
60
+ return this.post("/find", {
61
+ payload,
62
+ });
63
+ }
64
+ /** Count number of objects matching this query */
65
+ count(payload) {
66
+ return this.post("/count", {
67
+ payload,
68
+ });
69
+ }
70
+ /** Search object — different from find because allow full text search */
71
+ search(payload) {
72
+ return this.post("/search", {
73
+ payload,
74
+ });
75
+ }
76
+ retrieve(id, select) {
77
+ return this.get(`/${id}`, {
78
+ query: {
79
+ select,
80
+ },
81
+ });
82
+ }
83
+ getObjectText(id) {
84
+ return this.get(`/${id}/text`);
85
+ }
86
+ async upload(source) {
87
+ const isStream = source instanceof StreamSource;
88
+ // get a signed URL to upload the file a computed mimeType and the file object id.
89
+ const { url, id, mime_type } = await this.getUploadUrl({
90
+ id: isStream ? source.id : undefined,
91
+ name: source.name,
92
+ mime_type: source.type,
93
+ });
94
+ // upload the file content to the signed URL
95
+ /*const res = await this.fetch(url, {
96
+ method: 'PUT',
97
+ //@ts-ignore: duplex is not in the types. See https://github.com/node-fetch/node-fetch/issues/1769
98
+ duplex: isStream ? "half" : undefined,
99
+ body: isStream ? source.stream : source,
100
+ headers: {
101
+ 'Content-Type': mime_type || 'application/octet-stream'
102
+ }
103
+ }).then((res: Response) => {
104
+ if (res.ok) {
105
+ return res;
106
+ } else {
107
+ console.log(res);
108
+ throw new Error(`Failed to upload file: ${res.statusText}`);
109
+ }
110
+ });*/
111
+ const res = await fetch(url, {
112
+ method: "PUT",
113
+ body: isStream ? source.stream : source,
114
+ //@ts-ignore: duplex is not in the types. See https://github.com/node-fetch/node-fetch/issues/1769
115
+ duplex: isStream ? "half" : undefined,
116
+ headers: {
117
+ "Content-Type": mime_type || "application/octet-stream",
118
+ },
119
+ })
120
+ .then((res) => {
121
+ if (res.ok) {
122
+ return res;
123
+ }
124
+ else {
125
+ console.log(res);
126
+ throw new Error(`Failed to upload file: ${res.statusText}`);
127
+ }
128
+ })
129
+ .catch((err) => {
130
+ console.error("Failed to upload file", err);
131
+ throw err;
132
+ });
133
+ //Etag need to be unquoted
134
+ //When a server returns an ETag header, it includes the quotes around the actual hash value.
135
+ //This is part of the HTTP specification (RFC 7232), which states that ETags should be
136
+ //enclosed in double quotes.
137
+ const etag = res.headers.get("etag")?.replace(/^"(.*)"$/, "$1");
138
+ return {
139
+ source: id,
140
+ name: source.name,
141
+ type: mime_type,
142
+ etag,
143
+ };
144
+ }
145
+ async create(payload, options) {
146
+ const createPayload = {
147
+ ...payload,
148
+ };
149
+ if (payload.content instanceof StreamSource ||
150
+ payload.content instanceof File) {
151
+ createPayload.content = await this.upload(payload.content);
152
+ }
153
+ const headers = {};
154
+ if (options?.processing_priority) {
155
+ headers[ContentObjectApiHeaders.PROCESSING_PRIORITY] = options.processing_priority;
156
+ }
157
+ if (options?.collection_id) {
158
+ headers[ContentObjectApiHeaders.COLLECTION_ID] = options.collection_id;
159
+ }
160
+ return await this.post("/", {
161
+ payload: createPayload,
162
+ headers: headers,
163
+ });
164
+ }
165
+ /**
166
+ * Create an object which holds a reference to an external blob (i.e. not in the project bucket)
167
+ * The uri should starts either with gs:// or s3://. Not other protocols are supported yet.
168
+ * For the s3 blobs you must use a hash with the blob #region. Ex: s3://bucket/path/to/file#us-east-1
169
+ * @param uri
170
+ * @param payload
171
+ * @param options
172
+ * @returns
173
+ */
174
+ async createFromExternalSource(uri, payload = {}, options) {
175
+ const metadata = await this.client.files.getMetadata(uri);
176
+ const createPayload = {
177
+ ...payload,
178
+ content: {
179
+ source: uri,
180
+ name: metadata.name,
181
+ type: metadata.contentType,
182
+ etag: metadata.etag,
183
+ },
184
+ };
185
+ const headers = {};
186
+ if (options?.processing_priority) {
187
+ headers[ContentObjectApiHeaders.PROCESSING_PRIORITY] = options.processing_priority;
188
+ }
189
+ if (options?.collection_id) {
190
+ headers[ContentObjectApiHeaders.COLLECTION_ID] = options.collection_id;
191
+ }
192
+ return await this.post("/", {
193
+ payload: createPayload,
194
+ headers: headers,
195
+ });
196
+ }
197
+ /**
198
+ * Updates an existing object or creates a new revision
199
+ * Handles file uploads similar to the create method
200
+ *
201
+ * @param id The ID of the object to update
202
+ * @param payload The changes to apply
203
+ * @param options Additional options
204
+ * @param options.createRevision Whether to create a new revision instead of updating in place
205
+ * @param options.revisionLabel Optional label for the revision (e.g., "v1.2")
206
+ * @param options.suppressWorkflows When true, prevents this update from triggering workflow rules
207
+ * @returns The updated object or newly created revision
208
+ */
209
+ async update(id, payload, options) {
210
+ const updatePayload = {
211
+ ...payload,
212
+ };
213
+ // Handle file upload if content is provided as File or StreamSource
214
+ if (payload.content instanceof StreamSource ||
215
+ payload.content instanceof File) {
216
+ updatePayload.content = await this.upload(payload.content);
217
+ }
218
+ const headers = {};
219
+ if (options?.processing_priority) {
220
+ headers[ContentObjectApiHeaders.PROCESSING_PRIORITY] = options.processing_priority;
221
+ }
222
+ if (options?.createRevision) {
223
+ headers[ContentObjectApiHeaders.CREATE_REVISION] = "true";
224
+ if (options.revisionLabel) {
225
+ headers[ContentObjectApiHeaders.REVISION_LABEL] = options.revisionLabel;
226
+ }
227
+ }
228
+ if (options?.suppressWorkflows) {
229
+ headers[ContentObjectApiHeaders.SUPPRESS_WORKFLOWS] = "true";
230
+ }
231
+ return this.put(`/${id}`, {
232
+ payload: updatePayload,
233
+ headers,
234
+ });
235
+ }
236
+ /**
237
+ * Retrieves all revisions of a content object
238
+ *
239
+ * @param id The ID of any revision in the object's history
240
+ * @returns Array of all revisions sharing the same root
241
+ */
242
+ getRevisions(id) {
243
+ return this.get(`/${id}/revisions`);
244
+ }
245
+ /**
246
+ * Retrieves all collections that contain a specific object
247
+ *
248
+ * @param id The ID of the object
249
+ * @returns Array of collections containing this object (both static and dynamic)
250
+ */
251
+ getCollections(id) {
252
+ return this.get(`/${id}/collections`);
253
+ }
254
+ delete(id) {
255
+ return this.del(`/${id}`);
256
+ }
257
+ listWorkflowRuns(documentId) {
258
+ return this.get(`/${documentId}/workflow-runs`);
259
+ }
260
+ listRenditions(documentId) {
261
+ return this.get(`/${documentId}/renditions`);
262
+ }
263
+ getRendition(documentId, options) {
264
+ const query = {
265
+ max_hw: options.max_hw,
266
+ generate_if_missing: options.generate_if_missing,
267
+ sign_url: options.sign_url,
268
+ block_on_generation: options.block_on_generation,
269
+ };
270
+ return this.get(`/${documentId}/renditions/${options.format}`, {
271
+ query,
272
+ });
273
+ }
274
+ /**
275
+ * Get rendition with pre-validation of content type compatibility.
276
+ * Returns null instead of throwing if the format is not supported for the content type.
277
+ *
278
+ * @param documentId - The document ID
279
+ * @param contentType - The content type of the document (e.g., 'image/png', 'text/markdown')
280
+ * @param options - Rendition options including format
281
+ * @returns The rendition response, or null if format is not supported for the content type
282
+ *
283
+ * @example
284
+ * const rendition = await client.objects.getRenditionSafe(docId, doc.content?.type, {
285
+ * format: ImageRenditionFormat.jpeg,
286
+ * generate_if_missing: true
287
+ * });
288
+ * if (!rendition) {
289
+ * console.log('Document does not support JPEG renditions');
290
+ * }
291
+ */
292
+ getRenditionSafe(documentId, contentType, options) {
293
+ if (!canGenerateRendition(contentType, options.format)) {
294
+ return Promise.resolve(null);
295
+ }
296
+ return this.getRendition(documentId, options);
297
+ }
298
+ exportProperties(payload) {
299
+ return this.post("/export", {
300
+ payload,
301
+ });
302
+ }
303
+ setEmbedding(id, type, payload) {
304
+ return this.put(`/${id}/embeddings/${type}`, {
305
+ payload,
306
+ });
307
+ }
308
+ }
309
+ //# sourceMappingURL=ObjectsApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjectsApi.js","sourceRoot":"","sources":["../../../src/store/ObjectsApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAc,MAAM,4BAA4B,CAAC;AAClE,OAAO,EACH,oBAAoB,EACpB,uBAAuB,EAgBvB,4BAA4B,EAM5B,uBAAuB,GAC1B,MAAM,kBAAkB,CAAC;AAE1B,8CAA8C;AAC9C,OAAO,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,uBAAuB,EAAE,CAAC;AAEvF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAenD,MAAM,OAAO,UAAW,SAAQ,QAAQ;IACpC,YAAY,MAAkB;QAC1B,KAAK,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,CAAC,QAAgB;QACpB,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED,YAAY,CAAC,OAA4B;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YAC5B,OAAO;SACV,CAAC,CAAC;IACP,CAAC;IAED,cAAc,CAAC,OAAe,EAAE,IAAa,EAAE,WAAqC;QAChF,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YAC9B,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAA8B;SAC5E,CAAC,CAAC;IACP,CAAC;IAED,yBAAyB,CAAC,OAA0B;QAChD,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,gBAAgB,CAAC,QAAgB;QAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,iBAAiB,CAAC,CAAC;IACnD,CAAC;IAED;;;;;OAKG;IACH,IAAI,CACA,UAA+B,EAAE;QAEjC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC;QACnC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;QACnC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAK,EAAwB,CAAC;QAEzD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;YACjB,KAAK,EAAE;gBACH,KAAK;gBACL,MAAM;gBACN,GAAG,KAAK;gBACR,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,SAAS;aAC5C;SACJ,CAAC,CAAC;IACP,CAAC;IAED,aAAa,CACT,KAAgC;QAEhC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACxB,OAAO,EAAE,KAAK;SACjB,CAAC,CAAC;IACP,CAAC;IAED,WAAW,CAAC,OAAe,GAAG;QAC1B,IAAI,CAAC,CAAC,MAAM;IAChB,CAAC;IAED,iCAAiC;IACjC,IAAI,CAAC,OAAoB;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACtB,OAAO;SACV,CAAC,CAAC;IACP,CAAC;IAED,kDAAkD;IAClD,KAAK,CAAC,OAAoB;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACvB,OAAO;SACV,CAAC,CAAC;IACP,CAAC;IAED,yEAAyE;IACzE,MAAM,CAAC,OAA6B;QAChC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACxB,OAAO;SACV,CAAC,CAAC;IACP,CAAC;IAED,QAAQ,CAAC,EAAU,EAAE,MAAe;QAChC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE;YACtB,KAAK,EAAE;gBACH,MAAM;aACT;SACJ,CAAC,CAAC;IACP,CAAC;IAED,aAAa,CAAC,EAAU;QACpB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAA2B;QACpC,MAAM,QAAQ,GAAG,MAAM,YAAY,YAAY,CAAC;QAChD,kFAAkF;QAClF,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC;YACnD,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;YACpC,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,SAAS,EAAE,MAAM,CAAC,IAAI;SACzB,CAAC,CAAC;QAEH,4CAA4C;QAC5C;;;;;;;;;;;;;;;aAeK;QAEL,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YACzB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;YACvC,kGAAkG;YAClG,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YACrC,OAAO,EAAE;gBACL,cAAc,EAAE,SAAS,IAAI,0BAA0B;aAC1D;SACJ,CAAC;aACG,IAAI,CAAC,CAAC,GAAa,EAAE,EAAE;YACpB,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;gBACT,OAAO,GAAG,CAAC;YACf,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;YAChE,CAAC;QACL,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACX,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;YAC5C,MAAM,GAAG,CAAC;QACd,CAAC,CAAC,CAAC;QAEP,0BAA0B;QAC1B,4FAA4F;QAC5F,sFAAsF;QACtF,4BAA4B;QAC5B,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAEhE,OAAO;YACH,MAAM,EAAE,EAAE;YACV,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,SAAS;YACf,IAAI;SACP,CAAC;IACN,CAAC;IAED,KAAK,CAAC,MAAM,CACR,OAAmC,EACnC,OAGC;QAED,MAAM,aAAa,GAA+B;YAC9C,GAAG,OAAO;SACb,CAAC;QACF,IACI,OAAO,CAAC,OAAO,YAAY,YAAY;YACvC,OAAO,CAAC,OAAO,YAAY,IAAI,EACjC,CAAC;YACC,aAAa,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,IAAI,OAAO,EAAE,mBAAmB,EAAE,CAAC;YAC/B,OAAO,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC;QACvF,CAAC;QACD,IAAI,OAAO,EAAE,aAAa,EAAE,CAAC;YACzB,OAAO,CAAC,uBAAuB,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3E,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACxB,OAAO,EAAE,aAAa;YACtB,OAAO,EAAE,OAAO;SACnB,CAAC,CAAC;IACP,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,wBAAwB,CAC1B,GAAW,EACX,UAAsC,EAAE,EACxC,OAGC;QAED,MAAM,QAAQ,GAAG,MAAO,IAAI,CAAC,MAAqB,CAAC,KAAK,CAAC,WAAW,CAChE,GAAG,CACN,CAAC;QACF,MAAM,aAAa,GAA+B;YAC9C,GAAG,OAAO;YACV,OAAO,EAAE;gBACL,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,IAAI,EAAE,QAAQ,CAAC,WAAW;gBAC1B,IAAI,EAAE,QAAQ,CAAC,IAAI;aACtB;SACJ,CAAC;QAEF,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,IAAI,OAAO,EAAE,mBAAmB,EAAE,CAAC;YAC/B,OAAO,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC;QACvF,CAAC;QACD,IAAI,OAAO,EAAE,aAAa,EAAE,CAAC;YACzB,OAAO,CAAC,uBAAuB,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3E,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACxB,OAAO,EAAE,aAAa;YACtB,OAAO,EAAE,OAAO;SACnB,CAAC,CAAC;IACP,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,MAAM,CACR,EAAU,EACV,OAA4C,EAC5C,OAKC;QAED,MAAM,aAAa,GAAwC;YACvD,GAAG,OAAO;SACb,CAAC;QAEF,oEAAoE;QACpE,IACI,OAAO,CAAC,OAAO,YAAY,YAAY;YACvC,OAAO,CAAC,OAAO,YAAY,IAAI,EACjC,CAAC;YACC,aAAa,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,IAAI,OAAO,EAAE,mBAAmB,EAAE,CAAC;YAC/B,OAAO,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC;QACvF,CAAC;QACD,IAAI,OAAO,EAAE,cAAc,EAAE,CAAC;YAC1B,OAAO,CAAC,uBAAuB,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC;YAC1D,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;gBACxB,OAAO,CAAC,uBAAuB,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;YAC5E,CAAC;QACL,CAAC;QACD,IAAI,OAAO,EAAE,iBAAiB,EAAE,CAAC;YAC7B,OAAO,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,GAAG,MAAM,CAAC;QACjE,CAAC;QAED,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE;YACtB,OAAO,EAAE,aAAa;YACtB,OAAO;SACV,CAAC,CAAC;IACP,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,EAAU;QACnB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACxC,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,EAAU;QACrB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,EAAU;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,gBAAgB,CAAC,UAAkB;QAC/B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,UAAU,gBAAgB,CAAC,CAAC;IACpD,CAAC;IAED,cAAc,CAAC,UAAkB;QAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,UAAU,aAAa,CAAC,CAAC;IACjD,CAAC;IAED,YAAY,CACR,UAAkB,EAClB,OAA2B;QAE3B,MAAM,KAAK,GAAG;YACV,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;YAChD,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;SACnD,CAAC;QAEF,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,UAAU,eAAe,OAAO,CAAC,MAAM,EAAE,EAAE;YAC3D,KAAK;SACR,CAAC,CAAC;IACP,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,gBAAgB,CACZ,UAAkB,EAClB,WAA+B,EAC/B,OAA2B;QAE3B,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACrD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAED,gBAAgB,CACZ,OAAgC;QAEhC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACxB,OAAO;SACV,CAAC,CAAC;IACP,CAAC;IAED,YAAY,CACR,EAAU,EACV,IAA6B,EAC7B,OAAkB;QAElB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,eAAe,IAAI,EAAE,EAAE;YACzC,OAAO;SACV,CAAC,CAAC;IACP,CAAC;CACJ"}
@@ -0,0 +1,39 @@
1
+ import { ApiTopic } from "@vertesia/api-fetch-client";
2
+ /**
3
+ * Pending Asks API for tracking ask_user requests.
4
+ * Handles registration, resolution, and listing of pending asks.
5
+ */
6
+ export class PendingAsksApi extends ApiTopic {
7
+ constructor(parent) {
8
+ super(parent, "/api/v1/pending-asks");
9
+ }
10
+ /**
11
+ * Register a new pending ask.
12
+ * Called when an agent calls ask_user.
13
+ * Stores in Redis and sends webhook if configured.
14
+ */
15
+ register(request) {
16
+ return this.post("/", { payload: request });
17
+ }
18
+ /**
19
+ * Resolve a pending ask with the user's response.
20
+ * Called when a user responds to an ask.
21
+ * Updates Redis and sends webhook if configured.
22
+ */
23
+ resolve(askId, request) {
24
+ return this.post(`/${askId}/resolve`, { payload: request });
25
+ }
26
+ /**
27
+ * List all pending asks for the current project.
28
+ */
29
+ list() {
30
+ return this.get("/");
31
+ }
32
+ /**
33
+ * Get a specific pending ask by ID.
34
+ */
35
+ retrieve(askId) {
36
+ return this.get(`/${askId}`);
37
+ }
38
+ }
39
+ //# sourceMappingURL=PendingAsksApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PendingAsksApi.js","sourceRoot":"","sources":["../../../src/store/PendingAsksApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAc,MAAM,4BAA4B,CAAC;AAyDlE;;;GAGG;AACH,MAAM,OAAO,cAAe,SAAQ,QAAQ;IACxC,YAAY,MAAkB;QAC1B,KAAK,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAC1C,CAAC;IAED;;;;OAIG;IACH,QAAQ,CAAC,OAAkC;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAChD,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,KAAa,EAAE,OAAiC;QACpD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,IAAI;QACA,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,KAAa;QAClB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;IACjC,CAAC;CACJ"}