@phala/cloud 0.0.9 → 0.0.11

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.
package/dist/index.mjs CHANGED
@@ -105,22 +105,31 @@ var Client = class {
105
105
  };
106
106
  const version = resolvedConfig.version && SUPPORTED_API_VERSIONS.includes(resolvedConfig.version) ? resolvedConfig.version : SUPPORTED_API_VERSIONS[0];
107
107
  this.config = resolvedConfig;
108
- if (!resolvedConfig.apiKey) {
108
+ if (!resolvedConfig.useCookieAuth && !resolvedConfig.apiKey) {
109
109
  throw new Error(
110
110
  "API key is required. Provide it via config.apiKey or set PHALA_CLOUD_API_KEY environment variable."
111
111
  );
112
112
  }
113
- const { apiKey, baseURL, timeout, headers, ...fetchOptions } = resolvedConfig;
113
+ const { apiKey, baseURL, timeout, headers, useCookieAuth, onResponseError, ...fetchOptions } = resolvedConfig;
114
114
  const requestHeaders = {
115
- "X-API-Key": apiKey,
116
115
  "X-Phala-Version": version,
117
- "Content-Type": "application/json",
118
- ...headers || {}
116
+ "Content-Type": "application/json"
119
117
  };
118
+ if (headers && typeof headers === "object") {
119
+ Object.entries(headers).forEach(([key, value]) => {
120
+ if (typeof value === "string") {
121
+ requestHeaders[key] = value;
122
+ }
123
+ });
124
+ }
125
+ if (!useCookieAuth && apiKey) {
126
+ requestHeaders["X-API-Key"] = apiKey;
127
+ }
120
128
  this.fetchInstance = ofetch.create({
121
129
  baseURL,
122
130
  timeout: timeout || 3e4,
123
131
  headers: requestHeaders,
132
+ ...useCookieAuth ? { credentials: "include" } : {},
124
133
  ...fetchOptions,
125
134
  // Log request in cURL format
126
135
  onRequest({ request, options }) {
@@ -171,6 +180,9 @@ var Client = class {
171
180
  formatResponse(response.status, response.statusText, response.headers, response._data)
172
181
  );
173
182
  }
183
+ if (onResponseError) {
184
+ onResponseError({ request, response, options });
185
+ }
174
186
  }
175
187
  });
176
188
  }
@@ -1113,7 +1125,10 @@ import { z as z5 } from "zod";
1113
1125
  var AvailableOSImageSchema = z5.object({
1114
1126
  name: z5.string(),
1115
1127
  is_dev: z5.boolean(),
1116
- version: z5.tuple([z5.number(), z5.number(), z5.number()]),
1128
+ version: z5.union([
1129
+ z5.tuple([z5.number(), z5.number(), z5.number()]),
1130
+ z5.tuple([z5.number(), z5.number(), z5.number(), z5.number()])
1131
+ ]),
1117
1132
  os_image_hash: z5.string().nullable().optional()
1118
1133
  }).passthrough();
1119
1134
  var TeepodCapacitySchema = z5.object({
@@ -1965,8 +1980,11 @@ async function safeAddComposeHash(request, parameters) {
1965
1980
  }
1966
1981
 
1967
1982
  // src/actions/get_cvm_compose_file.ts
1983
+ import { z as z11 } from "zod";
1984
+
1985
+ // src/types/app_compose.ts
1968
1986
  import { z as z10 } from "zod";
1969
- var GetCvmComposeFileResultSchema = z10.object({
1987
+ var LooseAppComposeSchema = z10.object({
1970
1988
  allowed_envs: z10.array(z10.string()).optional(),
1971
1989
  docker_compose_file: z10.string(),
1972
1990
  features: z10.array(z10.string()).optional(),
@@ -1978,14 +1996,16 @@ var GetCvmComposeFileResultSchema = z10.object({
1978
1996
  tproxy_enabled: z10.boolean().optional(),
1979
1997
  pre_launch_script: z10.string().optional()
1980
1998
  }).passthrough();
1981
- var GetCvmComposeFileRequestSchema = z10.object({
1982
- id: z10.string().optional(),
1983
- uuid: z10.string().regex(/^[0-9a-f]{8}[-]?[0-9a-f]{4}[-]?4[0-9a-f]{3}[-]?[89ab][0-9a-f]{3}[-]?[0-9a-f]{12}$/i).optional(),
1984
- app_id: z10.string().refine(
1999
+
2000
+ // src/actions/get_cvm_compose_file.ts
2001
+ var GetCvmComposeFileRequestSchema = z11.object({
2002
+ id: z11.string().optional(),
2003
+ uuid: z11.string().regex(/^[0-9a-f]{8}[-]?[0-9a-f]{4}[-]?4[0-9a-f]{3}[-]?[89ab][0-9a-f]{3}[-]?[0-9a-f]{12}$/i).optional(),
2004
+ app_id: z11.string().refine(
1985
2005
  (val) => !val.startsWith("app_") && val.length === 40,
1986
2006
  "app_id should be 40 characters without prefix"
1987
2007
  ).transform((val) => val.startsWith("app_") ? val : `app_${val}`).optional(),
1988
- instance_id: z10.string().refine(
2008
+ instance_id: z11.string().refine(
1989
2009
  (val) => !val.startsWith("instance_") && val.length === 40,
1990
2010
  "instance_id should be 40 characters without prefix"
1991
2011
  ).transform((val) => val.startsWith("instance_") ? val : `instance_${val}`).optional()
@@ -2002,7 +2022,7 @@ async function getCvmComposeFile(client, request, parameters) {
2002
2022
  if (parameters?.schema === false) {
2003
2023
  return response;
2004
2024
  }
2005
- const schema = parameters?.schema || GetCvmComposeFileResultSchema;
2025
+ const schema = parameters?.schema || LooseAppComposeSchema;
2006
2026
  return schema.parse(response);
2007
2027
  }
2008
2028
  async function safeGetCvmComposeFile(client, request, parameters) {
@@ -2017,44 +2037,38 @@ async function safeGetCvmComposeFile(client, request, parameters) {
2017
2037
  if (parameters?.schema === false) {
2018
2038
  return { success: true, data: httpResult.data };
2019
2039
  }
2020
- const schema = parameters?.schema || GetCvmComposeFileResultSchema;
2040
+ const schema = parameters?.schema || LooseAppComposeSchema;
2021
2041
  return schema.safeParse(httpResult.data);
2022
2042
  }
2023
2043
 
2024
2044
  // src/actions/provision_cvm_compose_file_update.ts
2025
- import { z as z11 } from "zod";
2026
- var ProvisionCvmComposeFileUpdateRequestSchema = z11.object({
2027
- id: z11.string().optional(),
2028
- uuid: z11.string().regex(/^[0-9a-f]{8}[-]?[0-9a-f]{4}[-]?4[0-9a-f]{3}[-]?[89ab][0-9a-f]{3}[-]?[0-9a-f]{12}$/i).optional(),
2029
- app_id: z11.string().refine(
2045
+ import { z as z12 } from "zod";
2046
+ var ProvisionCvmComposeFileUpdateRequestSchema = z12.object({
2047
+ id: z12.string().optional(),
2048
+ uuid: z12.string().regex(/^[0-9a-f]{8}[-]?[0-9a-f]{4}[-]?4[0-9a-f]{3}[-]?[89ab][0-9a-f]{3}[-]?[0-9a-f]{12}$/i).optional(),
2049
+ app_id: z12.string().refine(
2030
2050
  (val) => !val.startsWith("app_") && val.length === 40,
2031
2051
  "app_id should be 40 characters without prefix"
2032
2052
  ).transform((val) => val.startsWith("app_") ? val : `app_${val}`).optional(),
2033
- instance_id: z11.string().refine(
2053
+ instance_id: z12.string().refine(
2034
2054
  (val) => !val.startsWith("instance_") && val.length === 40,
2035
2055
  "instance_id should be 40 characters without prefix"
2036
2056
  ).transform((val) => val.startsWith("instance_") ? val : `instance_${val}`).optional(),
2037
- app_compose: z11.object({
2038
- allowed_envs: z11.array(z11.string()).optional(),
2039
- docker_compose_file: z11.string().min(1, "Docker compose file is required"),
2040
- name: z11.string(),
2041
- kms_enabled: z11.boolean().optional(),
2042
- public_logs: z11.boolean().optional(),
2043
- public_sysinfo: z11.boolean().optional(),
2044
- pre_launch_script: z11.string().optional()
2045
- })
2057
+ app_compose: LooseAppComposeSchema,
2058
+ update_env_vars: z12.boolean().optional().nullable()
2046
2059
  }).refine(
2047
2060
  (data) => !!(data.id || data.uuid || data.app_id || data.instance_id),
2048
2061
  "One of id, uuid, app_id, or instance_id must be provided"
2049
2062
  ).transform((data) => ({
2050
2063
  cvmId: data.id || data.uuid || data.app_id || data.instance_id,
2051
2064
  request: data.app_compose,
2065
+ update_env_vars: data.update_env_vars,
2052
2066
  _raw: data
2053
2067
  }));
2054
- var ProvisionCvmComposeFileUpdateResultSchema = z11.object({
2055
- app_id: z11.string().nullable(),
2056
- device_id: z11.string().nullable(),
2057
- compose_hash: z11.string(),
2068
+ var ProvisionCvmComposeFileUpdateResultSchema = z12.object({
2069
+ app_id: z12.string().nullable(),
2070
+ device_id: z12.string().nullable(),
2071
+ compose_hash: z12.string(),
2058
2072
  kms_info: KmsInfoSchema.nullable().optional()
2059
2073
  }).passthrough();
2060
2074
  async function provisionCvmComposeFileUpdate(client, request, parameters) {
@@ -2089,21 +2103,22 @@ async function safeProvisionCvmComposeFileUpdate(client, request, parameters) {
2089
2103
  }
2090
2104
 
2091
2105
  // src/actions/commit_cvm_compose_file_update.ts
2092
- import { z as z12 } from "zod";
2093
- var CommitCvmComposeFileUpdateRequestSchema = z12.object({
2094
- id: z12.string().optional(),
2095
- uuid: z12.string().regex(/^[0-9a-f]{8}[-]?[0-9a-f]{4}[-]?4[0-9a-f]{3}[-]?[89ab][0-9a-f]{3}[-]?[0-9a-f]{12}$/i).optional(),
2096
- app_id: z12.string().refine(
2106
+ import { z as z13 } from "zod";
2107
+ var CommitCvmComposeFileUpdateRequestSchema = z13.object({
2108
+ id: z13.string().optional(),
2109
+ uuid: z13.string().regex(/^[0-9a-f]{8}[-]?[0-9a-f]{4}[-]?4[0-9a-f]{3}[-]?[89ab][0-9a-f]{3}[-]?[0-9a-f]{12}$/i).optional(),
2110
+ app_id: z13.string().refine(
2097
2111
  (val) => !val.startsWith("app_") && val.length === 40,
2098
2112
  "app_id should be 40 characters without prefix"
2099
2113
  ).transform((val) => val.startsWith("app_") ? val : `app_${val}`).optional(),
2100
- instance_id: z12.string().refine(
2114
+ instance_id: z13.string().refine(
2101
2115
  (val) => !val.startsWith("instance_") && val.length === 40,
2102
2116
  "instance_id should be 40 characters without prefix"
2103
2117
  ).transform((val) => val.startsWith("instance_") ? val : `instance_${val}`).optional(),
2104
- compose_hash: z12.string().min(1, "Compose hash is required"),
2105
- encrypted_env: z12.string().optional(),
2106
- env_keys: z12.array(z12.string()).optional()
2118
+ compose_hash: z13.string().min(1, "Compose hash is required"),
2119
+ encrypted_env: z13.string().optional(),
2120
+ env_keys: z13.array(z13.string()).optional(),
2121
+ update_env_vars: z13.boolean().optional().nullable()
2107
2122
  }).refine(
2108
2123
  (data) => !!(data.id || data.uuid || data.app_id || data.instance_id),
2109
2124
  "One of id, uuid, app_id, or instance_id must be provided"
@@ -2112,9 +2127,10 @@ var CommitCvmComposeFileUpdateRequestSchema = z12.object({
2112
2127
  compose_hash: data.compose_hash,
2113
2128
  encrypted_env: data.encrypted_env,
2114
2129
  env_keys: data.env_keys,
2130
+ update_env_vars: !!data.update_env_vars,
2115
2131
  _raw: data
2116
2132
  }));
2117
- var CommitCvmComposeFileUpdateSchema = z12.any().transform(() => void 0);
2133
+ var CommitCvmComposeFileUpdateSchema = z13.any().transform(() => void 0);
2118
2134
  async function commitCvmComposeFileUpdate(client, request, parameters) {
2119
2135
  const validatedRequest = CommitCvmComposeFileUpdateRequestSchema.parse(request);
2120
2136
  const response = await client.patch(`/cvms/${validatedRequest.cvmId}/compose_file`, {
@@ -2149,17 +2165,17 @@ async function safeCommitCvmComposeFileUpdate(client, request, parameters) {
2149
2165
  }
2150
2166
 
2151
2167
  // src/actions/get_app_env_encrypt_pubkey.ts
2152
- import { z as z13 } from "zod";
2153
- var GetAppEnvEncryptPubKeyRequestSchema = z13.object({
2154
- kms: z13.string().min(1, "KMS ID or slug is required"),
2155
- app_id: z13.string().refine(
2168
+ import { z as z14 } from "zod";
2169
+ var GetAppEnvEncryptPubKeyRequestSchema = z14.object({
2170
+ kms: z14.string().min(1, "KMS ID or slug is required"),
2171
+ app_id: z14.string().refine(
2156
2172
  (val) => val.length === 40 || val.startsWith("0x") && val.length === 42,
2157
2173
  "App ID must be exactly 40 characters or 42 characters with 0x prefix"
2158
2174
  )
2159
2175
  }).strict();
2160
- var GetAppEnvEncryptPubKeySchema = z13.object({
2161
- public_key: z13.string(),
2162
- signature: z13.string()
2176
+ var GetAppEnvEncryptPubKeySchema = z14.object({
2177
+ public_key: z14.string(),
2178
+ signature: z14.string()
2163
2179
  }).strict();
2164
2180
  var getAppEnvEncryptPubKey = async (client, payload, parameters) => {
2165
2181
  const validatedRequest = GetAppEnvEncryptPubKeyRequestSchema.parse(payload);
@@ -2196,15 +2212,15 @@ var safeGetAppEnvEncryptPubKey = async (client, payload, parameters) => {
2196
2212
  };
2197
2213
 
2198
2214
  // src/actions/get_cvm_info.ts
2199
- import { z as z14 } from "zod";
2200
- var GetCvmInfoRequestSchema = z14.object({
2201
- id: z14.string().optional(),
2202
- uuid: z14.string().regex(/^[0-9a-f]{8}[-]?[0-9a-f]{4}[-]?4[0-9a-f]{3}[-]?[89ab][0-9a-f]{3}[-]?[0-9a-f]{12}$/i).optional(),
2203
- app_id: z14.string().refine(
2215
+ import { z as z15 } from "zod";
2216
+ var GetCvmInfoRequestSchema = z15.object({
2217
+ id: z15.string().optional(),
2218
+ uuid: z15.string().regex(/^[0-9a-f]{8}[-]?[0-9a-f]{4}[-]?4[0-9a-f]{3}[-]?[89ab][0-9a-f]{3}[-]?[0-9a-f]{12}$/i).optional(),
2219
+ app_id: z15.string().refine(
2204
2220
  (val) => !val.startsWith("app_") && val.length === 40,
2205
2221
  "app_id should be 40 characters without prefix"
2206
2222
  ).transform((val) => val.startsWith("app_") ? val : `app_${val}`).optional(),
2207
- instance_id: z14.string().refine(
2223
+ instance_id: z15.string().refine(
2208
2224
  (val) => !val.startsWith("instance_") && val.length === 40,
2209
2225
  "instance_id should be 40 characters without prefix"
2210
2226
  ).transform((val) => val.startsWith("instance_") ? val : `instance_${val}`).optional()
@@ -2250,18 +2266,18 @@ async function safeGetCvmInfo(client, request, parameters) {
2250
2266
  }
2251
2267
 
2252
2268
  // src/actions/get_cvm_list.ts
2253
- import { z as z15 } from "zod";
2254
- var GetCvmListRequestSchema = z15.object({
2255
- page: z15.number().int().min(1).optional(),
2256
- page_size: z15.number().int().min(1).optional(),
2257
- node_id: z15.number().int().min(1).optional()
2269
+ import { z as z16 } from "zod";
2270
+ var GetCvmListRequestSchema = z16.object({
2271
+ page: z16.number().int().min(1).optional(),
2272
+ page_size: z16.number().int().min(1).optional(),
2273
+ node_id: z16.number().int().min(1).optional()
2258
2274
  }).strict();
2259
- var GetCvmListSchema = z15.object({
2260
- items: z15.array(CvmInfoSchema),
2261
- total: z15.number(),
2262
- page: z15.number(),
2263
- page_size: z15.number(),
2264
- pages: z15.number()
2275
+ var GetCvmListSchema = z16.object({
2276
+ items: z16.array(CvmInfoSchema),
2277
+ total: z16.number(),
2278
+ page: z16.number(),
2279
+ page_size: z16.number(),
2280
+ pages: z16.number()
2265
2281
  }).strict();
2266
2282
  async function getCvmList(client, request, parameters) {
2267
2283
  const validatedRequest = GetCvmListRequestSchema.parse(request ?? {});
@@ -2298,9 +2314,9 @@ async function safeGetCvmList(client, request, parameters) {
2298
2314
  }
2299
2315
 
2300
2316
  // src/actions/get_kms_info.ts
2301
- import { z as z16 } from "zod";
2302
- var GetKmsInfoRequestSchema = z16.object({
2303
- kms_id: z16.string().min(1, "KMS ID is required")
2317
+ import { z as z17 } from "zod";
2318
+ var GetKmsInfoRequestSchema = z17.object({
2319
+ kms_id: z17.string().min(1, "KMS ID is required")
2304
2320
  });
2305
2321
  async function getKmsInfo(client, request, parameters) {
2306
2322
  const validatedRequest = GetKmsInfoRequestSchema.parse(request);
@@ -2334,18 +2350,18 @@ async function safeGetKmsInfo(client, request, parameters) {
2334
2350
  }
2335
2351
 
2336
2352
  // src/actions/get_kms_list.ts
2337
- import { z as z17 } from "zod";
2338
- var GetKmsListRequestSchema = z17.object({
2339
- page: z17.number().int().min(1).optional(),
2340
- page_size: z17.number().int().min(1).optional(),
2341
- is_onchain: z17.boolean().optional()
2353
+ import { z as z18 } from "zod";
2354
+ var GetKmsListRequestSchema = z18.object({
2355
+ page: z18.number().int().min(1).optional(),
2356
+ page_size: z18.number().int().min(1).optional(),
2357
+ is_onchain: z18.boolean().optional()
2342
2358
  }).strict();
2343
- var GetKmsListSchema = z17.object({
2344
- items: z17.array(KmsInfoSchema),
2345
- total: z17.number(),
2346
- page: z17.number(),
2347
- page_size: z17.number(),
2348
- pages: z17.number()
2359
+ var GetKmsListSchema = z18.object({
2360
+ items: z18.array(KmsInfoSchema),
2361
+ total: z18.number(),
2362
+ page: z18.number(),
2363
+ page_size: z18.number(),
2364
+ pages: z18.number()
2349
2365
  }).strict();
2350
2366
  async function getKmsList(client, request, parameters) {
2351
2367
  const validatedRequest = GetKmsListRequestSchema.parse(request ?? {});
@@ -2381,6 +2397,148 @@ async function safeGetKmsList(client, request, parameters) {
2381
2397
  return validationResult;
2382
2398
  }
2383
2399
 
2400
+ // src/actions/workspaces/list_workspaces.ts
2401
+ import { z as z19 } from "zod";
2402
+ var WorkspaceResponseSchema = z19.object({
2403
+ id: z19.string(),
2404
+ name: z19.string(),
2405
+ slug: z19.string().nullable(),
2406
+ tier: z19.string(),
2407
+ role: z19.string(),
2408
+ created_at: z19.string()
2409
+ }).passthrough();
2410
+ var PaginationMetadataSchema = z19.object({
2411
+ has_more: z19.boolean(),
2412
+ next_cursor: z19.string().nullable(),
2413
+ total: z19.number().nullable()
2414
+ }).passthrough();
2415
+ var ListWorkspacesSchema = z19.object({
2416
+ data: z19.array(WorkspaceResponseSchema),
2417
+ pagination: PaginationMetadataSchema
2418
+ }).passthrough();
2419
+ async function listWorkspaces(client, parameters) {
2420
+ validateActionParameters(parameters);
2421
+ const queryParams = new URLSearchParams();
2422
+ if (parameters?.cursor) queryParams.append("cursor", parameters.cursor);
2423
+ if (parameters?.limit) queryParams.append("limit", parameters.limit.toString());
2424
+ const url = queryParams.toString() ? `/workspaces?${queryParams.toString()}` : "/workspaces";
2425
+ const response = await client.get(url);
2426
+ if (parameters?.schema === false) {
2427
+ return response;
2428
+ }
2429
+ const schema = parameters?.schema || ListWorkspacesSchema;
2430
+ return schema.parse(response);
2431
+ }
2432
+ async function safeListWorkspaces(client, parameters) {
2433
+ const parameterValidationError = safeValidateActionParameters(parameters);
2434
+ if (parameterValidationError) {
2435
+ return parameterValidationError;
2436
+ }
2437
+ const queryParams = new URLSearchParams();
2438
+ if (parameters?.cursor) queryParams.append("cursor", parameters.cursor);
2439
+ if (parameters?.limit) queryParams.append("limit", parameters.limit.toString());
2440
+ const url = queryParams.toString() ? `/workspaces?${queryParams.toString()}` : "/workspaces";
2441
+ const httpResult = await client.safeGet(url);
2442
+ if (!httpResult.success) {
2443
+ return httpResult;
2444
+ }
2445
+ if (parameters?.schema === false) {
2446
+ return { success: true, data: httpResult.data };
2447
+ }
2448
+ const schema = parameters?.schema || ListWorkspacesSchema;
2449
+ return schema.safeParse(httpResult.data);
2450
+ }
2451
+
2452
+ // src/actions/workspaces/get_workspace.ts
2453
+ async function getWorkspace(client, teamSlug, parameters) {
2454
+ validateActionParameters(parameters);
2455
+ const response = await client.get(`/workspaces/${teamSlug}`);
2456
+ if (parameters?.schema === false) {
2457
+ return response;
2458
+ }
2459
+ const schema = parameters?.schema || WorkspaceResponseSchema;
2460
+ return schema.parse(response);
2461
+ }
2462
+ async function safeGetWorkspace(client, teamSlug, parameters) {
2463
+ const parameterValidationError = safeValidateActionParameters(parameters);
2464
+ if (parameterValidationError) {
2465
+ return parameterValidationError;
2466
+ }
2467
+ const httpResult = await client.safeGet(`/workspaces/${teamSlug}`);
2468
+ if (!httpResult.success) {
2469
+ return httpResult;
2470
+ }
2471
+ if (parameters?.schema === false) {
2472
+ return { success: true, data: httpResult.data };
2473
+ }
2474
+ const schema = parameters?.schema || WorkspaceResponseSchema;
2475
+ return schema.safeParse(httpResult.data);
2476
+ }
2477
+
2478
+ // src/actions/list-instance-types.ts
2479
+ import { z as z20 } from "zod";
2480
+ var ListInstanceTypesRequestSchema = z20.object({
2481
+ page: z20.number().int().min(1).optional().default(1),
2482
+ page_size: z20.number().int().min(1).max(1e3).optional().default(100)
2483
+ }).strict();
2484
+ var InstanceTypeSchema = z20.object({
2485
+ id: z20.string(),
2486
+ name: z20.string(),
2487
+ description: z20.string(),
2488
+ vcpu: z20.number(),
2489
+ memory_mb: z20.number(),
2490
+ hourly_rate: z20.string(),
2491
+ requires_gpu: z20.boolean(),
2492
+ public: z20.boolean(),
2493
+ enabled: z20.boolean()
2494
+ }).passthrough();
2495
+ var PaginatedInstanceTypesSchema = z20.object({
2496
+ items: z20.array(InstanceTypeSchema),
2497
+ total: z20.number(),
2498
+ page: z20.number(),
2499
+ page_size: z20.number(),
2500
+ pages: z20.number()
2501
+ }).strict();
2502
+ async function listInstanceTypes(client, request, parameters) {
2503
+ const validatedRequest = ListInstanceTypesRequestSchema.parse(request ?? {});
2504
+ validateActionParameters(parameters);
2505
+ const queryParams = new URLSearchParams();
2506
+ queryParams.append("page", validatedRequest.page.toString());
2507
+ queryParams.append("page_size", validatedRequest.page_size.toString());
2508
+ const response = await client.get(`/api/instance-types?${queryParams.toString()}`);
2509
+ if (parameters?.schema === false) {
2510
+ return response;
2511
+ }
2512
+ const schema = parameters?.schema || PaginatedInstanceTypesSchema;
2513
+ return schema.parse(response);
2514
+ }
2515
+ async function safeListInstanceTypes(client, request, parameters) {
2516
+ const requestValidation = ListInstanceTypesRequestSchema.safeParse(request ?? {});
2517
+ if (!requestValidation.success) {
2518
+ return requestValidation;
2519
+ }
2520
+ const parameterValidationError = safeValidateActionParameters(parameters);
2521
+ if (parameterValidationError) {
2522
+ return parameterValidationError;
2523
+ }
2524
+ const queryParams = new URLSearchParams();
2525
+ queryParams.append("page", requestValidation.data.page.toString());
2526
+ queryParams.append("page_size", requestValidation.data.page_size.toString());
2527
+ const httpResult = await client.safeGet(`/api/instance-types?${queryParams.toString()}`);
2528
+ if (!httpResult.success) {
2529
+ return httpResult;
2530
+ }
2531
+ if (parameters?.schema === false) {
2532
+ return {
2533
+ success: true,
2534
+ data: httpResult.data
2535
+ };
2536
+ }
2537
+ const schema = parameters?.schema || PaginatedInstanceTypesSchema;
2538
+ const validationResult = schema.safeParse(httpResult.data);
2539
+ return validationResult;
2540
+ }
2541
+
2384
2542
  // src/parse_dotenv.ts
2385
2543
  var LINE = /(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/gm;
2386
2544
  function parseEnv(input) {
@@ -2434,12 +2592,15 @@ export {
2434
2592
  DeployAppAuthRequestSchema,
2435
2593
  DeployAppAuthSchema,
2436
2594
  GetAppEnvEncryptPubKeySchema,
2437
- GetCvmComposeFileResultSchema,
2438
2595
  GetCvmListSchema,
2439
2596
  GetKmsListSchema,
2597
+ InstanceTypeSchema,
2440
2598
  KmsInfoSchema,
2599
+ ListWorkspacesSchema,
2441
2600
  ManagedUserSchema,
2442
2601
  NetworkError,
2602
+ PaginatedInstanceTypesSchema,
2603
+ PaginationMetadataSchema,
2443
2604
  ProvisionCvmComposeFileUpdateRequestSchema,
2444
2605
  ProvisionCvmComposeFileUpdateResultSchema,
2445
2606
  ProvisionCvmRequestSchema,
@@ -2449,6 +2610,7 @@ export {
2449
2610
  TransactionError,
2450
2611
  VmInfoSchema,
2451
2612
  WalletError,
2613
+ WorkspaceResponseSchema,
2452
2614
  addComposeHash,
2453
2615
  addNetwork,
2454
2616
  asHex,
@@ -2479,6 +2641,9 @@ export {
2479
2641
  getErrorMessage,
2480
2642
  getKmsInfo,
2481
2643
  getKmsList,
2644
+ getWorkspace,
2645
+ listInstanceTypes,
2646
+ listWorkspaces,
2482
2647
  parseEnv,
2483
2648
  parseEnvVars,
2484
2649
  provisionCvm,
@@ -2495,6 +2660,9 @@ export {
2495
2660
  safeGetCvmList,
2496
2661
  safeGetKmsInfo,
2497
2662
  safeGetKmsList,
2663
+ safeGetWorkspace,
2664
+ safeListInstanceTypes,
2665
+ safeListWorkspaces,
2498
2666
  safeProvisionCvm,
2499
2667
  safeProvisionCvmComposeFileUpdate,
2500
2668
  safeValidateActionParameters,
@@ -0,0 +1,37 @@
1
+ import { z } from "zod";
2
+ export declare const LooseAppComposeSchema: z.ZodObject<{
3
+ allowed_envs: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
4
+ docker_compose_file: z.ZodString;
5
+ features: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
6
+ name: z.ZodOptional<z.ZodString>;
7
+ manifest_version: z.ZodOptional<z.ZodNumber>;
8
+ kms_enabled: z.ZodOptional<z.ZodBoolean>;
9
+ public_logs: z.ZodOptional<z.ZodBoolean>;
10
+ public_sysinfo: z.ZodOptional<z.ZodBoolean>;
11
+ tproxy_enabled: z.ZodOptional<z.ZodBoolean>;
12
+ pre_launch_script: z.ZodOptional<z.ZodString>;
13
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
14
+ allowed_envs: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
15
+ docker_compose_file: z.ZodString;
16
+ features: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
17
+ name: z.ZodOptional<z.ZodString>;
18
+ manifest_version: z.ZodOptional<z.ZodNumber>;
19
+ kms_enabled: z.ZodOptional<z.ZodBoolean>;
20
+ public_logs: z.ZodOptional<z.ZodBoolean>;
21
+ public_sysinfo: z.ZodOptional<z.ZodBoolean>;
22
+ tproxy_enabled: z.ZodOptional<z.ZodBoolean>;
23
+ pre_launch_script: z.ZodOptional<z.ZodString>;
24
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
25
+ allowed_envs: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
26
+ docker_compose_file: z.ZodString;
27
+ features: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
28
+ name: z.ZodOptional<z.ZodString>;
29
+ manifest_version: z.ZodOptional<z.ZodNumber>;
30
+ kms_enabled: z.ZodOptional<z.ZodBoolean>;
31
+ public_logs: z.ZodOptional<z.ZodBoolean>;
32
+ public_sysinfo: z.ZodOptional<z.ZodBoolean>;
33
+ tproxy_enabled: z.ZodOptional<z.ZodBoolean>;
34
+ pre_launch_script: z.ZodOptional<z.ZodString>;
35
+ }, z.ZodTypeAny, "passthrough">>;
36
+ export type LooseAppCompose = z.infer<typeof LooseAppComposeSchema>;
37
+ //# sourceMappingURL=app_compose.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app_compose.d.ts","sourceRoot":"","sources":["../../src/types/app_compose.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAalB,CAAC;AAEjB,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
@@ -108,6 +108,7 @@ export interface ClientConfig extends FetchOptions {
108
108
  /**
109
109
  * API key for authentication
110
110
  * If not provided, will read from PHALA_CLOUD_API_KEY environment variable
111
+ * Not required when useCookieAuth is true
111
112
  */
112
113
  apiKey?: string;
113
114
  /**
@@ -122,5 +123,19 @@ export interface ClientConfig extends FetchOptions {
122
123
  * API version to use
123
124
  */
124
125
  version?: string;
126
+ /**
127
+ * Use cookie-based authentication instead of API key
128
+ * When true, API key is not required and credentials: "include" is set
129
+ */
130
+ useCookieAuth?: boolean;
131
+ /**
132
+ * Custom response error handler
133
+ * Will be called in addition to the default error logging
134
+ */
135
+ onResponseError?: (context: {
136
+ request: FetchRequest;
137
+ response: Response;
138
+ options: FetchOptions;
139
+ }) => void | Promise<void>;
125
140
  }
126
141
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/types/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/types/client.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@phala/cloud",
3
- "version": "0.0.9",
3
+ "version": "0.0.11",
4
4
  "description": "TypeScript SDK for Phala Cloud API",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",