@phala/cloud 0.1.0 → 0.1.1-beta.2
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/actions/{add_compose_hash.d.ts → blockchains/add_compose_hash.d.ts} +1 -2
- package/dist/actions/{deploy_app_auth.d.ts → blockchains/deploy_app_auth.d.ts} +1 -2
- package/dist/actions/{commit_cvm_compose_file_update.d.ts → cvms/commit_cvm_compose_file_update.d.ts} +10 -11
- package/dist/actions/{commit_cvm_provision.d.ts → cvms/commit_cvm_provision.d.ts} +14 -15
- package/dist/actions/{get_cvm_compose_file.d.ts → cvms/get_cvm_compose_file.d.ts} +74 -6
- package/dist/actions/cvms/get_cvm_info.d.ts +85 -0
- package/dist/actions/{get_cvm_list.d.ts → cvms/get_cvm_list.d.ts} +48 -49
- package/dist/actions/{provision_cvm.d.ts → cvms/provision_cvm.d.ts} +16 -17
- package/dist/actions/{provision_cvm_compose_file_update.d.ts → cvms/provision_cvm_compose_file_update.d.ts} +153 -18
- package/dist/actions/get_available_nodes.d.ts +0 -1
- package/dist/actions/get_current_user.d.ts +35 -16
- package/dist/actions/index.d.ts +13 -14
- package/dist/actions/{get_app_env_encrypt_pubkey.d.ts → kms/get_app_env_encrypt_pubkey.d.ts} +8 -9
- package/dist/actions/{get_kms_info.d.ts → kms/get_kms_info.d.ts} +6 -22
- package/dist/actions/{get_kms_list.d.ts → kms/get_kms_list.d.ts} +6 -35
- package/dist/actions/list-instance-types.d.ts +0 -1
- package/dist/actions/workspaces/get_workspace.d.ts +0 -1
- package/dist/actions/workspaces/list_workspaces.d.ts +0 -1
- package/dist/client.d.ts +0 -1
- package/dist/create-client.d.ts +267 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +858 -832
- package/dist/index.mjs +825 -800
- package/dist/parse_dotenv.d.ts +0 -1
- package/dist/types/app_compose.d.ts +0 -1
- package/dist/types/client.d.ts +0 -1
- package/dist/types/common.d.ts +0 -1
- package/dist/types/cvm_info.d.ts +34 -35
- package/dist/types/index.d.ts +0 -1
- package/dist/types/kms_info.d.ts +0 -1
- package/dist/types/supported_chains.d.ts +0 -1
- package/dist/utils/as-hex.d.ts +0 -1
- package/dist/utils/client-factories.d.ts +0 -1
- package/dist/utils/define-action.d.ts +7 -8
- package/dist/utils/get_compose_hash.d.ts +0 -1
- package/dist/utils/get_error_message.d.ts +0 -1
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/network.d.ts +0 -1
- package/dist/utils/transaction.d.ts +0 -1
- package/dist/utils/validate-parameters.d.ts +0 -1
- package/package.json +65 -66
- package/dist/actions/add_compose_hash.d.ts.map +0 -1
- package/dist/actions/commit_cvm_compose_file_update.d.ts.map +0 -1
- package/dist/actions/commit_cvm_provision.d.ts.map +0 -1
- package/dist/actions/deploy_app_auth.d.ts.map +0 -1
- package/dist/actions/get_app_env_encrypt_pubkey.d.ts.map +0 -1
- package/dist/actions/get_available_nodes.d.ts.map +0 -1
- package/dist/actions/get_current_user.d.ts.map +0 -1
- package/dist/actions/get_cvm_compose_file.d.ts.map +0 -1
- package/dist/actions/get_cvm_info.d.ts +0 -172
- package/dist/actions/get_cvm_info.d.ts.map +0 -1
- package/dist/actions/get_cvm_list.d.ts.map +0 -1
- package/dist/actions/get_kms_info.d.ts.map +0 -1
- package/dist/actions/get_kms_list.d.ts.map +0 -1
- package/dist/actions/index.d.ts.map +0 -1
- package/dist/actions/list-instance-types.d.ts.map +0 -1
- package/dist/actions/provision_cvm.d.ts.map +0 -1
- package/dist/actions/provision_cvm_compose_file_update.d.ts.map +0 -1
- package/dist/actions/workspaces/get_workspace.d.ts.map +0 -1
- package/dist/actions/workspaces/list_workspaces.d.ts.map +0 -1
- package/dist/client.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/parse_dotenv.d.ts.map +0 -1
- package/dist/types/app_compose.d.ts.map +0 -1
- package/dist/types/client.d.ts.map +0 -1
- package/dist/types/common.d.ts.map +0 -1
- package/dist/types/cvm_info.d.ts.map +0 -1
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/kms_info.d.ts.map +0 -1
- package/dist/types/supported_chains.d.ts.map +0 -1
- package/dist/utils/as-hex.d.ts.map +0 -1
- package/dist/utils/client-factories.d.ts.map +0 -1
- package/dist/utils/define-action.d.ts.map +0 -1
- package/dist/utils/get_compose_hash.d.ts.map +0 -1
- package/dist/utils/get_error_message.d.ts.map +0 -1
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/network.d.ts.map +0 -1
- package/dist/utils/transaction.d.ts.map +0 -1
- package/dist/utils/validate-parameters.d.ts.map +0 -1
package/dist/index.mjs
CHANGED
|
@@ -321,9 +321,178 @@ function createClient(config = {}) {
|
|
|
321
321
|
return new Client(config);
|
|
322
322
|
}
|
|
323
323
|
|
|
324
|
-
// src/
|
|
324
|
+
// src/actions/get_current_user.ts
|
|
325
325
|
import { z as z2 } from "zod";
|
|
326
326
|
|
|
327
|
+
// src/utils/validate-parameters.ts
|
|
328
|
+
function validateActionParameters(parameters) {
|
|
329
|
+
if (parameters?.schema !== void 0 && parameters?.schema !== false) {
|
|
330
|
+
if (typeof parameters.schema !== "object" || parameters.schema === null || !("parse" in parameters.schema) || typeof parameters.schema.parse !== "function") {
|
|
331
|
+
throw new Error("Invalid schema: must be a Zod schema object, false, or undefined");
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
function safeValidateActionParameters(parameters) {
|
|
336
|
+
if (parameters?.schema !== void 0 && parameters?.schema !== false) {
|
|
337
|
+
if (typeof parameters.schema !== "object" || parameters.schema === null || !("parse" in parameters.schema) || typeof parameters.schema.parse !== "function") {
|
|
338
|
+
return {
|
|
339
|
+
success: false,
|
|
340
|
+
error: {
|
|
341
|
+
name: "ZodError",
|
|
342
|
+
message: "Invalid schema: must be a Zod schema object, false, or undefined",
|
|
343
|
+
issues: [
|
|
344
|
+
{
|
|
345
|
+
code: "invalid_type",
|
|
346
|
+
expected: "object",
|
|
347
|
+
received: typeof parameters.schema,
|
|
348
|
+
path: ["schema"],
|
|
349
|
+
message: "Invalid schema: must be a Zod schema object, false, or undefined"
|
|
350
|
+
}
|
|
351
|
+
]
|
|
352
|
+
}
|
|
353
|
+
};
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
return void 0;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
// src/utils/define-action.ts
|
|
360
|
+
function defineSimpleAction(schema, fn) {
|
|
361
|
+
function action(client, parameters) {
|
|
362
|
+
return _actionImpl(client, parameters);
|
|
363
|
+
}
|
|
364
|
+
async function _actionImpl(client, parameters) {
|
|
365
|
+
validateActionParameters(parameters);
|
|
366
|
+
const response = await fn(client);
|
|
367
|
+
if (parameters?.schema === false) {
|
|
368
|
+
return response;
|
|
369
|
+
}
|
|
370
|
+
const actualSchema = parameters?.schema || schema;
|
|
371
|
+
return actualSchema.parse(response);
|
|
372
|
+
}
|
|
373
|
+
function safeAction(client, parameters) {
|
|
374
|
+
return _safeActionImpl(client, parameters);
|
|
375
|
+
}
|
|
376
|
+
async function _safeActionImpl(client, parameters) {
|
|
377
|
+
const parameterValidationError = safeValidateActionParameters(parameters);
|
|
378
|
+
if (parameterValidationError) {
|
|
379
|
+
return parameterValidationError;
|
|
380
|
+
}
|
|
381
|
+
const httpResult = await (async () => {
|
|
382
|
+
try {
|
|
383
|
+
const data = await fn(client);
|
|
384
|
+
return { success: true, data };
|
|
385
|
+
} catch (error) {
|
|
386
|
+
if (error && typeof error === "object" && "isRequestError" in error) {
|
|
387
|
+
return { success: false, error };
|
|
388
|
+
}
|
|
389
|
+
if (error && typeof error === "object" && "issues" in error) {
|
|
390
|
+
return { success: false, error };
|
|
391
|
+
}
|
|
392
|
+
return {
|
|
393
|
+
success: false,
|
|
394
|
+
error: {
|
|
395
|
+
name: "Error",
|
|
396
|
+
message: error instanceof Error ? error.message : String(error)
|
|
397
|
+
}
|
|
398
|
+
};
|
|
399
|
+
}
|
|
400
|
+
})();
|
|
401
|
+
if (!httpResult.success) {
|
|
402
|
+
return httpResult;
|
|
403
|
+
}
|
|
404
|
+
if (parameters?.schema === false) {
|
|
405
|
+
return { success: true, data: httpResult.data };
|
|
406
|
+
}
|
|
407
|
+
const actualSchema = parameters?.schema || schema;
|
|
408
|
+
return actualSchema.safeParse(httpResult.data);
|
|
409
|
+
}
|
|
410
|
+
return {
|
|
411
|
+
action,
|
|
412
|
+
safeAction
|
|
413
|
+
};
|
|
414
|
+
}
|
|
415
|
+
function defineAction(schema, fn) {
|
|
416
|
+
function action(client, ...args) {
|
|
417
|
+
const [params, parameters] = args;
|
|
418
|
+
return _actionImpl(client, params, parameters);
|
|
419
|
+
}
|
|
420
|
+
async function _actionImpl(client, params, parameters) {
|
|
421
|
+
validateActionParameters(parameters);
|
|
422
|
+
const response = await fn(client, params);
|
|
423
|
+
if (parameters?.schema === false) {
|
|
424
|
+
return response;
|
|
425
|
+
}
|
|
426
|
+
const actualSchema = parameters?.schema || schema;
|
|
427
|
+
return actualSchema.parse(response);
|
|
428
|
+
}
|
|
429
|
+
function safeAction(client, ...args) {
|
|
430
|
+
const [params, parameters] = args;
|
|
431
|
+
return _safeActionImpl(client, params, parameters);
|
|
432
|
+
}
|
|
433
|
+
async function _safeActionImpl(client, params, parameters) {
|
|
434
|
+
const parameterValidationError = safeValidateActionParameters(parameters);
|
|
435
|
+
if (parameterValidationError) {
|
|
436
|
+
return parameterValidationError;
|
|
437
|
+
}
|
|
438
|
+
const httpResult = await (async () => {
|
|
439
|
+
try {
|
|
440
|
+
const data = await fn(client, params);
|
|
441
|
+
return { success: true, data };
|
|
442
|
+
} catch (error) {
|
|
443
|
+
if (error && typeof error === "object" && "isRequestError" in error) {
|
|
444
|
+
return { success: false, error };
|
|
445
|
+
}
|
|
446
|
+
if (error && typeof error === "object" && "issues" in error) {
|
|
447
|
+
return { success: false, error };
|
|
448
|
+
}
|
|
449
|
+
return {
|
|
450
|
+
success: false,
|
|
451
|
+
error: {
|
|
452
|
+
name: "Error",
|
|
453
|
+
message: error instanceof Error ? error.message : String(error)
|
|
454
|
+
}
|
|
455
|
+
};
|
|
456
|
+
}
|
|
457
|
+
})();
|
|
458
|
+
if (!httpResult.success) {
|
|
459
|
+
return httpResult;
|
|
460
|
+
}
|
|
461
|
+
if (parameters?.schema === false) {
|
|
462
|
+
return { success: true, data: httpResult.data };
|
|
463
|
+
}
|
|
464
|
+
const actualSchema = parameters?.schema || schema;
|
|
465
|
+
return actualSchema.safeParse(httpResult.data);
|
|
466
|
+
}
|
|
467
|
+
return {
|
|
468
|
+
action,
|
|
469
|
+
safeAction
|
|
470
|
+
};
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
// src/actions/get_current_user.ts
|
|
474
|
+
var CurrentUserSchema = z2.object({
|
|
475
|
+
username: z2.string(),
|
|
476
|
+
email: z2.string(),
|
|
477
|
+
credits: z2.number(),
|
|
478
|
+
granted_credits: z2.number(),
|
|
479
|
+
avatar: z2.string(),
|
|
480
|
+
team_name: z2.string(),
|
|
481
|
+
team_tier: z2.string()
|
|
482
|
+
}).passthrough();
|
|
483
|
+
var { action: getCurrentUser, safeAction: safeGetCurrentUser } = defineSimpleAction(
|
|
484
|
+
CurrentUserSchema,
|
|
485
|
+
async (client) => {
|
|
486
|
+
return await client.get("/auth/me");
|
|
487
|
+
}
|
|
488
|
+
);
|
|
489
|
+
|
|
490
|
+
// src/actions/get_available_nodes.ts
|
|
491
|
+
import { z as z4 } from "zod";
|
|
492
|
+
|
|
493
|
+
// src/types/kms_info.ts
|
|
494
|
+
import { z as z3 } from "zod";
|
|
495
|
+
|
|
327
496
|
// src/types/supported_chains.ts
|
|
328
497
|
import { anvil, base, mainnet } from "viem/chains";
|
|
329
498
|
var SUPPORTED_CHAINS = {
|
|
@@ -333,14 +502,14 @@ var SUPPORTED_CHAINS = {
|
|
|
333
502
|
};
|
|
334
503
|
|
|
335
504
|
// src/types/kms_info.ts
|
|
336
|
-
var KmsInfoBaseSchema =
|
|
337
|
-
id:
|
|
338
|
-
slug:
|
|
339
|
-
url:
|
|
340
|
-
version:
|
|
341
|
-
chain_id:
|
|
342
|
-
kms_contract_address:
|
|
343
|
-
gateway_app_id:
|
|
505
|
+
var KmsInfoBaseSchema = z3.object({
|
|
506
|
+
id: z3.string(),
|
|
507
|
+
slug: z3.string().nullable(),
|
|
508
|
+
url: z3.string(),
|
|
509
|
+
version: z3.string(),
|
|
510
|
+
chain_id: z3.number().nullable(),
|
|
511
|
+
kms_contract_address: z3.string().nullable().transform((val) => val),
|
|
512
|
+
gateway_app_id: z3.string().nullable().transform((val) => val)
|
|
344
513
|
}).passthrough();
|
|
345
514
|
var KmsInfoSchema = KmsInfoBaseSchema.transform((data) => {
|
|
346
515
|
if (data.chain_id != null) {
|
|
@@ -352,91 +521,597 @@ var KmsInfoSchema = KmsInfoBaseSchema.transform((data) => {
|
|
|
352
521
|
return data;
|
|
353
522
|
});
|
|
354
523
|
|
|
524
|
+
// src/actions/get_available_nodes.ts
|
|
525
|
+
var AvailableOSImageSchema = z4.object({
|
|
526
|
+
name: z4.string(),
|
|
527
|
+
is_dev: z4.boolean(),
|
|
528
|
+
version: z4.union([
|
|
529
|
+
z4.tuple([z4.number(), z4.number(), z4.number()]),
|
|
530
|
+
z4.tuple([z4.number(), z4.number(), z4.number(), z4.number()])
|
|
531
|
+
]),
|
|
532
|
+
os_image_hash: z4.string().nullable().optional()
|
|
533
|
+
}).passthrough();
|
|
534
|
+
var TeepodCapacitySchema = z4.object({
|
|
535
|
+
teepod_id: z4.number(),
|
|
536
|
+
name: z4.string(),
|
|
537
|
+
listed: z4.boolean(),
|
|
538
|
+
resource_score: z4.number(),
|
|
539
|
+
remaining_vcpu: z4.number(),
|
|
540
|
+
remaining_memory: z4.number(),
|
|
541
|
+
remaining_cvm_slots: z4.number(),
|
|
542
|
+
images: z4.array(AvailableOSImageSchema),
|
|
543
|
+
support_onchain_kms: z4.boolean().optional(),
|
|
544
|
+
fmspc: z4.string().nullable().optional(),
|
|
545
|
+
device_id: z4.string().nullable().optional(),
|
|
546
|
+
region_identifier: z4.string().nullable().optional(),
|
|
547
|
+
default_kms: z4.string().nullable().optional(),
|
|
548
|
+
kms_list: z4.array(z4.string()).default([])
|
|
549
|
+
}).passthrough();
|
|
550
|
+
var ResourceThresholdSchema = z4.object({
|
|
551
|
+
max_instances: z4.number().nullable().optional(),
|
|
552
|
+
max_vcpu: z4.number().nullable().optional(),
|
|
553
|
+
max_memory: z4.number().nullable().optional(),
|
|
554
|
+
max_disk: z4.number().nullable().optional()
|
|
555
|
+
}).passthrough();
|
|
556
|
+
var AvailableNodesSchema = z4.object({
|
|
557
|
+
tier: z4.string(),
|
|
558
|
+
// TeamTier is string enum
|
|
559
|
+
capacity: ResourceThresholdSchema,
|
|
560
|
+
nodes: z4.array(TeepodCapacitySchema),
|
|
561
|
+
kms_list: z4.array(KmsInfoSchema)
|
|
562
|
+
}).passthrough();
|
|
563
|
+
var { action: getAvailableNodes, safeAction: safeGetAvailableNodes } = defineSimpleAction(
|
|
564
|
+
AvailableNodesSchema,
|
|
565
|
+
async (client) => {
|
|
566
|
+
return await client.get("/teepods/available");
|
|
567
|
+
}
|
|
568
|
+
);
|
|
569
|
+
|
|
570
|
+
// src/actions/list-instance-types.ts
|
|
571
|
+
import { z as z5 } from "zod";
|
|
572
|
+
var ListInstanceTypesRequestSchema = z5.object({
|
|
573
|
+
page: z5.number().int().min(1).optional().default(1),
|
|
574
|
+
page_size: z5.number().int().min(1).max(1e3).optional().default(100)
|
|
575
|
+
}).strict();
|
|
576
|
+
var InstanceTypeSchema = z5.object({
|
|
577
|
+
id: z5.string(),
|
|
578
|
+
name: z5.string(),
|
|
579
|
+
description: z5.string(),
|
|
580
|
+
vcpu: z5.number(),
|
|
581
|
+
memory_mb: z5.number(),
|
|
582
|
+
hourly_rate: z5.string(),
|
|
583
|
+
requires_gpu: z5.boolean(),
|
|
584
|
+
public: z5.boolean(),
|
|
585
|
+
enabled: z5.boolean()
|
|
586
|
+
}).passthrough();
|
|
587
|
+
var PaginatedInstanceTypesSchema = z5.object({
|
|
588
|
+
items: z5.array(InstanceTypeSchema),
|
|
589
|
+
total: z5.number(),
|
|
590
|
+
page: z5.number(),
|
|
591
|
+
page_size: z5.number(),
|
|
592
|
+
pages: z5.number()
|
|
593
|
+
}).strict();
|
|
594
|
+
var { action: listInstanceTypes, safeAction: safeListInstanceTypes } = defineAction(PaginatedInstanceTypesSchema, async (client, request) => {
|
|
595
|
+
const validatedRequest = ListInstanceTypesRequestSchema.parse(request ?? {});
|
|
596
|
+
const queryParams = new URLSearchParams();
|
|
597
|
+
queryParams.append("page", validatedRequest.page.toString());
|
|
598
|
+
queryParams.append("page_size", validatedRequest.page_size.toString());
|
|
599
|
+
return await client.get(`/api/instance-types?${queryParams.toString()}`);
|
|
600
|
+
});
|
|
601
|
+
|
|
602
|
+
// src/actions/workspaces/list_workspaces.ts
|
|
603
|
+
import { z as z6 } from "zod";
|
|
604
|
+
var WorkspaceResponseSchema = z6.object({
|
|
605
|
+
id: z6.string(),
|
|
606
|
+
name: z6.string(),
|
|
607
|
+
slug: z6.string().nullable(),
|
|
608
|
+
tier: z6.string(),
|
|
609
|
+
role: z6.string(),
|
|
610
|
+
created_at: z6.string()
|
|
611
|
+
}).passthrough();
|
|
612
|
+
var PaginationMetadataSchema = z6.object({
|
|
613
|
+
has_more: z6.boolean(),
|
|
614
|
+
next_cursor: z6.string().nullable(),
|
|
615
|
+
total: z6.number().nullable()
|
|
616
|
+
}).passthrough();
|
|
617
|
+
var ListWorkspacesSchema = z6.object({
|
|
618
|
+
data: z6.array(WorkspaceResponseSchema),
|
|
619
|
+
pagination: PaginationMetadataSchema
|
|
620
|
+
}).passthrough();
|
|
621
|
+
var { action: listWorkspaces, safeAction: safeListWorkspaces } = defineAction(ListWorkspacesSchema, async (client, request) => {
|
|
622
|
+
const queryParams = new URLSearchParams();
|
|
623
|
+
if (request?.cursor) queryParams.append("cursor", request.cursor);
|
|
624
|
+
if (request?.limit) queryParams.append("limit", request.limit.toString());
|
|
625
|
+
const url = queryParams.toString() ? `/workspaces?${queryParams.toString()}` : "/workspaces";
|
|
626
|
+
return await client.get(url);
|
|
627
|
+
});
|
|
628
|
+
|
|
629
|
+
// src/actions/workspaces/get_workspace.ts
|
|
630
|
+
var { action: getWorkspace, safeAction: safeGetWorkspace } = defineAction(WorkspaceResponseSchema, async (client, teamSlug) => {
|
|
631
|
+
return await client.get(`/workspaces/${teamSlug}`);
|
|
632
|
+
});
|
|
633
|
+
|
|
634
|
+
// src/actions/cvms/get_cvm_info.ts
|
|
635
|
+
import { z as z8 } from "zod";
|
|
636
|
+
|
|
355
637
|
// src/types/cvm_info.ts
|
|
356
|
-
import { z as
|
|
357
|
-
var VmInfoSchema =
|
|
358
|
-
id:
|
|
359
|
-
name:
|
|
360
|
-
status:
|
|
361
|
-
uptime:
|
|
362
|
-
app_url:
|
|
363
|
-
app_id:
|
|
364
|
-
instance_id:
|
|
365
|
-
configuration:
|
|
638
|
+
import { z as z7 } from "zod";
|
|
639
|
+
var VmInfoSchema = z7.object({
|
|
640
|
+
id: z7.string(),
|
|
641
|
+
name: z7.string(),
|
|
642
|
+
status: z7.string(),
|
|
643
|
+
uptime: z7.string(),
|
|
644
|
+
app_url: z7.string().nullable(),
|
|
645
|
+
app_id: z7.string(),
|
|
646
|
+
instance_id: z7.string().nullable(),
|
|
647
|
+
configuration: z7.any().optional(),
|
|
366
648
|
// TODO: add VmConfiguration schema if needed
|
|
367
|
-
exited_at:
|
|
368
|
-
boot_progress:
|
|
369
|
-
boot_error:
|
|
370
|
-
shutdown_progress:
|
|
371
|
-
image_version:
|
|
649
|
+
exited_at: z7.string().nullable(),
|
|
650
|
+
boot_progress: z7.string().nullable(),
|
|
651
|
+
boot_error: z7.string().nullable(),
|
|
652
|
+
shutdown_progress: z7.string().nullable(),
|
|
653
|
+
image_version: z7.string().nullable()
|
|
372
654
|
});
|
|
373
|
-
var ManagedUserSchema =
|
|
374
|
-
id:
|
|
375
|
-
username:
|
|
655
|
+
var ManagedUserSchema = z7.object({
|
|
656
|
+
id: z7.number(),
|
|
657
|
+
username: z7.string()
|
|
376
658
|
});
|
|
377
|
-
var CvmNodeSchema =
|
|
378
|
-
id:
|
|
379
|
-
name:
|
|
380
|
-
region_identifier:
|
|
659
|
+
var CvmNodeSchema = z7.object({
|
|
660
|
+
id: z7.number(),
|
|
661
|
+
name: z7.string(),
|
|
662
|
+
region_identifier: z7.string().optional()
|
|
381
663
|
});
|
|
382
|
-
var CvmNetworkUrlsSchema =
|
|
383
|
-
app:
|
|
384
|
-
instance:
|
|
664
|
+
var CvmNetworkUrlsSchema = z7.object({
|
|
665
|
+
app: z7.string(),
|
|
666
|
+
instance: z7.string()
|
|
385
667
|
});
|
|
386
|
-
var CvmInfoSchema =
|
|
668
|
+
var CvmInfoSchema = z7.object({
|
|
387
669
|
hosted: VmInfoSchema,
|
|
388
|
-
name:
|
|
670
|
+
name: z7.string(),
|
|
389
671
|
managed_user: ManagedUserSchema.optional().nullable(),
|
|
390
672
|
node: CvmNodeSchema.optional().nullable(),
|
|
391
|
-
listed:
|
|
392
|
-
status:
|
|
393
|
-
in_progress:
|
|
394
|
-
dapp_dashboard_url:
|
|
395
|
-
syslog_endpoint:
|
|
396
|
-
allow_upgrade:
|
|
397
|
-
project_id:
|
|
673
|
+
listed: z7.boolean().default(false),
|
|
674
|
+
status: z7.string(),
|
|
675
|
+
in_progress: z7.boolean().default(false),
|
|
676
|
+
dapp_dashboard_url: z7.string().nullable(),
|
|
677
|
+
syslog_endpoint: z7.string().nullable(),
|
|
678
|
+
allow_upgrade: z7.boolean().default(false),
|
|
679
|
+
project_id: z7.string().nullable(),
|
|
398
680
|
// HashedId is represented as string in JS
|
|
399
|
-
project_type:
|
|
400
|
-
billing_period:
|
|
681
|
+
project_type: z7.string().nullable(),
|
|
682
|
+
billing_period: z7.string().nullable(),
|
|
401
683
|
kms_info: KmsInfoSchema.nullable(),
|
|
402
|
-
vcpu:
|
|
403
|
-
memory:
|
|
404
|
-
disk_size:
|
|
405
|
-
gateway_domain:
|
|
406
|
-
public_urls:
|
|
684
|
+
vcpu: z7.number().nullable(),
|
|
685
|
+
memory: z7.number().nullable(),
|
|
686
|
+
disk_size: z7.number().nullable(),
|
|
687
|
+
gateway_domain: z7.string().nullable(),
|
|
688
|
+
public_urls: z7.array(CvmNetworkUrlsSchema)
|
|
407
689
|
}).partial();
|
|
408
|
-
var CvmLegacyDetailSchema =
|
|
409
|
-
id:
|
|
410
|
-
name:
|
|
411
|
-
status:
|
|
412
|
-
in_progress:
|
|
413
|
-
teepod_id:
|
|
690
|
+
var CvmLegacyDetailSchema = z7.object({
|
|
691
|
+
id: z7.number(),
|
|
692
|
+
name: z7.string(),
|
|
693
|
+
status: z7.string(),
|
|
694
|
+
in_progress: z7.boolean(),
|
|
695
|
+
teepod_id: z7.number().nullable(),
|
|
414
696
|
teepod: CvmNodeSchema,
|
|
415
|
-
app_id:
|
|
416
|
-
vm_uuid:
|
|
417
|
-
instance_id:
|
|
418
|
-
vcpu:
|
|
419
|
-
memory:
|
|
420
|
-
disk_size:
|
|
421
|
-
base_image:
|
|
422
|
-
encrypted_env_pubkey:
|
|
423
|
-
listed:
|
|
424
|
-
project_id:
|
|
425
|
-
project_type:
|
|
426
|
-
public_sysinfo:
|
|
427
|
-
public_logs:
|
|
428
|
-
dapp_dashboard_url:
|
|
429
|
-
syslog_endpoint:
|
|
697
|
+
app_id: z7.string(),
|
|
698
|
+
vm_uuid: z7.string().nullable(),
|
|
699
|
+
instance_id: z7.string().nullable(),
|
|
700
|
+
vcpu: z7.number().nullable(),
|
|
701
|
+
memory: z7.number().nullable(),
|
|
702
|
+
disk_size: z7.number().nullable(),
|
|
703
|
+
base_image: z7.string(),
|
|
704
|
+
encrypted_env_pubkey: z7.string().nullable(),
|
|
705
|
+
listed: z7.boolean(),
|
|
706
|
+
project_id: z7.string().nullable(),
|
|
707
|
+
project_type: z7.string().nullable(),
|
|
708
|
+
public_sysinfo: z7.boolean(),
|
|
709
|
+
public_logs: z7.boolean(),
|
|
710
|
+
dapp_dashboard_url: z7.string().nullable(),
|
|
711
|
+
syslog_endpoint: z7.string().nullable(),
|
|
430
712
|
kms_info: KmsInfoSchema.nullable(),
|
|
431
|
-
contract_address:
|
|
432
|
-
deployer_address:
|
|
433
|
-
scheduled_delete_at:
|
|
434
|
-
public_urls:
|
|
435
|
-
gateway_domain:
|
|
713
|
+
contract_address: z7.string().nullable(),
|
|
714
|
+
deployer_address: z7.string().nullable(),
|
|
715
|
+
scheduled_delete_at: z7.string().nullable(),
|
|
716
|
+
public_urls: z7.array(CvmNetworkUrlsSchema),
|
|
717
|
+
gateway_domain: z7.string().nullable()
|
|
718
|
+
});
|
|
719
|
+
|
|
720
|
+
// src/actions/cvms/get_cvm_info.ts
|
|
721
|
+
var GetCvmInfoRequestSchema = z8.object({
|
|
722
|
+
id: z8.string().optional(),
|
|
723
|
+
uuid: z8.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(),
|
|
724
|
+
app_id: z8.string().refine(
|
|
725
|
+
(val) => !val.startsWith("app_") && val.length === 40,
|
|
726
|
+
"app_id should be 40 characters without prefix"
|
|
727
|
+
).transform((val) => val.startsWith("app_") ? val : `app_${val}`).optional(),
|
|
728
|
+
instance_id: z8.string().refine(
|
|
729
|
+
(val) => !val.startsWith("instance_") && val.length === 40,
|
|
730
|
+
"instance_id should be 40 characters without prefix"
|
|
731
|
+
).transform((val) => val.startsWith("instance_") ? val : `instance_${val}`).optional()
|
|
732
|
+
}).refine(
|
|
733
|
+
(data) => !!(data.id || data.uuid || data.app_id || data.instance_id),
|
|
734
|
+
"One of id, uuid, app_id, or instance_id must be provided"
|
|
735
|
+
).transform((data) => ({
|
|
736
|
+
cvmId: data.id || data.uuid || data.app_id || data.instance_id,
|
|
737
|
+
_raw: data
|
|
738
|
+
}));
|
|
739
|
+
var { action: getCvmInfo, safeAction: safeGetCvmInfo } = defineAction(CvmLegacyDetailSchema, async (client, request) => {
|
|
740
|
+
const validatedRequest = GetCvmInfoRequestSchema.parse(request);
|
|
741
|
+
return await client.get(`/cvms/${validatedRequest.cvmId}`);
|
|
742
|
+
});
|
|
743
|
+
|
|
744
|
+
// src/actions/cvms/get_cvm_list.ts
|
|
745
|
+
import { z as z9 } from "zod";
|
|
746
|
+
var GetCvmListRequestSchema = z9.object({
|
|
747
|
+
page: z9.number().int().min(1).optional(),
|
|
748
|
+
page_size: z9.number().int().min(1).optional(),
|
|
749
|
+
node_id: z9.number().int().min(1).optional()
|
|
750
|
+
}).strict();
|
|
751
|
+
var GetCvmListSchema = z9.object({
|
|
752
|
+
items: z9.array(CvmInfoSchema),
|
|
753
|
+
total: z9.number(),
|
|
754
|
+
page: z9.number(),
|
|
755
|
+
page_size: z9.number(),
|
|
756
|
+
pages: z9.number()
|
|
757
|
+
}).strict();
|
|
758
|
+
var { action: getCvmList, safeAction: safeGetCvmList } = defineAction(GetCvmListSchema, async (client, request) => {
|
|
759
|
+
const validatedRequest = GetCvmListRequestSchema.parse(request ?? {});
|
|
760
|
+
return await client.get("/cvms/paginated", { params: validatedRequest });
|
|
761
|
+
});
|
|
762
|
+
|
|
763
|
+
// src/actions/cvms/provision_cvm.ts
|
|
764
|
+
import { z as z10 } from "zod";
|
|
765
|
+
var ProvisionCvmSchema = z10.object({
|
|
766
|
+
app_id: z10.string().nullable().optional(),
|
|
767
|
+
app_env_encrypt_pubkey: z10.string().nullable().optional(),
|
|
768
|
+
compose_hash: z10.string(),
|
|
769
|
+
fmspc: z10.string().nullable().optional(),
|
|
770
|
+
device_id: z10.string().nullable().optional(),
|
|
771
|
+
os_image_hash: z10.string().nullable().optional(),
|
|
772
|
+
teepod_id: z10.number().nullable().optional(),
|
|
773
|
+
// Will be transformed to node_id
|
|
774
|
+
node_id: z10.number().nullable().optional(),
|
|
775
|
+
kms_id: z10.string().nullable().optional()
|
|
776
|
+
}).passthrough().transform((data) => {
|
|
777
|
+
if ("teepod_id" in data && data.teepod_id !== void 0) {
|
|
778
|
+
const { teepod_id, ...rest } = data;
|
|
779
|
+
return { ...rest, node_id: teepod_id };
|
|
780
|
+
}
|
|
781
|
+
return data;
|
|
782
|
+
});
|
|
783
|
+
var ProvisionCvmRequestSchema = z10.object({
|
|
784
|
+
node_id: z10.number().optional(),
|
|
785
|
+
// recommended
|
|
786
|
+
teepod_id: z10.number().optional(),
|
|
787
|
+
// deprecated, for compatibility
|
|
788
|
+
name: z10.string(),
|
|
789
|
+
image: z10.string(),
|
|
790
|
+
vcpu: z10.number(),
|
|
791
|
+
memory: z10.number(),
|
|
792
|
+
disk_size: z10.number(),
|
|
793
|
+
compose_file: z10.object({
|
|
794
|
+
allowed_envs: z10.array(z10.string()).optional(),
|
|
795
|
+
pre_launch_script: z10.string().optional(),
|
|
796
|
+
docker_compose_file: z10.string().optional(),
|
|
797
|
+
name: z10.string().optional(),
|
|
798
|
+
kms_enabled: z10.boolean().optional(),
|
|
799
|
+
public_logs: z10.boolean().optional(),
|
|
800
|
+
public_sysinfo: z10.boolean().optional(),
|
|
801
|
+
gateway_enabled: z10.boolean().optional(),
|
|
802
|
+
// recommended
|
|
803
|
+
tproxy_enabled: z10.boolean().optional()
|
|
804
|
+
// deprecated, for compatibility
|
|
805
|
+
}),
|
|
806
|
+
listed: z10.boolean().optional(),
|
|
807
|
+
instance_type: z10.string().nullable().optional(),
|
|
808
|
+
kms_id: z10.string().optional(),
|
|
809
|
+
env_keys: z10.array(z10.string()).optional()
|
|
810
|
+
}).passthrough();
|
|
811
|
+
function autofillComposeFileName(appCompose) {
|
|
812
|
+
if (appCompose.compose_file && !appCompose.compose_file.name) {
|
|
813
|
+
return {
|
|
814
|
+
...appCompose,
|
|
815
|
+
compose_file: {
|
|
816
|
+
...appCompose.compose_file,
|
|
817
|
+
name: appCompose.name
|
|
818
|
+
}
|
|
819
|
+
};
|
|
820
|
+
}
|
|
821
|
+
return appCompose;
|
|
822
|
+
}
|
|
823
|
+
function handleGatewayCompatibility(appCompose) {
|
|
824
|
+
if (!appCompose.compose_file) {
|
|
825
|
+
return appCompose;
|
|
826
|
+
}
|
|
827
|
+
const composeFile = { ...appCompose.compose_file };
|
|
828
|
+
if (typeof composeFile.gateway_enabled === "boolean" && typeof composeFile.tproxy_enabled === "boolean") {
|
|
829
|
+
delete composeFile.tproxy_enabled;
|
|
830
|
+
} else if (typeof composeFile.tproxy_enabled === "boolean" && typeof composeFile.gateway_enabled === "undefined") {
|
|
831
|
+
composeFile.gateway_enabled = composeFile.tproxy_enabled;
|
|
832
|
+
delete composeFile.tproxy_enabled;
|
|
833
|
+
if (typeof window !== "undefined" ? window.console : globalThis.console) {
|
|
834
|
+
console.warn(
|
|
835
|
+
"[phala/cloud] tproxy_enabled is deprecated, please use gateway_enabled instead. See docs for migration."
|
|
836
|
+
);
|
|
837
|
+
}
|
|
838
|
+
}
|
|
839
|
+
return {
|
|
840
|
+
...appCompose,
|
|
841
|
+
compose_file: composeFile
|
|
842
|
+
};
|
|
843
|
+
}
|
|
844
|
+
var { action: provisionCvm, safeAction: safeProvisionCvm } = defineAction(ProvisionCvmSchema, async (client, appCompose) => {
|
|
845
|
+
const body = handleGatewayCompatibility(autofillComposeFileName(appCompose));
|
|
846
|
+
let requestBody = { ...body };
|
|
847
|
+
if (typeof body.node_id === "number") {
|
|
848
|
+
requestBody = { ...body, teepod_id: body.node_id };
|
|
849
|
+
delete requestBody.node_id;
|
|
850
|
+
} else if (typeof body.teepod_id === "number") {
|
|
851
|
+
console.warn("[phala/cloud] teepod_id is deprecated, please use node_id instead.");
|
|
852
|
+
}
|
|
853
|
+
return await client.post("/cvms/provision", requestBody);
|
|
854
|
+
});
|
|
855
|
+
|
|
856
|
+
// src/actions/cvms/commit_cvm_provision.ts
|
|
857
|
+
import { z as z11 } from "zod";
|
|
858
|
+
var CommitCvmProvisionSchema = z11.object({
|
|
859
|
+
id: z11.number(),
|
|
860
|
+
name: z11.string(),
|
|
861
|
+
status: z11.string(),
|
|
862
|
+
teepod_id: z11.number(),
|
|
863
|
+
teepod: z11.object({
|
|
864
|
+
id: z11.number(),
|
|
865
|
+
name: z11.string()
|
|
866
|
+
}).nullable(),
|
|
867
|
+
user_id: z11.number().nullable(),
|
|
868
|
+
app_id: z11.string().nullable(),
|
|
869
|
+
vm_uuid: z11.string().nullable(),
|
|
870
|
+
instance_id: z11.string().nullable(),
|
|
871
|
+
app_url: z11.string().nullable(),
|
|
872
|
+
base_image: z11.string().nullable(),
|
|
873
|
+
vcpu: z11.number(),
|
|
874
|
+
memory: z11.number(),
|
|
875
|
+
disk_size: z11.number(),
|
|
876
|
+
manifest_version: z11.number().nullable(),
|
|
877
|
+
version: z11.string().nullable(),
|
|
878
|
+
runner: z11.string().nullable(),
|
|
879
|
+
docker_compose_file: z11.string().nullable(),
|
|
880
|
+
features: z11.array(z11.string()).nullable(),
|
|
881
|
+
created_at: z11.string(),
|
|
882
|
+
encrypted_env_pubkey: z11.string().nullable().optional(),
|
|
883
|
+
app_auth_contract_address: z11.string().nullable().optional(),
|
|
884
|
+
deployer_address: z11.string().nullable().optional()
|
|
885
|
+
}).passthrough();
|
|
886
|
+
var CommitCvmProvisionRequestSchema = z11.object({
|
|
887
|
+
encrypted_env: z11.string().optional().nullable(),
|
|
888
|
+
app_id: z11.string(),
|
|
889
|
+
compose_hash: z11.string().optional(),
|
|
890
|
+
kms_id: z11.string().optional(),
|
|
891
|
+
contract_address: z11.string().optional(),
|
|
892
|
+
deployer_address: z11.string().optional(),
|
|
893
|
+
env_keys: z11.array(z11.string()).optional().nullable()
|
|
894
|
+
}).passthrough();
|
|
895
|
+
var { action: commitCvmProvision, safeAction: safeCommitCvmProvision } = defineAction(CommitCvmProvisionSchema, async (client, payload) => {
|
|
896
|
+
return await client.post("/cvms", payload);
|
|
897
|
+
});
|
|
898
|
+
|
|
899
|
+
// src/actions/cvms/get_cvm_compose_file.ts
|
|
900
|
+
import { z as z13 } from "zod";
|
|
901
|
+
|
|
902
|
+
// src/types/app_compose.ts
|
|
903
|
+
import { z as z12 } from "zod";
|
|
904
|
+
var LooseAppComposeSchema = z12.object({
|
|
905
|
+
allowed_envs: z12.array(z12.string()).optional(),
|
|
906
|
+
docker_compose_file: z12.string(),
|
|
907
|
+
features: z12.array(z12.string()).optional(),
|
|
908
|
+
name: z12.string().optional(),
|
|
909
|
+
manifest_version: z12.number().optional(),
|
|
910
|
+
kms_enabled: z12.boolean().optional(),
|
|
911
|
+
public_logs: z12.boolean().optional(),
|
|
912
|
+
public_sysinfo: z12.boolean().optional(),
|
|
913
|
+
tproxy_enabled: z12.boolean().optional(),
|
|
914
|
+
pre_launch_script: z12.string().optional()
|
|
915
|
+
}).passthrough();
|
|
916
|
+
|
|
917
|
+
// src/actions/cvms/get_cvm_compose_file.ts
|
|
918
|
+
var GetCvmComposeFileRequestSchema = z13.object({
|
|
919
|
+
id: z13.string().optional(),
|
|
920
|
+
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(),
|
|
921
|
+
app_id: z13.string().refine(
|
|
922
|
+
(val) => !val.startsWith("app_") && val.length === 40,
|
|
923
|
+
"app_id should be 40 characters without prefix"
|
|
924
|
+
).transform((val) => val.startsWith("app_") ? val : `app_${val}`).optional(),
|
|
925
|
+
instance_id: z13.string().refine(
|
|
926
|
+
(val) => !val.startsWith("instance_") && val.length === 40,
|
|
927
|
+
"instance_id should be 40 characters without prefix"
|
|
928
|
+
).transform((val) => val.startsWith("instance_") ? val : `instance_${val}`).optional()
|
|
929
|
+
}).refine(
|
|
930
|
+
(data) => !!(data.id || data.uuid || data.app_id || data.instance_id),
|
|
931
|
+
"One of id, uuid, app_id, or instance_id must be provided"
|
|
932
|
+
).transform((data) => ({
|
|
933
|
+
cvmId: data.id || data.uuid || data.app_id || data.instance_id,
|
|
934
|
+
_raw: data
|
|
935
|
+
}));
|
|
936
|
+
var { action: getCvmComposeFile, safeAction: safeGetCvmComposeFile } = defineAction(LooseAppComposeSchema, async (client, request) => {
|
|
937
|
+
const validatedRequest = GetCvmComposeFileRequestSchema.parse(request);
|
|
938
|
+
return await client.get(`/cvms/${validatedRequest.cvmId}/compose_file`);
|
|
939
|
+
});
|
|
940
|
+
|
|
941
|
+
// src/actions/cvms/provision_cvm_compose_file_update.ts
|
|
942
|
+
import { z as z14 } from "zod";
|
|
943
|
+
var ProvisionCvmComposeFileUpdateRequestSchema = z14.object({
|
|
944
|
+
id: z14.string().optional(),
|
|
945
|
+
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(),
|
|
946
|
+
app_id: z14.string().refine(
|
|
947
|
+
(val) => !val.startsWith("app_") && val.length === 40,
|
|
948
|
+
"app_id should be 40 characters without prefix"
|
|
949
|
+
).transform((val) => val.startsWith("app_") ? val : `app_${val}`).optional(),
|
|
950
|
+
instance_id: z14.string().refine(
|
|
951
|
+
(val) => !val.startsWith("instance_") && val.length === 40,
|
|
952
|
+
"instance_id should be 40 characters without prefix"
|
|
953
|
+
).transform((val) => val.startsWith("instance_") ? val : `instance_${val}`).optional(),
|
|
954
|
+
app_compose: LooseAppComposeSchema,
|
|
955
|
+
update_env_vars: z14.boolean().optional().nullable()
|
|
956
|
+
}).refine(
|
|
957
|
+
(data) => !!(data.id || data.uuid || data.app_id || data.instance_id),
|
|
958
|
+
"One of id, uuid, app_id, or instance_id must be provided"
|
|
959
|
+
).transform((data) => ({
|
|
960
|
+
cvmId: data.id || data.uuid || data.app_id || data.instance_id,
|
|
961
|
+
request: data.app_compose,
|
|
962
|
+
update_env_vars: data.update_env_vars,
|
|
963
|
+
_raw: data
|
|
964
|
+
}));
|
|
965
|
+
var ProvisionCvmComposeFileUpdateResultSchema = z14.object({
|
|
966
|
+
app_id: z14.string().nullable(),
|
|
967
|
+
device_id: z14.string().nullable(),
|
|
968
|
+
compose_hash: z14.string(),
|
|
969
|
+
kms_info: KmsInfoSchema.nullable().optional()
|
|
970
|
+
}).passthrough();
|
|
971
|
+
var { action: provisionCvmComposeFileUpdate, safeAction: safeProvisionCvmComposeFileUpdate } = defineAction(ProvisionCvmComposeFileUpdateResultSchema, async (client, request) => {
|
|
972
|
+
const validatedRequest = ProvisionCvmComposeFileUpdateRequestSchema.parse(request);
|
|
973
|
+
return await client.post(
|
|
974
|
+
`/cvms/${validatedRequest.cvmId}/compose_file/provision`,
|
|
975
|
+
validatedRequest.request
|
|
976
|
+
);
|
|
977
|
+
});
|
|
978
|
+
|
|
979
|
+
// src/actions/cvms/commit_cvm_compose_file_update.ts
|
|
980
|
+
import { z as z15 } from "zod";
|
|
981
|
+
var CommitCvmComposeFileUpdateRequestSchema = z15.object({
|
|
982
|
+
id: z15.string().optional(),
|
|
983
|
+
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(),
|
|
984
|
+
app_id: z15.string().refine(
|
|
985
|
+
(val) => !val.startsWith("app_") && val.length === 40,
|
|
986
|
+
"app_id should be 40 characters without prefix"
|
|
987
|
+
).transform((val) => val.startsWith("app_") ? val : `app_${val}`).optional(),
|
|
988
|
+
instance_id: z15.string().refine(
|
|
989
|
+
(val) => !val.startsWith("instance_") && val.length === 40,
|
|
990
|
+
"instance_id should be 40 characters without prefix"
|
|
991
|
+
).transform((val) => val.startsWith("instance_") ? val : `instance_${val}`).optional(),
|
|
992
|
+
compose_hash: z15.string().min(1, "Compose hash is required"),
|
|
993
|
+
encrypted_env: z15.string().optional(),
|
|
994
|
+
env_keys: z15.array(z15.string()).optional(),
|
|
995
|
+
update_env_vars: z15.boolean().optional().nullable()
|
|
996
|
+
}).refine(
|
|
997
|
+
(data) => !!(data.id || data.uuid || data.app_id || data.instance_id),
|
|
998
|
+
"One of id, uuid, app_id, or instance_id must be provided"
|
|
999
|
+
).transform((data) => ({
|
|
1000
|
+
cvmId: data.id || data.uuid || data.app_id || data.instance_id,
|
|
1001
|
+
compose_hash: data.compose_hash,
|
|
1002
|
+
encrypted_env: data.encrypted_env,
|
|
1003
|
+
env_keys: data.env_keys,
|
|
1004
|
+
update_env_vars: !!data.update_env_vars,
|
|
1005
|
+
_raw: data
|
|
1006
|
+
}));
|
|
1007
|
+
var CommitCvmComposeFileUpdateSchema = z15.any().transform(() => void 0);
|
|
1008
|
+
var { action: commitCvmComposeFileUpdate, safeAction: safeCommitCvmComposeFileUpdate } = defineAction(
|
|
1009
|
+
CommitCvmComposeFileUpdateSchema,
|
|
1010
|
+
async (client, request) => {
|
|
1011
|
+
const validatedRequest = CommitCvmComposeFileUpdateRequestSchema.parse(request);
|
|
1012
|
+
return await client.patch(`/cvms/${validatedRequest.cvmId}/compose_file`, {
|
|
1013
|
+
compose_hash: validatedRequest.compose_hash,
|
|
1014
|
+
encrypted_env: validatedRequest.encrypted_env,
|
|
1015
|
+
env_keys: validatedRequest.env_keys
|
|
1016
|
+
});
|
|
1017
|
+
}
|
|
1018
|
+
);
|
|
1019
|
+
|
|
1020
|
+
// src/actions/kms/get_kms_info.ts
|
|
1021
|
+
import { z as z16 } from "zod";
|
|
1022
|
+
var GetKmsInfoRequestSchema = z16.object({
|
|
1023
|
+
kms_id: z16.string().min(1, "KMS ID is required")
|
|
1024
|
+
});
|
|
1025
|
+
var { action: getKmsInfo, safeAction: safeGetKmsInfo } = defineAction(KmsInfoSchema, async (client, request) => {
|
|
1026
|
+
const validatedRequest = GetKmsInfoRequestSchema.parse(request);
|
|
1027
|
+
return await client.get(`/kms/${validatedRequest.kms_id}`);
|
|
1028
|
+
});
|
|
1029
|
+
|
|
1030
|
+
// src/actions/kms/get_kms_list.ts
|
|
1031
|
+
import { z as z17 } from "zod";
|
|
1032
|
+
var GetKmsListRequestSchema = z17.object({
|
|
1033
|
+
page: z17.number().int().min(1).optional(),
|
|
1034
|
+
page_size: z17.number().int().min(1).optional(),
|
|
1035
|
+
is_onchain: z17.boolean().optional()
|
|
1036
|
+
}).strict();
|
|
1037
|
+
var GetKmsListSchema = z17.object({
|
|
1038
|
+
items: z17.array(KmsInfoSchema),
|
|
1039
|
+
total: z17.number(),
|
|
1040
|
+
page: z17.number(),
|
|
1041
|
+
page_size: z17.number(),
|
|
1042
|
+
pages: z17.number()
|
|
1043
|
+
}).strict();
|
|
1044
|
+
var { action: getKmsList, safeAction: safeGetKmsList } = defineAction(GetKmsListSchema, async (client, request) => {
|
|
1045
|
+
const validatedRequest = GetKmsListRequestSchema.parse(request ?? {});
|
|
1046
|
+
return await client.get("/kms", { params: validatedRequest });
|
|
1047
|
+
});
|
|
1048
|
+
|
|
1049
|
+
// src/actions/kms/get_app_env_encrypt_pubkey.ts
|
|
1050
|
+
import { z as z18 } from "zod";
|
|
1051
|
+
var GetAppEnvEncryptPubKeyRequestSchema = z18.object({
|
|
1052
|
+
kms: z18.string().min(1, "KMS ID or slug is required"),
|
|
1053
|
+
app_id: z18.string().refine(
|
|
1054
|
+
(val) => val.length === 40 || val.startsWith("0x") && val.length === 42,
|
|
1055
|
+
"App ID must be exactly 40 characters or 42 characters with 0x prefix"
|
|
1056
|
+
)
|
|
1057
|
+
}).strict();
|
|
1058
|
+
var GetAppEnvEncryptPubKeySchema = z18.object({
|
|
1059
|
+
public_key: z18.string(),
|
|
1060
|
+
signature: z18.string()
|
|
1061
|
+
}).strict();
|
|
1062
|
+
var { action: getAppEnvEncryptPubKey, safeAction: safeGetAppEnvEncryptPubKey } = defineAction(GetAppEnvEncryptPubKeySchema, async (client, payload) => {
|
|
1063
|
+
const validatedRequest = GetAppEnvEncryptPubKeyRequestSchema.parse(payload);
|
|
1064
|
+
return await client.get(`/kms/${validatedRequest.kms}/pubkey/${validatedRequest.app_id}`);
|
|
436
1065
|
});
|
|
437
1066
|
|
|
438
|
-
// src/
|
|
439
|
-
|
|
1067
|
+
// src/create-client.ts
|
|
1068
|
+
function createClient2(config = {}) {
|
|
1069
|
+
const client = createClient(config);
|
|
1070
|
+
const allActions = {
|
|
1071
|
+
getCurrentUser,
|
|
1072
|
+
safeGetCurrentUser,
|
|
1073
|
+
getAvailableNodes,
|
|
1074
|
+
safeGetAvailableNodes,
|
|
1075
|
+
listInstanceTypes,
|
|
1076
|
+
safeListInstanceTypes,
|
|
1077
|
+
listWorkspaces,
|
|
1078
|
+
safeListWorkspaces,
|
|
1079
|
+
getWorkspace,
|
|
1080
|
+
safeGetWorkspace,
|
|
1081
|
+
getCvmInfo,
|
|
1082
|
+
safeGetCvmInfo,
|
|
1083
|
+
getCvmList,
|
|
1084
|
+
safeGetCvmList,
|
|
1085
|
+
provisionCvm,
|
|
1086
|
+
safeProvisionCvm,
|
|
1087
|
+
commitCvmProvision,
|
|
1088
|
+
safeCommitCvmProvision,
|
|
1089
|
+
getCvmComposeFile,
|
|
1090
|
+
safeGetCvmComposeFile,
|
|
1091
|
+
provisionCvmComposeFileUpdate,
|
|
1092
|
+
safeProvisionCvmComposeFileUpdate,
|
|
1093
|
+
commitCvmComposeFileUpdate,
|
|
1094
|
+
safeCommitCvmComposeFileUpdate,
|
|
1095
|
+
getKmsInfo,
|
|
1096
|
+
safeGetKmsInfo,
|
|
1097
|
+
getKmsList,
|
|
1098
|
+
safeGetKmsList,
|
|
1099
|
+
getAppEnvEncryptPubKey,
|
|
1100
|
+
safeGetAppEnvEncryptPubKey
|
|
1101
|
+
};
|
|
1102
|
+
return client.extend(allActions);
|
|
1103
|
+
}
|
|
1104
|
+
|
|
1105
|
+
// src/actions/blockchains/deploy_app_auth.ts
|
|
1106
|
+
import { z as z19 } from "zod";
|
|
1107
|
+
import {
|
|
1108
|
+
createPublicClient as createPublicClient2,
|
|
1109
|
+
createWalletClient as createWalletClient2,
|
|
1110
|
+
http as http2,
|
|
1111
|
+
parseEventLogs,
|
|
1112
|
+
parseEther
|
|
1113
|
+
} from "viem";
|
|
1114
|
+
import { privateKeyToAccount as privateKeyToAccount2 } from "viem/accounts";
|
|
440
1115
|
|
|
441
1116
|
// src/utils/index.ts
|
|
442
1117
|
import { encryptEnvVars } from "@phala/dstack-sdk/encrypt-env-vars";
|
|
@@ -471,38 +1146,6 @@ function asHex(value) {
|
|
|
471
1146
|
throw new Error(`Invalid hex value: ${value}`);
|
|
472
1147
|
}
|
|
473
1148
|
|
|
474
|
-
// src/utils/validate-parameters.ts
|
|
475
|
-
function validateActionParameters(parameters) {
|
|
476
|
-
if (parameters?.schema !== void 0 && parameters?.schema !== false) {
|
|
477
|
-
if (typeof parameters.schema !== "object" || parameters.schema === null || !("parse" in parameters.schema) || typeof parameters.schema.parse !== "function") {
|
|
478
|
-
throw new Error("Invalid schema: must be a Zod schema object, false, or undefined");
|
|
479
|
-
}
|
|
480
|
-
}
|
|
481
|
-
}
|
|
482
|
-
function safeValidateActionParameters(parameters) {
|
|
483
|
-
if (parameters?.schema !== void 0 && parameters?.schema !== false) {
|
|
484
|
-
if (typeof parameters.schema !== "object" || parameters.schema === null || !("parse" in parameters.schema) || typeof parameters.schema.parse !== "function") {
|
|
485
|
-
return {
|
|
486
|
-
success: false,
|
|
487
|
-
error: {
|
|
488
|
-
name: "ZodError",
|
|
489
|
-
message: "Invalid schema: must be a Zod schema object, false, or undefined",
|
|
490
|
-
issues: [
|
|
491
|
-
{
|
|
492
|
-
code: "invalid_type",
|
|
493
|
-
expected: "object",
|
|
494
|
-
received: typeof parameters.schema,
|
|
495
|
-
path: ["schema"],
|
|
496
|
-
message: "Invalid schema: must be a Zod schema object, false, or undefined"
|
|
497
|
-
}
|
|
498
|
-
]
|
|
499
|
-
}
|
|
500
|
-
};
|
|
501
|
-
}
|
|
502
|
-
}
|
|
503
|
-
return void 0;
|
|
504
|
-
}
|
|
505
|
-
|
|
506
1149
|
// src/utils/network.ts
|
|
507
1150
|
var NetworkError = class extends Error {
|
|
508
1151
|
constructor(message, code, details) {
|
|
@@ -1076,381 +1719,38 @@ async function addNetwork(provider, config) {
|
|
|
1076
1719
|
chainName: config.name,
|
|
1077
1720
|
rpcUrls: [config.rpcUrl],
|
|
1078
1721
|
blockExplorerUrls: config.blockExplorer ? [config.blockExplorer] : void 0,
|
|
1079
|
-
nativeCurrency: {
|
|
1080
|
-
name: "ETH",
|
|
1081
|
-
symbol: "ETH",
|
|
1082
|
-
decimals: 18
|
|
1083
|
-
}
|
|
1084
|
-
}
|
|
1085
|
-
]
|
|
1086
|
-
});
|
|
1087
|
-
} catch (error) {
|
|
1088
|
-
const errorObj = error;
|
|
1089
|
-
throw new NetworkError(
|
|
1090
|
-
`Failed to add network: ${errorObj.message || "Unknown error"}`,
|
|
1091
|
-
"NETWORK_ADD_FAILED",
|
|
1092
|
-
error
|
|
1093
|
-
);
|
|
1094
|
-
}
|
|
1095
|
-
}
|
|
1096
|
-
async function autoCreateClients(chain, options = {}) {
|
|
1097
|
-
const { privateKey, rpcUrl, preferBrowser = false } = options;
|
|
1098
|
-
if (privateKey) {
|
|
1099
|
-
return createClientsFromPrivateKey(chain, privateKey, rpcUrl);
|
|
1100
|
-
}
|
|
1101
|
-
if (isBrowser() && (preferBrowser || !privateKey)) {
|
|
1102
|
-
return createClientsFromBrowser(chain, rpcUrl);
|
|
1103
|
-
}
|
|
1104
|
-
throw new WalletError(
|
|
1105
|
-
"No wallet connection method available. Provide a private key for server-side usage or use in browser environment.",
|
|
1106
|
-
"NO_CONNECTION_METHOD"
|
|
1107
|
-
);
|
|
1108
|
-
}
|
|
1109
|
-
|
|
1110
|
-
// src/actions/get_current_user.ts
|
|
1111
|
-
var CurrentUserSchema = z4.object({
|
|
1112
|
-
username: z4.string(),
|
|
1113
|
-
email: z4.string(),
|
|
1114
|
-
credits: z4.number(),
|
|
1115
|
-
granted_credits: z4.number(),
|
|
1116
|
-
avatar: z4.string(),
|
|
1117
|
-
team_name: z4.string(),
|
|
1118
|
-
team_tier: z4.string()
|
|
1119
|
-
}).passthrough();
|
|
1120
|
-
async function getCurrentUser(client, parameters) {
|
|
1121
|
-
validateActionParameters(parameters);
|
|
1122
|
-
const response = await client.get("/auth/me");
|
|
1123
|
-
if (parameters?.schema === false) {
|
|
1124
|
-
return response;
|
|
1125
|
-
}
|
|
1126
|
-
const schema = parameters?.schema || CurrentUserSchema;
|
|
1127
|
-
return schema.parse(response);
|
|
1128
|
-
}
|
|
1129
|
-
async function safeGetCurrentUser(client, parameters) {
|
|
1130
|
-
const parameterValidationError = safeValidateActionParameters(parameters);
|
|
1131
|
-
if (parameterValidationError) {
|
|
1132
|
-
return parameterValidationError;
|
|
1133
|
-
}
|
|
1134
|
-
const httpResult = await client.safeGet("/auth/me");
|
|
1135
|
-
if (!httpResult.success) {
|
|
1136
|
-
return httpResult;
|
|
1137
|
-
}
|
|
1138
|
-
if (parameters?.schema === false) {
|
|
1139
|
-
return { success: true, data: httpResult.data };
|
|
1140
|
-
}
|
|
1141
|
-
const schema = parameters?.schema || CurrentUserSchema;
|
|
1142
|
-
return schema.safeParse(httpResult.data);
|
|
1143
|
-
}
|
|
1144
|
-
|
|
1145
|
-
// src/actions/get_available_nodes.ts
|
|
1146
|
-
import { z as z5 } from "zod";
|
|
1147
|
-
|
|
1148
|
-
// src/utils/define-action.ts
|
|
1149
|
-
function defineSimpleAction(schema, fn) {
|
|
1150
|
-
function action(client, parameters) {
|
|
1151
|
-
return _actionImpl(client, parameters);
|
|
1152
|
-
}
|
|
1153
|
-
async function _actionImpl(client, parameters) {
|
|
1154
|
-
validateActionParameters(parameters);
|
|
1155
|
-
const response = await fn(client);
|
|
1156
|
-
if (parameters?.schema === false) {
|
|
1157
|
-
return response;
|
|
1158
|
-
}
|
|
1159
|
-
const actualSchema = parameters?.schema || schema;
|
|
1160
|
-
return actualSchema.parse(response);
|
|
1161
|
-
}
|
|
1162
|
-
function safeAction(client, parameters) {
|
|
1163
|
-
return _safeActionImpl(client, parameters);
|
|
1164
|
-
}
|
|
1165
|
-
async function _safeActionImpl(client, parameters) {
|
|
1166
|
-
const parameterValidationError = safeValidateActionParameters(parameters);
|
|
1167
|
-
if (parameterValidationError) {
|
|
1168
|
-
return parameterValidationError;
|
|
1169
|
-
}
|
|
1170
|
-
const httpResult = await (async () => {
|
|
1171
|
-
try {
|
|
1172
|
-
const data = await fn(client);
|
|
1173
|
-
return { success: true, data };
|
|
1174
|
-
} catch (error) {
|
|
1175
|
-
if (error && typeof error === "object" && "isRequestError" in error) {
|
|
1176
|
-
return { success: false, error };
|
|
1177
|
-
}
|
|
1178
|
-
if (error && typeof error === "object" && "issues" in error) {
|
|
1179
|
-
return { success: false, error };
|
|
1180
|
-
}
|
|
1181
|
-
return {
|
|
1182
|
-
success: false,
|
|
1183
|
-
error: {
|
|
1184
|
-
name: "Error",
|
|
1185
|
-
message: error instanceof Error ? error.message : String(error)
|
|
1186
|
-
}
|
|
1187
|
-
};
|
|
1188
|
-
}
|
|
1189
|
-
})();
|
|
1190
|
-
if (!httpResult.success) {
|
|
1191
|
-
return httpResult;
|
|
1192
|
-
}
|
|
1193
|
-
if (parameters?.schema === false) {
|
|
1194
|
-
return { success: true, data: httpResult.data };
|
|
1195
|
-
}
|
|
1196
|
-
const actualSchema = parameters?.schema || schema;
|
|
1197
|
-
return actualSchema.safeParse(httpResult.data);
|
|
1198
|
-
}
|
|
1199
|
-
return {
|
|
1200
|
-
action,
|
|
1201
|
-
safeAction
|
|
1202
|
-
};
|
|
1203
|
-
}
|
|
1204
|
-
function defineAction(schema, fn) {
|
|
1205
|
-
function action(client, ...args) {
|
|
1206
|
-
const [params, parameters] = args;
|
|
1207
|
-
return _actionImpl(client, params, parameters);
|
|
1208
|
-
}
|
|
1209
|
-
async function _actionImpl(client, params, parameters) {
|
|
1210
|
-
validateActionParameters(parameters);
|
|
1211
|
-
const response = await fn(client, params);
|
|
1212
|
-
if (parameters?.schema === false) {
|
|
1213
|
-
return response;
|
|
1214
|
-
}
|
|
1215
|
-
const actualSchema = parameters?.schema || schema;
|
|
1216
|
-
return actualSchema.parse(response);
|
|
1217
|
-
}
|
|
1218
|
-
function safeAction(client, ...args) {
|
|
1219
|
-
const [params, parameters] = args;
|
|
1220
|
-
return _safeActionImpl(client, params, parameters);
|
|
1221
|
-
}
|
|
1222
|
-
async function _safeActionImpl(client, params, parameters) {
|
|
1223
|
-
const parameterValidationError = safeValidateActionParameters(parameters);
|
|
1224
|
-
if (parameterValidationError) {
|
|
1225
|
-
return parameterValidationError;
|
|
1226
|
-
}
|
|
1227
|
-
const httpResult = await (async () => {
|
|
1228
|
-
try {
|
|
1229
|
-
const data = await fn(client, params);
|
|
1230
|
-
return { success: true, data };
|
|
1231
|
-
} catch (error) {
|
|
1232
|
-
if (error && typeof error === "object" && "isRequestError" in error) {
|
|
1233
|
-
return { success: false, error };
|
|
1234
|
-
}
|
|
1235
|
-
if (error && typeof error === "object" && "issues" in error) {
|
|
1236
|
-
return { success: false, error };
|
|
1237
|
-
}
|
|
1238
|
-
return {
|
|
1239
|
-
success: false,
|
|
1240
|
-
error: {
|
|
1241
|
-
name: "Error",
|
|
1242
|
-
message: error instanceof Error ? error.message : String(error)
|
|
1243
|
-
}
|
|
1244
|
-
};
|
|
1245
|
-
}
|
|
1246
|
-
})();
|
|
1247
|
-
if (!httpResult.success) {
|
|
1248
|
-
return httpResult;
|
|
1249
|
-
}
|
|
1250
|
-
if (parameters?.schema === false) {
|
|
1251
|
-
return { success: true, data: httpResult.data };
|
|
1252
|
-
}
|
|
1253
|
-
const actualSchema = parameters?.schema || schema;
|
|
1254
|
-
return actualSchema.safeParse(httpResult.data);
|
|
1255
|
-
}
|
|
1256
|
-
return {
|
|
1257
|
-
action,
|
|
1258
|
-
safeAction
|
|
1259
|
-
};
|
|
1260
|
-
}
|
|
1261
|
-
|
|
1262
|
-
// src/actions/get_available_nodes.ts
|
|
1263
|
-
var AvailableOSImageSchema = z5.object({
|
|
1264
|
-
name: z5.string(),
|
|
1265
|
-
is_dev: z5.boolean(),
|
|
1266
|
-
version: z5.union([
|
|
1267
|
-
z5.tuple([z5.number(), z5.number(), z5.number()]),
|
|
1268
|
-
z5.tuple([z5.number(), z5.number(), z5.number(), z5.number()])
|
|
1269
|
-
]),
|
|
1270
|
-
os_image_hash: z5.string().nullable().optional()
|
|
1271
|
-
}).passthrough();
|
|
1272
|
-
var TeepodCapacitySchema = z5.object({
|
|
1273
|
-
teepod_id: z5.number(),
|
|
1274
|
-
name: z5.string(),
|
|
1275
|
-
listed: z5.boolean(),
|
|
1276
|
-
resource_score: z5.number(),
|
|
1277
|
-
remaining_vcpu: z5.number(),
|
|
1278
|
-
remaining_memory: z5.number(),
|
|
1279
|
-
remaining_cvm_slots: z5.number(),
|
|
1280
|
-
images: z5.array(AvailableOSImageSchema),
|
|
1281
|
-
support_onchain_kms: z5.boolean().optional(),
|
|
1282
|
-
fmspc: z5.string().nullable().optional(),
|
|
1283
|
-
device_id: z5.string().nullable().optional(),
|
|
1284
|
-
region_identifier: z5.string().nullable().optional(),
|
|
1285
|
-
default_kms: z5.string().nullable().optional(),
|
|
1286
|
-
kms_list: z5.array(z5.string()).default([])
|
|
1287
|
-
}).passthrough();
|
|
1288
|
-
var ResourceThresholdSchema = z5.object({
|
|
1289
|
-
max_instances: z5.number().nullable().optional(),
|
|
1290
|
-
max_vcpu: z5.number().nullable().optional(),
|
|
1291
|
-
max_memory: z5.number().nullable().optional(),
|
|
1292
|
-
max_disk: z5.number().nullable().optional()
|
|
1293
|
-
}).passthrough();
|
|
1294
|
-
var AvailableNodesSchema = z5.object({
|
|
1295
|
-
tier: z5.string(),
|
|
1296
|
-
// TeamTier is string enum
|
|
1297
|
-
capacity: ResourceThresholdSchema,
|
|
1298
|
-
nodes: z5.array(TeepodCapacitySchema),
|
|
1299
|
-
kms_list: z5.array(KmsInfoSchema)
|
|
1300
|
-
}).passthrough();
|
|
1301
|
-
var { action: getAvailableNodes, safeAction: safeGetAvailableNodes } = defineSimpleAction(
|
|
1302
|
-
AvailableNodesSchema,
|
|
1303
|
-
async (client) => {
|
|
1304
|
-
return await client.get("/teepods/available");
|
|
1305
|
-
}
|
|
1306
|
-
);
|
|
1307
|
-
|
|
1308
|
-
// src/actions/provision_cvm.ts
|
|
1309
|
-
import { z as z6 } from "zod";
|
|
1310
|
-
var ProvisionCvmSchema = z6.object({
|
|
1311
|
-
app_id: z6.string().nullable().optional(),
|
|
1312
|
-
app_env_encrypt_pubkey: z6.string().nullable().optional(),
|
|
1313
|
-
compose_hash: z6.string(),
|
|
1314
|
-
fmspc: z6.string().nullable().optional(),
|
|
1315
|
-
device_id: z6.string().nullable().optional(),
|
|
1316
|
-
os_image_hash: z6.string().nullable().optional(),
|
|
1317
|
-
teepod_id: z6.number().nullable().optional(),
|
|
1318
|
-
// Will be transformed to node_id
|
|
1319
|
-
node_id: z6.number().nullable().optional(),
|
|
1320
|
-
kms_id: z6.string().nullable().optional()
|
|
1321
|
-
}).passthrough().transform((data) => {
|
|
1322
|
-
if ("teepod_id" in data && data.teepod_id !== void 0) {
|
|
1323
|
-
const { teepod_id, ...rest } = data;
|
|
1324
|
-
return { ...rest, node_id: teepod_id };
|
|
1325
|
-
}
|
|
1326
|
-
return data;
|
|
1327
|
-
});
|
|
1328
|
-
var ProvisionCvmRequestSchema = z6.object({
|
|
1329
|
-
node_id: z6.number().optional(),
|
|
1330
|
-
// recommended
|
|
1331
|
-
teepod_id: z6.number().optional(),
|
|
1332
|
-
// deprecated, for compatibility
|
|
1333
|
-
name: z6.string(),
|
|
1334
|
-
image: z6.string(),
|
|
1335
|
-
vcpu: z6.number(),
|
|
1336
|
-
memory: z6.number(),
|
|
1337
|
-
disk_size: z6.number(),
|
|
1338
|
-
compose_file: z6.object({
|
|
1339
|
-
allowed_envs: z6.array(z6.string()).optional(),
|
|
1340
|
-
pre_launch_script: z6.string().optional(),
|
|
1341
|
-
docker_compose_file: z6.string().optional(),
|
|
1342
|
-
name: z6.string().optional(),
|
|
1343
|
-
kms_enabled: z6.boolean().optional(),
|
|
1344
|
-
public_logs: z6.boolean().optional(),
|
|
1345
|
-
public_sysinfo: z6.boolean().optional(),
|
|
1346
|
-
gateway_enabled: z6.boolean().optional(),
|
|
1347
|
-
// recommended
|
|
1348
|
-
tproxy_enabled: z6.boolean().optional()
|
|
1349
|
-
// deprecated, for compatibility
|
|
1350
|
-
}),
|
|
1351
|
-
listed: z6.boolean().optional(),
|
|
1352
|
-
instance_type: z6.string().nullable().optional(),
|
|
1353
|
-
kms_id: z6.string().optional(),
|
|
1354
|
-
env_keys: z6.array(z6.string()).optional()
|
|
1355
|
-
}).passthrough();
|
|
1356
|
-
function autofillComposeFileName(appCompose) {
|
|
1357
|
-
if (appCompose.compose_file && !appCompose.compose_file.name) {
|
|
1358
|
-
return {
|
|
1359
|
-
...appCompose,
|
|
1360
|
-
compose_file: {
|
|
1361
|
-
...appCompose.compose_file,
|
|
1362
|
-
name: appCompose.name
|
|
1363
|
-
}
|
|
1364
|
-
};
|
|
1722
|
+
nativeCurrency: {
|
|
1723
|
+
name: "ETH",
|
|
1724
|
+
symbol: "ETH",
|
|
1725
|
+
decimals: 18
|
|
1726
|
+
}
|
|
1727
|
+
}
|
|
1728
|
+
]
|
|
1729
|
+
});
|
|
1730
|
+
} catch (error) {
|
|
1731
|
+
const errorObj = error;
|
|
1732
|
+
throw new NetworkError(
|
|
1733
|
+
`Failed to add network: ${errorObj.message || "Unknown error"}`,
|
|
1734
|
+
"NETWORK_ADD_FAILED",
|
|
1735
|
+
error
|
|
1736
|
+
);
|
|
1365
1737
|
}
|
|
1366
|
-
return appCompose;
|
|
1367
1738
|
}
|
|
1368
|
-
function
|
|
1369
|
-
|
|
1370
|
-
|
|
1739
|
+
async function autoCreateClients(chain, options = {}) {
|
|
1740
|
+
const { privateKey, rpcUrl, preferBrowser = false } = options;
|
|
1741
|
+
if (privateKey) {
|
|
1742
|
+
return createClientsFromPrivateKey(chain, privateKey, rpcUrl);
|
|
1371
1743
|
}
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
delete composeFile.tproxy_enabled;
|
|
1375
|
-
} else if (typeof composeFile.tproxy_enabled === "boolean" && typeof composeFile.gateway_enabled === "undefined") {
|
|
1376
|
-
composeFile.gateway_enabled = composeFile.tproxy_enabled;
|
|
1377
|
-
delete composeFile.tproxy_enabled;
|
|
1378
|
-
if (typeof window !== "undefined" ? window.console : globalThis.console) {
|
|
1379
|
-
console.warn(
|
|
1380
|
-
"[phala/cloud] tproxy_enabled is deprecated, please use gateway_enabled instead. See docs for migration."
|
|
1381
|
-
);
|
|
1382
|
-
}
|
|
1744
|
+
if (isBrowser() && (preferBrowser || !privateKey)) {
|
|
1745
|
+
return createClientsFromBrowser(chain, rpcUrl);
|
|
1383
1746
|
}
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1747
|
+
throw new WalletError(
|
|
1748
|
+
"No wallet connection method available. Provide a private key for server-side usage or use in browser environment.",
|
|
1749
|
+
"NO_CONNECTION_METHOD"
|
|
1750
|
+
);
|
|
1388
1751
|
}
|
|
1389
|
-
var { action: provisionCvm, safeAction: safeProvisionCvm } = defineAction(ProvisionCvmSchema, async (client, appCompose) => {
|
|
1390
|
-
const body = handleGatewayCompatibility(autofillComposeFileName(appCompose));
|
|
1391
|
-
let requestBody = { ...body };
|
|
1392
|
-
if (typeof body.node_id === "number") {
|
|
1393
|
-
requestBody = { ...body, teepod_id: body.node_id };
|
|
1394
|
-
delete requestBody.node_id;
|
|
1395
|
-
} else if (typeof body.teepod_id === "number") {
|
|
1396
|
-
console.warn("[phala/cloud] teepod_id is deprecated, please use node_id instead.");
|
|
1397
|
-
}
|
|
1398
|
-
return await client.post("/cvms/provision", requestBody);
|
|
1399
|
-
});
|
|
1400
|
-
|
|
1401
|
-
// src/actions/commit_cvm_provision.ts
|
|
1402
|
-
import { z as z7 } from "zod";
|
|
1403
|
-
var CommitCvmProvisionSchema = z7.object({
|
|
1404
|
-
id: z7.number(),
|
|
1405
|
-
name: z7.string(),
|
|
1406
|
-
status: z7.string(),
|
|
1407
|
-
teepod_id: z7.number(),
|
|
1408
|
-
teepod: z7.object({
|
|
1409
|
-
id: z7.number(),
|
|
1410
|
-
name: z7.string()
|
|
1411
|
-
}).nullable(),
|
|
1412
|
-
user_id: z7.number().nullable(),
|
|
1413
|
-
app_id: z7.string().nullable(),
|
|
1414
|
-
vm_uuid: z7.string().nullable(),
|
|
1415
|
-
instance_id: z7.string().nullable(),
|
|
1416
|
-
app_url: z7.string().nullable(),
|
|
1417
|
-
base_image: z7.string().nullable(),
|
|
1418
|
-
vcpu: z7.number(),
|
|
1419
|
-
memory: z7.number(),
|
|
1420
|
-
disk_size: z7.number(),
|
|
1421
|
-
manifest_version: z7.number().nullable(),
|
|
1422
|
-
version: z7.string().nullable(),
|
|
1423
|
-
runner: z7.string().nullable(),
|
|
1424
|
-
docker_compose_file: z7.string().nullable(),
|
|
1425
|
-
features: z7.array(z7.string()).nullable(),
|
|
1426
|
-
created_at: z7.string(),
|
|
1427
|
-
encrypted_env_pubkey: z7.string().nullable().optional(),
|
|
1428
|
-
app_auth_contract_address: z7.string().nullable().optional(),
|
|
1429
|
-
deployer_address: z7.string().nullable().optional()
|
|
1430
|
-
}).passthrough();
|
|
1431
|
-
var CommitCvmProvisionRequestSchema = z7.object({
|
|
1432
|
-
encrypted_env: z7.string().optional().nullable(),
|
|
1433
|
-
app_id: z7.string(),
|
|
1434
|
-
compose_hash: z7.string().optional(),
|
|
1435
|
-
kms_id: z7.string().optional(),
|
|
1436
|
-
contract_address: z7.string().optional(),
|
|
1437
|
-
deployer_address: z7.string().optional(),
|
|
1438
|
-
env_keys: z7.array(z7.string()).optional().nullable()
|
|
1439
|
-
}).passthrough();
|
|
1440
|
-
var { action: commitCvmProvision, safeAction: safeCommitCvmProvision } = defineAction(CommitCvmProvisionSchema, async (client, payload) => {
|
|
1441
|
-
return await client.post("/cvms", payload);
|
|
1442
|
-
});
|
|
1443
1752
|
|
|
1444
|
-
// src/actions/deploy_app_auth.ts
|
|
1445
|
-
import { z as z8 } from "zod";
|
|
1446
|
-
import {
|
|
1447
|
-
createPublicClient as createPublicClient2,
|
|
1448
|
-
createWalletClient as createWalletClient2,
|
|
1449
|
-
http as http2,
|
|
1450
|
-
parseEventLogs,
|
|
1451
|
-
parseEther
|
|
1452
|
-
} from "viem";
|
|
1453
|
-
import { privateKeyToAccount as privateKeyToAccount2 } from "viem/accounts";
|
|
1753
|
+
// src/actions/blockchains/deploy_app_auth.ts
|
|
1454
1754
|
var kmsAuthAbi = [
|
|
1455
1755
|
{
|
|
1456
1756
|
inputs: [
|
|
@@ -1481,25 +1781,25 @@ var kmsAuthAbi = [
|
|
|
1481
1781
|
anonymous: false
|
|
1482
1782
|
}
|
|
1483
1783
|
];
|
|
1484
|
-
var DeployAppAuthRequestBaseSchema =
|
|
1784
|
+
var DeployAppAuthRequestBaseSchema = z19.object({
|
|
1485
1785
|
// Chain configuration (conditionally required)
|
|
1486
|
-
chain:
|
|
1487
|
-
rpcUrl:
|
|
1786
|
+
chain: z19.unknown().optional(),
|
|
1787
|
+
rpcUrl: z19.string().optional(),
|
|
1488
1788
|
// Contract configuration (required)
|
|
1489
|
-
kmsContractAddress:
|
|
1789
|
+
kmsContractAddress: z19.string(),
|
|
1490
1790
|
// Authentication mode: either privateKey OR walletClient (required, mutually exclusive)
|
|
1491
|
-
privateKey:
|
|
1492
|
-
walletClient:
|
|
1791
|
+
privateKey: z19.string().optional(),
|
|
1792
|
+
walletClient: z19.unknown().optional(),
|
|
1493
1793
|
// Public client (optional, will create default if not provided)
|
|
1494
|
-
publicClient:
|
|
1794
|
+
publicClient: z19.unknown().optional(),
|
|
1495
1795
|
// App configuration (optional)
|
|
1496
|
-
allowAnyDevice:
|
|
1497
|
-
deviceId:
|
|
1498
|
-
composeHash:
|
|
1499
|
-
disableUpgrades:
|
|
1796
|
+
allowAnyDevice: z19.boolean().optional().default(false),
|
|
1797
|
+
deviceId: z19.string().optional().default("0000000000000000000000000000000000000000000000000000000000000000"),
|
|
1798
|
+
composeHash: z19.string().optional().default("0000000000000000000000000000000000000000000000000000000000000000"),
|
|
1799
|
+
disableUpgrades: z19.boolean().optional().default(false),
|
|
1500
1800
|
// Validation configuration (optional)
|
|
1501
|
-
skipPrerequisiteChecks:
|
|
1502
|
-
minBalance:
|
|
1801
|
+
skipPrerequisiteChecks: z19.boolean().optional().default(false),
|
|
1802
|
+
minBalance: z19.string().optional()
|
|
1503
1803
|
// ETH amount as string, e.g., "0.01"
|
|
1504
1804
|
}).passthrough();
|
|
1505
1805
|
var DeployAppAuthRequestSchema = DeployAppAuthRequestBaseSchema.refine(
|
|
@@ -1527,13 +1827,13 @@ var DeployAppAuthRequestSchema = DeployAppAuthRequestBaseSchema.refine(
|
|
|
1527
1827
|
path: ["chain"]
|
|
1528
1828
|
}
|
|
1529
1829
|
);
|
|
1530
|
-
var DeployAppAuthSchema =
|
|
1531
|
-
appId:
|
|
1532
|
-
appAuthAddress:
|
|
1533
|
-
deployer:
|
|
1534
|
-
transactionHash:
|
|
1535
|
-
blockNumber:
|
|
1536
|
-
gasUsed:
|
|
1830
|
+
var DeployAppAuthSchema = z19.object({
|
|
1831
|
+
appId: z19.string(),
|
|
1832
|
+
appAuthAddress: z19.string(),
|
|
1833
|
+
deployer: z19.string(),
|
|
1834
|
+
transactionHash: z19.string(),
|
|
1835
|
+
blockNumber: z19.bigint().optional(),
|
|
1836
|
+
gasUsed: z19.bigint().optional()
|
|
1537
1837
|
}).passthrough();
|
|
1538
1838
|
function parseDeploymentResult(receipt, deployer, kmsContractAddress) {
|
|
1539
1839
|
try {
|
|
@@ -1778,8 +2078,8 @@ async function safeDeployAppAuth(request, parameters) {
|
|
|
1778
2078
|
}
|
|
1779
2079
|
}
|
|
1780
2080
|
|
|
1781
|
-
// src/actions/add_compose_hash.ts
|
|
1782
|
-
import { z as
|
|
2081
|
+
// src/actions/blockchains/add_compose_hash.ts
|
|
2082
|
+
import { z as z20 } from "zod";
|
|
1783
2083
|
import {
|
|
1784
2084
|
createPublicClient as createPublicClient3,
|
|
1785
2085
|
createWalletClient as createWalletClient3,
|
|
@@ -1803,29 +2103,29 @@ var appAuthAbi = [
|
|
|
1803
2103
|
anonymous: false
|
|
1804
2104
|
}
|
|
1805
2105
|
];
|
|
1806
|
-
var AddComposeHashRequestSchema =
|
|
2106
|
+
var AddComposeHashRequestSchema = z20.object({
|
|
1807
2107
|
// Chain configuration (conditionally required)
|
|
1808
|
-
chain:
|
|
1809
|
-
rpcUrl:
|
|
1810
|
-
appId:
|
|
1811
|
-
composeHash:
|
|
2108
|
+
chain: z20.unknown().optional(),
|
|
2109
|
+
rpcUrl: z20.string().optional(),
|
|
2110
|
+
appId: z20.string(),
|
|
2111
|
+
composeHash: z20.string(),
|
|
1812
2112
|
// Authentication mode: either privateKey OR walletClient (required, mutually exclusive)
|
|
1813
|
-
privateKey:
|
|
1814
|
-
walletClient:
|
|
2113
|
+
privateKey: z20.string().optional(),
|
|
2114
|
+
walletClient: z20.unknown().optional(),
|
|
1815
2115
|
// Public client (optional, will create default if not provided)
|
|
1816
|
-
publicClient:
|
|
2116
|
+
publicClient: z20.unknown().optional(),
|
|
1817
2117
|
// Validation configuration (optional)
|
|
1818
|
-
skipPrerequisiteChecks:
|
|
1819
|
-
minBalance:
|
|
2118
|
+
skipPrerequisiteChecks: z20.boolean().optional().default(false),
|
|
2119
|
+
minBalance: z20.string().optional(),
|
|
1820
2120
|
// ETH amount as string, e.g., "0.01"
|
|
1821
2121
|
// Transaction control options
|
|
1822
|
-
timeout:
|
|
1823
|
-
retryOptions:
|
|
1824
|
-
signal:
|
|
2122
|
+
timeout: z20.number().optional().default(12e4),
|
|
2123
|
+
retryOptions: z20.unknown().optional(),
|
|
2124
|
+
signal: z20.unknown().optional(),
|
|
1825
2125
|
// Progress callbacks
|
|
1826
|
-
onTransactionStateChange:
|
|
1827
|
-
onTransactionSubmitted:
|
|
1828
|
-
onTransactionConfirmed:
|
|
2126
|
+
onTransactionStateChange: z20.function().optional(),
|
|
2127
|
+
onTransactionSubmitted: z20.function().optional(),
|
|
2128
|
+
onTransactionConfirmed: z20.function().optional()
|
|
1829
2129
|
}).passthrough().refine(
|
|
1830
2130
|
(data) => {
|
|
1831
2131
|
const hasPrivateKey = !!data.privateKey;
|
|
@@ -1849,12 +2149,12 @@ var AddComposeHashRequestSchema = z9.object({
|
|
|
1849
2149
|
path: ["chain"]
|
|
1850
2150
|
}
|
|
1851
2151
|
);
|
|
1852
|
-
var AddComposeHashSchema =
|
|
1853
|
-
composeHash:
|
|
1854
|
-
appId:
|
|
1855
|
-
transactionHash:
|
|
1856
|
-
blockNumber:
|
|
1857
|
-
gasUsed:
|
|
2152
|
+
var AddComposeHashSchema = z20.object({
|
|
2153
|
+
composeHash: z20.string(),
|
|
2154
|
+
appId: z20.string(),
|
|
2155
|
+
transactionHash: z20.string(),
|
|
2156
|
+
blockNumber: z20.bigint().optional(),
|
|
2157
|
+
gasUsed: z20.bigint().optional()
|
|
1858
2158
|
}).passthrough();
|
|
1859
2159
|
function parseComposeHashResult(receipt, composeHash, appAuthAddress, appId) {
|
|
1860
2160
|
console.log(receipt.logs);
|
|
@@ -2045,282 +2345,6 @@ async function safeAddComposeHash(request, parameters) {
|
|
|
2045
2345
|
}
|
|
2046
2346
|
}
|
|
2047
2347
|
|
|
2048
|
-
// src/actions/get_cvm_compose_file.ts
|
|
2049
|
-
import { z as z11 } from "zod";
|
|
2050
|
-
|
|
2051
|
-
// src/types/app_compose.ts
|
|
2052
|
-
import { z as z10 } from "zod";
|
|
2053
|
-
var LooseAppComposeSchema = z10.object({
|
|
2054
|
-
allowed_envs: z10.array(z10.string()).optional(),
|
|
2055
|
-
docker_compose_file: z10.string(),
|
|
2056
|
-
features: z10.array(z10.string()).optional(),
|
|
2057
|
-
name: z10.string().optional(),
|
|
2058
|
-
manifest_version: z10.number().optional(),
|
|
2059
|
-
kms_enabled: z10.boolean().optional(),
|
|
2060
|
-
public_logs: z10.boolean().optional(),
|
|
2061
|
-
public_sysinfo: z10.boolean().optional(),
|
|
2062
|
-
tproxy_enabled: z10.boolean().optional(),
|
|
2063
|
-
pre_launch_script: z10.string().optional()
|
|
2064
|
-
}).passthrough();
|
|
2065
|
-
|
|
2066
|
-
// src/actions/get_cvm_compose_file.ts
|
|
2067
|
-
var GetCvmComposeFileRequestSchema = z11.object({
|
|
2068
|
-
id: z11.string().optional(),
|
|
2069
|
-
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(),
|
|
2070
|
-
app_id: z11.string().refine(
|
|
2071
|
-
(val) => !val.startsWith("app_") && val.length === 40,
|
|
2072
|
-
"app_id should be 40 characters without prefix"
|
|
2073
|
-
).transform((val) => val.startsWith("app_") ? val : `app_${val}`).optional(),
|
|
2074
|
-
instance_id: z11.string().refine(
|
|
2075
|
-
(val) => !val.startsWith("instance_") && val.length === 40,
|
|
2076
|
-
"instance_id should be 40 characters without prefix"
|
|
2077
|
-
).transform((val) => val.startsWith("instance_") ? val : `instance_${val}`).optional()
|
|
2078
|
-
}).refine(
|
|
2079
|
-
(data) => !!(data.id || data.uuid || data.app_id || data.instance_id),
|
|
2080
|
-
"One of id, uuid, app_id, or instance_id must be provided"
|
|
2081
|
-
).transform((data) => ({
|
|
2082
|
-
cvmId: data.id || data.uuid || data.app_id || data.instance_id,
|
|
2083
|
-
_raw: data
|
|
2084
|
-
}));
|
|
2085
|
-
var { action: getCvmComposeFile, safeAction: safeGetCvmComposeFile } = defineAction(LooseAppComposeSchema, async (client, request) => {
|
|
2086
|
-
const validatedRequest = GetCvmComposeFileRequestSchema.parse(request);
|
|
2087
|
-
return await client.get(`/cvms/${validatedRequest.cvmId}/compose_file`);
|
|
2088
|
-
});
|
|
2089
|
-
|
|
2090
|
-
// src/actions/provision_cvm_compose_file_update.ts
|
|
2091
|
-
import { z as z12 } from "zod";
|
|
2092
|
-
var ProvisionCvmComposeFileUpdateRequestSchema = z12.object({
|
|
2093
|
-
id: z12.string().optional(),
|
|
2094
|
-
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(),
|
|
2095
|
-
app_id: z12.string().refine(
|
|
2096
|
-
(val) => !val.startsWith("app_") && val.length === 40,
|
|
2097
|
-
"app_id should be 40 characters without prefix"
|
|
2098
|
-
).transform((val) => val.startsWith("app_") ? val : `app_${val}`).optional(),
|
|
2099
|
-
instance_id: z12.string().refine(
|
|
2100
|
-
(val) => !val.startsWith("instance_") && val.length === 40,
|
|
2101
|
-
"instance_id should be 40 characters without prefix"
|
|
2102
|
-
).transform((val) => val.startsWith("instance_") ? val : `instance_${val}`).optional(),
|
|
2103
|
-
app_compose: LooseAppComposeSchema,
|
|
2104
|
-
update_env_vars: z12.boolean().optional().nullable()
|
|
2105
|
-
}).refine(
|
|
2106
|
-
(data) => !!(data.id || data.uuid || data.app_id || data.instance_id),
|
|
2107
|
-
"One of id, uuid, app_id, or instance_id must be provided"
|
|
2108
|
-
).transform((data) => ({
|
|
2109
|
-
cvmId: data.id || data.uuid || data.app_id || data.instance_id,
|
|
2110
|
-
request: data.app_compose,
|
|
2111
|
-
update_env_vars: data.update_env_vars,
|
|
2112
|
-
_raw: data
|
|
2113
|
-
}));
|
|
2114
|
-
var ProvisionCvmComposeFileUpdateResultSchema = z12.object({
|
|
2115
|
-
app_id: z12.string().nullable(),
|
|
2116
|
-
device_id: z12.string().nullable(),
|
|
2117
|
-
compose_hash: z12.string(),
|
|
2118
|
-
kms_info: KmsInfoSchema.nullable().optional()
|
|
2119
|
-
}).passthrough();
|
|
2120
|
-
var { action: provisionCvmComposeFileUpdate, safeAction: safeProvisionCvmComposeFileUpdate } = defineAction(ProvisionCvmComposeFileUpdateResultSchema, async (client, request) => {
|
|
2121
|
-
const validatedRequest = ProvisionCvmComposeFileUpdateRequestSchema.parse(request);
|
|
2122
|
-
return await client.post(
|
|
2123
|
-
`/cvms/${validatedRequest.cvmId}/compose_file/provision`,
|
|
2124
|
-
validatedRequest.request
|
|
2125
|
-
);
|
|
2126
|
-
});
|
|
2127
|
-
|
|
2128
|
-
// src/actions/commit_cvm_compose_file_update.ts
|
|
2129
|
-
import { z as z13 } from "zod";
|
|
2130
|
-
var CommitCvmComposeFileUpdateRequestSchema = z13.object({
|
|
2131
|
-
id: z13.string().optional(),
|
|
2132
|
-
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(),
|
|
2133
|
-
app_id: z13.string().refine(
|
|
2134
|
-
(val) => !val.startsWith("app_") && val.length === 40,
|
|
2135
|
-
"app_id should be 40 characters without prefix"
|
|
2136
|
-
).transform((val) => val.startsWith("app_") ? val : `app_${val}`).optional(),
|
|
2137
|
-
instance_id: z13.string().refine(
|
|
2138
|
-
(val) => !val.startsWith("instance_") && val.length === 40,
|
|
2139
|
-
"instance_id should be 40 characters without prefix"
|
|
2140
|
-
).transform((val) => val.startsWith("instance_") ? val : `instance_${val}`).optional(),
|
|
2141
|
-
compose_hash: z13.string().min(1, "Compose hash is required"),
|
|
2142
|
-
encrypted_env: z13.string().optional(),
|
|
2143
|
-
env_keys: z13.array(z13.string()).optional(),
|
|
2144
|
-
update_env_vars: z13.boolean().optional().nullable()
|
|
2145
|
-
}).refine(
|
|
2146
|
-
(data) => !!(data.id || data.uuid || data.app_id || data.instance_id),
|
|
2147
|
-
"One of id, uuid, app_id, or instance_id must be provided"
|
|
2148
|
-
).transform((data) => ({
|
|
2149
|
-
cvmId: data.id || data.uuid || data.app_id || data.instance_id,
|
|
2150
|
-
compose_hash: data.compose_hash,
|
|
2151
|
-
encrypted_env: data.encrypted_env,
|
|
2152
|
-
env_keys: data.env_keys,
|
|
2153
|
-
update_env_vars: !!data.update_env_vars,
|
|
2154
|
-
_raw: data
|
|
2155
|
-
}));
|
|
2156
|
-
var CommitCvmComposeFileUpdateSchema = z13.any().transform(() => void 0);
|
|
2157
|
-
var { action: commitCvmComposeFileUpdate, safeAction: safeCommitCvmComposeFileUpdate } = defineAction(
|
|
2158
|
-
CommitCvmComposeFileUpdateSchema,
|
|
2159
|
-
async (client, request) => {
|
|
2160
|
-
const validatedRequest = CommitCvmComposeFileUpdateRequestSchema.parse(request);
|
|
2161
|
-
return await client.patch(`/cvms/${validatedRequest.cvmId}/compose_file`, {
|
|
2162
|
-
compose_hash: validatedRequest.compose_hash,
|
|
2163
|
-
encrypted_env: validatedRequest.encrypted_env,
|
|
2164
|
-
env_keys: validatedRequest.env_keys
|
|
2165
|
-
});
|
|
2166
|
-
}
|
|
2167
|
-
);
|
|
2168
|
-
|
|
2169
|
-
// src/actions/get_app_env_encrypt_pubkey.ts
|
|
2170
|
-
import { z as z14 } from "zod";
|
|
2171
|
-
var GetAppEnvEncryptPubKeyRequestSchema = z14.object({
|
|
2172
|
-
kms: z14.string().min(1, "KMS ID or slug is required"),
|
|
2173
|
-
app_id: z14.string().refine(
|
|
2174
|
-
(val) => val.length === 40 || val.startsWith("0x") && val.length === 42,
|
|
2175
|
-
"App ID must be exactly 40 characters or 42 characters with 0x prefix"
|
|
2176
|
-
)
|
|
2177
|
-
}).strict();
|
|
2178
|
-
var GetAppEnvEncryptPubKeySchema = z14.object({
|
|
2179
|
-
public_key: z14.string(),
|
|
2180
|
-
signature: z14.string()
|
|
2181
|
-
}).strict();
|
|
2182
|
-
var { action: getAppEnvEncryptPubKey, safeAction: safeGetAppEnvEncryptPubKey } = defineAction(GetAppEnvEncryptPubKeySchema, async (client, payload) => {
|
|
2183
|
-
const validatedRequest = GetAppEnvEncryptPubKeyRequestSchema.parse(payload);
|
|
2184
|
-
return await client.get(`/kms/${validatedRequest.kms}/pubkey/${validatedRequest.app_id}`);
|
|
2185
|
-
});
|
|
2186
|
-
|
|
2187
|
-
// src/actions/get_cvm_info.ts
|
|
2188
|
-
import { z as z15 } from "zod";
|
|
2189
|
-
var GetCvmInfoRequestSchema = z15.object({
|
|
2190
|
-
id: z15.string().optional(),
|
|
2191
|
-
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(),
|
|
2192
|
-
app_id: z15.string().refine(
|
|
2193
|
-
(val) => !val.startsWith("app_") && val.length === 40,
|
|
2194
|
-
"app_id should be 40 characters without prefix"
|
|
2195
|
-
).transform((val) => val.startsWith("app_") ? val : `app_${val}`).optional(),
|
|
2196
|
-
instance_id: z15.string().refine(
|
|
2197
|
-
(val) => !val.startsWith("instance_") && val.length === 40,
|
|
2198
|
-
"instance_id should be 40 characters without prefix"
|
|
2199
|
-
).transform((val) => val.startsWith("instance_") ? val : `instance_${val}`).optional()
|
|
2200
|
-
}).refine(
|
|
2201
|
-
(data) => !!(data.id || data.uuid || data.app_id || data.instance_id),
|
|
2202
|
-
"One of id, uuid, app_id, or instance_id must be provided"
|
|
2203
|
-
).transform((data) => ({
|
|
2204
|
-
cvmId: data.id || data.uuid || data.app_id || data.instance_id,
|
|
2205
|
-
_raw: data
|
|
2206
|
-
}));
|
|
2207
|
-
var { action: getCvmInfo, safeAction: safeGetCvmInfo } = defineAction(CvmLegacyDetailSchema, async (client, request) => {
|
|
2208
|
-
const validatedRequest = GetCvmInfoRequestSchema.parse(request);
|
|
2209
|
-
return await client.get(`/cvms/${validatedRequest.cvmId}`);
|
|
2210
|
-
});
|
|
2211
|
-
|
|
2212
|
-
// src/actions/get_cvm_list.ts
|
|
2213
|
-
import { z as z16 } from "zod";
|
|
2214
|
-
var GetCvmListRequestSchema = z16.object({
|
|
2215
|
-
page: z16.number().int().min(1).optional(),
|
|
2216
|
-
page_size: z16.number().int().min(1).optional(),
|
|
2217
|
-
node_id: z16.number().int().min(1).optional()
|
|
2218
|
-
}).strict();
|
|
2219
|
-
var GetCvmListSchema = z16.object({
|
|
2220
|
-
items: z16.array(CvmInfoSchema),
|
|
2221
|
-
total: z16.number(),
|
|
2222
|
-
page: z16.number(),
|
|
2223
|
-
page_size: z16.number(),
|
|
2224
|
-
pages: z16.number()
|
|
2225
|
-
}).strict();
|
|
2226
|
-
var { action: getCvmList, safeAction: safeGetCvmList } = defineAction(GetCvmListSchema, async (client, request) => {
|
|
2227
|
-
const validatedRequest = GetCvmListRequestSchema.parse(request ?? {});
|
|
2228
|
-
return await client.get("/cvms/paginated", { params: validatedRequest });
|
|
2229
|
-
});
|
|
2230
|
-
|
|
2231
|
-
// src/actions/get_kms_info.ts
|
|
2232
|
-
import { z as z17 } from "zod";
|
|
2233
|
-
var GetKmsInfoRequestSchema = z17.object({
|
|
2234
|
-
kms_id: z17.string().min(1, "KMS ID is required")
|
|
2235
|
-
});
|
|
2236
|
-
var { action: getKmsInfo, safeAction: safeGetKmsInfo } = defineAction(KmsInfoSchema, async (client, request) => {
|
|
2237
|
-
const validatedRequest = GetKmsInfoRequestSchema.parse(request);
|
|
2238
|
-
return await client.get(`/kms/${validatedRequest.kms_id}`);
|
|
2239
|
-
});
|
|
2240
|
-
|
|
2241
|
-
// src/actions/get_kms_list.ts
|
|
2242
|
-
import { z as z18 } from "zod";
|
|
2243
|
-
var GetKmsListRequestSchema = z18.object({
|
|
2244
|
-
page: z18.number().int().min(1).optional(),
|
|
2245
|
-
page_size: z18.number().int().min(1).optional(),
|
|
2246
|
-
is_onchain: z18.boolean().optional()
|
|
2247
|
-
}).strict();
|
|
2248
|
-
var GetKmsListSchema = z18.object({
|
|
2249
|
-
items: z18.array(KmsInfoSchema),
|
|
2250
|
-
total: z18.number(),
|
|
2251
|
-
page: z18.number(),
|
|
2252
|
-
page_size: z18.number(),
|
|
2253
|
-
pages: z18.number()
|
|
2254
|
-
}).strict();
|
|
2255
|
-
var { action: getKmsList, safeAction: safeGetKmsList } = defineAction(GetKmsListSchema, async (client, request) => {
|
|
2256
|
-
const validatedRequest = GetKmsListRequestSchema.parse(request ?? {});
|
|
2257
|
-
return await client.get("/kms", { params: validatedRequest });
|
|
2258
|
-
});
|
|
2259
|
-
|
|
2260
|
-
// src/actions/workspaces/list_workspaces.ts
|
|
2261
|
-
import { z as z19 } from "zod";
|
|
2262
|
-
var WorkspaceResponseSchema = z19.object({
|
|
2263
|
-
id: z19.string(),
|
|
2264
|
-
name: z19.string(),
|
|
2265
|
-
slug: z19.string().nullable(),
|
|
2266
|
-
tier: z19.string(),
|
|
2267
|
-
role: z19.string(),
|
|
2268
|
-
created_at: z19.string()
|
|
2269
|
-
}).passthrough();
|
|
2270
|
-
var PaginationMetadataSchema = z19.object({
|
|
2271
|
-
has_more: z19.boolean(),
|
|
2272
|
-
next_cursor: z19.string().nullable(),
|
|
2273
|
-
total: z19.number().nullable()
|
|
2274
|
-
}).passthrough();
|
|
2275
|
-
var ListWorkspacesSchema = z19.object({
|
|
2276
|
-
data: z19.array(WorkspaceResponseSchema),
|
|
2277
|
-
pagination: PaginationMetadataSchema
|
|
2278
|
-
}).passthrough();
|
|
2279
|
-
var { action: listWorkspaces, safeAction: safeListWorkspaces } = defineAction(ListWorkspacesSchema, async (client, request) => {
|
|
2280
|
-
const queryParams = new URLSearchParams();
|
|
2281
|
-
if (request?.cursor) queryParams.append("cursor", request.cursor);
|
|
2282
|
-
if (request?.limit) queryParams.append("limit", request.limit.toString());
|
|
2283
|
-
const url = queryParams.toString() ? `/workspaces?${queryParams.toString()}` : "/workspaces";
|
|
2284
|
-
return await client.get(url);
|
|
2285
|
-
});
|
|
2286
|
-
|
|
2287
|
-
// src/actions/workspaces/get_workspace.ts
|
|
2288
|
-
var { action: getWorkspace, safeAction: safeGetWorkspace } = defineAction(WorkspaceResponseSchema, async (client, teamSlug) => {
|
|
2289
|
-
return await client.get(`/workspaces/${teamSlug}`);
|
|
2290
|
-
});
|
|
2291
|
-
|
|
2292
|
-
// src/actions/list-instance-types.ts
|
|
2293
|
-
import { z as z20 } from "zod";
|
|
2294
|
-
var ListInstanceTypesRequestSchema = z20.object({
|
|
2295
|
-
page: z20.number().int().min(1).optional().default(1),
|
|
2296
|
-
page_size: z20.number().int().min(1).max(1e3).optional().default(100)
|
|
2297
|
-
}).strict();
|
|
2298
|
-
var InstanceTypeSchema = z20.object({
|
|
2299
|
-
id: z20.string(),
|
|
2300
|
-
name: z20.string(),
|
|
2301
|
-
description: z20.string(),
|
|
2302
|
-
vcpu: z20.number(),
|
|
2303
|
-
memory_mb: z20.number(),
|
|
2304
|
-
hourly_rate: z20.string(),
|
|
2305
|
-
requires_gpu: z20.boolean(),
|
|
2306
|
-
public: z20.boolean(),
|
|
2307
|
-
enabled: z20.boolean()
|
|
2308
|
-
}).passthrough();
|
|
2309
|
-
var PaginatedInstanceTypesSchema = z20.object({
|
|
2310
|
-
items: z20.array(InstanceTypeSchema),
|
|
2311
|
-
total: z20.number(),
|
|
2312
|
-
page: z20.number(),
|
|
2313
|
-
page_size: z20.number(),
|
|
2314
|
-
pages: z20.number()
|
|
2315
|
-
}).strict();
|
|
2316
|
-
var { action: listInstanceTypes, safeAction: safeListInstanceTypes } = defineAction(PaginatedInstanceTypesSchema, async (client, request) => {
|
|
2317
|
-
const validatedRequest = ListInstanceTypesRequestSchema.parse(request ?? {});
|
|
2318
|
-
const queryParams = new URLSearchParams();
|
|
2319
|
-
queryParams.append("page", validatedRequest.page.toString());
|
|
2320
|
-
queryParams.append("page_size", validatedRequest.page_size.toString());
|
|
2321
|
-
return await client.get(`/api/instance-types?${queryParams.toString()}`);
|
|
2322
|
-
});
|
|
2323
|
-
|
|
2324
2348
|
// src/parse_dotenv.ts
|
|
2325
2349
|
var LINE = /(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/gm;
|
|
2326
2350
|
function parseEnv(input) {
|
|
@@ -2408,7 +2432,8 @@ export {
|
|
|
2408
2432
|
checkNetworkStatus,
|
|
2409
2433
|
commitCvmComposeFileUpdate,
|
|
2410
2434
|
commitCvmProvision,
|
|
2411
|
-
createClient,
|
|
2435
|
+
createClient as createBaseClient,
|
|
2436
|
+
createClient2 as createClient,
|
|
2412
2437
|
createClientsFromBrowser,
|
|
2413
2438
|
createClientsFromPrivateKey,
|
|
2414
2439
|
createNetworkClients,
|