@daocloud-proto/hydra 0.18.0-dev-3 → 0.18.0-dev-5

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.
@@ -9,12 +9,29 @@ import * as fm from "../../../fetch.pb"
9
9
  import * as GoogleProtobufTimestamp from "../../../google/protobuf/timestamp.pb"
10
10
  import * as HydraAdmin_apiModelV1alpha1Model from "../../model/v1alpha1/model.pb"
11
11
 
12
+ type Absent<T, K extends keyof T> = { [k in Exclude<keyof T, K>]?: undefined };
13
+ type OneOf<T> =
14
+ | { [k in keyof T]?: undefined }
15
+ | (
16
+ keyof T extends infer K ?
17
+ (K extends string & keyof T ? { [k in K]: T[K] } & Absent<T, K>
18
+ : never)
19
+ : never);
20
+
12
21
  export enum MAASWorkspaceVisibilityScope {
13
22
  MAAS_WORKSPACE_VISIBILITY_SCOPE_UNSPECIFIED = "MAAS_WORKSPACE_VISIBILITY_SCOPE_UNSPECIFIED",
14
23
  MAAS_WORKSPACE_VISIBILITY_SCOPE_ALL = "MAAS_WORKSPACE_VISIBILITY_SCOPE_ALL",
15
24
  MAAS_WORKSPACE_VISIBILITY_SCOPE_SPECIFIED = "MAAS_WORKSPACE_VISIBILITY_SCOPE_SPECIFIED",
16
25
  }
17
26
 
27
+ export enum MAASModelHealthStatus {
28
+ MAAS_MODEL_HEALTH_STATUS_UNSPECIFIED = "MAAS_MODEL_HEALTH_STATUS_UNSPECIFIED",
29
+ MAAS_MODEL_HEALTH_STATUS_UNKNOWN = "MAAS_MODEL_HEALTH_STATUS_UNKNOWN",
30
+ MAAS_MODEL_HEALTH_STATUS_HEALTHY = "MAAS_MODEL_HEALTH_STATUS_HEALTHY",
31
+ MAAS_MODEL_HEALTH_STATUS_DEGRADED = "MAAS_MODEL_HEALTH_STATUS_DEGRADED",
32
+ MAAS_MODEL_HEALTH_STATUS_FAILED = "MAAS_MODEL_HEALTH_STATUS_FAILED",
33
+ }
34
+
18
35
  export enum LoadBalanceStrategy {
19
36
  LOAD_BALANCE_STRATEGY_UNSPECIFIED = "LOAD_BALANCE_STRATEGY_UNSPECIFIED",
20
37
  LOAD_BALANCE_STRATEGY_ROUND_ROBIN = "LOAD_BALANCE_STRATEGY_ROUND_ROBIN",
@@ -40,6 +57,62 @@ export enum MAASBackendStatus {
40
57
  MAAS_BACKEND_STATUS_FAILED = "MAAS_BACKEND_STATUS_FAILED",
41
58
  }
42
59
 
60
+ export enum RateLimitMatchStrategy {
61
+ RATE_LIMIT_MATCH_STRATEGY_UNSPECIFIED = "RATE_LIMIT_MATCH_STRATEGY_UNSPECIFIED",
62
+ RATE_LIMIT_MATCH_STRATEGY_ANY = "RATE_LIMIT_MATCH_STRATEGY_ANY",
63
+ RATE_LIMIT_MATCH_STRATEGY_ALL = "RATE_LIMIT_MATCH_STRATEGY_ALL",
64
+ }
65
+
66
+ export enum RateLimitType {
67
+ RATE_LIMIT_TYPE_UNSPECIFIED = "RATE_LIMIT_TYPE_UNSPECIFIED",
68
+ RATE_LIMIT_TYPE_REQUEST = "RATE_LIMIT_TYPE_REQUEST",
69
+ RATE_LIMIT_TYPE_TOKEN = "RATE_LIMIT_TYPE_TOKEN",
70
+ RATE_LIMIT_TYPE_IMAGE = "RATE_LIMIT_TYPE_IMAGE",
71
+ RATE_LIMIT_TYPE_AUDIO = "RATE_LIMIT_TYPE_AUDIO",
72
+ RATE_LIMIT_TYPE_VIDEO = "RATE_LIMIT_TYPE_VIDEO",
73
+ RATE_LIMIT_TYPE_EXEMPTION = "RATE_LIMIT_TYPE_EXEMPTION",
74
+ }
75
+
76
+ export enum RateLimitDimension {
77
+ RATE_LIMIT_DIMENSION_UNSPECIFIED = "RATE_LIMIT_DIMENSION_UNSPECIFIED",
78
+ RATE_LIMIT_DIMENSION_WORKSPACE = "RATE_LIMIT_DIMENSION_WORKSPACE",
79
+ RATE_LIMIT_DIMENSION_USER = "RATE_LIMIT_DIMENSION_USER",
80
+ RATE_LIMIT_DIMENSION_API_KEY = "RATE_LIMIT_DIMENSION_API_KEY",
81
+ RATE_LIMIT_DIMENSION_ACCOUNT = "RATE_LIMIT_DIMENSION_ACCOUNT",
82
+ RATE_LIMIT_DIMENSION_SUB_ACCOUNT = "RATE_LIMIT_DIMENSION_SUB_ACCOUNT",
83
+ }
84
+
85
+ export enum RateLimitWindow {
86
+ RATE_LIMIT_WINDOW_UNSPECIFIED = "RATE_LIMIT_WINDOW_UNSPECIFIED",
87
+ RATE_LIMIT_WINDOW_SECOND = "RATE_LIMIT_WINDOW_SECOND",
88
+ RATE_LIMIT_WINDOW_MINUTE = "RATE_LIMIT_WINDOW_MINUTE",
89
+ RATE_LIMIT_WINDOW_HOUR = "RATE_LIMIT_WINDOW_HOUR",
90
+ RATE_LIMIT_WINDOW_DAY = "RATE_LIMIT_WINDOW_DAY",
91
+ }
92
+
93
+ export enum TokenRateLimitMode {
94
+ TOKEN_RATE_LIMIT_MODE_UNSPECIFIED = "TOKEN_RATE_LIMIT_MODE_UNSPECIFIED",
95
+ TOKEN_RATE_LIMIT_MODE_TOTAL = "TOKEN_RATE_LIMIT_MODE_TOTAL",
96
+ TOKEN_RATE_LIMIT_MODE_INPUT_OUTPUT = "TOKEN_RATE_LIMIT_MODE_INPUT_OUTPUT",
97
+ }
98
+
99
+ export enum ImageRateLimitMetric {
100
+ IMAGE_RATE_LIMIT_METRIC_UNSPECIFIED = "IMAGE_RATE_LIMIT_METRIC_UNSPECIFIED",
101
+ IMAGE_RATE_LIMIT_METRIC_OUTPUT_IMAGES = "IMAGE_RATE_LIMIT_METRIC_OUTPUT_IMAGES",
102
+ }
103
+
104
+ export enum AudioRateLimitMetric {
105
+ AUDIO_RATE_LIMIT_METRIC_UNSPECIFIED = "AUDIO_RATE_LIMIT_METRIC_UNSPECIFIED",
106
+ AUDIO_RATE_LIMIT_METRIC_INPUT_DURATION_MILLISECONDS = "AUDIO_RATE_LIMIT_METRIC_INPUT_DURATION_MILLISECONDS",
107
+ AUDIO_RATE_LIMIT_METRIC_OUTPUT_DURATION_MILLISECONDS = "AUDIO_RATE_LIMIT_METRIC_OUTPUT_DURATION_MILLISECONDS",
108
+ }
109
+
110
+ export enum VideoRateLimitMetric {
111
+ VIDEO_RATE_LIMIT_METRIC_UNSPECIFIED = "VIDEO_RATE_LIMIT_METRIC_UNSPECIFIED",
112
+ VIDEO_RATE_LIMIT_METRIC_INPUT_DURATION_MILLISECONDS = "VIDEO_RATE_LIMIT_METRIC_INPUT_DURATION_MILLISECONDS",
113
+ VIDEO_RATE_LIMIT_METRIC_OUTPUT_DURATION_MILLISECONDS = "VIDEO_RATE_LIMIT_METRIC_OUTPUT_DURATION_MILLISECONDS",
114
+ }
115
+
43
116
  export enum MAASModelGatewayStatus {
44
117
  GATEWAY_STATUS_UNSPECIFIED = "GATEWAY_STATUS_UNSPECIFIED",
45
118
  GATEWAY_STATUS_HEALTHY = "GATEWAY_STATUS_HEALTHY",
@@ -80,6 +153,7 @@ export type MAASModel = {
80
153
  tokenWeight?: string
81
154
  workspaceVisibility?: MAASWorkspaceVisibility
82
155
  capabilityRoutes?: MAASCapabilityRoute[]
156
+ healthStatus?: MAASModelHealthStatus
83
157
  }
84
158
 
85
159
  export type LoadBalanceConfig = {
@@ -122,6 +196,8 @@ export type MAASCapabilityUpstream = {
122
196
  apiKey?: string
123
197
  status?: MAASBackendStatus
124
198
  capabilityPaths?: {[key: string]: string}
199
+ healthCheck?: HealthCheck
200
+ healthMessage?: string
125
201
  }
126
202
 
127
203
  export type UpstreamModel = {
@@ -129,6 +205,16 @@ export type UpstreamModel = {
129
205
  apiKey?: string
130
206
  endpoint?: string
131
207
  status?: UpstreamModelStatus
208
+ healthCheck?: HealthCheck
209
+ healthMessage?: string
210
+ }
211
+
212
+ export type HealthCheck = {
213
+ path?: string
214
+ interval?: number
215
+ timeout?: number
216
+ healthyThreshold?: number
217
+ unhealthyThreshold?: number
132
218
  }
133
219
 
134
220
  export type ListMAASModelRequest = {
@@ -159,6 +245,135 @@ export type GetMAASModelRequest = {
159
245
  modelId?: string
160
246
  }
161
247
 
248
+ export type ModelRateLimitPolicy = {
249
+ name?: string
250
+ enabled?: boolean
251
+ modelName?: string[]
252
+ paths?: string[]
253
+ matchStrategy?: RateLimitMatchStrategy
254
+ rules?: ModelRateLimitPolicyRule[]
255
+ creationTimestamp?: GoogleProtobufTimestamp.Timestamp
256
+ updateTimestamp?: GoogleProtobufTimestamp.Timestamp
257
+ generation?: string
258
+ }
259
+
260
+ export type RateLimitTarget = {
261
+ selectors?: RateLimitSelector[]
262
+ dimension?: RateLimitDimension
263
+ values?: string[]
264
+ }
265
+
266
+ export type RateLimitSelector = {
267
+ dimension?: RateLimitDimension
268
+ values?: string[]
269
+ }
270
+
271
+ export type RequestRateLimit = {
272
+ limit?: string
273
+ window?: RateLimitWindow
274
+ }
275
+
276
+
277
+ type BaseTokenRateLimit = {
278
+ mode?: TokenRateLimitMode
279
+ window?: RateLimitWindow
280
+ }
281
+
282
+ export type TokenRateLimit = BaseTokenRateLimit
283
+ & OneOf<{ totalLimit: string }>
284
+ & OneOf<{ inputLimit: string }>
285
+ & OneOf<{ outputLimit: string }>
286
+
287
+ export type ImageRateLimit = {
288
+ metric?: ImageRateLimitMetric
289
+ limit?: string
290
+ window?: RateLimitWindow
291
+ }
292
+
293
+ export type AudioRateLimit = {
294
+ metric?: AudioRateLimitMetric
295
+ limit?: string
296
+ window?: RateLimitWindow
297
+ }
298
+
299
+ export type VideoRateLimit = {
300
+ metric?: VideoRateLimitMetric
301
+ limit?: string
302
+ window?: RateLimitWindow
303
+ }
304
+
305
+ export type RateLimitExemption = {
306
+ }
307
+
308
+ export type ModelRateLimitPolicyRule = {
309
+ id?: string
310
+ type?: RateLimitType
311
+ target?: RateLimitTarget
312
+ independentQuota?: boolean
313
+ resolvedReplaces?: string[]
314
+ request?: RequestRateLimit
315
+ token?: TokenRateLimit
316
+ image?: ImageRateLimit
317
+ audio?: AudioRateLimit
318
+ video?: VideoRateLimit
319
+ exemption?: RateLimitExemption
320
+ }
321
+
322
+ export type ModelRateLimitPolicyRuleCount = {
323
+ type?: RateLimitType
324
+ count?: number
325
+ }
326
+
327
+ export type ModelRateLimitPolicyListItem = {
328
+ name?: string
329
+ modelName?: string[]
330
+ paths?: string[]
331
+ matchStrategy?: RateLimitMatchStrategy
332
+ ruleCounts?: ModelRateLimitPolicyRuleCount[]
333
+ enabled?: boolean
334
+ updateTimestamp?: GoogleProtobufTimestamp.Timestamp
335
+ }
336
+
337
+ export type CreateModelRateLimitPolicyRequest = {
338
+ name?: string
339
+ enabled?: boolean
340
+ modelName?: string[]
341
+ paths?: string[]
342
+ matchStrategy?: RateLimitMatchStrategy
343
+ rules?: ModelRateLimitPolicyRule[]
344
+ }
345
+
346
+ export type GetModelRateLimitPolicyRequest = {
347
+ name?: string
348
+ }
349
+
350
+ export type ListModelRateLimitPoliciesRequest = {
351
+ page?: HydraCommonCommon.Pagination
352
+ }
353
+
354
+ export type ListModelRateLimitPoliciesResponse = {
355
+ items?: ModelRateLimitPolicyListItem[]
356
+ page?: HydraCommonCommon.Pagination
357
+ }
358
+
359
+ export type UpdateModelRateLimitPolicyRequest = {
360
+ name?: string
361
+ enabled?: boolean
362
+ modelName?: string[]
363
+ paths?: string[]
364
+ matchStrategy?: RateLimitMatchStrategy
365
+ rules?: ModelRateLimitPolicyRule[]
366
+ }
367
+
368
+ export type UpdateModelRateLimitPolicyStatusRequest = {
369
+ name?: string
370
+ enable?: boolean
371
+ }
372
+
373
+ export type DeleteModelRateLimitPolicyRequest = {
374
+ name?: string
375
+ }
376
+
162
377
  export class MAASService {
163
378
  static GetMAASModel(req: GetMAASModelRequest, initReq?: fm.InitReq): Promise<MAASModel> {
164
379
  return fm.fetchReq<GetMAASModelRequest, MAASModel>(`/apis/admin.hydra.io/v1alpha1/maas-models/${req["modelId"]}?${fm.renderURLSearchParams(req, ["modelId"])}`, {...initReq, method: "GET"})
@@ -175,4 +390,22 @@ export class MAASService {
175
390
  static UpdateMAASModelStatus(req: UpdateMAASModelStatusRequest, initReq?: fm.InitReq): Promise<MAASModel> {
176
391
  return fm.fetchReq<UpdateMAASModelStatusRequest, MAASModel>(`/apis/admin.hydra.io/v1alpha1/maas-models/${req["modelId"]}/status`, {...initReq, method: "PUT", body: JSON.stringify(req, fm.replacer)})
177
392
  }
393
+ static CreateModelRateLimitPolicy(req: CreateModelRateLimitPolicyRequest, initReq?: fm.InitReq): Promise<ModelRateLimitPolicy> {
394
+ return fm.fetchReq<CreateModelRateLimitPolicyRequest, ModelRateLimitPolicy>(`/apis/admin.hydra.io/v1alpha1/model-rate-limit-policies`, {...initReq, method: "POST", body: JSON.stringify(req, fm.replacer)})
395
+ }
396
+ static GetModelRateLimitPolicy(req: GetModelRateLimitPolicyRequest, initReq?: fm.InitReq): Promise<ModelRateLimitPolicy> {
397
+ return fm.fetchReq<GetModelRateLimitPolicyRequest, ModelRateLimitPolicy>(`/apis/admin.hydra.io/v1alpha1/model-rate-limit-policies/${req["name"]}?${fm.renderURLSearchParams(req, ["name"])}`, {...initReq, method: "GET"})
398
+ }
399
+ static ListModelRateLimitPolicies(req: ListModelRateLimitPoliciesRequest, initReq?: fm.InitReq): Promise<ListModelRateLimitPoliciesResponse> {
400
+ return fm.fetchReq<ListModelRateLimitPoliciesRequest, ListModelRateLimitPoliciesResponse>(`/apis/admin.hydra.io/v1alpha1/model-rate-limit-policies?${fm.renderURLSearchParams(req, [])}`, {...initReq, method: "GET"})
401
+ }
402
+ static UpdateModelRateLimitPolicy(req: UpdateModelRateLimitPolicyRequest, initReq?: fm.InitReq): Promise<ModelRateLimitPolicy> {
403
+ return fm.fetchReq<UpdateModelRateLimitPolicyRequest, ModelRateLimitPolicy>(`/apis/admin.hydra.io/v1alpha1/model-rate-limit-policies/${req["name"]}`, {...initReq, method: "PUT", body: JSON.stringify(req, fm.replacer)})
404
+ }
405
+ static UpdateModelRateLimitPolicyStatus(req: UpdateModelRateLimitPolicyStatusRequest, initReq?: fm.InitReq): Promise<ModelRateLimitPolicy> {
406
+ return fm.fetchReq<UpdateModelRateLimitPolicyStatusRequest, ModelRateLimitPolicy>(`/apis/admin.hydra.io/v1alpha1/model-rate-limit-policies/${req["name"]}/status`, {...initReq, method: "PUT", body: JSON.stringify(req, fm.replacer)})
407
+ }
408
+ static DeleteModelRateLimitPolicy(req: DeleteModelRateLimitPolicyRequest, initReq?: fm.InitReq): Promise<ModelRateLimitPolicy> {
409
+ return fm.fetchReq<DeleteModelRateLimitPolicyRequest, ModelRateLimitPolicy>(`/apis/admin.hydra.io/v1alpha1/model-rate-limit-policies/${req["name"]}`, {...initReq, method: "DELETE"})
410
+ }
178
411
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@daocloud-proto/hydra",
3
- "version": "v0.18.0-dev-3",
3
+ "version": "v0.18.0-dev-5",
4
4
  "description": "",
5
5
  "author": "",
6
6
  "license": "ISC"