@keboola/api-client 1.0.1 → 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 (213) 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.js +3 -422
  12. package/dist/chat/index.js.map +1 -1
  13. package/dist/chat/suggestions.cjs +70 -152
  14. package/dist/chat/suggestions.cjs.map +1 -1
  15. package/dist/chat/suggestions.js +1 -138
  16. package/dist/chat/suggestions.js.map +1 -1
  17. package/dist/chunk-345V46LR.cjs +934 -0
  18. package/dist/chunk-345V46LR.cjs.map +1 -0
  19. package/dist/chunk-3B7L6MCG.js +189 -0
  20. package/dist/chunk-3B7L6MCG.js.map +1 -0
  21. package/dist/chunk-3T54WH4X.cjs +42 -0
  22. package/dist/chunk-3T54WH4X.cjs.map +1 -0
  23. package/dist/chunk-3Y6NK7TC.js +34 -0
  24. package/dist/chunk-3Y6NK7TC.js.map +1 -0
  25. package/dist/chunk-4N7XBMWP.js +930 -0
  26. package/dist/chunk-4N7XBMWP.js.map +1 -0
  27. package/dist/chunk-4RC5E3SL.js +140 -0
  28. package/dist/chunk-4RC5E3SL.js.map +1 -0
  29. package/dist/chunk-633QJMHH.cjs +73 -0
  30. package/dist/chunk-633QJMHH.cjs.map +1 -0
  31. package/dist/chunk-6RQDX6JY.cjs +132 -0
  32. package/dist/chunk-6RQDX6JY.cjs.map +1 -0
  33. package/dist/chunk-76AHKXLC.cjs +29 -0
  34. package/dist/chunk-76AHKXLC.cjs.map +1 -0
  35. package/dist/chunk-7FY6COWG.js +71 -0
  36. package/dist/chunk-7FY6COWG.js.map +1 -0
  37. package/dist/chunk-7J2R6XHB.js +3 -0
  38. package/dist/chunk-7J2R6XHB.js.map +1 -0
  39. package/dist/chunk-BGLICNTG.cjs +33 -0
  40. package/dist/chunk-BGLICNTG.cjs.map +1 -0
  41. package/dist/chunk-BR3SBEFE.cjs +182 -0
  42. package/dist/chunk-BR3SBEFE.cjs.map +1 -0
  43. package/dist/chunk-CVV4HROS.cjs +37 -0
  44. package/dist/chunk-CVV4HROS.cjs.map +1 -0
  45. package/dist/chunk-DCTDH77P.cjs +277 -0
  46. package/dist/chunk-DCTDH77P.cjs.map +1 -0
  47. package/dist/chunk-EBCZUGUX.js +35 -0
  48. package/dist/chunk-EBCZUGUX.js.map +1 -0
  49. package/dist/chunk-EY5LALX2.cjs +26 -0
  50. package/dist/chunk-EY5LALX2.cjs.map +1 -0
  51. package/dist/chunk-FBQHHAL5.js +40 -0
  52. package/dist/chunk-FBQHHAL5.js.map +1 -0
  53. package/dist/chunk-GF4XZK5N.cjs +43 -0
  54. package/dist/chunk-GF4XZK5N.cjs.map +1 -0
  55. package/dist/chunk-GNPQB3MT.js +27 -0
  56. package/dist/chunk-GNPQB3MT.js.map +1 -0
  57. package/dist/chunk-GO6SOMGL.js +181 -0
  58. package/dist/chunk-GO6SOMGL.js.map +1 -0
  59. package/dist/chunk-HCNNMUTR.cjs +36 -0
  60. package/dist/chunk-HCNNMUTR.cjs.map +1 -0
  61. package/dist/chunk-HPVTVQBJ.cjs +238 -0
  62. package/dist/chunk-HPVTVQBJ.cjs.map +1 -0
  63. package/dist/chunk-HYUGRMCY.cjs +247 -0
  64. package/dist/chunk-HYUGRMCY.cjs.map +1 -0
  65. package/dist/chunk-IJMQCOBC.js +34 -0
  66. package/dist/chunk-IJMQCOBC.js.map +1 -0
  67. package/dist/chunk-IY3VNVXD.cjs +183 -0
  68. package/dist/chunk-IY3VNVXD.cjs.map +1 -0
  69. package/dist/chunk-JKFIB6SQ.cjs +685 -0
  70. package/dist/chunk-JKFIB6SQ.cjs.map +1 -0
  71. package/dist/chunk-JLNOESHX.cjs +47 -0
  72. package/dist/chunk-JLNOESHX.cjs.map +1 -0
  73. package/dist/chunk-JURD5MC3.js +178 -0
  74. package/dist/chunk-JURD5MC3.js.map +1 -0
  75. package/dist/chunk-LV3ZWNDC.js +75 -0
  76. package/dist/chunk-LV3ZWNDC.js.map +1 -0
  77. package/dist/chunk-LZ6A6J2E.cjs +77 -0
  78. package/dist/chunk-LZ6A6J2E.cjs.map +1 -0
  79. package/dist/chunk-OKVYLO6C.js +108 -0
  80. package/dist/chunk-OKVYLO6C.js.map +1 -0
  81. package/dist/chunk-PD3LJYS2.js +218 -0
  82. package/dist/chunk-PD3LJYS2.js.map +1 -0
  83. package/dist/chunk-PV4HIVW2.js +130 -0
  84. package/dist/chunk-PV4HIVW2.js.map +1 -0
  85. package/dist/chunk-R7PD3BRA.js +261 -0
  86. package/dist/chunk-R7PD3BRA.js.map +1 -0
  87. package/dist/chunk-SAEG42HW.js +64 -0
  88. package/dist/chunk-SAEG42HW.js.map +1 -0
  89. package/dist/chunk-TIIRBQUA.cjs +110 -0
  90. package/dist/chunk-TIIRBQUA.cjs.map +1 -0
  91. package/dist/chunk-TXFQ4YIK.js +31 -0
  92. package/dist/chunk-TXFQ4YIK.js.map +1 -0
  93. package/dist/chunk-U5SE6W5M.cjs +158 -0
  94. package/dist/chunk-U5SE6W5M.cjs.map +1 -0
  95. package/dist/chunk-UABYNGBZ.js +39 -0
  96. package/dist/chunk-UABYNGBZ.js.map +1 -0
  97. package/dist/chunk-UXF53ZOV.js +220 -0
  98. package/dist/chunk-UXF53ZOV.js.map +1 -0
  99. package/dist/chunk-VAOCYA6B.js +20 -0
  100. package/dist/chunk-VAOCYA6B.js.map +1 -0
  101. package/dist/chunk-VS5PM7KL.js +45 -0
  102. package/dist/chunk-VS5PM7KL.js.map +1 -0
  103. package/dist/chunk-WQ7EZWBF.js +24 -0
  104. package/dist/chunk-WQ7EZWBF.js.map +1 -0
  105. package/dist/chunk-XPDEQND7.cjs +4 -0
  106. package/dist/chunk-XPDEQND7.cjs.map +1 -0
  107. package/dist/chunk-XUDMML5C.cjs +211 -0
  108. package/dist/chunk-XUDMML5C.cjs.map +1 -0
  109. package/dist/chunk-YPCD7M2N.cjs +22 -0
  110. package/dist/chunk-YPCD7M2N.cjs.map +1 -0
  111. package/dist/chunk-YUEYMIMI.cjs +67 -0
  112. package/dist/chunk-YUEYMIMI.cjs.map +1 -0
  113. package/dist/chunk-YXCVNX2Q.cjs +36 -0
  114. package/dist/chunk-YXCVNX2Q.cjs.map +1 -0
  115. package/dist/chunk-ZEMKE6DI.js +681 -0
  116. package/dist/chunk-ZEMKE6DI.js.map +1 -0
  117. package/dist/dataScience/index.cjs +8 -412
  118. package/dist/dataScience/index.cjs.map +1 -1
  119. package/dist/dataScience/index.js +2 -391
  120. package/dist/dataScience/index.js.map +1 -1
  121. package/dist/domain/permissions/index.cjs +131 -2
  122. package/dist/domain/permissions/index.cjs.map +1 -1
  123. package/dist/domain/permissions/index.d.cts +108 -2
  124. package/dist/domain/permissions/index.d.ts +108 -2
  125. package/dist/domain/permissions/index.js +106 -3
  126. package/dist/domain/permissions/index.js.map +1 -1
  127. package/dist/editor/index.cjs +5 -264
  128. package/dist/editor/index.cjs.map +1 -1
  129. package/dist/editor/index.js +2 -264
  130. package/dist/editor/index.js.map +1 -1
  131. package/dist/encryption/index.cjs +5 -190
  132. package/dist/encryption/index.cjs.map +1 -1
  133. package/dist/encryption/index.js +2 -190
  134. package/dist/encryption/index.js.map +1 -1
  135. package/dist/import/index.cjs +5 -196
  136. package/dist/import/index.cjs.map +1 -1
  137. package/dist/import/index.js +2 -196
  138. package/dist/import/index.js.map +1 -1
  139. package/dist/index.cjs +334 -3752
  140. package/dist/index.cjs.map +1 -1
  141. package/dist/index.d.cts +1812 -104
  142. package/dist/index.d.ts +1812 -104
  143. package/dist/index.js +176 -3627
  144. package/dist/index.js.map +1 -1
  145. package/dist/management/index.cjs +10 -881
  146. package/dist/management/index.cjs.map +1 -1
  147. package/dist/management/index.js +3 -880
  148. package/dist/management/index.js.map +1 -1
  149. package/dist/metastore/index.cjs +5 -337
  150. package/dist/metastore/index.cjs.map +1 -1
  151. package/dist/metastore/index.js +2 -337
  152. package/dist/metastore/index.js.map +1 -1
  153. package/dist/oauth/index.cjs +5 -226
  154. package/dist/oauth/index.cjs.map +1 -1
  155. package/dist/oauth/index.js +2 -226
  156. package/dist/oauth/index.js.map +1 -1
  157. package/dist/project-Bzslbq4u.d.ts +16 -0
  158. package/dist/project-CYhB6rYN.d.cts +16 -0
  159. package/dist/queryService/index.cjs +5 -248
  160. package/dist/queryService/index.cjs.map +1 -1
  161. package/dist/queryService/index.js +2 -248
  162. package/dist/queryService/index.js.map +1 -1
  163. package/dist/queue/index.cjs +5 -190
  164. package/dist/queue/index.cjs.map +1 -1
  165. package/dist/queue/index.js +2 -190
  166. package/dist/queue/index.js.map +1 -1
  167. package/dist/sdk/configurations/index.d.cts +2 -12
  168. package/dist/sdk/configurations/index.d.ts +2 -12
  169. package/dist/sdk/storage/index.cjs +49 -267
  170. package/dist/sdk/storage/index.cjs.map +1 -1
  171. package/dist/sdk/storage/index.d.cts +2 -2
  172. package/dist/sdk/storage/index.d.ts +2 -2
  173. package/dist/sdk/storage/index.js +1 -259
  174. package/dist/sdk/storage/index.js.map +1 -1
  175. package/dist/sdk/tag/index.cjs +6 -203
  176. package/dist/sdk/tag/index.cjs.map +1 -1
  177. package/dist/sdk/tag/index.js +2 -206
  178. package/dist/sdk/tag/index.js.map +1 -1
  179. package/dist/status/index.cjs +6 -176
  180. package/dist/status/index.cjs.map +1 -1
  181. package/dist/status/index.js +3 -176
  182. package/dist/status/index.js.map +1 -1
  183. package/dist/status/types.cjs +2 -0
  184. package/dist/status/types.js +1 -1
  185. package/dist/storage/index.cjs +9 -1110
  186. package/dist/storage/index.cjs.map +1 -1
  187. package/dist/storage/index.d.cts +1 -1
  188. package/dist/storage/index.d.ts +1 -1
  189. package/dist/storage/index.js +3 -1110
  190. package/dist/storage/index.js.map +1 -1
  191. package/dist/storage/types.d.cts +6 -2
  192. package/dist/storage/types.d.ts +6 -2
  193. package/dist/{storageClient-DrYOs4Xm.d.ts → storageClient-BicsbzZy.d.ts} +2 -1
  194. package/dist/{storageClient-DSLTM3Cr.d.cts → storageClient-CmK1LPHr.d.cts} +2 -1
  195. package/dist/{storageSdk-BBqAo0Vx.d.cts → storageSdk-BZ7ZW6_h.d.cts} +1 -1
  196. package/dist/{storageSdk-ZVmKQQSl.d.ts → storageSdk-DCcD68FQ.d.ts} +1 -1
  197. package/dist/syncActions/index.cjs +5 -364
  198. package/dist/syncActions/index.cjs.map +1 -1
  199. package/dist/syncActions/index.js +2 -345
  200. package/dist/syncActions/index.js.map +1 -1
  201. package/dist/telemetry/index.cjs +5 -187
  202. package/dist/telemetry/index.cjs.map +1 -1
  203. package/dist/telemetry/index.js +2 -187
  204. package/dist/telemetry/index.js.map +1 -1
  205. package/dist/vault/index.cjs +5 -219
  206. package/dist/vault/index.cjs.map +1 -1
  207. package/dist/vault/index.js +2 -219
  208. package/dist/vault/index.js.map +1 -1
  209. package/dist/verify/index.cjs +5 -184
  210. package/dist/verify/index.cjs.map +1 -1
  211. package/dist/verify/index.js +2 -184
  212. package/dist/verify/index.js.map +1 -1
  213. package/package.json +1 -1
@@ -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"}