@volcengine/ark-runtime 1.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 (123) hide show
  1. package/LICENSE.txt +202 -0
  2. package/README.md +104 -0
  3. package/dist/cjs/index.js +1717 -0
  4. package/dist/esm/client.d.ts +97 -0
  5. package/dist/esm/client.d.ts.map +1 -0
  6. package/dist/esm/config.d.ts +46 -0
  7. package/dist/esm/config.d.ts.map +1 -0
  8. package/dist/esm/encryption/encrypt-chat.d.ts +24 -0
  9. package/dist/esm/encryption/encrypt-chat.d.ts.map +1 -0
  10. package/dist/esm/encryption/index.d.ts +4 -0
  11. package/dist/esm/encryption/index.d.ts.map +1 -0
  12. package/dist/esm/encryption/key-agreement.d.ts +73 -0
  13. package/dist/esm/encryption/key-agreement.d.ts.map +1 -0
  14. package/dist/esm/index.d.ts +11 -0
  15. package/dist/esm/index.d.ts.map +1 -0
  16. package/dist/esm/index.mjs +1476 -0
  17. package/dist/esm/rslib-runtime.mjs +37 -0
  18. package/dist/esm/types/bot.d.ts +109 -0
  19. package/dist/esm/types/bot.d.ts.map +1 -0
  20. package/dist/esm/types/chat-completion.d.ts +167 -0
  21. package/dist/esm/types/chat-completion.d.ts.map +1 -0
  22. package/dist/esm/types/common.d.ts +29 -0
  23. package/dist/esm/types/common.d.ts.map +1 -0
  24. package/dist/esm/types/content-generation.d.ts +118 -0
  25. package/dist/esm/types/content-generation.d.ts.map +1 -0
  26. package/dist/esm/types/context.d.ts +49 -0
  27. package/dist/esm/types/context.d.ts.map +1 -0
  28. package/dist/esm/types/embeddings.d.ts +44 -0
  29. package/dist/esm/types/embeddings.d.ts.map +1 -0
  30. package/dist/esm/types/error.d.ts +45 -0
  31. package/dist/esm/types/error.d.ts.map +1 -0
  32. package/dist/esm/types/file.d.ts +66 -0
  33. package/dist/esm/types/file.d.ts.map +1 -0
  34. package/dist/esm/types/http-request-error.d.ts +13 -0
  35. package/dist/esm/types/http-request-error.d.ts.map +1 -0
  36. package/dist/esm/types/images.d.ts +78 -0
  37. package/dist/esm/types/images.d.ts.map +1 -0
  38. package/dist/esm/types/index.d.ts +13 -0
  39. package/dist/esm/types/index.d.ts.map +1 -0
  40. package/dist/esm/types/multimodal-embedding.d.ts +56 -0
  41. package/dist/esm/types/multimodal-embedding.d.ts.map +1 -0
  42. package/dist/esm/types/responses/enums.d.ts +38 -0
  43. package/dist/esm/types/responses/enums.d.ts.map +1 -0
  44. package/dist/esm/types/responses/helpers.d.ts +22 -0
  45. package/dist/esm/types/responses/helpers.d.ts.map +1 -0
  46. package/dist/esm/types/responses/index.d.ts +4 -0
  47. package/dist/esm/types/responses/index.d.ts.map +1 -0
  48. package/dist/esm/types/responses/types.d.ts +906 -0
  49. package/dist/esm/types/responses/types.d.ts.map +1 -0
  50. package/dist/esm/types/tokenization.d.ts +22 -0
  51. package/dist/esm/types/tokenization.d.ts.map +1 -0
  52. package/dist/esm/utils/breaker-provider.d.ts +9 -0
  53. package/dist/esm/utils/breaker-provider.d.ts.map +1 -0
  54. package/dist/esm/utils/breaker.d.ts +28 -0
  55. package/dist/esm/utils/breaker.d.ts.map +1 -0
  56. package/dist/esm/utils/normalize.d.ts +51 -0
  57. package/dist/esm/utils/normalize.d.ts.map +1 -0
  58. package/dist/esm/utils/request-builder.d.ts +15 -0
  59. package/dist/esm/utils/request-builder.d.ts.map +1 -0
  60. package/dist/esm/utils/request-id.d.ts +5 -0
  61. package/dist/esm/utils/request-id.d.ts.map +1 -0
  62. package/dist/esm/utils/retry.d.ts +11 -0
  63. package/dist/esm/utils/retry.d.ts.map +1 -0
  64. package/dist/esm/utils/sse-decoder.d.ts +23 -0
  65. package/dist/esm/utils/sse-decoder.d.ts.map +1 -0
  66. package/dist/esm/utils/stream-reader.d.ts +67 -0
  67. package/dist/esm/utils/stream-reader.d.ts.map +1 -0
  68. package/dist/tsconfig.tsbuildinfo +1 -0
  69. package/example/README.md +118 -0
  70. package/example/batch-chat.ts +64 -0
  71. package/example/bot-chat.ts +66 -0
  72. package/example/chat-completion-function-call.ts +141 -0
  73. package/example/chat-completion-reasoning.ts +64 -0
  74. package/example/chat-completion-vision.ts +70 -0
  75. package/example/chat-completion.ts +62 -0
  76. package/example/content-generation.ts +70 -0
  77. package/example/context.ts +69 -0
  78. package/example/embeddings.ts +31 -0
  79. package/example/file-upload.ts +53 -0
  80. package/example/images.ts +74 -0
  81. package/example/list-input-items.ts +34 -0
  82. package/example/multimodal-embeddings.ts +36 -0
  83. package/example/responses/basic.ts +75 -0
  84. package/example/responses/doubao-app.ts +53 -0
  85. package/example/responses/mcp.ts +66 -0
  86. package/example/responses/streaming.ts +45 -0
  87. package/example/responses/video.ts +74 -0
  88. package/example/responses/web-search.ts +52 -0
  89. package/example/structured-outputs.ts +71 -0
  90. package/example/tokenization.ts +30 -0
  91. package/package.json +47 -0
  92. package/src/client.ts +1199 -0
  93. package/src/config.ts +68 -0
  94. package/src/encryption/encrypt-chat.ts +146 -0
  95. package/src/encryption/index.ts +21 -0
  96. package/src/encryption/key-agreement.ts +270 -0
  97. package/src/index.ts +10 -0
  98. package/src/types/ark.d.ts +9 -0
  99. package/src/types/bot.ts +127 -0
  100. package/src/types/chat-completion.ts +228 -0
  101. package/src/types/common.ts +37 -0
  102. package/src/types/content-generation.ts +135 -0
  103. package/src/types/context.ts +59 -0
  104. package/src/types/embeddings.ts +74 -0
  105. package/src/types/error.ts +93 -0
  106. package/src/types/file.ts +76 -0
  107. package/src/types/http-request-error.ts +34 -0
  108. package/src/types/images.ts +102 -0
  109. package/src/types/index.ts +12 -0
  110. package/src/types/multimodal-embedding.ts +67 -0
  111. package/src/types/responses/enums.ts +163 -0
  112. package/src/types/responses/helpers.ts +67 -0
  113. package/src/types/responses/index.ts +3 -0
  114. package/src/types/responses/types.ts +1335 -0
  115. package/src/types/tokenization.ts +24 -0
  116. package/src/utils/breaker-provider.ts +17 -0
  117. package/src/utils/breaker.ts +56 -0
  118. package/src/utils/normalize.ts +154 -0
  119. package/src/utils/request-builder.ts +51 -0
  120. package/src/utils/request-id.ts +17 -0
  121. package/src/utils/retry.ts +76 -0
  122. package/src/utils/sse-decoder.ts +140 -0
  123. package/src/utils/stream-reader.ts +270 -0
@@ -0,0 +1,228 @@
1
+ import type { Usage, HttpHeaders } from "./common";
2
+
3
+ // Role constants
4
+ export const ChatMessageRoleSystem = "system";
5
+ export const ChatMessageRoleUser = "user";
6
+ export const ChatMessageRoleAssistant = "assistant";
7
+ export const ChatMessageRoleTool = "tool";
8
+
9
+ // ImageURL detail
10
+ export type ImageURLDetail = "high" | "low" | "auto";
11
+
12
+ // Reasoning effort
13
+ export type ReasoningEffort = "minimal" | "low" | "medium" | "high";
14
+
15
+ export interface ChatMessageImageURL {
16
+ url: string;
17
+ detail?: ImageURLDetail;
18
+ }
19
+
20
+ export interface ChatMessageVideoURL {
21
+ url: string;
22
+ fps?: number;
23
+ }
24
+
25
+ // Content part type
26
+ export type ChatCompletionMessageContentPartType =
27
+ | "text"
28
+ | "image_url"
29
+ | "video_url";
30
+
31
+ export interface ChatCompletionMessageContentPart {
32
+ type?: ChatCompletionMessageContentPartType;
33
+ text?: string;
34
+ image_url?: ChatMessageImageURL;
35
+ video_url?: ChatMessageVideoURL;
36
+ }
37
+
38
+ // In TS, the union type naturally handles Go's custom MarshalJSON
39
+ export type ChatCompletionMessageContent =
40
+ | string
41
+ | ChatCompletionMessageContentPart[];
42
+
43
+ export interface ChatCompletionMessage {
44
+ role: string;
45
+ content?: ChatCompletionMessageContent | null;
46
+ reasoning_content?: string;
47
+ name?: string;
48
+ function_call?: FunctionCall;
49
+ tool_calls?: ToolCall[];
50
+ tool_call_id?: string;
51
+ }
52
+
53
+ export interface ToolCall {
54
+ id: string;
55
+ type: ToolType;
56
+ function: FunctionCall;
57
+ index?: number;
58
+ }
59
+
60
+ export interface FunctionCall {
61
+ name?: string;
62
+ arguments?: string;
63
+ }
64
+
65
+ // Thinking
66
+ export type ThinkingType = "enabled" | "disabled" | "auto";
67
+
68
+ export interface Thinking {
69
+ type: ThinkingType;
70
+ }
71
+
72
+ // Stream options
73
+ export interface StreamOptions {
74
+ include_usage?: boolean;
75
+ chunk_include_usage?: boolean;
76
+ }
77
+
78
+ // Tool type
79
+ export type ToolType = "function";
80
+
81
+ export interface Tool {
82
+ type: ToolType;
83
+ function?: FunctionDefinition;
84
+ }
85
+
86
+ // Tool choice
87
+ export const ToolChoiceAuto = "auto";
88
+ export const ToolChoiceNone = "none";
89
+ export const ToolChoiceRequired = "required";
90
+
91
+ export interface ToolChoice {
92
+ type: ToolType;
93
+ function?: ToolChoiceFunction;
94
+ }
95
+
96
+ export interface ToolChoiceFunction {
97
+ name: string;
98
+ }
99
+
100
+ export interface FunctionDefinition {
101
+ name: string;
102
+ description?: string;
103
+ parameters?: unknown;
104
+ }
105
+
106
+ // LogProbs
107
+ export interface TopLogProbs {
108
+ token: string;
109
+ logprob: number;
110
+ bytes?: number[];
111
+ }
112
+
113
+ export interface LogProb {
114
+ token: string;
115
+ logprob: number;
116
+ bytes?: number[];
117
+ top_logprobs: TopLogProbs[];
118
+ }
119
+
120
+ export interface LogProbs {
121
+ content: LogProb[];
122
+ }
123
+
124
+ // Response format
125
+ export type ResponseFormatType = "json_schema" | "json_object" | "text";
126
+
127
+ export interface ResponseFormatJSONSchema {
128
+ name: string;
129
+ description: string;
130
+ schema: unknown;
131
+ strict: boolean;
132
+ }
133
+
134
+ export interface ResponseFormat {
135
+ type: ResponseFormatType;
136
+ json_schema?: ResponseFormatJSONSchema;
137
+ /** @deprecated use json_schema instead */
138
+ schema?: unknown;
139
+ }
140
+
141
+ // Finish reason
142
+ export type FinishReason =
143
+ | "stop"
144
+ | "length"
145
+ | "function_call"
146
+ | "tool_calls"
147
+ | "content_filter"
148
+ | null;
149
+
150
+ // Moderation hit type
151
+ export type ModerationHitType = "violence" | "severe_violation";
152
+
153
+ // Chat completion request
154
+ export interface ChatCompletionRequest {
155
+ model: string;
156
+ messages: ChatCompletionMessage[];
157
+ max_tokens?: number;
158
+ temperature?: number;
159
+ top_p?: number;
160
+ stream?: boolean;
161
+ stop?: string[];
162
+ frequency_penalty?: number;
163
+ logit_bias?: Record<string, number>;
164
+ logprobs?: boolean;
165
+ top_logprobs?: number;
166
+ user?: string;
167
+ function_call?: unknown;
168
+ tools?: Tool[];
169
+ tool_choice?: string | ToolChoice;
170
+ stream_options?: StreamOptions;
171
+ presence_penalty?: number;
172
+ repetition_penalty?: number;
173
+ n?: number;
174
+ response_format?: ResponseFormat;
175
+ parallel_tool_calls?: boolean;
176
+ service_tier?: string;
177
+ thinking?: Thinking;
178
+ max_completion_tokens?: number;
179
+ reasoning_effort?: ReasoningEffort;
180
+ }
181
+
182
+ // Chat completion choice
183
+ export interface ChatCompletionChoice {
184
+ index: number;
185
+ message: ChatCompletionMessage;
186
+ finish_reason: FinishReason;
187
+ moderation_hit_type?: ModerationHitType;
188
+ logprobs?: LogProbs;
189
+ }
190
+
191
+ // Chat completion response
192
+ export interface ChatCompletionResponse {
193
+ id: string;
194
+ object: string;
195
+ created: number;
196
+ model: string;
197
+ service_tier?: string;
198
+ choices: ChatCompletionChoice[];
199
+ usage: Usage;
200
+ headers?: HttpHeaders;
201
+ }
202
+
203
+ // Stream types
204
+ export interface ChatCompletionStreamChoiceDelta {
205
+ content?: string;
206
+ role?: string;
207
+ reasoning_content?: string;
208
+ function_call?: FunctionCall;
209
+ tool_calls?: ToolCall[];
210
+ }
211
+
212
+ export interface ChatCompletionStreamChoice {
213
+ index: number;
214
+ delta: ChatCompletionStreamChoiceDelta;
215
+ logprobs?: LogProbs;
216
+ finish_reason: FinishReason;
217
+ moderation_hit_type?: ModerationHitType;
218
+ }
219
+
220
+ export interface ChatCompletionStreamResponse {
221
+ id: string;
222
+ object: string;
223
+ created: number;
224
+ model: string;
225
+ service_tier?: string;
226
+ choices: ChatCompletionStreamChoice[];
227
+ usage?: Usage;
228
+ }
@@ -0,0 +1,37 @@
1
+ // Header constants
2
+ export const ClientRequestHeader = "X-Client-Request-Id";
3
+ export const RetryAfterHeader = "Retry-After";
4
+ export const ClientSessionTokenHeader = "X-Session-Token";
5
+ export const ClientEncryptInfoHeader = "X-Encrypt-Info";
6
+ export const ClientIsEncryptedHeader = "x-is-encrypted";
7
+
8
+ // Timeout defaults (seconds)
9
+ export const DefaultMandatoryRefreshTimeout = 10 * 60; // 10 min
10
+ export const DefaultAdvisoryRefreshTimeout = 30 * 60; // 30 min
11
+ export const DefaultStsTimeout = 7 * 24 * 60 * 60; // 7 days
12
+
13
+ // Retry defaults
14
+ export const InitialRetryDelay = 0.5;
15
+ export const MaxRetryDelay = 8.0;
16
+ export const ErrorRetryBaseDelayMs = 500;
17
+ export const ErrorRetryMaxDelayMs = 8000;
18
+
19
+ export interface PromptTokensDetail {
20
+ cached_tokens: number;
21
+ provisioned_tokens?: number;
22
+ }
23
+
24
+ export interface CompletionTokensDetails {
25
+ reasoning_tokens: number;
26
+ provisioned_tokens?: number;
27
+ }
28
+
29
+ export interface Usage {
30
+ prompt_tokens: number;
31
+ completion_tokens: number;
32
+ total_tokens: number;
33
+ prompt_tokens_details: PromptTokensDetail;
34
+ completion_tokens_details: CompletionTokensDetails;
35
+ }
36
+
37
+ export type HttpHeaders = Record<string, string>;
@@ -0,0 +1,135 @@
1
+ import type { Usage, HttpHeaders } from "./common";
2
+
3
+ export type ContentGenerationContentItemType =
4
+ | "text"
5
+ | "image_url"
6
+ | "draft_task";
7
+
8
+ export const StatusSucceeded = "succeeded";
9
+ export const StatusCancelled = "cancelled";
10
+ export const StatusFailed = "failed";
11
+ export const StatusRunning = "running";
12
+ export const StatusQueued = "queued";
13
+
14
+ export interface ImageURL {
15
+ url: string;
16
+ }
17
+
18
+ export interface DraftTask {
19
+ id: string;
20
+ }
21
+
22
+ export interface CreateContentGenerationContentItem {
23
+ type: ContentGenerationContentItemType;
24
+ text?: string;
25
+ image_url?: ImageURL;
26
+ role?: string;
27
+ draft_task?: DraftTask;
28
+ }
29
+
30
+ export interface CreateContentGenerationTaskRequest {
31
+ model: string;
32
+ content: CreateContentGenerationContentItem[];
33
+ callback_url?: string;
34
+ return_last_frame?: boolean;
35
+ service_tier?: string;
36
+ execution_expires_after?: number;
37
+ generate_audio?: boolean;
38
+ draft?: boolean;
39
+ camera_fixed?: boolean;
40
+ watermark?: boolean;
41
+ seed?: number;
42
+ resolution?: string;
43
+ ratio?: string;
44
+ duration?: number;
45
+ frames?: number;
46
+ /** Extra fields merged into request body */
47
+ [key: string]: unknown;
48
+ }
49
+
50
+ export interface CreateContentGenerationTaskResponse {
51
+ id: string;
52
+ headers?: HttpHeaders;
53
+ }
54
+
55
+ export interface ContentGenerationError {
56
+ code: string;
57
+ message: string;
58
+ }
59
+
60
+ export interface Content {
61
+ video_url: string;
62
+ last_frame_url: string;
63
+ file_url: string;
64
+ }
65
+
66
+ export interface GetContentGenerationTaskResponse {
67
+ id: string;
68
+ model: string;
69
+ status: string;
70
+ error?: ContentGenerationError;
71
+ content: Content;
72
+ usage: Usage;
73
+ subdivisionlevel?: string;
74
+ fileformat?: string;
75
+ frames?: number;
76
+ framespersecond?: number;
77
+ resolution?: string;
78
+ ratio?: string;
79
+ duration?: number;
80
+ created_at: number;
81
+ updated_at: number;
82
+ seed?: number;
83
+ revised_prompt?: string;
84
+ service_tier?: string;
85
+ execution_expires_after?: number;
86
+ generate_audio?: boolean;
87
+ draft?: boolean;
88
+ draft_task_id?: string;
89
+ headers?: HttpHeaders;
90
+ }
91
+
92
+ export interface ListContentGenerationTasksFilter {
93
+ status?: string;
94
+ task_ids?: string[];
95
+ model?: string;
96
+ service_tier?: string;
97
+ }
98
+
99
+ export interface ListContentGenerationTasksRequest {
100
+ page_num?: number;
101
+ page_size?: number;
102
+ filter?: ListContentGenerationTasksFilter;
103
+ }
104
+
105
+ export interface ListContentGenerationTaskItem {
106
+ id: string;
107
+ model: string;
108
+ status: string;
109
+ failure_reason?: ContentGenerationError;
110
+ content: Content;
111
+ usage: Usage;
112
+ subdivisionlevel?: string;
113
+ fileformat?: string;
114
+ frames?: number;
115
+ framespersecond?: number;
116
+ created_at: number;
117
+ updated_at: number;
118
+ seed?: number;
119
+ revised_prompt?: string;
120
+ service_tier?: string;
121
+ execution_expires_after?: number;
122
+ generate_audio?: boolean;
123
+ draft?: boolean;
124
+ draft_task_id?: string;
125
+ }
126
+
127
+ export interface ListContentGenerationTasksResponse {
128
+ total: number;
129
+ items: ListContentGenerationTaskItem[];
130
+ headers?: HttpHeaders;
131
+ }
132
+
133
+ export interface DeleteContentGenerationTaskRequest {
134
+ id: string;
135
+ }
@@ -0,0 +1,59 @@
1
+ import type { Usage, HttpHeaders } from "./common";
2
+ import type {
3
+ ChatCompletionMessage,
4
+ Tool,
5
+ ToolChoice,
6
+ StreamOptions,
7
+ } from "./chat-completion";
8
+
9
+ export type TruncationStrategyType = "last_history_tokens" | "rolling_tokens";
10
+
11
+ export type ContextMode = "session" | "common_prefix";
12
+
13
+ export interface TruncationStrategy {
14
+ type: TruncationStrategyType;
15
+ last_history_tokens?: number;
16
+ rolling_tokens?: boolean;
17
+ max_window_tokens?: number;
18
+ rolling_window_tokens?: number;
19
+ }
20
+
21
+ export interface CreateContextRequest {
22
+ model: string;
23
+ mode: ContextMode;
24
+ messages: ChatCompletionMessage[];
25
+ ttl?: number;
26
+ truncation_strategy?: TruncationStrategy;
27
+ }
28
+
29
+ export interface CreateContextResponse {
30
+ id: string;
31
+ mode: ContextMode;
32
+ model: string;
33
+ ttl?: number;
34
+ truncation_strategy?: TruncationStrategy;
35
+ usage: Usage;
36
+ headers?: HttpHeaders;
37
+ }
38
+
39
+ export interface ContextChatCompletionRequest {
40
+ context_id: string;
41
+ mode: ContextMode;
42
+ model: string;
43
+ messages: ChatCompletionMessage[];
44
+ max_tokens?: number;
45
+ temperature?: number;
46
+ top_p?: number;
47
+ stream?: boolean;
48
+ stop?: string[];
49
+ frequency_penalty?: number;
50
+ logit_bias?: Record<string, number>;
51
+ logprobs?: boolean;
52
+ top_logprobs?: number;
53
+ user?: string;
54
+ function_call?: unknown;
55
+ tools?: Tool[];
56
+ tool_choice?: string | ToolChoice;
57
+ stream_options?: StreamOptions;
58
+ metadata?: Record<string, unknown>;
59
+ }
@@ -0,0 +1,74 @@
1
+ import type { Usage, HttpHeaders } from "./common";
2
+
3
+ export type EmbeddingEncodingFormat = "float" | "base64";
4
+
5
+ export interface EmbeddingRequest {
6
+ input: string | string[] | number[][] ;
7
+ model: string;
8
+ user?: string;
9
+ encoding_format?: EmbeddingEncodingFormat;
10
+ dimensions?: number;
11
+ }
12
+
13
+ export interface Embedding {
14
+ object: string;
15
+ embedding: number[];
16
+ index: number;
17
+ }
18
+
19
+ export interface EmbeddingResponse {
20
+ id: string;
21
+ created: number;
22
+ object: string;
23
+ data: Embedding[];
24
+ model: string;
25
+ usage: Usage;
26
+ headers?: HttpHeaders;
27
+ }
28
+
29
+ // Base64 embedding support
30
+ export interface Base64Embedding {
31
+ object: string;
32
+ embedding: string; // base64 encoded
33
+ index: number;
34
+ }
35
+
36
+ export interface EmbeddingResponseBase64 {
37
+ object: string;
38
+ data: Base64Embedding[];
39
+ model: string;
40
+ usage: Usage;
41
+ headers?: HttpHeaders;
42
+ }
43
+
44
+ /**
45
+ * Decode a base64-encoded embedding into a float32 array.
46
+ */
47
+ export function decodeBase64Embedding(b64: string): number[] {
48
+ const buf = Buffer.from(b64, "base64");
49
+ const floats: number[] = [];
50
+ for (let i = 0; i < buf.length; i += 4) {
51
+ floats.push(buf.readFloatLE(i));
52
+ }
53
+ return floats;
54
+ }
55
+
56
+ /**
57
+ * Convert a base64 embedding response to a standard embedding response.
58
+ */
59
+ export function base64ToEmbeddingResponse(
60
+ resp: EmbeddingResponseBase64,
61
+ ): EmbeddingResponse {
62
+ return {
63
+ id: "",
64
+ created: 0,
65
+ object: resp.object,
66
+ model: resp.model,
67
+ usage: resp.usage,
68
+ data: resp.data.map((item) => ({
69
+ object: item.object,
70
+ embedding: decodeBase64Embedding(item.embedding),
71
+ index: item.index,
72
+ })),
73
+ };
74
+ }
@@ -0,0 +1,93 @@
1
+ import { HttpRequestError, HttpRequestErrorName } from "./http-request-error";
2
+
3
+ export class ArkAPIError extends HttpRequestError {
4
+ code?: string;
5
+ param?: string;
6
+ type: string;
7
+ requestId: string;
8
+
9
+ constructor(opts: {
10
+ message: string;
11
+ code?: string;
12
+ param?: string;
13
+ type: string;
14
+ httpStatusCode: number;
15
+ requestId: string;
16
+ }) {
17
+ super("ApiException", opts.message, opts.httpStatusCode, undefined, undefined);
18
+ (this as any).name = "ArkAPIError";
19
+ this.code = opts.code;
20
+ this.param = opts.param;
21
+ this.type = opts.type;
22
+ this.requestId = opts.requestId;
23
+ }
24
+
25
+ get httpStatusCode(): number {
26
+ return this.status ?? 0;
27
+ }
28
+
29
+ override toString(): string {
30
+ return `Error code: ${this.httpStatusCode} - ${JSON.stringify({
31
+ code: this.code,
32
+ message: this.message,
33
+ param: this.param,
34
+ type: this.type,
35
+ request_id: this.requestId,
36
+ })}`;
37
+ }
38
+ }
39
+
40
+ export class ArkRequestError extends HttpRequestError {
41
+ requestId: string;
42
+
43
+ constructor(opts: {
44
+ httpStatusCode: number;
45
+ message: string;
46
+ requestId: string;
47
+ cause?: Error;
48
+ }) {
49
+ super("NetworkError", opts.message, opts.httpStatusCode, undefined, opts.cause);
50
+ (this as any).name = "ArkRequestError";
51
+ this.requestId = opts.requestId;
52
+ }
53
+
54
+ get httpStatusCode(): number {
55
+ return this.status ?? 0;
56
+ }
57
+
58
+ override toString(): string {
59
+ return `RequestError code: ${this.httpStatusCode}, err: ${this.originalError?.message ?? this.message}, request_id: ${this.requestId}`;
60
+ }
61
+ }
62
+
63
+ export interface ErrorResponse {
64
+ error?: {
65
+ code?: string;
66
+ message: string;
67
+ param?: string;
68
+ type: string;
69
+ request_id?: string;
70
+ };
71
+ }
72
+
73
+ export const ErrTooManyEmptyStreamMessages = new Error(
74
+ "stream has sent too many empty messages",
75
+ );
76
+ export const ErrChatCompletionStreamNotSupported = new Error(
77
+ "streaming is not supported with this method, please use CreateChatCompletionStream",
78
+ );
79
+ export const ErrContentFieldsMisused = new Error(
80
+ "can't use both Content and MultiContent properties simultaneously",
81
+ );
82
+ export const ErrBodyWithoutEndpoint = new Error(
83
+ "can't fetch endpoint sts token without endpoint",
84
+ );
85
+ export const ErrBodyWithoutBot = new Error(
86
+ "can't fetch bot sts token without bot id",
87
+ );
88
+ export const ErrAKSKNotSupported = new Error(
89
+ "ak&sk authentication is currently not supported for this method, please use api key instead",
90
+ );
91
+ export const ErrBodyWithoutProjectName = new Error(
92
+ "project name is required for preset endpoint",
93
+ );
@@ -0,0 +1,76 @@
1
+ import type { HttpHeaders } from "./common";
2
+
3
+ // Constants
4
+ export const PurposeUserData = "user_data";
5
+ export const FileStatusActive = "active";
6
+ export const FileStatusProcessing = "processing";
7
+ export const FileStatusFailed = "failed";
8
+ export const ObjectTypeList = "list";
9
+ export const ObjectTypeFile = "file";
10
+ export const OrderAsc = "asc";
11
+ export const OrderDesc = "desc";
12
+
13
+ export type FilePurpose = string;
14
+ export type FileStatus = string;
15
+ export type FileObjectType = string;
16
+ export type FileOrder = "asc" | "desc";
17
+
18
+ export interface FileError {
19
+ code: string;
20
+ message: string;
21
+ param: string;
22
+ type: string;
23
+ }
24
+
25
+ export interface Video {
26
+ fps?: number;
27
+ }
28
+
29
+ export interface PreprocessConfigs {
30
+ video?: Video;
31
+ }
32
+
33
+ export interface FileMeta {
34
+ object: FileObjectType;
35
+ id: string;
36
+ purpose: FilePurpose;
37
+ filename: string;
38
+ bytes?: number;
39
+ mime_type?: string;
40
+ created_at: number;
41
+ expire_at: number;
42
+ status: FileStatus;
43
+ error?: FileError;
44
+ preprocess_configs?: PreprocessConfigs;
45
+ headers?: HttpHeaders;
46
+ }
47
+
48
+ export interface UploadFileRequest {
49
+ file: Blob | Buffer | ReadableStream;
50
+ purpose: FilePurpose;
51
+ preprocess_configs?: PreprocessConfigs;
52
+ expire_at?: number;
53
+ }
54
+
55
+ export interface ListFilesRequest {
56
+ purpose?: FilePurpose;
57
+ after?: string;
58
+ limit?: number;
59
+ order?: FileOrder;
60
+ }
61
+
62
+ export interface ListFilesResponse {
63
+ object: FileObjectType;
64
+ data: FileMeta[];
65
+ first_id: string;
66
+ last_id: string;
67
+ has_more: boolean;
68
+ headers?: HttpHeaders;
69
+ }
70
+
71
+ export interface DeleteFileResponse {
72
+ object: FileObjectType;
73
+ id: string;
74
+ deleted: boolean;
75
+ headers?: HttpHeaders;
76
+ }