@keboola/api-client 1.0.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (221) hide show
  1. package/dist/ai/index.cjs +5 -201
  2. package/dist/ai/index.cjs.map +1 -1
  3. package/dist/ai/index.js +2 -201
  4. package/dist/ai/index.js.map +1 -1
  5. package/dist/assets/index.cjs +5 -180
  6. package/dist/assets/index.cjs.map +1 -1
  7. package/dist/assets/index.js +2 -180
  8. package/dist/assets/index.js.map +1 -1
  9. package/dist/chat/index.cjs +6 -422
  10. package/dist/chat/index.cjs.map +1 -1
  11. package/dist/chat/index.d.cts +1 -1
  12. package/dist/chat/index.d.ts +1 -1
  13. package/dist/chat/index.js +3 -422
  14. package/dist/chat/index.js.map +1 -1
  15. package/dist/chat/suggestions.cjs +70 -152
  16. package/dist/chat/suggestions.cjs.map +1 -1
  17. package/dist/chat/suggestions.js +1 -138
  18. package/dist/chat/suggestions.js.map +1 -1
  19. package/dist/chat/types.d.cts +1 -1
  20. package/dist/chat/types.d.ts +1 -1
  21. package/dist/chunk-345V46LR.cjs +934 -0
  22. package/dist/chunk-345V46LR.cjs.map +1 -0
  23. package/dist/chunk-3B7L6MCG.js +189 -0
  24. package/dist/chunk-3B7L6MCG.js.map +1 -0
  25. package/dist/chunk-3T54WH4X.cjs +42 -0
  26. package/dist/chunk-3T54WH4X.cjs.map +1 -0
  27. package/dist/chunk-3Y6NK7TC.js +34 -0
  28. package/dist/chunk-3Y6NK7TC.js.map +1 -0
  29. package/dist/chunk-4N7XBMWP.js +930 -0
  30. package/dist/chunk-4N7XBMWP.js.map +1 -0
  31. package/dist/chunk-4RC5E3SL.js +140 -0
  32. package/dist/chunk-4RC5E3SL.js.map +1 -0
  33. package/dist/chunk-633QJMHH.cjs +73 -0
  34. package/dist/chunk-633QJMHH.cjs.map +1 -0
  35. package/dist/chunk-6RQDX6JY.cjs +132 -0
  36. package/dist/chunk-6RQDX6JY.cjs.map +1 -0
  37. package/dist/chunk-76AHKXLC.cjs +29 -0
  38. package/dist/chunk-76AHKXLC.cjs.map +1 -0
  39. package/dist/chunk-7FY6COWG.js +71 -0
  40. package/dist/chunk-7FY6COWG.js.map +1 -0
  41. package/dist/chunk-7J2R6XHB.js +3 -0
  42. package/dist/chunk-7J2R6XHB.js.map +1 -0
  43. package/dist/chunk-BGLICNTG.cjs +33 -0
  44. package/dist/chunk-BGLICNTG.cjs.map +1 -0
  45. package/dist/chunk-BR3SBEFE.cjs +182 -0
  46. package/dist/chunk-BR3SBEFE.cjs.map +1 -0
  47. package/dist/chunk-CVV4HROS.cjs +37 -0
  48. package/dist/chunk-CVV4HROS.cjs.map +1 -0
  49. package/dist/chunk-DCTDH77P.cjs +277 -0
  50. package/dist/chunk-DCTDH77P.cjs.map +1 -0
  51. package/dist/chunk-EBCZUGUX.js +35 -0
  52. package/dist/chunk-EBCZUGUX.js.map +1 -0
  53. package/dist/chunk-EY5LALX2.cjs +26 -0
  54. package/dist/chunk-EY5LALX2.cjs.map +1 -0
  55. package/dist/chunk-FBQHHAL5.js +40 -0
  56. package/dist/chunk-FBQHHAL5.js.map +1 -0
  57. package/dist/chunk-GF4XZK5N.cjs +43 -0
  58. package/dist/chunk-GF4XZK5N.cjs.map +1 -0
  59. package/dist/chunk-GNPQB3MT.js +27 -0
  60. package/dist/chunk-GNPQB3MT.js.map +1 -0
  61. package/dist/chunk-GO6SOMGL.js +181 -0
  62. package/dist/chunk-GO6SOMGL.js.map +1 -0
  63. package/dist/chunk-HCNNMUTR.cjs +36 -0
  64. package/dist/chunk-HCNNMUTR.cjs.map +1 -0
  65. package/dist/chunk-HPVTVQBJ.cjs +238 -0
  66. package/dist/chunk-HPVTVQBJ.cjs.map +1 -0
  67. package/dist/chunk-HYUGRMCY.cjs +247 -0
  68. package/dist/chunk-HYUGRMCY.cjs.map +1 -0
  69. package/dist/chunk-IJMQCOBC.js +34 -0
  70. package/dist/chunk-IJMQCOBC.js.map +1 -0
  71. package/dist/chunk-IY3VNVXD.cjs +183 -0
  72. package/dist/chunk-IY3VNVXD.cjs.map +1 -0
  73. package/dist/chunk-JKFIB6SQ.cjs +685 -0
  74. package/dist/chunk-JKFIB6SQ.cjs.map +1 -0
  75. package/dist/chunk-JLNOESHX.cjs +47 -0
  76. package/dist/chunk-JLNOESHX.cjs.map +1 -0
  77. package/dist/chunk-JURD5MC3.js +178 -0
  78. package/dist/chunk-JURD5MC3.js.map +1 -0
  79. package/dist/chunk-LV3ZWNDC.js +75 -0
  80. package/dist/chunk-LV3ZWNDC.js.map +1 -0
  81. package/dist/chunk-LZ6A6J2E.cjs +77 -0
  82. package/dist/chunk-LZ6A6J2E.cjs.map +1 -0
  83. package/dist/chunk-OKVYLO6C.js +108 -0
  84. package/dist/chunk-OKVYLO6C.js.map +1 -0
  85. package/dist/chunk-PD3LJYS2.js +218 -0
  86. package/dist/chunk-PD3LJYS2.js.map +1 -0
  87. package/dist/chunk-PV4HIVW2.js +130 -0
  88. package/dist/chunk-PV4HIVW2.js.map +1 -0
  89. package/dist/chunk-R7PD3BRA.js +261 -0
  90. package/dist/chunk-R7PD3BRA.js.map +1 -0
  91. package/dist/chunk-SAEG42HW.js +64 -0
  92. package/dist/chunk-SAEG42HW.js.map +1 -0
  93. package/dist/chunk-TIIRBQUA.cjs +110 -0
  94. package/dist/chunk-TIIRBQUA.cjs.map +1 -0
  95. package/dist/chunk-TXFQ4YIK.js +31 -0
  96. package/dist/chunk-TXFQ4YIK.js.map +1 -0
  97. package/dist/chunk-U5SE6W5M.cjs +158 -0
  98. package/dist/chunk-U5SE6W5M.cjs.map +1 -0
  99. package/dist/chunk-UABYNGBZ.js +39 -0
  100. package/dist/chunk-UABYNGBZ.js.map +1 -0
  101. package/dist/chunk-UXF53ZOV.js +220 -0
  102. package/dist/chunk-UXF53ZOV.js.map +1 -0
  103. package/dist/chunk-VAOCYA6B.js +20 -0
  104. package/dist/chunk-VAOCYA6B.js.map +1 -0
  105. package/dist/chunk-VS5PM7KL.js +45 -0
  106. package/dist/chunk-VS5PM7KL.js.map +1 -0
  107. package/dist/chunk-WQ7EZWBF.js +24 -0
  108. package/dist/chunk-WQ7EZWBF.js.map +1 -0
  109. package/dist/chunk-XPDEQND7.cjs +4 -0
  110. package/dist/chunk-XPDEQND7.cjs.map +1 -0
  111. package/dist/chunk-XUDMML5C.cjs +211 -0
  112. package/dist/chunk-XUDMML5C.cjs.map +1 -0
  113. package/dist/chunk-YPCD7M2N.cjs +22 -0
  114. package/dist/chunk-YPCD7M2N.cjs.map +1 -0
  115. package/dist/chunk-YUEYMIMI.cjs +67 -0
  116. package/dist/chunk-YUEYMIMI.cjs.map +1 -0
  117. package/dist/chunk-YXCVNX2Q.cjs +36 -0
  118. package/dist/chunk-YXCVNX2Q.cjs.map +1 -0
  119. package/dist/chunk-ZEMKE6DI.js +681 -0
  120. package/dist/chunk-ZEMKE6DI.js.map +1 -0
  121. package/dist/dataScience/index.cjs +8 -412
  122. package/dist/dataScience/index.cjs.map +1 -1
  123. package/dist/dataScience/index.js +2 -391
  124. package/dist/dataScience/index.js.map +1 -1
  125. package/dist/domain/permissions/index.cjs +131 -2
  126. package/dist/domain/permissions/index.cjs.map +1 -1
  127. package/dist/domain/permissions/index.d.cts +108 -2
  128. package/dist/domain/permissions/index.d.ts +108 -2
  129. package/dist/domain/permissions/index.js +106 -3
  130. package/dist/domain/permissions/index.js.map +1 -1
  131. package/dist/editor/index.cjs +5 -264
  132. package/dist/editor/index.cjs.map +1 -1
  133. package/dist/editor/index.js +2 -264
  134. package/dist/editor/index.js.map +1 -1
  135. package/dist/encryption/index.cjs +5 -190
  136. package/dist/encryption/index.cjs.map +1 -1
  137. package/dist/encryption/index.js +2 -190
  138. package/dist/encryption/index.js.map +1 -1
  139. package/dist/import/index.cjs +5 -196
  140. package/dist/import/index.cjs.map +1 -1
  141. package/dist/import/index.js +2 -196
  142. package/dist/import/index.js.map +1 -1
  143. package/dist/index.cjs +314 -3569
  144. package/dist/index.cjs.map +1 -1
  145. package/dist/index.d.cts +2004 -105
  146. package/dist/index.d.ts +2004 -105
  147. package/dist/index.js +176 -3464
  148. package/dist/index.js.map +1 -1
  149. package/dist/management/index.cjs +10 -881
  150. package/dist/management/index.cjs.map +1 -1
  151. package/dist/management/index.js +3 -880
  152. package/dist/management/index.js.map +1 -1
  153. package/dist/metastore/index.cjs +5 -337
  154. package/dist/metastore/index.cjs.map +1 -1
  155. package/dist/metastore/index.js +2 -337
  156. package/dist/metastore/index.js.map +1 -1
  157. package/dist/oauth/index.cjs +5 -226
  158. package/dist/oauth/index.cjs.map +1 -1
  159. package/dist/oauth/index.js +2 -226
  160. package/dist/oauth/index.js.map +1 -1
  161. package/dist/project-Bzslbq4u.d.ts +16 -0
  162. package/dist/project-CYhB6rYN.d.cts +16 -0
  163. package/dist/queryService/index.cjs +5 -248
  164. package/dist/queryService/index.cjs.map +1 -1
  165. package/dist/queryService/index.js +2 -248
  166. package/dist/queryService/index.js.map +1 -1
  167. package/dist/queue/index.cjs +5 -190
  168. package/dist/queue/index.cjs.map +1 -1
  169. package/dist/queue/index.js +2 -190
  170. package/dist/queue/index.js.map +1 -1
  171. package/dist/sdk/configurations/index.d.cts +2 -12
  172. package/dist/sdk/configurations/index.d.ts +2 -12
  173. package/dist/sdk/storage/index.cjs +49 -248
  174. package/dist/sdk/storage/index.cjs.map +1 -1
  175. package/dist/sdk/storage/index.d.cts +2 -2
  176. package/dist/sdk/storage/index.d.ts +2 -2
  177. package/dist/sdk/storage/index.js +1 -240
  178. package/dist/sdk/storage/index.js.map +1 -1
  179. package/dist/sdk/tag/index.cjs +6 -203
  180. package/dist/sdk/tag/index.cjs.map +1 -1
  181. package/dist/sdk/tag/index.js +2 -206
  182. package/dist/sdk/tag/index.js.map +1 -1
  183. package/dist/status/index.cjs +6 -176
  184. package/dist/status/index.cjs.map +1 -1
  185. package/dist/status/index.js +3 -176
  186. package/dist/status/index.js.map +1 -1
  187. package/dist/status/types.cjs +2 -0
  188. package/dist/status/types.js +1 -1
  189. package/dist/storage/index.cjs +9 -1023
  190. package/dist/storage/index.cjs.map +1 -1
  191. package/dist/storage/index.d.cts +1 -1
  192. package/dist/storage/index.d.ts +1 -1
  193. package/dist/storage/index.js +3 -1023
  194. package/dist/storage/index.js.map +1 -1
  195. package/dist/storage/types.d.cts +68 -5
  196. package/dist/storage/types.d.ts +68 -5
  197. package/dist/{storageClient-C8LDO4gr.d.ts → storageClient-BicsbzZy.d.ts} +7 -1
  198. package/dist/{storageClient-D05fdGHW.d.cts → storageClient-CmK1LPHr.d.cts} +7 -1
  199. package/dist/storageSdk-BZ7ZW6_h.d.cts +143 -0
  200. package/dist/storageSdk-DCcD68FQ.d.ts +143 -0
  201. package/dist/syncActions/index.cjs +5 -364
  202. package/dist/syncActions/index.cjs.map +1 -1
  203. package/dist/syncActions/index.js +2 -345
  204. package/dist/syncActions/index.js.map +1 -1
  205. package/dist/telemetry/index.cjs +5 -187
  206. package/dist/telemetry/index.cjs.map +1 -1
  207. package/dist/telemetry/index.js +2 -187
  208. package/dist/telemetry/index.js.map +1 -1
  209. package/dist/{types-DJ6nbNq5.d.cts → types-CNkgmuhe.d.cts} +1 -1
  210. package/dist/{types-BjrNNn5I.d.ts → types-DzwzVgyG.d.ts} +1 -1
  211. package/dist/vault/index.cjs +5 -219
  212. package/dist/vault/index.cjs.map +1 -1
  213. package/dist/vault/index.js +2 -219
  214. package/dist/vault/index.js.map +1 -1
  215. package/dist/verify/index.cjs +5 -184
  216. package/dist/verify/index.cjs.map +1 -1
  217. package/dist/verify/index.js +2 -184
  218. package/dist/verify/index.js.map +1 -1
  219. package/package.json +1 -1
  220. package/dist/storageSdk-CX03lGn-.d.ts +0 -18
  221. package/dist/storageSdk-DZV4nB3o.d.cts +0 -18
@@ -0,0 +1,158 @@
1
+ 'use strict';
2
+
3
+ var zod = require('zod');
4
+
5
+ // src/clients/chat/suggestions.ts
6
+ var SUGGESTION_CATEGORIES = ["error", "maintenance", "documentation"];
7
+ var suggestionCategorySchema = zod.z.enum(SUGGESTION_CATEGORIES);
8
+ var suggestionSchema = zod.z.object({
9
+ label: zod.z.preprocess((v) => typeof v === "string" ? v.slice(0, 80) : v, zod.z.string().max(80)),
10
+ prompt: zod.z.string(),
11
+ priority: zod.z.number().int().min(1).max(3),
12
+ category: suggestionCategorySchema,
13
+ reasoning: zod.z.string()
14
+ });
15
+ var suggestionsResponseSchema = zod.z.object({
16
+ suggestions: zod.z.array(suggestionSchema).max(4)
17
+ });
18
+ var suggestionWithIdSchema = suggestionSchema.extend({
19
+ id: zod.z.string()
20
+ });
21
+ var suggestionsApiResponseSchema = zod.z.object({
22
+ suggestions: zod.z.array(suggestionWithIdSchema).max(4),
23
+ suggestionSessionId: zod.z.string()
24
+ });
25
+ var recentFailedJobSchema = zod.z.object({
26
+ id: zod.z.string(),
27
+ status: zod.z.enum(["error", "warning"]),
28
+ component: zod.z.string(),
29
+ configId: zod.z.string(),
30
+ configName: zod.z.string().optional(),
31
+ createdTime: zod.z.string(),
32
+ durationSeconds: zod.z.number().int().nonnegative().optional(),
33
+ errorMessage: zod.z.string().max(200).optional()
34
+ });
35
+ var deprecatedComponentSchema = zod.z.object({
36
+ id: zod.z.string(),
37
+ name: zod.z.string(),
38
+ type: zod.z.string(),
39
+ expiredOn: zod.z.string(),
40
+ configCount: zod.z.number().int().nonnegative()
41
+ });
42
+ var userRecentEditSchema = zod.z.object({
43
+ component: zod.z.string(),
44
+ configId: zod.z.string(),
45
+ configName: zod.z.string(),
46
+ lastEdited: zod.z.string()
47
+ });
48
+ var dashboardContextDataSchema = zod.z.object({
49
+ recentFailedJobs: zod.z.array(recentFailedJobSchema).max(5),
50
+ deprecatedComponents: zod.z.array(deprecatedComponentSchema).max(5),
51
+ userRecentEdits: zod.z.array(userRecentEditSchema).max(5),
52
+ currentUserEmail: zod.z.string().email()
53
+ });
54
+ var JOB_STATUSES = [
55
+ "created",
56
+ "waiting",
57
+ "processing",
58
+ "success",
59
+ "error",
60
+ "terminating",
61
+ "terminated",
62
+ "cancelled",
63
+ "warning"
64
+ ];
65
+ var jobDetailContextDataSchema = zod.z.object({
66
+ job: zod.z.object({
67
+ id: zod.z.string(),
68
+ status: zod.z.enum(JOB_STATUSES),
69
+ component: zod.z.string(),
70
+ configId: zod.z.string().optional(),
71
+ configName: zod.z.string().optional(),
72
+ createdTime: zod.z.string(),
73
+ startTime: zod.z.string().optional(),
74
+ endTime: zod.z.string().optional(),
75
+ durationSeconds: zod.z.number().int().nonnegative().optional(),
76
+ errorMessage: zod.z.string().max(500).optional(),
77
+ errorType: zod.z.enum(["user", "application"]).optional(),
78
+ backendSize: zod.z.string().optional()
79
+ }),
80
+ component: zod.z.object({
81
+ id: zod.z.string(),
82
+ name: zod.z.string(),
83
+ type: zod.z.string()
84
+ }).optional(),
85
+ runtimeHistory: zod.z.object({
86
+ averageDurationSeconds: zod.z.number().nonnegative().optional(),
87
+ minDurationSeconds: zod.z.number().nonnegative().optional(),
88
+ maxDurationSeconds: zod.z.number().nonnegative().optional(),
89
+ recentJobsCount: zod.z.number().int().nonnegative(),
90
+ isSlowerThanAverage: zod.z.boolean().optional(),
91
+ isFasterThanAverage: zod.z.boolean().optional(),
92
+ percentageDifference: zod.z.number().optional()
93
+ }).optional(),
94
+ currentUserEmail: zod.z.string().email()
95
+ });
96
+ var configurationDetailContextDataSchema = zod.z.object({
97
+ configuration: zod.z.object({
98
+ id: zod.z.string(),
99
+ name: zod.z.string(),
100
+ description: zod.z.string().max(500).optional(),
101
+ component: zod.z.string(),
102
+ hasRows: zod.z.boolean(),
103
+ rowCount: zod.z.number().int().nonnegative().optional(),
104
+ lastChangeDescription: zod.z.string().max(200).optional()
105
+ }),
106
+ component: zod.z.object({
107
+ id: zod.z.string(),
108
+ name: zod.z.string(),
109
+ type: zod.z.string()
110
+ }).optional(),
111
+ latestJobs: zod.z.array(
112
+ zod.z.object({
113
+ id: zod.z.string(),
114
+ status: zod.z.enum(JOB_STATUSES),
115
+ durationSeconds: zod.z.number().int().nonnegative().optional(),
116
+ errorMessage: zod.z.string().max(200).optional(),
117
+ createdTime: zod.z.string()
118
+ })
119
+ ).max(5).optional(),
120
+ currentUserEmail: zod.z.string().email()
121
+ });
122
+ var dashboardSuggestionsRequestSchema = zod.z.object({
123
+ context: zod.z.literal("dashboard"),
124
+ data: dashboardContextDataSchema
125
+ });
126
+ var jobDetailSuggestionsRequestSchema = zod.z.object({
127
+ context: zod.z.literal("job-detail"),
128
+ data: jobDetailContextDataSchema
129
+ });
130
+ var configurationDetailSuggestionsRequestSchema = zod.z.object({
131
+ context: zod.z.literal("configuration-detail"),
132
+ data: configurationDetailContextDataSchema
133
+ });
134
+ var suggestionsRequestSchema = zod.z.discriminatedUnion("context", [
135
+ dashboardSuggestionsRequestSchema,
136
+ jobDetailSuggestionsRequestSchema,
137
+ configurationDetailSuggestionsRequestSchema
138
+ ]);
139
+
140
+ exports.JOB_STATUSES = JOB_STATUSES;
141
+ exports.SUGGESTION_CATEGORIES = SUGGESTION_CATEGORIES;
142
+ exports.configurationDetailContextDataSchema = configurationDetailContextDataSchema;
143
+ exports.configurationDetailSuggestionsRequestSchema = configurationDetailSuggestionsRequestSchema;
144
+ exports.dashboardContextDataSchema = dashboardContextDataSchema;
145
+ exports.dashboardSuggestionsRequestSchema = dashboardSuggestionsRequestSchema;
146
+ exports.deprecatedComponentSchema = deprecatedComponentSchema;
147
+ exports.jobDetailContextDataSchema = jobDetailContextDataSchema;
148
+ exports.jobDetailSuggestionsRequestSchema = jobDetailSuggestionsRequestSchema;
149
+ exports.recentFailedJobSchema = recentFailedJobSchema;
150
+ exports.suggestionCategorySchema = suggestionCategorySchema;
151
+ exports.suggestionSchema = suggestionSchema;
152
+ exports.suggestionWithIdSchema = suggestionWithIdSchema;
153
+ exports.suggestionsApiResponseSchema = suggestionsApiResponseSchema;
154
+ exports.suggestionsRequestSchema = suggestionsRequestSchema;
155
+ exports.suggestionsResponseSchema = suggestionsResponseSchema;
156
+ exports.userRecentEditSchema = userRecentEditSchema;
157
+ //# sourceMappingURL=chunk-U5SE6W5M.cjs.map
158
+ //# sourceMappingURL=chunk-U5SE6W5M.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/clients/chat/suggestions.ts"],"names":["z"],"mappings":"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","file":"chunk-U5SE6W5M.cjs","sourcesContent":["import { z } from 'zod';\n\n// Response schemas\nexport const SUGGESTION_CATEGORIES = ['error', 'maintenance', 'documentation'] as const;\n\nexport const suggestionCategorySchema = z.enum(SUGGESTION_CATEGORIES);\nexport type SuggestionCategory = z.infer<typeof suggestionCategorySchema>;\n\n// Schema for LLM-generated suggestions (no ID)\nexport const suggestionSchema = z.object({\n label: z.preprocess((v) => (typeof v === 'string' ? v.slice(0, 80) : v), z.string().max(80)),\n prompt: z.string(),\n priority: z.number().int().min(1).max(3),\n category: suggestionCategorySchema,\n reasoning: z.string(),\n});\nexport type Suggestion = z.infer<typeof suggestionSchema>;\n\n// Schema for LLM response (used internally)\nexport const suggestionsResponseSchema = z.object({\n suggestions: z.array(suggestionSchema).max(4),\n});\nexport type SuggestionsResponse = z.infer<typeof suggestionsResponseSchema>;\n\n// Schema for API response with IDs (used by frontend)\nexport const suggestionWithIdSchema = suggestionSchema.extend({\n id: z.string(),\n});\nexport type SuggestionWithId = z.infer<typeof suggestionWithIdSchema>;\n\nexport const suggestionsApiResponseSchema = z.object({\n suggestions: z.array(suggestionWithIdSchema).max(4),\n suggestionSessionId: z.string(),\n});\nexport type SuggestionsApiResponse = z.infer<typeof suggestionsApiResponseSchema>;\n\n// Request schemas\nexport const recentFailedJobSchema = z.object({\n id: z.string(),\n status: z.enum(['error', 'warning']),\n component: z.string(),\n configId: z.string(),\n configName: z.string().optional(),\n createdTime: z.string(),\n durationSeconds: z.number().int().nonnegative().optional(),\n errorMessage: z.string().max(200).optional(),\n});\nexport type RecentFailedJob = z.infer<typeof recentFailedJobSchema>;\n\nexport const deprecatedComponentSchema = z.object({\n id: z.string(),\n name: z.string(),\n type: z.string(),\n expiredOn: z.string(),\n configCount: z.number().int().nonnegative(),\n});\nexport type DeprecatedComponent = z.infer<typeof deprecatedComponentSchema>;\n\nexport const userRecentEditSchema = z.object({\n component: z.string(),\n configId: z.string(),\n configName: z.string(),\n lastEdited: z.string(),\n});\nexport type UserRecentEdit = z.infer<typeof userRecentEditSchema>;\n\nexport const dashboardContextDataSchema = z.object({\n recentFailedJobs: z.array(recentFailedJobSchema).max(5),\n deprecatedComponents: z.array(deprecatedComponentSchema).max(5),\n userRecentEdits: z.array(userRecentEditSchema).max(5),\n currentUserEmail: z.string().email(),\n});\nexport type DashboardContextData = z.infer<typeof dashboardContextDataSchema>;\n\nexport const JOB_STATUSES = [\n 'created',\n 'waiting',\n 'processing',\n 'success',\n 'error',\n 'terminating',\n 'terminated',\n 'cancelled',\n 'warning',\n] as const;\n\nexport const jobDetailContextDataSchema = z.object({\n job: z.object({\n id: z.string(),\n status: z.enum(JOB_STATUSES),\n component: z.string(),\n configId: z.string().optional(),\n configName: z.string().optional(),\n createdTime: z.string(),\n startTime: z.string().optional(),\n endTime: z.string().optional(),\n durationSeconds: z.number().int().nonnegative().optional(),\n errorMessage: z.string().max(500).optional(),\n errorType: z.enum(['user', 'application']).optional(),\n backendSize: z.string().optional(),\n }),\n component: z\n .object({\n id: z.string(),\n name: z.string(),\n type: z.string(),\n })\n .optional(),\n runtimeHistory: z\n .object({\n averageDurationSeconds: z.number().nonnegative().optional(),\n minDurationSeconds: z.number().nonnegative().optional(),\n maxDurationSeconds: z.number().nonnegative().optional(),\n recentJobsCount: z.number().int().nonnegative(),\n isSlowerThanAverage: z.boolean().optional(),\n isFasterThanAverage: z.boolean().optional(),\n percentageDifference: z.number().optional(),\n })\n .optional(),\n currentUserEmail: z.string().email(),\n});\nexport type JobDetailContextData = z.infer<typeof jobDetailContextDataSchema>;\n\nexport const configurationDetailContextDataSchema = z.object({\n configuration: z.object({\n id: z.string(),\n name: z.string(),\n description: z.string().max(500).optional(),\n component: z.string(),\n hasRows: z.boolean(),\n rowCount: z.number().int().nonnegative().optional(),\n lastChangeDescription: z.string().max(200).optional(),\n }),\n component: z\n .object({\n id: z.string(),\n name: z.string(),\n type: z.string(),\n })\n .optional(),\n latestJobs: z\n .array(\n z.object({\n id: z.string(),\n status: z.enum(JOB_STATUSES),\n durationSeconds: z.number().int().nonnegative().optional(),\n errorMessage: z.string().max(200).optional(),\n createdTime: z.string(),\n }),\n )\n .max(5)\n .optional(),\n currentUserEmail: z.string().email(),\n});\nexport type ConfigurationDetailContextData = z.infer<typeof configurationDetailContextDataSchema>;\n\nexport const dashboardSuggestionsRequestSchema = z.object({\n context: z.literal('dashboard'),\n data: dashboardContextDataSchema,\n});\n\nexport const jobDetailSuggestionsRequestSchema = z.object({\n context: z.literal('job-detail'),\n data: jobDetailContextDataSchema,\n});\n\nexport const configurationDetailSuggestionsRequestSchema = z.object({\n context: z.literal('configuration-detail'),\n data: configurationDetailContextDataSchema,\n});\n\nexport const suggestionsRequestSchema = z.discriminatedUnion('context', [\n dashboardSuggestionsRequestSchema,\n jobDetailSuggestionsRequestSchema,\n configurationDetailSuggestionsRequestSchema,\n]);\nexport type SuggestionsRequestBody = z.infer<typeof suggestionsRequestSchema>;\n"]}
@@ -0,0 +1,39 @@
1
+ // src/domain/project.ts
2
+ var hasFeature = (token, ...feature) => {
3
+ if (feature.length === 0) return false;
4
+ const projectFeatureSet = new Set(token.owner.features);
5
+ return feature.every((x) => projectFeatureSet.has(x));
6
+ };
7
+ var hasAdminFeature = (token, ...feature) => {
8
+ if (feature.length === 0) return false;
9
+ const adminFeatureSet = new Set(token.admin.features);
10
+ return feature.every((x) => adminFeatureSet.has(x));
11
+ };
12
+ var createProject = ({ sapiToken }) => {
13
+ const { owner, admin } = sapiToken;
14
+ const projectFeatureSet = new Set(owner.features);
15
+ const adminFeatureSet = new Set(admin.features);
16
+ const hasFeature2 = (...feature) => {
17
+ if (feature.length === 0) return false;
18
+ return feature.every((x) => projectFeatureSet.has(x));
19
+ };
20
+ const hasAdminFeature2 = (...feature) => {
21
+ if (feature.length === 0) return false;
22
+ return feature.every((x) => adminFeatureSet.has(x));
23
+ };
24
+ const hasBackend = (backend) => {
25
+ if (backend === "bigquery") return owner.hasBigquery;
26
+ if (backend === "snowflake") return owner.hasSnowflake;
27
+ return false;
28
+ };
29
+ return {
30
+ hasFeature: hasFeature2,
31
+ hasAdminFeature: hasAdminFeature2,
32
+ hasBackend,
33
+ sapiToken
34
+ };
35
+ };
36
+
37
+ export { createProject, hasAdminFeature, hasFeature };
38
+ //# sourceMappingURL=chunk-UABYNGBZ.js.map
39
+ //# sourceMappingURL=chunk-UABYNGBZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/domain/project.ts"],"names":["hasFeature","hasAdminFeature"],"mappings":";AAMO,IAAM,UAAA,GAAa,CAAC,KAAA,EAAA,GAAwB,OAAA,KAA+B;AAChF,EAAA,IAAI,OAAA,CAAQ,MAAA,KAAW,CAAA,EAAG,OAAO,KAAA;AACjC,EAAA,MAAM,iBAAA,GAAoB,IAAI,GAAA,CAAI,KAAA,CAAM,MAAM,QAAQ,CAAA;AACtD,EAAA,OAAO,QAAQ,KAAA,CAAM,CAAC,MAAM,iBAAA,CAAkB,GAAA,CAAI,CAAC,CAAC,CAAA;AACtD;AAEO,IAAM,eAAA,GAAkB,CAAC,KAAA,EAAA,GAAwB,OAAA,KAA+B;AACrF,EAAA,IAAI,OAAA,CAAQ,MAAA,KAAW,CAAA,EAAG,OAAO,KAAA;AACjC,EAAA,MAAM,eAAA,GAAkB,IAAI,GAAA,CAAI,KAAA,CAAM,MAAM,QAAQ,CAAA;AACpD,EAAA,OAAO,QAAQ,KAAA,CAAM,CAAC,MAAM,eAAA,CAAgB,GAAA,CAAI,CAAC,CAAC,CAAA;AACpD;AAEO,IAAM,aAAA,GAAgB,CAAC,EAAE,SAAA,EAAU,KAAe;AACvD,EAAA,MAAM,EAAE,KAAA,EAAO,KAAA,EAAM,GAAI,SAAA;AACzB,EAAA,MAAM,iBAAA,GAAoB,IAAI,GAAA,CAAI,KAAA,CAAM,QAAQ,CAAA;AAChD,EAAA,MAAM,eAAA,GAAkB,IAAI,GAAA,CAAI,KAAA,CAAM,QAAQ,CAAA;AAE9C,EAAA,MAAMA,WAAAA,GAAa,IAAI,OAAA,KAAsB;AAC3C,IAAA,IAAI,OAAA,CAAQ,MAAA,KAAW,CAAA,EAAG,OAAO,KAAA;AACjC,IAAA,OAAO,QAAQ,KAAA,CAAM,CAAC,MAAM,iBAAA,CAAkB,GAAA,CAAI,CAAC,CAAC,CAAA;AAAA,EACtD,CAAA;AAEA,EAAA,MAAMC,gBAAAA,GAAkB,IAAI,OAAA,KAAsB;AAChD,IAAA,IAAI,OAAA,CAAQ,MAAA,KAAW,CAAA,EAAG,OAAO,KAAA;AACjC,IAAA,OAAO,QAAQ,KAAA,CAAM,CAAC,MAAM,eAAA,CAAgB,GAAA,CAAI,CAAC,CAAC,CAAA;AAAA,EACpD,CAAA;AAEA,EAAA,MAAM,UAAA,GAAa,CAAC,OAAA,KAA8B;AAChD,IAAA,IAAI,OAAA,KAAY,UAAA,EAAY,OAAO,KAAA,CAAM,WAAA;AACzC,IAAA,IAAI,OAAA,KAAY,WAAA,EAAa,OAAO,KAAA,CAAM,YAAA;AAC1C,IAAA,OAAO,KAAA;AAAA,EACT,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,UAAA,EAAAD,WAAAA;AAAA,IACA,eAAA,EAAAC,gBAAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF;AACF","file":"chunk-UABYNGBZ.js","sourcesContent":["import type { Backend, StorageToken } from '../clients/storage/tokens/types';\n\ntype Options = {\n sapiToken: StorageToken;\n};\n\nexport const hasFeature = (token: StorageToken, ...feature: string[]): boolean => {\n if (feature.length === 0) return false;\n const projectFeatureSet = new Set(token.owner.features);\n return feature.every((x) => projectFeatureSet.has(x));\n};\n\nexport const hasAdminFeature = (token: StorageToken, ...feature: string[]): boolean => {\n if (feature.length === 0) return false;\n const adminFeatureSet = new Set(token.admin.features);\n return feature.every((x) => adminFeatureSet.has(x));\n};\n\nexport const createProject = ({ sapiToken }: Options) => {\n const { owner, admin } = sapiToken;\n const projectFeatureSet = new Set(owner.features);\n const adminFeatureSet = new Set(admin.features);\n\n const hasFeature = (...feature: string[]) => {\n if (feature.length === 0) return false;\n return feature.every((x) => projectFeatureSet.has(x));\n };\n\n const hasAdminFeature = (...feature: string[]) => {\n if (feature.length === 0) return false;\n return feature.every((x) => adminFeatureSet.has(x));\n };\n\n const hasBackend = (backend: Backend): boolean => {\n if (backend === 'bigquery') return owner.hasBigquery;\n if (backend === 'snowflake') return owner.hasSnowflake;\n return false;\n };\n\n return {\n hasFeature,\n hasAdminFeature,\n hasBackend,\n sapiToken,\n };\n};\n\nexport type Project = ReturnType<typeof createProject>;\n"]}
@@ -0,0 +1,220 @@
1
+ import { createOpenapiFetchClient, normalizeBaseUrl, parseContentDispositionHeader, HttpHeader, isApiError, HttpStatus } from './chunk-PD3LJYS2.js';
2
+ import * as z from 'zod';
3
+ import dayjs from 'dayjs';
4
+ import utc from 'dayjs/plugin/utc';
5
+
6
+ var TailError = z.object({
7
+ context: z.object({
8
+ code: z.string()
9
+ })
10
+ });
11
+ dayjs.extend(utc);
12
+ var ISO_TIMESTAMP_REGEX = /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?Z/;
13
+ var LEADING_ISO_TIMESTAMP_REGEX = /^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?Z)\s?/;
14
+ var tryParseJsonl = (line) => {
15
+ if (!line.startsWith("{")) return null;
16
+ let parsed;
17
+ try {
18
+ parsed = JSON.parse(line);
19
+ } catch {
20
+ return null;
21
+ }
22
+ if (typeof parsed !== "object" || parsed === null) return null;
23
+ const record = parsed;
24
+ const { timestamp, message } = record;
25
+ if (typeof timestamp !== "string" || typeof message !== "string") return null;
26
+ return {
27
+ timestamp,
28
+ message
29
+ };
30
+ };
31
+ var parsePlainTextLine = (line) => {
32
+ const match = line.match(LEADING_ISO_TIMESTAMP_REGEX);
33
+ if (match) {
34
+ return { timestamp: match[1], message: line.slice(match[0].length) };
35
+ }
36
+ return { timestamp: null, message: line };
37
+ };
38
+ var parseLogLine = (line) => tryParseJsonl(line) ?? parsePlainTextLine(line);
39
+ var toLogEntryFromObject = (raw) => {
40
+ if (typeof raw.message !== "string") return null;
41
+ return {
42
+ timestamp: typeof raw.timestamp === "string" ? raw.timestamp : null,
43
+ message: raw.message
44
+ };
45
+ };
46
+ var isPlainObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
47
+ var parseLogLines = (raw) => {
48
+ if (raw === null || raw === void 0 || raw === "") return [];
49
+ if (Array.isArray(raw)) {
50
+ return raw.flatMap((item) => {
51
+ if (typeof item === "string") return item === "" ? [] : [parseLogLine(item)];
52
+ if (isPlainObject(item)) {
53
+ const entry = toLogEntryFromObject(item);
54
+ return entry ? [entry] : [];
55
+ }
56
+ return [];
57
+ });
58
+ }
59
+ if (isPlainObject(raw)) {
60
+ const entry = toLogEntryFromObject(raw);
61
+ return entry ? [entry] : [];
62
+ }
63
+ if (typeof raw !== "string") return [];
64
+ const lines = raw.split("\n");
65
+ const entries = [];
66
+ for (const line of lines) {
67
+ if (line === "") continue;
68
+ entries.push(parseLogLine(line));
69
+ }
70
+ return entries;
71
+ };
72
+ var parseLastLogTimestamp = (logs) => {
73
+ const entries = parseLogLines(logs);
74
+ for (let i = entries.length - 1; i >= 0; i--) {
75
+ const entry = entries[i];
76
+ if (!entry) continue;
77
+ if (entry.timestamp) return entry.timestamp;
78
+ const match = entry.message.match(ISO_TIMESTAMP_REGEX);
79
+ if (match) return match[0];
80
+ }
81
+ return null;
82
+ };
83
+ var calculateNextLogTimestamp = (timestamp) => {
84
+ if (timestamp === null) return null;
85
+ return dayjs(timestamp).utc().add(1, "second").utc().format();
86
+ };
87
+ var prepareAppRun = (appRun) => {
88
+ return {
89
+ ...appRun,
90
+ state: appRun.state ?? (appRun.stoppedAt ? "finished" : "running")
91
+ // fallback state for historic non migrated runs
92
+ };
93
+ };
94
+
95
+ // src/clients/dataScience/dataScienceClient.ts
96
+ var createDataScienceClient = ({ baseUrl, middlewares }) => {
97
+ const client = createOpenapiFetchClient({
98
+ baseUrl: normalizeBaseUrl(baseUrl),
99
+ middlewares
100
+ });
101
+ const getAppRuns = async (appId, query, signal) => {
102
+ const { data } = await client.get("/apps/{appId}/runs", { path: { appId }, query }, { signal });
103
+ return data.map(prepareAppRun);
104
+ };
105
+ const getAppRun = async (appId, runId, signal) => {
106
+ const { data } = await client.get(
107
+ "/apps/{appId}/runs/{runId}",
108
+ { path: { appId, runId } },
109
+ { signal }
110
+ );
111
+ return prepareAppRun(data);
112
+ };
113
+ const getAppLogsDownload = async (id, signal) => {
114
+ const { data, response } = await client.get(
115
+ "/apps/{appId}/logs/download",
116
+ { path: { appId: id } },
117
+ { signal }
118
+ );
119
+ const contentDisposition = parseContentDispositionHeader(
120
+ response.headers.get(HttpHeader.CONTENT_DISPOSITION)
121
+ );
122
+ return {
123
+ logs: data,
124
+ fileName: contentDisposition?.filename ?? "logs.txt"
125
+ };
126
+ };
127
+ const getAppLogsTail = async (id, { query, signal } = {}) => {
128
+ try {
129
+ const { data } = await client.get(
130
+ "/apps/{appId}/logs/tail",
131
+ {
132
+ query,
133
+ path: {
134
+ appId: id
135
+ }
136
+ },
137
+ {
138
+ signal
139
+ }
140
+ );
141
+ const logs = data === "" ? null : data;
142
+ const lastLogTimestamp = parseLastLogTimestamp(logs);
143
+ const nextLogTimestamp = calculateNextLogTimestamp(lastLogTimestamp);
144
+ return {
145
+ entries: parseLogLines(logs),
146
+ nextLogTimestamp
147
+ };
148
+ } catch (error) {
149
+ if (isApiError(error) && error.response.status === HttpStatus.BAD_REQUEST && TailError.safeParse(error.data).data?.context?.code === "apps.appNotRunning") {
150
+ return { entries: [], nextLogTimestamp: null };
151
+ }
152
+ throw error;
153
+ }
154
+ };
155
+ const getApps = async (query, signal) => {
156
+ const { data } = await client.get("/apps", { query }, { signal });
157
+ return data;
158
+ };
159
+ const getApp = async (appId, signal) => {
160
+ const { data } = await client.get("/apps/{appId}", { path: { appId } }, { signal });
161
+ return data;
162
+ };
163
+ const createApp = async (body, signal) => {
164
+ const { data } = await client.post("/apps", { body }, { signal });
165
+ return data;
166
+ };
167
+ const patchApp = async (appId, body, signal) => {
168
+ const { data } = await client.patch(
169
+ "/apps/{appId}",
170
+ {
171
+ path: { appId },
172
+ body
173
+ },
174
+ { signal }
175
+ );
176
+ return data;
177
+ };
178
+ const deleteApp = async (appId, signal) => {
179
+ return client.delete("/apps/{appId}", { path: { appId } }, { signal });
180
+ };
181
+ const getAppPassword = async (appId, signal) => {
182
+ const { data } = await client.get("/apps/{appId}/password", { path: { appId } }, { signal });
183
+ return data;
184
+ };
185
+ const resetAppPassword = async (appId, signal) => {
186
+ const { data } = await client.post(
187
+ "/apps/{appId}/reset-password",
188
+ { path: { appId } },
189
+ { signal }
190
+ );
191
+ return data;
192
+ };
193
+ const getRuntimes = async (signal) => {
194
+ const { data } = await client.get("/runtimes", {}, { signal });
195
+ return data;
196
+ };
197
+ const getSandbox = async (appId, signal) => {
198
+ const { data } = await client.get("/sandboxes/{appId}", { path: { appId } }, { signal });
199
+ return data;
200
+ };
201
+ return {
202
+ getAppRuns,
203
+ getAppRun,
204
+ getAppLogsDownload,
205
+ getAppLogsTail,
206
+ getApps,
207
+ getApp,
208
+ createApp,
209
+ patchApp,
210
+ deleteApp,
211
+ getAppPassword,
212
+ resetAppPassword,
213
+ getRuntimes,
214
+ getSandbox
215
+ };
216
+ };
217
+
218
+ export { createDataScienceClient, parseLogLines };
219
+ //# sourceMappingURL=chunk-UXF53ZOV.js.map
220
+ //# sourceMappingURL=chunk-UXF53ZOV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/clients/dataScience/schemas.ts","../src/clients/dataScience/utils.ts","../src/clients/dataScience/dataScienceClient.ts"],"names":[],"mappings":"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","file":"chunk-UXF53ZOV.js","sourcesContent":["import * as z from 'zod';\n\nexport const TailError = z.object({\n context: z.object({\n code: z.string(),\n }),\n});\n","import dayjs from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\n\nimport type { RawAppRun } from './types';\n\ndayjs.extend(utc);\n\nexport type LogEntry = {\n timestamp: string | null;\n message: string;\n};\n\nconst ISO_TIMESTAMP_REGEX = /\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z/;\nconst LEADING_ISO_TIMESTAMP_REGEX = /^(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z)\\s?/;\n\nconst tryParseJsonl = (line: string): LogEntry | null => {\n if (!line.startsWith('{')) return null;\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(line);\n } catch {\n return null;\n }\n\n if (typeof parsed !== 'object' || parsed === null) return null;\n\n const record = parsed as Record<string, unknown>;\n const { timestamp, message } = record;\n\n if (typeof timestamp !== 'string' || typeof message !== 'string') return null;\n\n return {\n timestamp,\n message,\n };\n};\n\nconst parsePlainTextLine = (line: string): LogEntry => {\n const match = line.match(LEADING_ISO_TIMESTAMP_REGEX);\n if (match) {\n return { timestamp: match[1]!, message: line.slice(match[0].length) };\n }\n return { timestamp: null, message: line };\n};\n\nexport const parseLogLine = (line: string): LogEntry =>\n tryParseJsonl(line) ?? parsePlainTextLine(line);\n\nconst toLogEntryFromObject = (raw: Record<string, unknown>): LogEntry | null => {\n if (typeof raw.message !== 'string') return null;\n return {\n timestamp: typeof raw.timestamp === 'string' ? raw.timestamp : null,\n message: raw.message,\n };\n};\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nexport const parseLogLines = (raw: unknown): LogEntry[] => {\n if (raw === null || raw === undefined || raw === '') return [];\n\n if (Array.isArray(raw)) {\n return raw.flatMap((item) => {\n if (typeof item === 'string') return item === '' ? [] : [parseLogLine(item)];\n if (isPlainObject(item)) {\n const entry = toLogEntryFromObject(item);\n return entry ? [entry] : [];\n }\n return [];\n });\n }\n\n if (isPlainObject(raw)) {\n const entry = toLogEntryFromObject(raw);\n return entry ? [entry] : [];\n }\n\n if (typeof raw !== 'string') return [];\n\n const lines = raw.split('\\n');\n const entries: LogEntry[] = [];\n for (const line of lines) {\n if (line === '') continue;\n entries.push(parseLogLine(line));\n }\n return entries;\n};\n\nexport const parseLastLogTimestamp = (logs: unknown) => {\n const entries = parseLogLines(logs);\n for (let i = entries.length - 1; i >= 0; i--) {\n const entry = entries[i];\n if (!entry) continue;\n if (entry.timestamp) return entry.timestamp;\n\n // A plain-text line may carry a timestamp embedded mid-line (legacy format).\n const match = entry.message.match(ISO_TIMESTAMP_REGEX);\n if (match) return match[0];\n }\n return null;\n};\n\nexport const calculateNextLogTimestamp = (timestamp: string | null) => {\n if (timestamp === null) return null;\n return dayjs(timestamp).utc().add(1, 'second').utc().format();\n};\n\nexport const prepareAppRun = (appRun: RawAppRun) => {\n return {\n ...appRun,\n state: appRun.state ?? (appRun.stoppedAt ? 'finished' : 'running'), // fallback state for historic non migrated runs\n };\n};\n","import { HttpStatus } from '../../constants';\nimport {\n createOpenapiFetchClient,\n HttpHeader,\n isApiError,\n parseContentDispositionHeader,\n} from '../../fetchClient';\nimport { normalizeBaseUrl } from '../../utils/normalizeBaseUrl';\nimport type { ClientInitOptions } from '../types';\n\nimport type { paths } from './__generated__/schema';\nimport { TailError } from './schemas';\nimport type {\n CreateDataAppBody,\n DeleteDataAppPath,\n GetAppsQuery,\n GetDataAppLogsDownloadPath,\n GetDataAppLogsTailPath,\n GetDataAppLogsTailQuery,\n GetDataAppPasswordPath,\n GetDataAppPath,\n GetDataAppRunPath,\n GetDataAppRunsPath,\n GetDataAppRunsQuery,\n GetSandboxPath,\n PatchDataAppBody,\n PatchDataAppPath,\n ResetDataAppPasswordPath,\n} from './types';\nimport {\n calculateNextLogTimestamp,\n parseLastLogTimestamp,\n parseLogLines,\n prepareAppRun,\n} from './utils';\n\nexport const createDataScienceClient = ({ baseUrl, middlewares }: ClientInitOptions) => {\n const client = createOpenapiFetchClient<paths>({\n baseUrl: normalizeBaseUrl(baseUrl),\n middlewares,\n });\n\n const getAppRuns = async (\n appId: GetDataAppRunsPath['appId'],\n query?: GetDataAppRunsQuery,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get('/apps/{appId}/runs', { path: { appId }, query }, { signal });\n\n return data.map(prepareAppRun);\n };\n\n const getAppRun = async (\n appId: GetDataAppRunPath['appId'],\n runId: GetDataAppRunPath['runId'],\n signal?: AbortSignal,\n ) => {\n const { data } = await client.get(\n '/apps/{appId}/runs/{runId}',\n { path: { appId, runId } },\n { signal },\n );\n\n return prepareAppRun(data);\n };\n\n const getAppLogsDownload = async (\n id: GetDataAppLogsDownloadPath['appId'],\n signal?: AbortSignal,\n ) => {\n const { data, response } = await client.get(\n '/apps/{appId}/logs/download',\n { path: { appId: id } },\n { signal },\n );\n\n const contentDisposition = parseContentDispositionHeader(\n response.headers.get(HttpHeader.CONTENT_DISPOSITION),\n );\n\n return {\n logs: data,\n fileName: contentDisposition?.filename ?? 'logs.txt',\n };\n };\n\n const getAppLogsTail = async (\n id: GetDataAppLogsTailPath['appId'],\n { query, signal }: { query?: GetDataAppLogsTailQuery; signal?: AbortSignal } = {},\n ) => {\n try {\n const { data } = await client.get(\n '/apps/{appId}/logs/tail',\n {\n query,\n path: {\n appId: id,\n },\n },\n {\n signal,\n },\n );\n\n const logs = data === '' ? null : data;\n const lastLogTimestamp = parseLastLogTimestamp(logs);\n const nextLogTimestamp = calculateNextLogTimestamp(lastLogTimestamp);\n\n return {\n entries: parseLogLines(logs),\n nextLogTimestamp: nextLogTimestamp,\n };\n } catch (error) {\n if (\n isApiError(error) &&\n error.response.status === HttpStatus.BAD_REQUEST &&\n TailError.safeParse(error.data).data?.context?.code === 'apps.appNotRunning'\n ) {\n return { entries: [], nextLogTimestamp: null };\n }\n throw error;\n }\n };\n\n const getApps = async (query: GetAppsQuery, signal?: AbortSignal) => {\n const { data } = await client.get('/apps', { query }, { signal });\n\n return data;\n };\n\n const getApp = async (appId: GetDataAppPath['appId'], signal?: AbortSignal) => {\n const { data } = await client.get('/apps/{appId}', { path: { appId } }, { signal });\n\n return data;\n };\n\n const createApp = async (body: CreateDataAppBody, signal?: AbortSignal) => {\n const { data } = await client.post('/apps', { body }, { signal });\n\n return data;\n };\n\n const patchApp = async (\n appId: PatchDataAppPath['appId'],\n body: PatchDataAppBody,\n signal?: AbortSignal,\n ) => {\n const { data } = await client.patch(\n '/apps/{appId}',\n {\n path: { appId: appId },\n body: body,\n },\n { signal },\n );\n return data;\n };\n\n const deleteApp = async (appId: DeleteDataAppPath['appId'], signal?: AbortSignal) => {\n return client.delete('/apps/{appId}', { path: { appId } }, { signal });\n };\n\n const getAppPassword = async (appId: GetDataAppPasswordPath['appId'], signal?: AbortSignal) => {\n const { data } = await client.get('/apps/{appId}/password', { path: { appId } }, { signal });\n\n return data;\n };\n\n const resetAppPassword = async (\n appId: ResetDataAppPasswordPath['appId'],\n signal?: AbortSignal,\n ) => {\n const { data } = await client.post(\n '/apps/{appId}/reset-password',\n { path: { appId } },\n { signal },\n );\n\n return data;\n };\n\n const getRuntimes = async (signal?: AbortSignal) => {\n const { data } = await client.get('/runtimes', {}, { signal });\n\n return data;\n };\n\n const getSandbox = async (appId: GetSandboxPath['appId'], signal?: AbortSignal) => {\n const { data } = await client.get('/sandboxes/{appId}', { path: { appId } }, { signal });\n\n return data;\n };\n\n return {\n getAppRuns,\n getAppRun,\n getAppLogsDownload,\n getAppLogsTail,\n getApps,\n getApp,\n createApp,\n patchApp,\n deleteApp,\n getAppPassword,\n resetAppPassword,\n getRuntimes,\n getSandbox,\n };\n};\n"]}
@@ -0,0 +1,20 @@
1
+ import { createGenericFetchClient, normalizeBaseUrl } from './chunk-PD3LJYS2.js';
2
+
3
+ // src/clients/status/statusClient.ts
4
+ var createStatusClient = ({ baseUrl, middlewares }) => {
5
+ const client = createGenericFetchClient({
6
+ baseUrl: normalizeBaseUrl(baseUrl),
7
+ middlewares
8
+ });
9
+ const getSummary = async (signal) => {
10
+ const { data } = await client.get("/summary.json", {}, { signal });
11
+ return data;
12
+ };
13
+ return {
14
+ getSummary
15
+ };
16
+ };
17
+
18
+ export { createStatusClient };
19
+ //# sourceMappingURL=chunk-VAOCYA6B.js.map
20
+ //# sourceMappingURL=chunk-VAOCYA6B.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/clients/status/statusClient.ts"],"names":[],"mappings":";;;AAMO,IAAM,kBAAA,GAAqB,CAAC,EAAE,OAAA,EAAS,aAAY,KAAyB;AACjF,EAAA,MAAM,SAAS,wBAAA,CAAyB;AAAA,IACtC,OAAA,EAAS,iBAAiB,OAAO,CAAA;AAAA,IACjC;AAAA,GACD,CAAA;AAED,EAAA,MAAM,UAAA,GAAa,OAAO,MAAA,KAAyB;AACjD,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,MAAA,CAAO,GAAA,CAAmB,eAAA,EAAiB,EAAC,EAAG,EAAE,MAAA,EAAQ,CAAA;AAChF,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAA,OAAO;AAAA,IACL;AAAA,GACF;AACF","file":"chunk-VAOCYA6B.js","sourcesContent":["import { createGenericFetchClient } from '../../fetchClient';\nimport { normalizeBaseUrl } from '../../utils/normalizeBaseUrl';\nimport type { ClientInitOptions } from '../types';\n\nimport type { StatusSummary } from './types';\n\nexport const createStatusClient = ({ baseUrl, middlewares }: ClientInitOptions) => {\n const client = createGenericFetchClient({\n baseUrl: normalizeBaseUrl(baseUrl),\n middlewares,\n });\n\n const getSummary = async (signal?: AbortSignal) => {\n const { data } = await client.get<StatusSummary>('/summary.json', {}, { signal });\n return data;\n };\n\n return {\n getSummary,\n };\n};\n"]}
@@ -0,0 +1,45 @@
1
+ import { createOpenapiFetchClient, normalizeBaseUrl } from './chunk-PD3LJYS2.js';
2
+
3
+ // src/clients/ai/aiClient.ts
4
+ var createAiClient = ({ baseUrl, middlewares }) => {
5
+ const client = createOpenapiFetchClient({
6
+ baseUrl: normalizeBaseUrl(baseUrl),
7
+ middlewares
8
+ });
9
+ const describeConfigurationVersion = async (body) => {
10
+ const { data } = await client.post("/describe/configuration-version", { body });
11
+ return data;
12
+ };
13
+ const describeConfigurationMerge = async (body) => {
14
+ const { data } = await client.post("/describe/configuration-merge", { body });
15
+ return data;
16
+ };
17
+ const explainError = async (body) => {
18
+ const { data } = await client.post("/explain", { body });
19
+ return data;
20
+ };
21
+ const describeConfiguration = async (body) => {
22
+ const { data } = await client.post("/describe/configuration", { body });
23
+ return data;
24
+ };
25
+ const suggestComponent = async (body) => {
26
+ const { data } = await client.post("/suggest/component", { body });
27
+ return data;
28
+ };
29
+ const feedback = async (body) => {
30
+ const { data } = await client.post("/feedback", { body });
31
+ return data;
32
+ };
33
+ return {
34
+ describeConfigurationVersion,
35
+ describeConfigurationMerge,
36
+ explainError,
37
+ describeConfiguration,
38
+ suggestComponent,
39
+ feedback
40
+ };
41
+ };
42
+
43
+ export { createAiClient };
44
+ //# sourceMappingURL=chunk-VS5PM7KL.js.map
45
+ //# sourceMappingURL=chunk-VS5PM7KL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/clients/ai/aiClient.ts"],"names":[],"mappings":";;;AAcO,IAAM,cAAA,GAAiB,CAAC,EAAE,OAAA,EAAS,aAAY,KAAyB;AAC7E,EAAA,MAAM,SAAS,wBAAA,CAAgC;AAAA,IAC7C,OAAA,EAAS,iBAAiB,OAAO,CAAA;AAAA,IACjC;AAAA,GACD,CAAA;AAED,EAAA,MAAM,4BAAA,GAA+B,OAAO,IAAA,KAA2C;AACrF,IAAA,MAAM,EAAE,MAAK,GAAI,MAAM,OAAO,IAAA,CAAK,iCAAA,EAAmC,EAAE,IAAA,EAAM,CAAA;AAE9E,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,0BAAA,GAA6B,OAAO,IAAA,KAAyC;AACjF,IAAA,MAAM,EAAE,MAAK,GAAI,MAAM,OAAO,IAAA,CAAK,+BAAA,EAAiC,EAAE,IAAA,EAAM,CAAA;AAE5E,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,YAAA,GAAe,OAAO,IAAA,KAA2B;AACrD,IAAA,MAAM,EAAE,MAAK,GAAI,MAAM,OAAO,IAAA,CAAK,UAAA,EAAY,EAAE,IAAA,EAAM,CAAA;AAEvD,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,qBAAA,GAAwB,OAAO,IAAA,KAAoC;AACvE,IAAA,MAAM,EAAE,MAAK,GAAI,MAAM,OAAO,IAAA,CAAK,yBAAA,EAA2B,EAAE,IAAA,EAAM,CAAA;AAEtE,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,gBAAA,GAAmB,OAAO,IAAA,KAA+B;AAC7D,IAAA,MAAM,EAAE,MAAK,GAAI,MAAM,OAAO,IAAA,CAAK,oBAAA,EAAsB,EAAE,IAAA,EAAM,CAAA;AAEjE,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,QAAA,GAAW,OAAO,IAAA,KAAuB;AAC7C,IAAA,MAAM,EAAE,MAAK,GAAI,MAAM,OAAO,IAAA,CAAK,WAAA,EAAa,EAAE,IAAA,EAAM,CAAA;AAExD,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,4BAAA;AAAA,IACA,0BAAA;AAAA,IACA,YAAA;AAAA,IACA,qBAAA;AAAA,IACA,gBAAA;AAAA,IACA;AAAA,GACF;AACF","file":"chunk-VS5PM7KL.js","sourcesContent":["import { createOpenapiFetchClient } from '../../fetchClient';\nimport { normalizeBaseUrl } from '../../utils/normalizeBaseUrl';\nimport type { ClientInitOptions } from '../types';\n\nimport type { paths } from './__generated__/schema';\nimport type {\n DescribeConfigurationBody,\n DescribeConfigurationMergeBody,\n DescribeConfigurationVersionBody,\n ExplainErrorBody,\n FeedbackBody,\n SuggestComponentBody,\n} from './types';\n\nexport const createAiClient = ({ baseUrl, middlewares }: ClientInitOptions) => {\n const client = createOpenapiFetchClient<paths>({\n baseUrl: normalizeBaseUrl(baseUrl),\n middlewares,\n });\n\n const describeConfigurationVersion = async (body: DescribeConfigurationVersionBody) => {\n const { data } = await client.post('/describe/configuration-version', { body });\n\n return data;\n };\n\n const describeConfigurationMerge = async (body: DescribeConfigurationMergeBody) => {\n const { data } = await client.post('/describe/configuration-merge', { body });\n\n return data;\n };\n\n const explainError = async (body: ExplainErrorBody) => {\n const { data } = await client.post('/explain', { body });\n\n return data;\n };\n\n const describeConfiguration = async (body: DescribeConfigurationBody) => {\n const { data } = await client.post('/describe/configuration', { body });\n\n return data;\n };\n\n const suggestComponent = async (body: SuggestComponentBody) => {\n const { data } = await client.post('/suggest/component', { body });\n\n return data;\n };\n\n const feedback = async (body: FeedbackBody) => {\n const { data } = await client.post('/feedback', { body });\n\n return data;\n };\n\n return {\n describeConfigurationVersion,\n describeConfigurationMerge,\n explainError,\n describeConfiguration,\n suggestComponent,\n feedback,\n };\n};\n"]}
@@ -0,0 +1,24 @@
1
+ import { createGenericFetchClient, normalizeBaseUrl } from './chunk-PD3LJYS2.js';
2
+
3
+ // src/clients/assets/assetsClient.ts
4
+ var createAssetsClient = ({ baseUrl, middlewares }) => {
5
+ const client = createGenericFetchClient({
6
+ baseUrl: normalizeBaseUrl(baseUrl),
7
+ middlewares
8
+ });
9
+ const getPublishedChangelogPosts = async (signal) => {
10
+ const { data } = await client.get(
11
+ "/platform-changelog/published-posts.json",
12
+ {},
13
+ { signal }
14
+ );
15
+ return data;
16
+ };
17
+ return {
18
+ getPublishedChangelogPosts
19
+ };
20
+ };
21
+
22
+ export { createAssetsClient };
23
+ //# sourceMappingURL=chunk-WQ7EZWBF.js.map
24
+ //# sourceMappingURL=chunk-WQ7EZWBF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/clients/assets/assetsClient.ts"],"names":[],"mappings":";;;AAMO,IAAM,kBAAA,GAAqB,CAAC,EAAE,OAAA,EAAS,aAAY,KAAyB;AACjF,EAAA,MAAM,SAAS,wBAAA,CAAyB;AAAA,IACtC,OAAA,EAAS,iBAAiB,OAAO,CAAA;AAAA,IACjC;AAAA,GACD,CAAA;AAED,EAAA,MAAM,0BAAA,GAA6B,OAAO,MAAA,KAAyB;AACjE,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,MAAA,CAAO,GAAA;AAAA,MAC5B,0CAAA;AAAA,MACA,EAAC;AAAA,MACD,EAAE,MAAA;AAAO,KACX;AAEA,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAA,OAAO;AAAA,IACL;AAAA,GACF;AACF","file":"chunk-WQ7EZWBF.js","sourcesContent":["import { createGenericFetchClient } from '../../fetchClient';\nimport { normalizeBaseUrl } from '../../utils/normalizeBaseUrl';\nimport type { ClientInitOptions } from '../types';\n\nimport type { Post } from './types';\n\nexport const createAssetsClient = ({ baseUrl, middlewares }: ClientInitOptions) => {\n const client = createGenericFetchClient({\n baseUrl: normalizeBaseUrl(baseUrl),\n middlewares,\n });\n\n const getPublishedChangelogPosts = async (signal?: AbortSignal) => {\n const { data } = await client.get<Post[]>(\n '/platform-changelog/published-posts.json',\n {},\n { signal },\n );\n\n return data;\n };\n\n return {\n getPublishedChangelogPosts,\n };\n};\n"]}
@@ -0,0 +1,4 @@
1
+ 'use strict';
2
+
3
+ //# sourceMappingURL=chunk-XPDEQND7.cjs.map
4
+ //# sourceMappingURL=chunk-XPDEQND7.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-XPDEQND7.cjs"}