@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.js
CHANGED
|
@@ -79,7 +79,8 @@ __export(index_exports, {
|
|
|
79
79
|
checkNetworkStatus: () => checkNetworkStatus,
|
|
80
80
|
commitCvmComposeFileUpdate: () => commitCvmComposeFileUpdate,
|
|
81
81
|
commitCvmProvision: () => commitCvmProvision,
|
|
82
|
-
|
|
82
|
+
createBaseClient: () => createClient,
|
|
83
|
+
createClient: () => createClient2,
|
|
83
84
|
createClientsFromBrowser: () => createClientsFromBrowser,
|
|
84
85
|
createClientsFromPrivateKey: () => createClientsFromPrivateKey,
|
|
85
86
|
createNetworkClients: () => createNetworkClients,
|
|
@@ -459,9 +460,178 @@ function createClient(config = {}) {
|
|
|
459
460
|
return new Client(config);
|
|
460
461
|
}
|
|
461
462
|
|
|
462
|
-
// src/
|
|
463
|
+
// src/actions/get_current_user.ts
|
|
463
464
|
var import_zod2 = require("zod");
|
|
464
465
|
|
|
466
|
+
// src/utils/validate-parameters.ts
|
|
467
|
+
function validateActionParameters(parameters) {
|
|
468
|
+
if (parameters?.schema !== void 0 && parameters?.schema !== false) {
|
|
469
|
+
if (typeof parameters.schema !== "object" || parameters.schema === null || !("parse" in parameters.schema) || typeof parameters.schema.parse !== "function") {
|
|
470
|
+
throw new Error("Invalid schema: must be a Zod schema object, false, or undefined");
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
function safeValidateActionParameters(parameters) {
|
|
475
|
+
if (parameters?.schema !== void 0 && parameters?.schema !== false) {
|
|
476
|
+
if (typeof parameters.schema !== "object" || parameters.schema === null || !("parse" in parameters.schema) || typeof parameters.schema.parse !== "function") {
|
|
477
|
+
return {
|
|
478
|
+
success: false,
|
|
479
|
+
error: {
|
|
480
|
+
name: "ZodError",
|
|
481
|
+
message: "Invalid schema: must be a Zod schema object, false, or undefined",
|
|
482
|
+
issues: [
|
|
483
|
+
{
|
|
484
|
+
code: "invalid_type",
|
|
485
|
+
expected: "object",
|
|
486
|
+
received: typeof parameters.schema,
|
|
487
|
+
path: ["schema"],
|
|
488
|
+
message: "Invalid schema: must be a Zod schema object, false, or undefined"
|
|
489
|
+
}
|
|
490
|
+
]
|
|
491
|
+
}
|
|
492
|
+
};
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
return void 0;
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
// src/utils/define-action.ts
|
|
499
|
+
function defineSimpleAction(schema, fn) {
|
|
500
|
+
function action(client, parameters) {
|
|
501
|
+
return _actionImpl(client, parameters);
|
|
502
|
+
}
|
|
503
|
+
async function _actionImpl(client, parameters) {
|
|
504
|
+
validateActionParameters(parameters);
|
|
505
|
+
const response = await fn(client);
|
|
506
|
+
if (parameters?.schema === false) {
|
|
507
|
+
return response;
|
|
508
|
+
}
|
|
509
|
+
const actualSchema = parameters?.schema || schema;
|
|
510
|
+
return actualSchema.parse(response);
|
|
511
|
+
}
|
|
512
|
+
function safeAction(client, parameters) {
|
|
513
|
+
return _safeActionImpl(client, parameters);
|
|
514
|
+
}
|
|
515
|
+
async function _safeActionImpl(client, parameters) {
|
|
516
|
+
const parameterValidationError = safeValidateActionParameters(parameters);
|
|
517
|
+
if (parameterValidationError) {
|
|
518
|
+
return parameterValidationError;
|
|
519
|
+
}
|
|
520
|
+
const httpResult = await (async () => {
|
|
521
|
+
try {
|
|
522
|
+
const data = await fn(client);
|
|
523
|
+
return { success: true, data };
|
|
524
|
+
} catch (error) {
|
|
525
|
+
if (error && typeof error === "object" && "isRequestError" in error) {
|
|
526
|
+
return { success: false, error };
|
|
527
|
+
}
|
|
528
|
+
if (error && typeof error === "object" && "issues" in error) {
|
|
529
|
+
return { success: false, error };
|
|
530
|
+
}
|
|
531
|
+
return {
|
|
532
|
+
success: false,
|
|
533
|
+
error: {
|
|
534
|
+
name: "Error",
|
|
535
|
+
message: error instanceof Error ? error.message : String(error)
|
|
536
|
+
}
|
|
537
|
+
};
|
|
538
|
+
}
|
|
539
|
+
})();
|
|
540
|
+
if (!httpResult.success) {
|
|
541
|
+
return httpResult;
|
|
542
|
+
}
|
|
543
|
+
if (parameters?.schema === false) {
|
|
544
|
+
return { success: true, data: httpResult.data };
|
|
545
|
+
}
|
|
546
|
+
const actualSchema = parameters?.schema || schema;
|
|
547
|
+
return actualSchema.safeParse(httpResult.data);
|
|
548
|
+
}
|
|
549
|
+
return {
|
|
550
|
+
action,
|
|
551
|
+
safeAction
|
|
552
|
+
};
|
|
553
|
+
}
|
|
554
|
+
function defineAction(schema, fn) {
|
|
555
|
+
function action(client, ...args) {
|
|
556
|
+
const [params, parameters] = args;
|
|
557
|
+
return _actionImpl(client, params, parameters);
|
|
558
|
+
}
|
|
559
|
+
async function _actionImpl(client, params, parameters) {
|
|
560
|
+
validateActionParameters(parameters);
|
|
561
|
+
const response = await fn(client, params);
|
|
562
|
+
if (parameters?.schema === false) {
|
|
563
|
+
return response;
|
|
564
|
+
}
|
|
565
|
+
const actualSchema = parameters?.schema || schema;
|
|
566
|
+
return actualSchema.parse(response);
|
|
567
|
+
}
|
|
568
|
+
function safeAction(client, ...args) {
|
|
569
|
+
const [params, parameters] = args;
|
|
570
|
+
return _safeActionImpl(client, params, parameters);
|
|
571
|
+
}
|
|
572
|
+
async function _safeActionImpl(client, params, parameters) {
|
|
573
|
+
const parameterValidationError = safeValidateActionParameters(parameters);
|
|
574
|
+
if (parameterValidationError) {
|
|
575
|
+
return parameterValidationError;
|
|
576
|
+
}
|
|
577
|
+
const httpResult = await (async () => {
|
|
578
|
+
try {
|
|
579
|
+
const data = await fn(client, params);
|
|
580
|
+
return { success: true, data };
|
|
581
|
+
} catch (error) {
|
|
582
|
+
if (error && typeof error === "object" && "isRequestError" in error) {
|
|
583
|
+
return { success: false, error };
|
|
584
|
+
}
|
|
585
|
+
if (error && typeof error === "object" && "issues" in error) {
|
|
586
|
+
return { success: false, error };
|
|
587
|
+
}
|
|
588
|
+
return {
|
|
589
|
+
success: false,
|
|
590
|
+
error: {
|
|
591
|
+
name: "Error",
|
|
592
|
+
message: error instanceof Error ? error.message : String(error)
|
|
593
|
+
}
|
|
594
|
+
};
|
|
595
|
+
}
|
|
596
|
+
})();
|
|
597
|
+
if (!httpResult.success) {
|
|
598
|
+
return httpResult;
|
|
599
|
+
}
|
|
600
|
+
if (parameters?.schema === false) {
|
|
601
|
+
return { success: true, data: httpResult.data };
|
|
602
|
+
}
|
|
603
|
+
const actualSchema = parameters?.schema || schema;
|
|
604
|
+
return actualSchema.safeParse(httpResult.data);
|
|
605
|
+
}
|
|
606
|
+
return {
|
|
607
|
+
action,
|
|
608
|
+
safeAction
|
|
609
|
+
};
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
// src/actions/get_current_user.ts
|
|
613
|
+
var CurrentUserSchema = import_zod2.z.object({
|
|
614
|
+
username: import_zod2.z.string(),
|
|
615
|
+
email: import_zod2.z.string(),
|
|
616
|
+
credits: import_zod2.z.number(),
|
|
617
|
+
granted_credits: import_zod2.z.number(),
|
|
618
|
+
avatar: import_zod2.z.string(),
|
|
619
|
+
team_name: import_zod2.z.string(),
|
|
620
|
+
team_tier: import_zod2.z.string()
|
|
621
|
+
}).passthrough();
|
|
622
|
+
var { action: getCurrentUser, safeAction: safeGetCurrentUser } = defineSimpleAction(
|
|
623
|
+
CurrentUserSchema,
|
|
624
|
+
async (client) => {
|
|
625
|
+
return await client.get("/auth/me");
|
|
626
|
+
}
|
|
627
|
+
);
|
|
628
|
+
|
|
629
|
+
// src/actions/get_available_nodes.ts
|
|
630
|
+
var import_zod4 = require("zod");
|
|
631
|
+
|
|
632
|
+
// src/types/kms_info.ts
|
|
633
|
+
var import_zod3 = require("zod");
|
|
634
|
+
|
|
465
635
|
// src/types/supported_chains.ts
|
|
466
636
|
var import_chains = require("viem/chains");
|
|
467
637
|
var SUPPORTED_CHAINS = {
|
|
@@ -471,14 +641,14 @@ var SUPPORTED_CHAINS = {
|
|
|
471
641
|
};
|
|
472
642
|
|
|
473
643
|
// src/types/kms_info.ts
|
|
474
|
-
var KmsInfoBaseSchema =
|
|
475
|
-
id:
|
|
476
|
-
slug:
|
|
477
|
-
url:
|
|
478
|
-
version:
|
|
479
|
-
chain_id:
|
|
480
|
-
kms_contract_address:
|
|
481
|
-
gateway_app_id:
|
|
644
|
+
var KmsInfoBaseSchema = import_zod3.z.object({
|
|
645
|
+
id: import_zod3.z.string(),
|
|
646
|
+
slug: import_zod3.z.string().nullable(),
|
|
647
|
+
url: import_zod3.z.string(),
|
|
648
|
+
version: import_zod3.z.string(),
|
|
649
|
+
chain_id: import_zod3.z.number().nullable(),
|
|
650
|
+
kms_contract_address: import_zod3.z.string().nullable().transform((val) => val),
|
|
651
|
+
gateway_app_id: import_zod3.z.string().nullable().transform((val) => val)
|
|
482
652
|
}).passthrough();
|
|
483
653
|
var KmsInfoSchema = KmsInfoBaseSchema.transform((data) => {
|
|
484
654
|
if (data.chain_id != null) {
|
|
@@ -490,91 +660,591 @@ var KmsInfoSchema = KmsInfoBaseSchema.transform((data) => {
|
|
|
490
660
|
return data;
|
|
491
661
|
});
|
|
492
662
|
|
|
663
|
+
// src/actions/get_available_nodes.ts
|
|
664
|
+
var AvailableOSImageSchema = import_zod4.z.object({
|
|
665
|
+
name: import_zod4.z.string(),
|
|
666
|
+
is_dev: import_zod4.z.boolean(),
|
|
667
|
+
version: import_zod4.z.union([
|
|
668
|
+
import_zod4.z.tuple([import_zod4.z.number(), import_zod4.z.number(), import_zod4.z.number()]),
|
|
669
|
+
import_zod4.z.tuple([import_zod4.z.number(), import_zod4.z.number(), import_zod4.z.number(), import_zod4.z.number()])
|
|
670
|
+
]),
|
|
671
|
+
os_image_hash: import_zod4.z.string().nullable().optional()
|
|
672
|
+
}).passthrough();
|
|
673
|
+
var TeepodCapacitySchema = import_zod4.z.object({
|
|
674
|
+
teepod_id: import_zod4.z.number(),
|
|
675
|
+
name: import_zod4.z.string(),
|
|
676
|
+
listed: import_zod4.z.boolean(),
|
|
677
|
+
resource_score: import_zod4.z.number(),
|
|
678
|
+
remaining_vcpu: import_zod4.z.number(),
|
|
679
|
+
remaining_memory: import_zod4.z.number(),
|
|
680
|
+
remaining_cvm_slots: import_zod4.z.number(),
|
|
681
|
+
images: import_zod4.z.array(AvailableOSImageSchema),
|
|
682
|
+
support_onchain_kms: import_zod4.z.boolean().optional(),
|
|
683
|
+
fmspc: import_zod4.z.string().nullable().optional(),
|
|
684
|
+
device_id: import_zod4.z.string().nullable().optional(),
|
|
685
|
+
region_identifier: import_zod4.z.string().nullable().optional(),
|
|
686
|
+
default_kms: import_zod4.z.string().nullable().optional(),
|
|
687
|
+
kms_list: import_zod4.z.array(import_zod4.z.string()).default([])
|
|
688
|
+
}).passthrough();
|
|
689
|
+
var ResourceThresholdSchema = import_zod4.z.object({
|
|
690
|
+
max_instances: import_zod4.z.number().nullable().optional(),
|
|
691
|
+
max_vcpu: import_zod4.z.number().nullable().optional(),
|
|
692
|
+
max_memory: import_zod4.z.number().nullable().optional(),
|
|
693
|
+
max_disk: import_zod4.z.number().nullable().optional()
|
|
694
|
+
}).passthrough();
|
|
695
|
+
var AvailableNodesSchema = import_zod4.z.object({
|
|
696
|
+
tier: import_zod4.z.string(),
|
|
697
|
+
// TeamTier is string enum
|
|
698
|
+
capacity: ResourceThresholdSchema,
|
|
699
|
+
nodes: import_zod4.z.array(TeepodCapacitySchema),
|
|
700
|
+
kms_list: import_zod4.z.array(KmsInfoSchema)
|
|
701
|
+
}).passthrough();
|
|
702
|
+
var { action: getAvailableNodes, safeAction: safeGetAvailableNodes } = defineSimpleAction(
|
|
703
|
+
AvailableNodesSchema,
|
|
704
|
+
async (client) => {
|
|
705
|
+
return await client.get("/teepods/available");
|
|
706
|
+
}
|
|
707
|
+
);
|
|
708
|
+
|
|
709
|
+
// src/actions/list-instance-types.ts
|
|
710
|
+
var import_zod5 = require("zod");
|
|
711
|
+
var ListInstanceTypesRequestSchema = import_zod5.z.object({
|
|
712
|
+
page: import_zod5.z.number().int().min(1).optional().default(1),
|
|
713
|
+
page_size: import_zod5.z.number().int().min(1).max(1e3).optional().default(100)
|
|
714
|
+
}).strict();
|
|
715
|
+
var InstanceTypeSchema = import_zod5.z.object({
|
|
716
|
+
id: import_zod5.z.string(),
|
|
717
|
+
name: import_zod5.z.string(),
|
|
718
|
+
description: import_zod5.z.string(),
|
|
719
|
+
vcpu: import_zod5.z.number(),
|
|
720
|
+
memory_mb: import_zod5.z.number(),
|
|
721
|
+
hourly_rate: import_zod5.z.string(),
|
|
722
|
+
requires_gpu: import_zod5.z.boolean(),
|
|
723
|
+
public: import_zod5.z.boolean(),
|
|
724
|
+
enabled: import_zod5.z.boolean()
|
|
725
|
+
}).passthrough();
|
|
726
|
+
var PaginatedInstanceTypesSchema = import_zod5.z.object({
|
|
727
|
+
items: import_zod5.z.array(InstanceTypeSchema),
|
|
728
|
+
total: import_zod5.z.number(),
|
|
729
|
+
page: import_zod5.z.number(),
|
|
730
|
+
page_size: import_zod5.z.number(),
|
|
731
|
+
pages: import_zod5.z.number()
|
|
732
|
+
}).strict();
|
|
733
|
+
var { action: listInstanceTypes, safeAction: safeListInstanceTypes } = defineAction(PaginatedInstanceTypesSchema, async (client, request) => {
|
|
734
|
+
const validatedRequest = ListInstanceTypesRequestSchema.parse(request ?? {});
|
|
735
|
+
const queryParams = new URLSearchParams();
|
|
736
|
+
queryParams.append("page", validatedRequest.page.toString());
|
|
737
|
+
queryParams.append("page_size", validatedRequest.page_size.toString());
|
|
738
|
+
return await client.get(`/api/instance-types?${queryParams.toString()}`);
|
|
739
|
+
});
|
|
740
|
+
|
|
741
|
+
// src/actions/workspaces/list_workspaces.ts
|
|
742
|
+
var import_zod6 = require("zod");
|
|
743
|
+
var WorkspaceResponseSchema = import_zod6.z.object({
|
|
744
|
+
id: import_zod6.z.string(),
|
|
745
|
+
name: import_zod6.z.string(),
|
|
746
|
+
slug: import_zod6.z.string().nullable(),
|
|
747
|
+
tier: import_zod6.z.string(),
|
|
748
|
+
role: import_zod6.z.string(),
|
|
749
|
+
created_at: import_zod6.z.string()
|
|
750
|
+
}).passthrough();
|
|
751
|
+
var PaginationMetadataSchema = import_zod6.z.object({
|
|
752
|
+
has_more: import_zod6.z.boolean(),
|
|
753
|
+
next_cursor: import_zod6.z.string().nullable(),
|
|
754
|
+
total: import_zod6.z.number().nullable()
|
|
755
|
+
}).passthrough();
|
|
756
|
+
var ListWorkspacesSchema = import_zod6.z.object({
|
|
757
|
+
data: import_zod6.z.array(WorkspaceResponseSchema),
|
|
758
|
+
pagination: PaginationMetadataSchema
|
|
759
|
+
}).passthrough();
|
|
760
|
+
var { action: listWorkspaces, safeAction: safeListWorkspaces } = defineAction(ListWorkspacesSchema, async (client, request) => {
|
|
761
|
+
const queryParams = new URLSearchParams();
|
|
762
|
+
if (request?.cursor) queryParams.append("cursor", request.cursor);
|
|
763
|
+
if (request?.limit) queryParams.append("limit", request.limit.toString());
|
|
764
|
+
const url = queryParams.toString() ? `/workspaces?${queryParams.toString()}` : "/workspaces";
|
|
765
|
+
return await client.get(url);
|
|
766
|
+
});
|
|
767
|
+
|
|
768
|
+
// src/actions/workspaces/get_workspace.ts
|
|
769
|
+
var { action: getWorkspace, safeAction: safeGetWorkspace } = defineAction(WorkspaceResponseSchema, async (client, teamSlug) => {
|
|
770
|
+
return await client.get(`/workspaces/${teamSlug}`);
|
|
771
|
+
});
|
|
772
|
+
|
|
773
|
+
// src/actions/cvms/get_cvm_info.ts
|
|
774
|
+
var import_zod8 = require("zod");
|
|
775
|
+
|
|
493
776
|
// src/types/cvm_info.ts
|
|
494
|
-
var
|
|
495
|
-
var VmInfoSchema =
|
|
496
|
-
id:
|
|
497
|
-
name:
|
|
498
|
-
status:
|
|
499
|
-
uptime:
|
|
500
|
-
app_url:
|
|
501
|
-
app_id:
|
|
502
|
-
instance_id:
|
|
503
|
-
configuration:
|
|
777
|
+
var import_zod7 = require("zod");
|
|
778
|
+
var VmInfoSchema = import_zod7.z.object({
|
|
779
|
+
id: import_zod7.z.string(),
|
|
780
|
+
name: import_zod7.z.string(),
|
|
781
|
+
status: import_zod7.z.string(),
|
|
782
|
+
uptime: import_zod7.z.string(),
|
|
783
|
+
app_url: import_zod7.z.string().nullable(),
|
|
784
|
+
app_id: import_zod7.z.string(),
|
|
785
|
+
instance_id: import_zod7.z.string().nullable(),
|
|
786
|
+
configuration: import_zod7.z.any().optional(),
|
|
504
787
|
// TODO: add VmConfiguration schema if needed
|
|
505
|
-
exited_at:
|
|
506
|
-
boot_progress:
|
|
507
|
-
boot_error:
|
|
508
|
-
shutdown_progress:
|
|
509
|
-
image_version:
|
|
788
|
+
exited_at: import_zod7.z.string().nullable(),
|
|
789
|
+
boot_progress: import_zod7.z.string().nullable(),
|
|
790
|
+
boot_error: import_zod7.z.string().nullable(),
|
|
791
|
+
shutdown_progress: import_zod7.z.string().nullable(),
|
|
792
|
+
image_version: import_zod7.z.string().nullable()
|
|
510
793
|
});
|
|
511
|
-
var ManagedUserSchema =
|
|
512
|
-
id:
|
|
513
|
-
username:
|
|
794
|
+
var ManagedUserSchema = import_zod7.z.object({
|
|
795
|
+
id: import_zod7.z.number(),
|
|
796
|
+
username: import_zod7.z.string()
|
|
514
797
|
});
|
|
515
|
-
var CvmNodeSchema =
|
|
516
|
-
id:
|
|
517
|
-
name:
|
|
518
|
-
region_identifier:
|
|
798
|
+
var CvmNodeSchema = import_zod7.z.object({
|
|
799
|
+
id: import_zod7.z.number(),
|
|
800
|
+
name: import_zod7.z.string(),
|
|
801
|
+
region_identifier: import_zod7.z.string().optional()
|
|
519
802
|
});
|
|
520
|
-
var CvmNetworkUrlsSchema =
|
|
521
|
-
app:
|
|
522
|
-
instance:
|
|
803
|
+
var CvmNetworkUrlsSchema = import_zod7.z.object({
|
|
804
|
+
app: import_zod7.z.string(),
|
|
805
|
+
instance: import_zod7.z.string()
|
|
523
806
|
});
|
|
524
|
-
var CvmInfoSchema =
|
|
807
|
+
var CvmInfoSchema = import_zod7.z.object({
|
|
525
808
|
hosted: VmInfoSchema,
|
|
526
|
-
name:
|
|
809
|
+
name: import_zod7.z.string(),
|
|
527
810
|
managed_user: ManagedUserSchema.optional().nullable(),
|
|
528
811
|
node: CvmNodeSchema.optional().nullable(),
|
|
529
|
-
listed:
|
|
530
|
-
status:
|
|
531
|
-
in_progress:
|
|
532
|
-
dapp_dashboard_url:
|
|
533
|
-
syslog_endpoint:
|
|
534
|
-
allow_upgrade:
|
|
535
|
-
project_id:
|
|
812
|
+
listed: import_zod7.z.boolean().default(false),
|
|
813
|
+
status: import_zod7.z.string(),
|
|
814
|
+
in_progress: import_zod7.z.boolean().default(false),
|
|
815
|
+
dapp_dashboard_url: import_zod7.z.string().nullable(),
|
|
816
|
+
syslog_endpoint: import_zod7.z.string().nullable(),
|
|
817
|
+
allow_upgrade: import_zod7.z.boolean().default(false),
|
|
818
|
+
project_id: import_zod7.z.string().nullable(),
|
|
536
819
|
// HashedId is represented as string in JS
|
|
537
|
-
project_type:
|
|
538
|
-
billing_period:
|
|
820
|
+
project_type: import_zod7.z.string().nullable(),
|
|
821
|
+
billing_period: import_zod7.z.string().nullable(),
|
|
539
822
|
kms_info: KmsInfoSchema.nullable(),
|
|
540
|
-
vcpu:
|
|
541
|
-
memory:
|
|
542
|
-
disk_size:
|
|
543
|
-
gateway_domain:
|
|
544
|
-
public_urls:
|
|
823
|
+
vcpu: import_zod7.z.number().nullable(),
|
|
824
|
+
memory: import_zod7.z.number().nullable(),
|
|
825
|
+
disk_size: import_zod7.z.number().nullable(),
|
|
826
|
+
gateway_domain: import_zod7.z.string().nullable(),
|
|
827
|
+
public_urls: import_zod7.z.array(CvmNetworkUrlsSchema)
|
|
545
828
|
}).partial();
|
|
546
|
-
var CvmLegacyDetailSchema =
|
|
547
|
-
id:
|
|
548
|
-
name:
|
|
549
|
-
status:
|
|
550
|
-
in_progress:
|
|
551
|
-
teepod_id:
|
|
829
|
+
var CvmLegacyDetailSchema = import_zod7.z.object({
|
|
830
|
+
id: import_zod7.z.number(),
|
|
831
|
+
name: import_zod7.z.string(),
|
|
832
|
+
status: import_zod7.z.string(),
|
|
833
|
+
in_progress: import_zod7.z.boolean(),
|
|
834
|
+
teepod_id: import_zod7.z.number().nullable(),
|
|
552
835
|
teepod: CvmNodeSchema,
|
|
553
|
-
app_id:
|
|
554
|
-
vm_uuid:
|
|
555
|
-
instance_id:
|
|
556
|
-
vcpu:
|
|
557
|
-
memory:
|
|
558
|
-
disk_size:
|
|
559
|
-
base_image:
|
|
560
|
-
encrypted_env_pubkey:
|
|
561
|
-
listed:
|
|
562
|
-
project_id:
|
|
563
|
-
project_type:
|
|
564
|
-
public_sysinfo:
|
|
565
|
-
public_logs:
|
|
566
|
-
dapp_dashboard_url:
|
|
567
|
-
syslog_endpoint:
|
|
836
|
+
app_id: import_zod7.z.string(),
|
|
837
|
+
vm_uuid: import_zod7.z.string().nullable(),
|
|
838
|
+
instance_id: import_zod7.z.string().nullable(),
|
|
839
|
+
vcpu: import_zod7.z.number().nullable(),
|
|
840
|
+
memory: import_zod7.z.number().nullable(),
|
|
841
|
+
disk_size: import_zod7.z.number().nullable(),
|
|
842
|
+
base_image: import_zod7.z.string(),
|
|
843
|
+
encrypted_env_pubkey: import_zod7.z.string().nullable(),
|
|
844
|
+
listed: import_zod7.z.boolean(),
|
|
845
|
+
project_id: import_zod7.z.string().nullable(),
|
|
846
|
+
project_type: import_zod7.z.string().nullable(),
|
|
847
|
+
public_sysinfo: import_zod7.z.boolean(),
|
|
848
|
+
public_logs: import_zod7.z.boolean(),
|
|
849
|
+
dapp_dashboard_url: import_zod7.z.string().nullable(),
|
|
850
|
+
syslog_endpoint: import_zod7.z.string().nullable(),
|
|
568
851
|
kms_info: KmsInfoSchema.nullable(),
|
|
569
|
-
contract_address:
|
|
570
|
-
deployer_address:
|
|
571
|
-
scheduled_delete_at:
|
|
572
|
-
public_urls:
|
|
573
|
-
gateway_domain:
|
|
852
|
+
contract_address: import_zod7.z.string().nullable(),
|
|
853
|
+
deployer_address: import_zod7.z.string().nullable(),
|
|
854
|
+
scheduled_delete_at: import_zod7.z.string().nullable(),
|
|
855
|
+
public_urls: import_zod7.z.array(CvmNetworkUrlsSchema),
|
|
856
|
+
gateway_domain: import_zod7.z.string().nullable()
|
|
574
857
|
});
|
|
575
858
|
|
|
576
|
-
// src/actions/
|
|
577
|
-
var
|
|
859
|
+
// src/actions/cvms/get_cvm_info.ts
|
|
860
|
+
var GetCvmInfoRequestSchema = import_zod8.z.object({
|
|
861
|
+
id: import_zod8.z.string().optional(),
|
|
862
|
+
uuid: import_zod8.z.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(),
|
|
863
|
+
app_id: import_zod8.z.string().refine(
|
|
864
|
+
(val) => !val.startsWith("app_") && val.length === 40,
|
|
865
|
+
"app_id should be 40 characters without prefix"
|
|
866
|
+
).transform((val) => val.startsWith("app_") ? val : `app_${val}`).optional(),
|
|
867
|
+
instance_id: import_zod8.z.string().refine(
|
|
868
|
+
(val) => !val.startsWith("instance_") && val.length === 40,
|
|
869
|
+
"instance_id should be 40 characters without prefix"
|
|
870
|
+
).transform((val) => val.startsWith("instance_") ? val : `instance_${val}`).optional()
|
|
871
|
+
}).refine(
|
|
872
|
+
(data) => !!(data.id || data.uuid || data.app_id || data.instance_id),
|
|
873
|
+
"One of id, uuid, app_id, or instance_id must be provided"
|
|
874
|
+
).transform((data) => ({
|
|
875
|
+
cvmId: data.id || data.uuid || data.app_id || data.instance_id,
|
|
876
|
+
_raw: data
|
|
877
|
+
}));
|
|
878
|
+
var { action: getCvmInfo, safeAction: safeGetCvmInfo } = defineAction(CvmLegacyDetailSchema, async (client, request) => {
|
|
879
|
+
const validatedRequest = GetCvmInfoRequestSchema.parse(request);
|
|
880
|
+
return await client.get(`/cvms/${validatedRequest.cvmId}`);
|
|
881
|
+
});
|
|
882
|
+
|
|
883
|
+
// src/actions/cvms/get_cvm_list.ts
|
|
884
|
+
var import_zod9 = require("zod");
|
|
885
|
+
var GetCvmListRequestSchema = import_zod9.z.object({
|
|
886
|
+
page: import_zod9.z.number().int().min(1).optional(),
|
|
887
|
+
page_size: import_zod9.z.number().int().min(1).optional(),
|
|
888
|
+
node_id: import_zod9.z.number().int().min(1).optional()
|
|
889
|
+
}).strict();
|
|
890
|
+
var GetCvmListSchema = import_zod9.z.object({
|
|
891
|
+
items: import_zod9.z.array(CvmInfoSchema),
|
|
892
|
+
total: import_zod9.z.number(),
|
|
893
|
+
page: import_zod9.z.number(),
|
|
894
|
+
page_size: import_zod9.z.number(),
|
|
895
|
+
pages: import_zod9.z.number()
|
|
896
|
+
}).strict();
|
|
897
|
+
var { action: getCvmList, safeAction: safeGetCvmList } = defineAction(GetCvmListSchema, async (client, request) => {
|
|
898
|
+
const validatedRequest = GetCvmListRequestSchema.parse(request ?? {});
|
|
899
|
+
return await client.get("/cvms/paginated", { params: validatedRequest });
|
|
900
|
+
});
|
|
901
|
+
|
|
902
|
+
// src/actions/cvms/provision_cvm.ts
|
|
903
|
+
var import_zod10 = require("zod");
|
|
904
|
+
var ProvisionCvmSchema = import_zod10.z.object({
|
|
905
|
+
app_id: import_zod10.z.string().nullable().optional(),
|
|
906
|
+
app_env_encrypt_pubkey: import_zod10.z.string().nullable().optional(),
|
|
907
|
+
compose_hash: import_zod10.z.string(),
|
|
908
|
+
fmspc: import_zod10.z.string().nullable().optional(),
|
|
909
|
+
device_id: import_zod10.z.string().nullable().optional(),
|
|
910
|
+
os_image_hash: import_zod10.z.string().nullable().optional(),
|
|
911
|
+
teepod_id: import_zod10.z.number().nullable().optional(),
|
|
912
|
+
// Will be transformed to node_id
|
|
913
|
+
node_id: import_zod10.z.number().nullable().optional(),
|
|
914
|
+
kms_id: import_zod10.z.string().nullable().optional()
|
|
915
|
+
}).passthrough().transform((data) => {
|
|
916
|
+
if ("teepod_id" in data && data.teepod_id !== void 0) {
|
|
917
|
+
const { teepod_id, ...rest } = data;
|
|
918
|
+
return { ...rest, node_id: teepod_id };
|
|
919
|
+
}
|
|
920
|
+
return data;
|
|
921
|
+
});
|
|
922
|
+
var ProvisionCvmRequestSchema = import_zod10.z.object({
|
|
923
|
+
node_id: import_zod10.z.number().optional(),
|
|
924
|
+
// recommended
|
|
925
|
+
teepod_id: import_zod10.z.number().optional(),
|
|
926
|
+
// deprecated, for compatibility
|
|
927
|
+
name: import_zod10.z.string(),
|
|
928
|
+
image: import_zod10.z.string(),
|
|
929
|
+
vcpu: import_zod10.z.number(),
|
|
930
|
+
memory: import_zod10.z.number(),
|
|
931
|
+
disk_size: import_zod10.z.number(),
|
|
932
|
+
compose_file: import_zod10.z.object({
|
|
933
|
+
allowed_envs: import_zod10.z.array(import_zod10.z.string()).optional(),
|
|
934
|
+
pre_launch_script: import_zod10.z.string().optional(),
|
|
935
|
+
docker_compose_file: import_zod10.z.string().optional(),
|
|
936
|
+
name: import_zod10.z.string().optional(),
|
|
937
|
+
kms_enabled: import_zod10.z.boolean().optional(),
|
|
938
|
+
public_logs: import_zod10.z.boolean().optional(),
|
|
939
|
+
public_sysinfo: import_zod10.z.boolean().optional(),
|
|
940
|
+
gateway_enabled: import_zod10.z.boolean().optional(),
|
|
941
|
+
// recommended
|
|
942
|
+
tproxy_enabled: import_zod10.z.boolean().optional()
|
|
943
|
+
// deprecated, for compatibility
|
|
944
|
+
}),
|
|
945
|
+
listed: import_zod10.z.boolean().optional(),
|
|
946
|
+
instance_type: import_zod10.z.string().nullable().optional(),
|
|
947
|
+
kms_id: import_zod10.z.string().optional(),
|
|
948
|
+
env_keys: import_zod10.z.array(import_zod10.z.string()).optional()
|
|
949
|
+
}).passthrough();
|
|
950
|
+
function autofillComposeFileName(appCompose) {
|
|
951
|
+
if (appCompose.compose_file && !appCompose.compose_file.name) {
|
|
952
|
+
return {
|
|
953
|
+
...appCompose,
|
|
954
|
+
compose_file: {
|
|
955
|
+
...appCompose.compose_file,
|
|
956
|
+
name: appCompose.name
|
|
957
|
+
}
|
|
958
|
+
};
|
|
959
|
+
}
|
|
960
|
+
return appCompose;
|
|
961
|
+
}
|
|
962
|
+
function handleGatewayCompatibility(appCompose) {
|
|
963
|
+
if (!appCompose.compose_file) {
|
|
964
|
+
return appCompose;
|
|
965
|
+
}
|
|
966
|
+
const composeFile = { ...appCompose.compose_file };
|
|
967
|
+
if (typeof composeFile.gateway_enabled === "boolean" && typeof composeFile.tproxy_enabled === "boolean") {
|
|
968
|
+
delete composeFile.tproxy_enabled;
|
|
969
|
+
} else if (typeof composeFile.tproxy_enabled === "boolean" && typeof composeFile.gateway_enabled === "undefined") {
|
|
970
|
+
composeFile.gateway_enabled = composeFile.tproxy_enabled;
|
|
971
|
+
delete composeFile.tproxy_enabled;
|
|
972
|
+
if (typeof window !== "undefined" ? window.console : globalThis.console) {
|
|
973
|
+
console.warn(
|
|
974
|
+
"[phala/cloud] tproxy_enabled is deprecated, please use gateway_enabled instead. See docs for migration."
|
|
975
|
+
);
|
|
976
|
+
}
|
|
977
|
+
}
|
|
978
|
+
return {
|
|
979
|
+
...appCompose,
|
|
980
|
+
compose_file: composeFile
|
|
981
|
+
};
|
|
982
|
+
}
|
|
983
|
+
var { action: provisionCvm, safeAction: safeProvisionCvm } = defineAction(ProvisionCvmSchema, async (client, appCompose) => {
|
|
984
|
+
const body = handleGatewayCompatibility(autofillComposeFileName(appCompose));
|
|
985
|
+
let requestBody = { ...body };
|
|
986
|
+
if (typeof body.node_id === "number") {
|
|
987
|
+
requestBody = { ...body, teepod_id: body.node_id };
|
|
988
|
+
delete requestBody.node_id;
|
|
989
|
+
} else if (typeof body.teepod_id === "number") {
|
|
990
|
+
console.warn("[phala/cloud] teepod_id is deprecated, please use node_id instead.");
|
|
991
|
+
}
|
|
992
|
+
return await client.post("/cvms/provision", requestBody);
|
|
993
|
+
});
|
|
994
|
+
|
|
995
|
+
// src/actions/cvms/commit_cvm_provision.ts
|
|
996
|
+
var import_zod11 = require("zod");
|
|
997
|
+
var CommitCvmProvisionSchema = import_zod11.z.object({
|
|
998
|
+
id: import_zod11.z.number(),
|
|
999
|
+
name: import_zod11.z.string(),
|
|
1000
|
+
status: import_zod11.z.string(),
|
|
1001
|
+
teepod_id: import_zod11.z.number(),
|
|
1002
|
+
teepod: import_zod11.z.object({
|
|
1003
|
+
id: import_zod11.z.number(),
|
|
1004
|
+
name: import_zod11.z.string()
|
|
1005
|
+
}).nullable(),
|
|
1006
|
+
user_id: import_zod11.z.number().nullable(),
|
|
1007
|
+
app_id: import_zod11.z.string().nullable(),
|
|
1008
|
+
vm_uuid: import_zod11.z.string().nullable(),
|
|
1009
|
+
instance_id: import_zod11.z.string().nullable(),
|
|
1010
|
+
app_url: import_zod11.z.string().nullable(),
|
|
1011
|
+
base_image: import_zod11.z.string().nullable(),
|
|
1012
|
+
vcpu: import_zod11.z.number(),
|
|
1013
|
+
memory: import_zod11.z.number(),
|
|
1014
|
+
disk_size: import_zod11.z.number(),
|
|
1015
|
+
manifest_version: import_zod11.z.number().nullable(),
|
|
1016
|
+
version: import_zod11.z.string().nullable(),
|
|
1017
|
+
runner: import_zod11.z.string().nullable(),
|
|
1018
|
+
docker_compose_file: import_zod11.z.string().nullable(),
|
|
1019
|
+
features: import_zod11.z.array(import_zod11.z.string()).nullable(),
|
|
1020
|
+
created_at: import_zod11.z.string(),
|
|
1021
|
+
encrypted_env_pubkey: import_zod11.z.string().nullable().optional(),
|
|
1022
|
+
app_auth_contract_address: import_zod11.z.string().nullable().optional(),
|
|
1023
|
+
deployer_address: import_zod11.z.string().nullable().optional()
|
|
1024
|
+
}).passthrough();
|
|
1025
|
+
var CommitCvmProvisionRequestSchema = import_zod11.z.object({
|
|
1026
|
+
encrypted_env: import_zod11.z.string().optional().nullable(),
|
|
1027
|
+
app_id: import_zod11.z.string(),
|
|
1028
|
+
compose_hash: import_zod11.z.string().optional(),
|
|
1029
|
+
kms_id: import_zod11.z.string().optional(),
|
|
1030
|
+
contract_address: import_zod11.z.string().optional(),
|
|
1031
|
+
deployer_address: import_zod11.z.string().optional(),
|
|
1032
|
+
env_keys: import_zod11.z.array(import_zod11.z.string()).optional().nullable()
|
|
1033
|
+
}).passthrough();
|
|
1034
|
+
var { action: commitCvmProvision, safeAction: safeCommitCvmProvision } = defineAction(CommitCvmProvisionSchema, async (client, payload) => {
|
|
1035
|
+
return await client.post("/cvms", payload);
|
|
1036
|
+
});
|
|
1037
|
+
|
|
1038
|
+
// src/actions/cvms/get_cvm_compose_file.ts
|
|
1039
|
+
var import_zod13 = require("zod");
|
|
1040
|
+
|
|
1041
|
+
// src/types/app_compose.ts
|
|
1042
|
+
var import_zod12 = require("zod");
|
|
1043
|
+
var LooseAppComposeSchema = import_zod12.z.object({
|
|
1044
|
+
allowed_envs: import_zod12.z.array(import_zod12.z.string()).optional(),
|
|
1045
|
+
docker_compose_file: import_zod12.z.string(),
|
|
1046
|
+
features: import_zod12.z.array(import_zod12.z.string()).optional(),
|
|
1047
|
+
name: import_zod12.z.string().optional(),
|
|
1048
|
+
manifest_version: import_zod12.z.number().optional(),
|
|
1049
|
+
kms_enabled: import_zod12.z.boolean().optional(),
|
|
1050
|
+
public_logs: import_zod12.z.boolean().optional(),
|
|
1051
|
+
public_sysinfo: import_zod12.z.boolean().optional(),
|
|
1052
|
+
tproxy_enabled: import_zod12.z.boolean().optional(),
|
|
1053
|
+
pre_launch_script: import_zod12.z.string().optional()
|
|
1054
|
+
}).passthrough();
|
|
1055
|
+
|
|
1056
|
+
// src/actions/cvms/get_cvm_compose_file.ts
|
|
1057
|
+
var GetCvmComposeFileRequestSchema = import_zod13.z.object({
|
|
1058
|
+
id: import_zod13.z.string().optional(),
|
|
1059
|
+
uuid: import_zod13.z.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(),
|
|
1060
|
+
app_id: import_zod13.z.string().refine(
|
|
1061
|
+
(val) => !val.startsWith("app_") && val.length === 40,
|
|
1062
|
+
"app_id should be 40 characters without prefix"
|
|
1063
|
+
).transform((val) => val.startsWith("app_") ? val : `app_${val}`).optional(),
|
|
1064
|
+
instance_id: import_zod13.z.string().refine(
|
|
1065
|
+
(val) => !val.startsWith("instance_") && val.length === 40,
|
|
1066
|
+
"instance_id should be 40 characters without prefix"
|
|
1067
|
+
).transform((val) => val.startsWith("instance_") ? val : `instance_${val}`).optional()
|
|
1068
|
+
}).refine(
|
|
1069
|
+
(data) => !!(data.id || data.uuid || data.app_id || data.instance_id),
|
|
1070
|
+
"One of id, uuid, app_id, or instance_id must be provided"
|
|
1071
|
+
).transform((data) => ({
|
|
1072
|
+
cvmId: data.id || data.uuid || data.app_id || data.instance_id,
|
|
1073
|
+
_raw: data
|
|
1074
|
+
}));
|
|
1075
|
+
var { action: getCvmComposeFile, safeAction: safeGetCvmComposeFile } = defineAction(LooseAppComposeSchema, async (client, request) => {
|
|
1076
|
+
const validatedRequest = GetCvmComposeFileRequestSchema.parse(request);
|
|
1077
|
+
return await client.get(`/cvms/${validatedRequest.cvmId}/compose_file`);
|
|
1078
|
+
});
|
|
1079
|
+
|
|
1080
|
+
// src/actions/cvms/provision_cvm_compose_file_update.ts
|
|
1081
|
+
var import_zod14 = require("zod");
|
|
1082
|
+
var ProvisionCvmComposeFileUpdateRequestSchema = import_zod14.z.object({
|
|
1083
|
+
id: import_zod14.z.string().optional(),
|
|
1084
|
+
uuid: import_zod14.z.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(),
|
|
1085
|
+
app_id: import_zod14.z.string().refine(
|
|
1086
|
+
(val) => !val.startsWith("app_") && val.length === 40,
|
|
1087
|
+
"app_id should be 40 characters without prefix"
|
|
1088
|
+
).transform((val) => val.startsWith("app_") ? val : `app_${val}`).optional(),
|
|
1089
|
+
instance_id: import_zod14.z.string().refine(
|
|
1090
|
+
(val) => !val.startsWith("instance_") && val.length === 40,
|
|
1091
|
+
"instance_id should be 40 characters without prefix"
|
|
1092
|
+
).transform((val) => val.startsWith("instance_") ? val : `instance_${val}`).optional(),
|
|
1093
|
+
app_compose: LooseAppComposeSchema,
|
|
1094
|
+
update_env_vars: import_zod14.z.boolean().optional().nullable()
|
|
1095
|
+
}).refine(
|
|
1096
|
+
(data) => !!(data.id || data.uuid || data.app_id || data.instance_id),
|
|
1097
|
+
"One of id, uuid, app_id, or instance_id must be provided"
|
|
1098
|
+
).transform((data) => ({
|
|
1099
|
+
cvmId: data.id || data.uuid || data.app_id || data.instance_id,
|
|
1100
|
+
request: data.app_compose,
|
|
1101
|
+
update_env_vars: data.update_env_vars,
|
|
1102
|
+
_raw: data
|
|
1103
|
+
}));
|
|
1104
|
+
var ProvisionCvmComposeFileUpdateResultSchema = import_zod14.z.object({
|
|
1105
|
+
app_id: import_zod14.z.string().nullable(),
|
|
1106
|
+
device_id: import_zod14.z.string().nullable(),
|
|
1107
|
+
compose_hash: import_zod14.z.string(),
|
|
1108
|
+
kms_info: KmsInfoSchema.nullable().optional()
|
|
1109
|
+
}).passthrough();
|
|
1110
|
+
var { action: provisionCvmComposeFileUpdate, safeAction: safeProvisionCvmComposeFileUpdate } = defineAction(ProvisionCvmComposeFileUpdateResultSchema, async (client, request) => {
|
|
1111
|
+
const validatedRequest = ProvisionCvmComposeFileUpdateRequestSchema.parse(request);
|
|
1112
|
+
return await client.post(
|
|
1113
|
+
`/cvms/${validatedRequest.cvmId}/compose_file/provision`,
|
|
1114
|
+
validatedRequest.request
|
|
1115
|
+
);
|
|
1116
|
+
});
|
|
1117
|
+
|
|
1118
|
+
// src/actions/cvms/commit_cvm_compose_file_update.ts
|
|
1119
|
+
var import_zod15 = require("zod");
|
|
1120
|
+
var CommitCvmComposeFileUpdateRequestSchema = import_zod15.z.object({
|
|
1121
|
+
id: import_zod15.z.string().optional(),
|
|
1122
|
+
uuid: import_zod15.z.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(),
|
|
1123
|
+
app_id: import_zod15.z.string().refine(
|
|
1124
|
+
(val) => !val.startsWith("app_") && val.length === 40,
|
|
1125
|
+
"app_id should be 40 characters without prefix"
|
|
1126
|
+
).transform((val) => val.startsWith("app_") ? val : `app_${val}`).optional(),
|
|
1127
|
+
instance_id: import_zod15.z.string().refine(
|
|
1128
|
+
(val) => !val.startsWith("instance_") && val.length === 40,
|
|
1129
|
+
"instance_id should be 40 characters without prefix"
|
|
1130
|
+
).transform((val) => val.startsWith("instance_") ? val : `instance_${val}`).optional(),
|
|
1131
|
+
compose_hash: import_zod15.z.string().min(1, "Compose hash is required"),
|
|
1132
|
+
encrypted_env: import_zod15.z.string().optional(),
|
|
1133
|
+
env_keys: import_zod15.z.array(import_zod15.z.string()).optional(),
|
|
1134
|
+
update_env_vars: import_zod15.z.boolean().optional().nullable()
|
|
1135
|
+
}).refine(
|
|
1136
|
+
(data) => !!(data.id || data.uuid || data.app_id || data.instance_id),
|
|
1137
|
+
"One of id, uuid, app_id, or instance_id must be provided"
|
|
1138
|
+
).transform((data) => ({
|
|
1139
|
+
cvmId: data.id || data.uuid || data.app_id || data.instance_id,
|
|
1140
|
+
compose_hash: data.compose_hash,
|
|
1141
|
+
encrypted_env: data.encrypted_env,
|
|
1142
|
+
env_keys: data.env_keys,
|
|
1143
|
+
update_env_vars: !!data.update_env_vars,
|
|
1144
|
+
_raw: data
|
|
1145
|
+
}));
|
|
1146
|
+
var CommitCvmComposeFileUpdateSchema = import_zod15.z.any().transform(() => void 0);
|
|
1147
|
+
var { action: commitCvmComposeFileUpdate, safeAction: safeCommitCvmComposeFileUpdate } = defineAction(
|
|
1148
|
+
CommitCvmComposeFileUpdateSchema,
|
|
1149
|
+
async (client, request) => {
|
|
1150
|
+
const validatedRequest = CommitCvmComposeFileUpdateRequestSchema.parse(request);
|
|
1151
|
+
return await client.patch(`/cvms/${validatedRequest.cvmId}/compose_file`, {
|
|
1152
|
+
compose_hash: validatedRequest.compose_hash,
|
|
1153
|
+
encrypted_env: validatedRequest.encrypted_env,
|
|
1154
|
+
env_keys: validatedRequest.env_keys
|
|
1155
|
+
});
|
|
1156
|
+
}
|
|
1157
|
+
);
|
|
1158
|
+
|
|
1159
|
+
// src/actions/kms/get_kms_info.ts
|
|
1160
|
+
var import_zod16 = require("zod");
|
|
1161
|
+
var GetKmsInfoRequestSchema = import_zod16.z.object({
|
|
1162
|
+
kms_id: import_zod16.z.string().min(1, "KMS ID is required")
|
|
1163
|
+
});
|
|
1164
|
+
var { action: getKmsInfo, safeAction: safeGetKmsInfo } = defineAction(KmsInfoSchema, async (client, request) => {
|
|
1165
|
+
const validatedRequest = GetKmsInfoRequestSchema.parse(request);
|
|
1166
|
+
return await client.get(`/kms/${validatedRequest.kms_id}`);
|
|
1167
|
+
});
|
|
1168
|
+
|
|
1169
|
+
// src/actions/kms/get_kms_list.ts
|
|
1170
|
+
var import_zod17 = require("zod");
|
|
1171
|
+
var GetKmsListRequestSchema = import_zod17.z.object({
|
|
1172
|
+
page: import_zod17.z.number().int().min(1).optional(),
|
|
1173
|
+
page_size: import_zod17.z.number().int().min(1).optional(),
|
|
1174
|
+
is_onchain: import_zod17.z.boolean().optional()
|
|
1175
|
+
}).strict();
|
|
1176
|
+
var GetKmsListSchema = import_zod17.z.object({
|
|
1177
|
+
items: import_zod17.z.array(KmsInfoSchema),
|
|
1178
|
+
total: import_zod17.z.number(),
|
|
1179
|
+
page: import_zod17.z.number(),
|
|
1180
|
+
page_size: import_zod17.z.number(),
|
|
1181
|
+
pages: import_zod17.z.number()
|
|
1182
|
+
}).strict();
|
|
1183
|
+
var { action: getKmsList, safeAction: safeGetKmsList } = defineAction(GetKmsListSchema, async (client, request) => {
|
|
1184
|
+
const validatedRequest = GetKmsListRequestSchema.parse(request ?? {});
|
|
1185
|
+
return await client.get("/kms", { params: validatedRequest });
|
|
1186
|
+
});
|
|
1187
|
+
|
|
1188
|
+
// src/actions/kms/get_app_env_encrypt_pubkey.ts
|
|
1189
|
+
var import_zod18 = require("zod");
|
|
1190
|
+
var GetAppEnvEncryptPubKeyRequestSchema = import_zod18.z.object({
|
|
1191
|
+
kms: import_zod18.z.string().min(1, "KMS ID or slug is required"),
|
|
1192
|
+
app_id: import_zod18.z.string().refine(
|
|
1193
|
+
(val) => val.length === 40 || val.startsWith("0x") && val.length === 42,
|
|
1194
|
+
"App ID must be exactly 40 characters or 42 characters with 0x prefix"
|
|
1195
|
+
)
|
|
1196
|
+
}).strict();
|
|
1197
|
+
var GetAppEnvEncryptPubKeySchema = import_zod18.z.object({
|
|
1198
|
+
public_key: import_zod18.z.string(),
|
|
1199
|
+
signature: import_zod18.z.string()
|
|
1200
|
+
}).strict();
|
|
1201
|
+
var { action: getAppEnvEncryptPubKey, safeAction: safeGetAppEnvEncryptPubKey } = defineAction(GetAppEnvEncryptPubKeySchema, async (client, payload) => {
|
|
1202
|
+
const validatedRequest = GetAppEnvEncryptPubKeyRequestSchema.parse(payload);
|
|
1203
|
+
return await client.get(`/kms/${validatedRequest.kms}/pubkey/${validatedRequest.app_id}`);
|
|
1204
|
+
});
|
|
1205
|
+
|
|
1206
|
+
// src/create-client.ts
|
|
1207
|
+
function createClient2(config = {}) {
|
|
1208
|
+
const client = createClient(config);
|
|
1209
|
+
const allActions = {
|
|
1210
|
+
getCurrentUser,
|
|
1211
|
+
safeGetCurrentUser,
|
|
1212
|
+
getAvailableNodes,
|
|
1213
|
+
safeGetAvailableNodes,
|
|
1214
|
+
listInstanceTypes,
|
|
1215
|
+
safeListInstanceTypes,
|
|
1216
|
+
listWorkspaces,
|
|
1217
|
+
safeListWorkspaces,
|
|
1218
|
+
getWorkspace,
|
|
1219
|
+
safeGetWorkspace,
|
|
1220
|
+
getCvmInfo,
|
|
1221
|
+
safeGetCvmInfo,
|
|
1222
|
+
getCvmList,
|
|
1223
|
+
safeGetCvmList,
|
|
1224
|
+
provisionCvm,
|
|
1225
|
+
safeProvisionCvm,
|
|
1226
|
+
commitCvmProvision,
|
|
1227
|
+
safeCommitCvmProvision,
|
|
1228
|
+
getCvmComposeFile,
|
|
1229
|
+
safeGetCvmComposeFile,
|
|
1230
|
+
provisionCvmComposeFileUpdate,
|
|
1231
|
+
safeProvisionCvmComposeFileUpdate,
|
|
1232
|
+
commitCvmComposeFileUpdate,
|
|
1233
|
+
safeCommitCvmComposeFileUpdate,
|
|
1234
|
+
getKmsInfo,
|
|
1235
|
+
safeGetKmsInfo,
|
|
1236
|
+
getKmsList,
|
|
1237
|
+
safeGetKmsList,
|
|
1238
|
+
getAppEnvEncryptPubKey,
|
|
1239
|
+
safeGetAppEnvEncryptPubKey
|
|
1240
|
+
};
|
|
1241
|
+
return client.extend(allActions);
|
|
1242
|
+
}
|
|
1243
|
+
|
|
1244
|
+
// src/actions/blockchains/deploy_app_auth.ts
|
|
1245
|
+
var import_zod19 = require("zod");
|
|
1246
|
+
var import_viem3 = require("viem");
|
|
1247
|
+
var import_accounts2 = require("viem/accounts");
|
|
578
1248
|
|
|
579
1249
|
// src/utils/index.ts
|
|
580
1250
|
var import_encrypt_env_vars = require("@phala/dstack-sdk/encrypt-env-vars");
|
|
@@ -589,56 +1259,24 @@ function getErrorMessage(error) {
|
|
|
589
1259
|
return error.detail[0]?.msg || "Validation error";
|
|
590
1260
|
}
|
|
591
1261
|
return "Validation error";
|
|
592
|
-
}
|
|
593
|
-
if (typeof error.detail === "object" && error.detail !== null) {
|
|
594
|
-
return JSON.stringify(error.detail);
|
|
595
|
-
}
|
|
596
|
-
return "Unknown error occurred";
|
|
597
|
-
}
|
|
598
|
-
|
|
599
|
-
// src/utils/as-hex.ts
|
|
600
|
-
var import_viem = require("viem");
|
|
601
|
-
function asHex(value) {
|
|
602
|
-
if (typeof value === "string") {
|
|
603
|
-
if (value.startsWith("0x") && (0, import_viem.isHex)(value)) {
|
|
604
|
-
return value;
|
|
605
|
-
} else if ((0, import_viem.isHex)(`0x${value}`)) {
|
|
606
|
-
return `0x${value}`;
|
|
607
|
-
}
|
|
608
|
-
}
|
|
609
|
-
throw new Error(`Invalid hex value: ${value}`);
|
|
610
|
-
}
|
|
611
|
-
|
|
612
|
-
// src/utils/validate-parameters.ts
|
|
613
|
-
function validateActionParameters(parameters) {
|
|
614
|
-
if (parameters?.schema !== void 0 && parameters?.schema !== false) {
|
|
615
|
-
if (typeof parameters.schema !== "object" || parameters.schema === null || !("parse" in parameters.schema) || typeof parameters.schema.parse !== "function") {
|
|
616
|
-
throw new Error("Invalid schema: must be a Zod schema object, false, or undefined");
|
|
617
|
-
}
|
|
618
|
-
}
|
|
619
|
-
}
|
|
620
|
-
function safeValidateActionParameters(parameters) {
|
|
621
|
-
if (parameters?.schema !== void 0 && parameters?.schema !== false) {
|
|
622
|
-
if (typeof parameters.schema !== "object" || parameters.schema === null || !("parse" in parameters.schema) || typeof parameters.schema.parse !== "function") {
|
|
623
|
-
return {
|
|
624
|
-
success: false,
|
|
625
|
-
error: {
|
|
626
|
-
name: "ZodError",
|
|
627
|
-
message: "Invalid schema: must be a Zod schema object, false, or undefined",
|
|
628
|
-
issues: [
|
|
629
|
-
{
|
|
630
|
-
code: "invalid_type",
|
|
631
|
-
expected: "object",
|
|
632
|
-
received: typeof parameters.schema,
|
|
633
|
-
path: ["schema"],
|
|
634
|
-
message: "Invalid schema: must be a Zod schema object, false, or undefined"
|
|
635
|
-
}
|
|
636
|
-
]
|
|
637
|
-
}
|
|
638
|
-
};
|
|
1262
|
+
}
|
|
1263
|
+
if (typeof error.detail === "object" && error.detail !== null) {
|
|
1264
|
+
return JSON.stringify(error.detail);
|
|
1265
|
+
}
|
|
1266
|
+
return "Unknown error occurred";
|
|
1267
|
+
}
|
|
1268
|
+
|
|
1269
|
+
// src/utils/as-hex.ts
|
|
1270
|
+
var import_viem = require("viem");
|
|
1271
|
+
function asHex(value) {
|
|
1272
|
+
if (typeof value === "string") {
|
|
1273
|
+
if (value.startsWith("0x") && (0, import_viem.isHex)(value)) {
|
|
1274
|
+
return value;
|
|
1275
|
+
} else if ((0, import_viem.isHex)(`0x${value}`)) {
|
|
1276
|
+
return `0x${value}`;
|
|
639
1277
|
}
|
|
640
1278
|
}
|
|
641
|
-
|
|
1279
|
+
throw new Error(`Invalid hex value: ${value}`);
|
|
642
1280
|
}
|
|
643
1281
|
|
|
644
1282
|
// src/utils/network.ts
|
|
@@ -1187,397 +1825,60 @@ async function switchToNetwork(provider, chainId) {
|
|
|
1187
1825
|
const errorObj = error;
|
|
1188
1826
|
if (errorObj.code === 4902) {
|
|
1189
1827
|
throw new NetworkError(
|
|
1190
|
-
`Network ${chainId} not found in wallet. Please add it manually.`,
|
|
1191
|
-
"NETWORK_NOT_FOUND",
|
|
1192
|
-
error
|
|
1193
|
-
);
|
|
1194
|
-
}
|
|
1195
|
-
throw new NetworkError(
|
|
1196
|
-
`Failed to switch network: ${errorObj.message || "Unknown error"}`,
|
|
1197
|
-
"NETWORK_SWITCH_FAILED",
|
|
1198
|
-
error
|
|
1199
|
-
);
|
|
1200
|
-
}
|
|
1201
|
-
}
|
|
1202
|
-
async function addNetwork(provider, config) {
|
|
1203
|
-
try {
|
|
1204
|
-
await provider.request({
|
|
1205
|
-
method: "wallet_addEthereumChain",
|
|
1206
|
-
params: [
|
|
1207
|
-
{
|
|
1208
|
-
chainId: `0x${config.chainId.toString(16)}`,
|
|
1209
|
-
chainName: config.name,
|
|
1210
|
-
rpcUrls: [config.rpcUrl],
|
|
1211
|
-
blockExplorerUrls: config.blockExplorer ? [config.blockExplorer] : void 0,
|
|
1212
|
-
nativeCurrency: {
|
|
1213
|
-
name: "ETH",
|
|
1214
|
-
symbol: "ETH",
|
|
1215
|
-
decimals: 18
|
|
1216
|
-
}
|
|
1217
|
-
}
|
|
1218
|
-
]
|
|
1219
|
-
});
|
|
1220
|
-
} catch (error) {
|
|
1221
|
-
const errorObj = error;
|
|
1222
|
-
throw new NetworkError(
|
|
1223
|
-
`Failed to add network: ${errorObj.message || "Unknown error"}`,
|
|
1224
|
-
"NETWORK_ADD_FAILED",
|
|
1225
|
-
error
|
|
1226
|
-
);
|
|
1227
|
-
}
|
|
1228
|
-
}
|
|
1229
|
-
async function autoCreateClients(chain, options = {}) {
|
|
1230
|
-
const { privateKey, rpcUrl, preferBrowser = false } = options;
|
|
1231
|
-
if (privateKey) {
|
|
1232
|
-
return createClientsFromPrivateKey(chain, privateKey, rpcUrl);
|
|
1233
|
-
}
|
|
1234
|
-
if (isBrowser() && (preferBrowser || !privateKey)) {
|
|
1235
|
-
return createClientsFromBrowser(chain, rpcUrl);
|
|
1236
|
-
}
|
|
1237
|
-
throw new WalletError(
|
|
1238
|
-
"No wallet connection method available. Provide a private key for server-side usage or use in browser environment.",
|
|
1239
|
-
"NO_CONNECTION_METHOD"
|
|
1240
|
-
);
|
|
1241
|
-
}
|
|
1242
|
-
|
|
1243
|
-
// src/actions/get_current_user.ts
|
|
1244
|
-
var CurrentUserSchema = import_zod4.z.object({
|
|
1245
|
-
username: import_zod4.z.string(),
|
|
1246
|
-
email: import_zod4.z.string(),
|
|
1247
|
-
credits: import_zod4.z.number(),
|
|
1248
|
-
granted_credits: import_zod4.z.number(),
|
|
1249
|
-
avatar: import_zod4.z.string(),
|
|
1250
|
-
team_name: import_zod4.z.string(),
|
|
1251
|
-
team_tier: import_zod4.z.string()
|
|
1252
|
-
}).passthrough();
|
|
1253
|
-
async function getCurrentUser(client, parameters) {
|
|
1254
|
-
validateActionParameters(parameters);
|
|
1255
|
-
const response = await client.get("/auth/me");
|
|
1256
|
-
if (parameters?.schema === false) {
|
|
1257
|
-
return response;
|
|
1258
|
-
}
|
|
1259
|
-
const schema = parameters?.schema || CurrentUserSchema;
|
|
1260
|
-
return schema.parse(response);
|
|
1261
|
-
}
|
|
1262
|
-
async function safeGetCurrentUser(client, parameters) {
|
|
1263
|
-
const parameterValidationError = safeValidateActionParameters(parameters);
|
|
1264
|
-
if (parameterValidationError) {
|
|
1265
|
-
return parameterValidationError;
|
|
1266
|
-
}
|
|
1267
|
-
const httpResult = await client.safeGet("/auth/me");
|
|
1268
|
-
if (!httpResult.success) {
|
|
1269
|
-
return httpResult;
|
|
1270
|
-
}
|
|
1271
|
-
if (parameters?.schema === false) {
|
|
1272
|
-
return { success: true, data: httpResult.data };
|
|
1273
|
-
}
|
|
1274
|
-
const schema = parameters?.schema || CurrentUserSchema;
|
|
1275
|
-
return schema.safeParse(httpResult.data);
|
|
1276
|
-
}
|
|
1277
|
-
|
|
1278
|
-
// src/actions/get_available_nodes.ts
|
|
1279
|
-
var import_zod5 = require("zod");
|
|
1280
|
-
|
|
1281
|
-
// src/utils/define-action.ts
|
|
1282
|
-
function defineSimpleAction(schema, fn) {
|
|
1283
|
-
function action(client, parameters) {
|
|
1284
|
-
return _actionImpl(client, parameters);
|
|
1285
|
-
}
|
|
1286
|
-
async function _actionImpl(client, parameters) {
|
|
1287
|
-
validateActionParameters(parameters);
|
|
1288
|
-
const response = await fn(client);
|
|
1289
|
-
if (parameters?.schema === false) {
|
|
1290
|
-
return response;
|
|
1291
|
-
}
|
|
1292
|
-
const actualSchema = parameters?.schema || schema;
|
|
1293
|
-
return actualSchema.parse(response);
|
|
1294
|
-
}
|
|
1295
|
-
function safeAction(client, parameters) {
|
|
1296
|
-
return _safeActionImpl(client, parameters);
|
|
1297
|
-
}
|
|
1298
|
-
async function _safeActionImpl(client, parameters) {
|
|
1299
|
-
const parameterValidationError = safeValidateActionParameters(parameters);
|
|
1300
|
-
if (parameterValidationError) {
|
|
1301
|
-
return parameterValidationError;
|
|
1302
|
-
}
|
|
1303
|
-
const httpResult = await (async () => {
|
|
1304
|
-
try {
|
|
1305
|
-
const data = await fn(client);
|
|
1306
|
-
return { success: true, data };
|
|
1307
|
-
} catch (error) {
|
|
1308
|
-
if (error && typeof error === "object" && "isRequestError" in error) {
|
|
1309
|
-
return { success: false, error };
|
|
1310
|
-
}
|
|
1311
|
-
if (error && typeof error === "object" && "issues" in error) {
|
|
1312
|
-
return { success: false, error };
|
|
1313
|
-
}
|
|
1314
|
-
return {
|
|
1315
|
-
success: false,
|
|
1316
|
-
error: {
|
|
1317
|
-
name: "Error",
|
|
1318
|
-
message: error instanceof Error ? error.message : String(error)
|
|
1319
|
-
}
|
|
1320
|
-
};
|
|
1321
|
-
}
|
|
1322
|
-
})();
|
|
1323
|
-
if (!httpResult.success) {
|
|
1324
|
-
return httpResult;
|
|
1325
|
-
}
|
|
1326
|
-
if (parameters?.schema === false) {
|
|
1327
|
-
return { success: true, data: httpResult.data };
|
|
1328
|
-
}
|
|
1329
|
-
const actualSchema = parameters?.schema || schema;
|
|
1330
|
-
return actualSchema.safeParse(httpResult.data);
|
|
1331
|
-
}
|
|
1332
|
-
return {
|
|
1333
|
-
action,
|
|
1334
|
-
safeAction
|
|
1335
|
-
};
|
|
1336
|
-
}
|
|
1337
|
-
function defineAction(schema, fn) {
|
|
1338
|
-
function action(client, ...args) {
|
|
1339
|
-
const [params, parameters] = args;
|
|
1340
|
-
return _actionImpl(client, params, parameters);
|
|
1341
|
-
}
|
|
1342
|
-
async function _actionImpl(client, params, parameters) {
|
|
1343
|
-
validateActionParameters(parameters);
|
|
1344
|
-
const response = await fn(client, params);
|
|
1345
|
-
if (parameters?.schema === false) {
|
|
1346
|
-
return response;
|
|
1347
|
-
}
|
|
1348
|
-
const actualSchema = parameters?.schema || schema;
|
|
1349
|
-
return actualSchema.parse(response);
|
|
1350
|
-
}
|
|
1351
|
-
function safeAction(client, ...args) {
|
|
1352
|
-
const [params, parameters] = args;
|
|
1353
|
-
return _safeActionImpl(client, params, parameters);
|
|
1354
|
-
}
|
|
1355
|
-
async function _safeActionImpl(client, params, parameters) {
|
|
1356
|
-
const parameterValidationError = safeValidateActionParameters(parameters);
|
|
1357
|
-
if (parameterValidationError) {
|
|
1358
|
-
return parameterValidationError;
|
|
1359
|
-
}
|
|
1360
|
-
const httpResult = await (async () => {
|
|
1361
|
-
try {
|
|
1362
|
-
const data = await fn(client, params);
|
|
1363
|
-
return { success: true, data };
|
|
1364
|
-
} catch (error) {
|
|
1365
|
-
if (error && typeof error === "object" && "isRequestError" in error) {
|
|
1366
|
-
return { success: false, error };
|
|
1367
|
-
}
|
|
1368
|
-
if (error && typeof error === "object" && "issues" in error) {
|
|
1369
|
-
return { success: false, error };
|
|
1370
|
-
}
|
|
1371
|
-
return {
|
|
1372
|
-
success: false,
|
|
1373
|
-
error: {
|
|
1374
|
-
name: "Error",
|
|
1375
|
-
message: error instanceof Error ? error.message : String(error)
|
|
1376
|
-
}
|
|
1377
|
-
};
|
|
1378
|
-
}
|
|
1379
|
-
})();
|
|
1380
|
-
if (!httpResult.success) {
|
|
1381
|
-
return httpResult;
|
|
1382
|
-
}
|
|
1383
|
-
if (parameters?.schema === false) {
|
|
1384
|
-
return { success: true, data: httpResult.data };
|
|
1385
|
-
}
|
|
1386
|
-
const actualSchema = parameters?.schema || schema;
|
|
1387
|
-
return actualSchema.safeParse(httpResult.data);
|
|
1388
|
-
}
|
|
1389
|
-
return {
|
|
1390
|
-
action,
|
|
1391
|
-
safeAction
|
|
1392
|
-
};
|
|
1393
|
-
}
|
|
1394
|
-
|
|
1395
|
-
// src/actions/get_available_nodes.ts
|
|
1396
|
-
var AvailableOSImageSchema = import_zod5.z.object({
|
|
1397
|
-
name: import_zod5.z.string(),
|
|
1398
|
-
is_dev: import_zod5.z.boolean(),
|
|
1399
|
-
version: import_zod5.z.union([
|
|
1400
|
-
import_zod5.z.tuple([import_zod5.z.number(), import_zod5.z.number(), import_zod5.z.number()]),
|
|
1401
|
-
import_zod5.z.tuple([import_zod5.z.number(), import_zod5.z.number(), import_zod5.z.number(), import_zod5.z.number()])
|
|
1402
|
-
]),
|
|
1403
|
-
os_image_hash: import_zod5.z.string().nullable().optional()
|
|
1404
|
-
}).passthrough();
|
|
1405
|
-
var TeepodCapacitySchema = import_zod5.z.object({
|
|
1406
|
-
teepod_id: import_zod5.z.number(),
|
|
1407
|
-
name: import_zod5.z.string(),
|
|
1408
|
-
listed: import_zod5.z.boolean(),
|
|
1409
|
-
resource_score: import_zod5.z.number(),
|
|
1410
|
-
remaining_vcpu: import_zod5.z.number(),
|
|
1411
|
-
remaining_memory: import_zod5.z.number(),
|
|
1412
|
-
remaining_cvm_slots: import_zod5.z.number(),
|
|
1413
|
-
images: import_zod5.z.array(AvailableOSImageSchema),
|
|
1414
|
-
support_onchain_kms: import_zod5.z.boolean().optional(),
|
|
1415
|
-
fmspc: import_zod5.z.string().nullable().optional(),
|
|
1416
|
-
device_id: import_zod5.z.string().nullable().optional(),
|
|
1417
|
-
region_identifier: import_zod5.z.string().nullable().optional(),
|
|
1418
|
-
default_kms: import_zod5.z.string().nullable().optional(),
|
|
1419
|
-
kms_list: import_zod5.z.array(import_zod5.z.string()).default([])
|
|
1420
|
-
}).passthrough();
|
|
1421
|
-
var ResourceThresholdSchema = import_zod5.z.object({
|
|
1422
|
-
max_instances: import_zod5.z.number().nullable().optional(),
|
|
1423
|
-
max_vcpu: import_zod5.z.number().nullable().optional(),
|
|
1424
|
-
max_memory: import_zod5.z.number().nullable().optional(),
|
|
1425
|
-
max_disk: import_zod5.z.number().nullable().optional()
|
|
1426
|
-
}).passthrough();
|
|
1427
|
-
var AvailableNodesSchema = import_zod5.z.object({
|
|
1428
|
-
tier: import_zod5.z.string(),
|
|
1429
|
-
// TeamTier is string enum
|
|
1430
|
-
capacity: ResourceThresholdSchema,
|
|
1431
|
-
nodes: import_zod5.z.array(TeepodCapacitySchema),
|
|
1432
|
-
kms_list: import_zod5.z.array(KmsInfoSchema)
|
|
1433
|
-
}).passthrough();
|
|
1434
|
-
var { action: getAvailableNodes, safeAction: safeGetAvailableNodes } = defineSimpleAction(
|
|
1435
|
-
AvailableNodesSchema,
|
|
1436
|
-
async (client) => {
|
|
1437
|
-
return await client.get("/teepods/available");
|
|
1438
|
-
}
|
|
1439
|
-
);
|
|
1440
|
-
|
|
1441
|
-
// src/actions/provision_cvm.ts
|
|
1442
|
-
var import_zod6 = require("zod");
|
|
1443
|
-
var ProvisionCvmSchema = import_zod6.z.object({
|
|
1444
|
-
app_id: import_zod6.z.string().nullable().optional(),
|
|
1445
|
-
app_env_encrypt_pubkey: import_zod6.z.string().nullable().optional(),
|
|
1446
|
-
compose_hash: import_zod6.z.string(),
|
|
1447
|
-
fmspc: import_zod6.z.string().nullable().optional(),
|
|
1448
|
-
device_id: import_zod6.z.string().nullable().optional(),
|
|
1449
|
-
os_image_hash: import_zod6.z.string().nullable().optional(),
|
|
1450
|
-
teepod_id: import_zod6.z.number().nullable().optional(),
|
|
1451
|
-
// Will be transformed to node_id
|
|
1452
|
-
node_id: import_zod6.z.number().nullable().optional(),
|
|
1453
|
-
kms_id: import_zod6.z.string().nullable().optional()
|
|
1454
|
-
}).passthrough().transform((data) => {
|
|
1455
|
-
if ("teepod_id" in data && data.teepod_id !== void 0) {
|
|
1456
|
-
const { teepod_id, ...rest } = data;
|
|
1457
|
-
return { ...rest, node_id: teepod_id };
|
|
1458
|
-
}
|
|
1459
|
-
return data;
|
|
1460
|
-
});
|
|
1461
|
-
var ProvisionCvmRequestSchema = import_zod6.z.object({
|
|
1462
|
-
node_id: import_zod6.z.number().optional(),
|
|
1463
|
-
// recommended
|
|
1464
|
-
teepod_id: import_zod6.z.number().optional(),
|
|
1465
|
-
// deprecated, for compatibility
|
|
1466
|
-
name: import_zod6.z.string(),
|
|
1467
|
-
image: import_zod6.z.string(),
|
|
1468
|
-
vcpu: import_zod6.z.number(),
|
|
1469
|
-
memory: import_zod6.z.number(),
|
|
1470
|
-
disk_size: import_zod6.z.number(),
|
|
1471
|
-
compose_file: import_zod6.z.object({
|
|
1472
|
-
allowed_envs: import_zod6.z.array(import_zod6.z.string()).optional(),
|
|
1473
|
-
pre_launch_script: import_zod6.z.string().optional(),
|
|
1474
|
-
docker_compose_file: import_zod6.z.string().optional(),
|
|
1475
|
-
name: import_zod6.z.string().optional(),
|
|
1476
|
-
kms_enabled: import_zod6.z.boolean().optional(),
|
|
1477
|
-
public_logs: import_zod6.z.boolean().optional(),
|
|
1478
|
-
public_sysinfo: import_zod6.z.boolean().optional(),
|
|
1479
|
-
gateway_enabled: import_zod6.z.boolean().optional(),
|
|
1480
|
-
// recommended
|
|
1481
|
-
tproxy_enabled: import_zod6.z.boolean().optional()
|
|
1482
|
-
// deprecated, for compatibility
|
|
1483
|
-
}),
|
|
1484
|
-
listed: import_zod6.z.boolean().optional(),
|
|
1485
|
-
instance_type: import_zod6.z.string().nullable().optional(),
|
|
1486
|
-
kms_id: import_zod6.z.string().optional(),
|
|
1487
|
-
env_keys: import_zod6.z.array(import_zod6.z.string()).optional()
|
|
1488
|
-
}).passthrough();
|
|
1489
|
-
function autofillComposeFileName(appCompose) {
|
|
1490
|
-
if (appCompose.compose_file && !appCompose.compose_file.name) {
|
|
1491
|
-
return {
|
|
1492
|
-
...appCompose,
|
|
1493
|
-
compose_file: {
|
|
1494
|
-
...appCompose.compose_file,
|
|
1495
|
-
name: appCompose.name
|
|
1496
|
-
}
|
|
1497
|
-
};
|
|
1498
|
-
}
|
|
1499
|
-
return appCompose;
|
|
1500
|
-
}
|
|
1501
|
-
function handleGatewayCompatibility(appCompose) {
|
|
1502
|
-
if (!appCompose.compose_file) {
|
|
1503
|
-
return appCompose;
|
|
1504
|
-
}
|
|
1505
|
-
const composeFile = { ...appCompose.compose_file };
|
|
1506
|
-
if (typeof composeFile.gateway_enabled === "boolean" && typeof composeFile.tproxy_enabled === "boolean") {
|
|
1507
|
-
delete composeFile.tproxy_enabled;
|
|
1508
|
-
} else if (typeof composeFile.tproxy_enabled === "boolean" && typeof composeFile.gateway_enabled === "undefined") {
|
|
1509
|
-
composeFile.gateway_enabled = composeFile.tproxy_enabled;
|
|
1510
|
-
delete composeFile.tproxy_enabled;
|
|
1511
|
-
if (typeof window !== "undefined" ? window.console : globalThis.console) {
|
|
1512
|
-
console.warn(
|
|
1513
|
-
"[phala/cloud] tproxy_enabled is deprecated, please use gateway_enabled instead. See docs for migration."
|
|
1828
|
+
`Network ${chainId} not found in wallet. Please add it manually.`,
|
|
1829
|
+
"NETWORK_NOT_FOUND",
|
|
1830
|
+
error
|
|
1514
1831
|
);
|
|
1515
1832
|
}
|
|
1833
|
+
throw new NetworkError(
|
|
1834
|
+
`Failed to switch network: ${errorObj.message || "Unknown error"}`,
|
|
1835
|
+
"NETWORK_SWITCH_FAILED",
|
|
1836
|
+
error
|
|
1837
|
+
);
|
|
1516
1838
|
}
|
|
1517
|
-
return {
|
|
1518
|
-
...appCompose,
|
|
1519
|
-
compose_file: composeFile
|
|
1520
|
-
};
|
|
1521
1839
|
}
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1840
|
+
async function addNetwork(provider, config) {
|
|
1841
|
+
try {
|
|
1842
|
+
await provider.request({
|
|
1843
|
+
method: "wallet_addEthereumChain",
|
|
1844
|
+
params: [
|
|
1845
|
+
{
|
|
1846
|
+
chainId: `0x${config.chainId.toString(16)}`,
|
|
1847
|
+
chainName: config.name,
|
|
1848
|
+
rpcUrls: [config.rpcUrl],
|
|
1849
|
+
blockExplorerUrls: config.blockExplorer ? [config.blockExplorer] : void 0,
|
|
1850
|
+
nativeCurrency: {
|
|
1851
|
+
name: "ETH",
|
|
1852
|
+
symbol: "ETH",
|
|
1853
|
+
decimals: 18
|
|
1854
|
+
}
|
|
1855
|
+
}
|
|
1856
|
+
]
|
|
1857
|
+
});
|
|
1858
|
+
} catch (error) {
|
|
1859
|
+
const errorObj = error;
|
|
1860
|
+
throw new NetworkError(
|
|
1861
|
+
`Failed to add network: ${errorObj.message || "Unknown error"}`,
|
|
1862
|
+
"NETWORK_ADD_FAILED",
|
|
1863
|
+
error
|
|
1864
|
+
);
|
|
1530
1865
|
}
|
|
1531
|
-
|
|
1532
|
-
})
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
user_id: import_zod7.z.number().nullable(),
|
|
1546
|
-
app_id: import_zod7.z.string().nullable(),
|
|
1547
|
-
vm_uuid: import_zod7.z.string().nullable(),
|
|
1548
|
-
instance_id: import_zod7.z.string().nullable(),
|
|
1549
|
-
app_url: import_zod7.z.string().nullable(),
|
|
1550
|
-
base_image: import_zod7.z.string().nullable(),
|
|
1551
|
-
vcpu: import_zod7.z.number(),
|
|
1552
|
-
memory: import_zod7.z.number(),
|
|
1553
|
-
disk_size: import_zod7.z.number(),
|
|
1554
|
-
manifest_version: import_zod7.z.number().nullable(),
|
|
1555
|
-
version: import_zod7.z.string().nullable(),
|
|
1556
|
-
runner: import_zod7.z.string().nullable(),
|
|
1557
|
-
docker_compose_file: import_zod7.z.string().nullable(),
|
|
1558
|
-
features: import_zod7.z.array(import_zod7.z.string()).nullable(),
|
|
1559
|
-
created_at: import_zod7.z.string(),
|
|
1560
|
-
encrypted_env_pubkey: import_zod7.z.string().nullable().optional(),
|
|
1561
|
-
app_auth_contract_address: import_zod7.z.string().nullable().optional(),
|
|
1562
|
-
deployer_address: import_zod7.z.string().nullable().optional()
|
|
1563
|
-
}).passthrough();
|
|
1564
|
-
var CommitCvmProvisionRequestSchema = import_zod7.z.object({
|
|
1565
|
-
encrypted_env: import_zod7.z.string().optional().nullable(),
|
|
1566
|
-
app_id: import_zod7.z.string(),
|
|
1567
|
-
compose_hash: import_zod7.z.string().optional(),
|
|
1568
|
-
kms_id: import_zod7.z.string().optional(),
|
|
1569
|
-
contract_address: import_zod7.z.string().optional(),
|
|
1570
|
-
deployer_address: import_zod7.z.string().optional(),
|
|
1571
|
-
env_keys: import_zod7.z.array(import_zod7.z.string()).optional().nullable()
|
|
1572
|
-
}).passthrough();
|
|
1573
|
-
var { action: commitCvmProvision, safeAction: safeCommitCvmProvision } = defineAction(CommitCvmProvisionSchema, async (client, payload) => {
|
|
1574
|
-
return await client.post("/cvms", payload);
|
|
1575
|
-
});
|
|
1866
|
+
}
|
|
1867
|
+
async function autoCreateClients(chain, options = {}) {
|
|
1868
|
+
const { privateKey, rpcUrl, preferBrowser = false } = options;
|
|
1869
|
+
if (privateKey) {
|
|
1870
|
+
return createClientsFromPrivateKey(chain, privateKey, rpcUrl);
|
|
1871
|
+
}
|
|
1872
|
+
if (isBrowser() && (preferBrowser || !privateKey)) {
|
|
1873
|
+
return createClientsFromBrowser(chain, rpcUrl);
|
|
1874
|
+
}
|
|
1875
|
+
throw new WalletError(
|
|
1876
|
+
"No wallet connection method available. Provide a private key for server-side usage or use in browser environment.",
|
|
1877
|
+
"NO_CONNECTION_METHOD"
|
|
1878
|
+
);
|
|
1879
|
+
}
|
|
1576
1880
|
|
|
1577
|
-
// src/actions/deploy_app_auth.ts
|
|
1578
|
-
var import_zod8 = require("zod");
|
|
1579
|
-
var import_viem3 = require("viem");
|
|
1580
|
-
var import_accounts2 = require("viem/accounts");
|
|
1881
|
+
// src/actions/blockchains/deploy_app_auth.ts
|
|
1581
1882
|
var kmsAuthAbi = [
|
|
1582
1883
|
{
|
|
1583
1884
|
inputs: [
|
|
@@ -1608,25 +1909,25 @@ var kmsAuthAbi = [
|
|
|
1608
1909
|
anonymous: false
|
|
1609
1910
|
}
|
|
1610
1911
|
];
|
|
1611
|
-
var DeployAppAuthRequestBaseSchema =
|
|
1912
|
+
var DeployAppAuthRequestBaseSchema = import_zod19.z.object({
|
|
1612
1913
|
// Chain configuration (conditionally required)
|
|
1613
|
-
chain:
|
|
1614
|
-
rpcUrl:
|
|
1914
|
+
chain: import_zod19.z.unknown().optional(),
|
|
1915
|
+
rpcUrl: import_zod19.z.string().optional(),
|
|
1615
1916
|
// Contract configuration (required)
|
|
1616
|
-
kmsContractAddress:
|
|
1917
|
+
kmsContractAddress: import_zod19.z.string(),
|
|
1617
1918
|
// Authentication mode: either privateKey OR walletClient (required, mutually exclusive)
|
|
1618
|
-
privateKey:
|
|
1619
|
-
walletClient:
|
|
1919
|
+
privateKey: import_zod19.z.string().optional(),
|
|
1920
|
+
walletClient: import_zod19.z.unknown().optional(),
|
|
1620
1921
|
// Public client (optional, will create default if not provided)
|
|
1621
|
-
publicClient:
|
|
1922
|
+
publicClient: import_zod19.z.unknown().optional(),
|
|
1622
1923
|
// App configuration (optional)
|
|
1623
|
-
allowAnyDevice:
|
|
1624
|
-
deviceId:
|
|
1625
|
-
composeHash:
|
|
1626
|
-
disableUpgrades:
|
|
1924
|
+
allowAnyDevice: import_zod19.z.boolean().optional().default(false),
|
|
1925
|
+
deviceId: import_zod19.z.string().optional().default("0000000000000000000000000000000000000000000000000000000000000000"),
|
|
1926
|
+
composeHash: import_zod19.z.string().optional().default("0000000000000000000000000000000000000000000000000000000000000000"),
|
|
1927
|
+
disableUpgrades: import_zod19.z.boolean().optional().default(false),
|
|
1627
1928
|
// Validation configuration (optional)
|
|
1628
|
-
skipPrerequisiteChecks:
|
|
1629
|
-
minBalance:
|
|
1929
|
+
skipPrerequisiteChecks: import_zod19.z.boolean().optional().default(false),
|
|
1930
|
+
minBalance: import_zod19.z.string().optional()
|
|
1630
1931
|
// ETH amount as string, e.g., "0.01"
|
|
1631
1932
|
}).passthrough();
|
|
1632
1933
|
var DeployAppAuthRequestSchema = DeployAppAuthRequestBaseSchema.refine(
|
|
@@ -1654,13 +1955,13 @@ var DeployAppAuthRequestSchema = DeployAppAuthRequestBaseSchema.refine(
|
|
|
1654
1955
|
path: ["chain"]
|
|
1655
1956
|
}
|
|
1656
1957
|
);
|
|
1657
|
-
var DeployAppAuthSchema =
|
|
1658
|
-
appId:
|
|
1659
|
-
appAuthAddress:
|
|
1660
|
-
deployer:
|
|
1661
|
-
transactionHash:
|
|
1662
|
-
blockNumber:
|
|
1663
|
-
gasUsed:
|
|
1958
|
+
var DeployAppAuthSchema = import_zod19.z.object({
|
|
1959
|
+
appId: import_zod19.z.string(),
|
|
1960
|
+
appAuthAddress: import_zod19.z.string(),
|
|
1961
|
+
deployer: import_zod19.z.string(),
|
|
1962
|
+
transactionHash: import_zod19.z.string(),
|
|
1963
|
+
blockNumber: import_zod19.z.bigint().optional(),
|
|
1964
|
+
gasUsed: import_zod19.z.bigint().optional()
|
|
1664
1965
|
}).passthrough();
|
|
1665
1966
|
function parseDeploymentResult(receipt, deployer, kmsContractAddress) {
|
|
1666
1967
|
try {
|
|
@@ -1905,8 +2206,8 @@ async function safeDeployAppAuth(request, parameters) {
|
|
|
1905
2206
|
}
|
|
1906
2207
|
}
|
|
1907
2208
|
|
|
1908
|
-
// src/actions/add_compose_hash.ts
|
|
1909
|
-
var
|
|
2209
|
+
// src/actions/blockchains/add_compose_hash.ts
|
|
2210
|
+
var import_zod20 = require("zod");
|
|
1910
2211
|
var import_viem4 = require("viem");
|
|
1911
2212
|
var import_accounts3 = require("viem/accounts");
|
|
1912
2213
|
var appAuthAbi = [
|
|
@@ -1924,29 +2225,29 @@ var appAuthAbi = [
|
|
|
1924
2225
|
anonymous: false
|
|
1925
2226
|
}
|
|
1926
2227
|
];
|
|
1927
|
-
var AddComposeHashRequestSchema =
|
|
2228
|
+
var AddComposeHashRequestSchema = import_zod20.z.object({
|
|
1928
2229
|
// Chain configuration (conditionally required)
|
|
1929
|
-
chain:
|
|
1930
|
-
rpcUrl:
|
|
1931
|
-
appId:
|
|
1932
|
-
composeHash:
|
|
2230
|
+
chain: import_zod20.z.unknown().optional(),
|
|
2231
|
+
rpcUrl: import_zod20.z.string().optional(),
|
|
2232
|
+
appId: import_zod20.z.string(),
|
|
2233
|
+
composeHash: import_zod20.z.string(),
|
|
1933
2234
|
// Authentication mode: either privateKey OR walletClient (required, mutually exclusive)
|
|
1934
|
-
privateKey:
|
|
1935
|
-
walletClient:
|
|
2235
|
+
privateKey: import_zod20.z.string().optional(),
|
|
2236
|
+
walletClient: import_zod20.z.unknown().optional(),
|
|
1936
2237
|
// Public client (optional, will create default if not provided)
|
|
1937
|
-
publicClient:
|
|
2238
|
+
publicClient: import_zod20.z.unknown().optional(),
|
|
1938
2239
|
// Validation configuration (optional)
|
|
1939
|
-
skipPrerequisiteChecks:
|
|
1940
|
-
minBalance:
|
|
2240
|
+
skipPrerequisiteChecks: import_zod20.z.boolean().optional().default(false),
|
|
2241
|
+
minBalance: import_zod20.z.string().optional(),
|
|
1941
2242
|
// ETH amount as string, e.g., "0.01"
|
|
1942
2243
|
// Transaction control options
|
|
1943
|
-
timeout:
|
|
1944
|
-
retryOptions:
|
|
1945
|
-
signal:
|
|
2244
|
+
timeout: import_zod20.z.number().optional().default(12e4),
|
|
2245
|
+
retryOptions: import_zod20.z.unknown().optional(),
|
|
2246
|
+
signal: import_zod20.z.unknown().optional(),
|
|
1946
2247
|
// Progress callbacks
|
|
1947
|
-
onTransactionStateChange:
|
|
1948
|
-
onTransactionSubmitted:
|
|
1949
|
-
onTransactionConfirmed:
|
|
2248
|
+
onTransactionStateChange: import_zod20.z.function().optional(),
|
|
2249
|
+
onTransactionSubmitted: import_zod20.z.function().optional(),
|
|
2250
|
+
onTransactionConfirmed: import_zod20.z.function().optional()
|
|
1950
2251
|
}).passthrough().refine(
|
|
1951
2252
|
(data) => {
|
|
1952
2253
|
const hasPrivateKey = !!data.privateKey;
|
|
@@ -1970,12 +2271,12 @@ var AddComposeHashRequestSchema = import_zod9.z.object({
|
|
|
1970
2271
|
path: ["chain"]
|
|
1971
2272
|
}
|
|
1972
2273
|
);
|
|
1973
|
-
var AddComposeHashSchema =
|
|
1974
|
-
composeHash:
|
|
1975
|
-
appId:
|
|
1976
|
-
transactionHash:
|
|
1977
|
-
blockNumber:
|
|
1978
|
-
gasUsed:
|
|
2274
|
+
var AddComposeHashSchema = import_zod20.z.object({
|
|
2275
|
+
composeHash: import_zod20.z.string(),
|
|
2276
|
+
appId: import_zod20.z.string(),
|
|
2277
|
+
transactionHash: import_zod20.z.string(),
|
|
2278
|
+
blockNumber: import_zod20.z.bigint().optional(),
|
|
2279
|
+
gasUsed: import_zod20.z.bigint().optional()
|
|
1979
2280
|
}).passthrough();
|
|
1980
2281
|
function parseComposeHashResult(receipt, composeHash, appAuthAddress, appId) {
|
|
1981
2282
|
console.log(receipt.logs);
|
|
@@ -2166,282 +2467,6 @@ async function safeAddComposeHash(request, parameters) {
|
|
|
2166
2467
|
}
|
|
2167
2468
|
}
|
|
2168
2469
|
|
|
2169
|
-
// src/actions/get_cvm_compose_file.ts
|
|
2170
|
-
var import_zod11 = require("zod");
|
|
2171
|
-
|
|
2172
|
-
// src/types/app_compose.ts
|
|
2173
|
-
var import_zod10 = require("zod");
|
|
2174
|
-
var LooseAppComposeSchema = import_zod10.z.object({
|
|
2175
|
-
allowed_envs: import_zod10.z.array(import_zod10.z.string()).optional(),
|
|
2176
|
-
docker_compose_file: import_zod10.z.string(),
|
|
2177
|
-
features: import_zod10.z.array(import_zod10.z.string()).optional(),
|
|
2178
|
-
name: import_zod10.z.string().optional(),
|
|
2179
|
-
manifest_version: import_zod10.z.number().optional(),
|
|
2180
|
-
kms_enabled: import_zod10.z.boolean().optional(),
|
|
2181
|
-
public_logs: import_zod10.z.boolean().optional(),
|
|
2182
|
-
public_sysinfo: import_zod10.z.boolean().optional(),
|
|
2183
|
-
tproxy_enabled: import_zod10.z.boolean().optional(),
|
|
2184
|
-
pre_launch_script: import_zod10.z.string().optional()
|
|
2185
|
-
}).passthrough();
|
|
2186
|
-
|
|
2187
|
-
// src/actions/get_cvm_compose_file.ts
|
|
2188
|
-
var GetCvmComposeFileRequestSchema = import_zod11.z.object({
|
|
2189
|
-
id: import_zod11.z.string().optional(),
|
|
2190
|
-
uuid: import_zod11.z.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(),
|
|
2191
|
-
app_id: import_zod11.z.string().refine(
|
|
2192
|
-
(val) => !val.startsWith("app_") && val.length === 40,
|
|
2193
|
-
"app_id should be 40 characters without prefix"
|
|
2194
|
-
).transform((val) => val.startsWith("app_") ? val : `app_${val}`).optional(),
|
|
2195
|
-
instance_id: import_zod11.z.string().refine(
|
|
2196
|
-
(val) => !val.startsWith("instance_") && val.length === 40,
|
|
2197
|
-
"instance_id should be 40 characters without prefix"
|
|
2198
|
-
).transform((val) => val.startsWith("instance_") ? val : `instance_${val}`).optional()
|
|
2199
|
-
}).refine(
|
|
2200
|
-
(data) => !!(data.id || data.uuid || data.app_id || data.instance_id),
|
|
2201
|
-
"One of id, uuid, app_id, or instance_id must be provided"
|
|
2202
|
-
).transform((data) => ({
|
|
2203
|
-
cvmId: data.id || data.uuid || data.app_id || data.instance_id,
|
|
2204
|
-
_raw: data
|
|
2205
|
-
}));
|
|
2206
|
-
var { action: getCvmComposeFile, safeAction: safeGetCvmComposeFile } = defineAction(LooseAppComposeSchema, async (client, request) => {
|
|
2207
|
-
const validatedRequest = GetCvmComposeFileRequestSchema.parse(request);
|
|
2208
|
-
return await client.get(`/cvms/${validatedRequest.cvmId}/compose_file`);
|
|
2209
|
-
});
|
|
2210
|
-
|
|
2211
|
-
// src/actions/provision_cvm_compose_file_update.ts
|
|
2212
|
-
var import_zod12 = require("zod");
|
|
2213
|
-
var ProvisionCvmComposeFileUpdateRequestSchema = import_zod12.z.object({
|
|
2214
|
-
id: import_zod12.z.string().optional(),
|
|
2215
|
-
uuid: import_zod12.z.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(),
|
|
2216
|
-
app_id: import_zod12.z.string().refine(
|
|
2217
|
-
(val) => !val.startsWith("app_") && val.length === 40,
|
|
2218
|
-
"app_id should be 40 characters without prefix"
|
|
2219
|
-
).transform((val) => val.startsWith("app_") ? val : `app_${val}`).optional(),
|
|
2220
|
-
instance_id: import_zod12.z.string().refine(
|
|
2221
|
-
(val) => !val.startsWith("instance_") && val.length === 40,
|
|
2222
|
-
"instance_id should be 40 characters without prefix"
|
|
2223
|
-
).transform((val) => val.startsWith("instance_") ? val : `instance_${val}`).optional(),
|
|
2224
|
-
app_compose: LooseAppComposeSchema,
|
|
2225
|
-
update_env_vars: import_zod12.z.boolean().optional().nullable()
|
|
2226
|
-
}).refine(
|
|
2227
|
-
(data) => !!(data.id || data.uuid || data.app_id || data.instance_id),
|
|
2228
|
-
"One of id, uuid, app_id, or instance_id must be provided"
|
|
2229
|
-
).transform((data) => ({
|
|
2230
|
-
cvmId: data.id || data.uuid || data.app_id || data.instance_id,
|
|
2231
|
-
request: data.app_compose,
|
|
2232
|
-
update_env_vars: data.update_env_vars,
|
|
2233
|
-
_raw: data
|
|
2234
|
-
}));
|
|
2235
|
-
var ProvisionCvmComposeFileUpdateResultSchema = import_zod12.z.object({
|
|
2236
|
-
app_id: import_zod12.z.string().nullable(),
|
|
2237
|
-
device_id: import_zod12.z.string().nullable(),
|
|
2238
|
-
compose_hash: import_zod12.z.string(),
|
|
2239
|
-
kms_info: KmsInfoSchema.nullable().optional()
|
|
2240
|
-
}).passthrough();
|
|
2241
|
-
var { action: provisionCvmComposeFileUpdate, safeAction: safeProvisionCvmComposeFileUpdate } = defineAction(ProvisionCvmComposeFileUpdateResultSchema, async (client, request) => {
|
|
2242
|
-
const validatedRequest = ProvisionCvmComposeFileUpdateRequestSchema.parse(request);
|
|
2243
|
-
return await client.post(
|
|
2244
|
-
`/cvms/${validatedRequest.cvmId}/compose_file/provision`,
|
|
2245
|
-
validatedRequest.request
|
|
2246
|
-
);
|
|
2247
|
-
});
|
|
2248
|
-
|
|
2249
|
-
// src/actions/commit_cvm_compose_file_update.ts
|
|
2250
|
-
var import_zod13 = require("zod");
|
|
2251
|
-
var CommitCvmComposeFileUpdateRequestSchema = import_zod13.z.object({
|
|
2252
|
-
id: import_zod13.z.string().optional(),
|
|
2253
|
-
uuid: import_zod13.z.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(),
|
|
2254
|
-
app_id: import_zod13.z.string().refine(
|
|
2255
|
-
(val) => !val.startsWith("app_") && val.length === 40,
|
|
2256
|
-
"app_id should be 40 characters without prefix"
|
|
2257
|
-
).transform((val) => val.startsWith("app_") ? val : `app_${val}`).optional(),
|
|
2258
|
-
instance_id: import_zod13.z.string().refine(
|
|
2259
|
-
(val) => !val.startsWith("instance_") && val.length === 40,
|
|
2260
|
-
"instance_id should be 40 characters without prefix"
|
|
2261
|
-
).transform((val) => val.startsWith("instance_") ? val : `instance_${val}`).optional(),
|
|
2262
|
-
compose_hash: import_zod13.z.string().min(1, "Compose hash is required"),
|
|
2263
|
-
encrypted_env: import_zod13.z.string().optional(),
|
|
2264
|
-
env_keys: import_zod13.z.array(import_zod13.z.string()).optional(),
|
|
2265
|
-
update_env_vars: import_zod13.z.boolean().optional().nullable()
|
|
2266
|
-
}).refine(
|
|
2267
|
-
(data) => !!(data.id || data.uuid || data.app_id || data.instance_id),
|
|
2268
|
-
"One of id, uuid, app_id, or instance_id must be provided"
|
|
2269
|
-
).transform((data) => ({
|
|
2270
|
-
cvmId: data.id || data.uuid || data.app_id || data.instance_id,
|
|
2271
|
-
compose_hash: data.compose_hash,
|
|
2272
|
-
encrypted_env: data.encrypted_env,
|
|
2273
|
-
env_keys: data.env_keys,
|
|
2274
|
-
update_env_vars: !!data.update_env_vars,
|
|
2275
|
-
_raw: data
|
|
2276
|
-
}));
|
|
2277
|
-
var CommitCvmComposeFileUpdateSchema = import_zod13.z.any().transform(() => void 0);
|
|
2278
|
-
var { action: commitCvmComposeFileUpdate, safeAction: safeCommitCvmComposeFileUpdate } = defineAction(
|
|
2279
|
-
CommitCvmComposeFileUpdateSchema,
|
|
2280
|
-
async (client, request) => {
|
|
2281
|
-
const validatedRequest = CommitCvmComposeFileUpdateRequestSchema.parse(request);
|
|
2282
|
-
return await client.patch(`/cvms/${validatedRequest.cvmId}/compose_file`, {
|
|
2283
|
-
compose_hash: validatedRequest.compose_hash,
|
|
2284
|
-
encrypted_env: validatedRequest.encrypted_env,
|
|
2285
|
-
env_keys: validatedRequest.env_keys
|
|
2286
|
-
});
|
|
2287
|
-
}
|
|
2288
|
-
);
|
|
2289
|
-
|
|
2290
|
-
// src/actions/get_app_env_encrypt_pubkey.ts
|
|
2291
|
-
var import_zod14 = require("zod");
|
|
2292
|
-
var GetAppEnvEncryptPubKeyRequestSchema = import_zod14.z.object({
|
|
2293
|
-
kms: import_zod14.z.string().min(1, "KMS ID or slug is required"),
|
|
2294
|
-
app_id: import_zod14.z.string().refine(
|
|
2295
|
-
(val) => val.length === 40 || val.startsWith("0x") && val.length === 42,
|
|
2296
|
-
"App ID must be exactly 40 characters or 42 characters with 0x prefix"
|
|
2297
|
-
)
|
|
2298
|
-
}).strict();
|
|
2299
|
-
var GetAppEnvEncryptPubKeySchema = import_zod14.z.object({
|
|
2300
|
-
public_key: import_zod14.z.string(),
|
|
2301
|
-
signature: import_zod14.z.string()
|
|
2302
|
-
}).strict();
|
|
2303
|
-
var { action: getAppEnvEncryptPubKey, safeAction: safeGetAppEnvEncryptPubKey } = defineAction(GetAppEnvEncryptPubKeySchema, async (client, payload) => {
|
|
2304
|
-
const validatedRequest = GetAppEnvEncryptPubKeyRequestSchema.parse(payload);
|
|
2305
|
-
return await client.get(`/kms/${validatedRequest.kms}/pubkey/${validatedRequest.app_id}`);
|
|
2306
|
-
});
|
|
2307
|
-
|
|
2308
|
-
// src/actions/get_cvm_info.ts
|
|
2309
|
-
var import_zod15 = require("zod");
|
|
2310
|
-
var GetCvmInfoRequestSchema = import_zod15.z.object({
|
|
2311
|
-
id: import_zod15.z.string().optional(),
|
|
2312
|
-
uuid: import_zod15.z.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(),
|
|
2313
|
-
app_id: import_zod15.z.string().refine(
|
|
2314
|
-
(val) => !val.startsWith("app_") && val.length === 40,
|
|
2315
|
-
"app_id should be 40 characters without prefix"
|
|
2316
|
-
).transform((val) => val.startsWith("app_") ? val : `app_${val}`).optional(),
|
|
2317
|
-
instance_id: import_zod15.z.string().refine(
|
|
2318
|
-
(val) => !val.startsWith("instance_") && val.length === 40,
|
|
2319
|
-
"instance_id should be 40 characters without prefix"
|
|
2320
|
-
).transform((val) => val.startsWith("instance_") ? val : `instance_${val}`).optional()
|
|
2321
|
-
}).refine(
|
|
2322
|
-
(data) => !!(data.id || data.uuid || data.app_id || data.instance_id),
|
|
2323
|
-
"One of id, uuid, app_id, or instance_id must be provided"
|
|
2324
|
-
).transform((data) => ({
|
|
2325
|
-
cvmId: data.id || data.uuid || data.app_id || data.instance_id,
|
|
2326
|
-
_raw: data
|
|
2327
|
-
}));
|
|
2328
|
-
var { action: getCvmInfo, safeAction: safeGetCvmInfo } = defineAction(CvmLegacyDetailSchema, async (client, request) => {
|
|
2329
|
-
const validatedRequest = GetCvmInfoRequestSchema.parse(request);
|
|
2330
|
-
return await client.get(`/cvms/${validatedRequest.cvmId}`);
|
|
2331
|
-
});
|
|
2332
|
-
|
|
2333
|
-
// src/actions/get_cvm_list.ts
|
|
2334
|
-
var import_zod16 = require("zod");
|
|
2335
|
-
var GetCvmListRequestSchema = import_zod16.z.object({
|
|
2336
|
-
page: import_zod16.z.number().int().min(1).optional(),
|
|
2337
|
-
page_size: import_zod16.z.number().int().min(1).optional(),
|
|
2338
|
-
node_id: import_zod16.z.number().int().min(1).optional()
|
|
2339
|
-
}).strict();
|
|
2340
|
-
var GetCvmListSchema = import_zod16.z.object({
|
|
2341
|
-
items: import_zod16.z.array(CvmInfoSchema),
|
|
2342
|
-
total: import_zod16.z.number(),
|
|
2343
|
-
page: import_zod16.z.number(),
|
|
2344
|
-
page_size: import_zod16.z.number(),
|
|
2345
|
-
pages: import_zod16.z.number()
|
|
2346
|
-
}).strict();
|
|
2347
|
-
var { action: getCvmList, safeAction: safeGetCvmList } = defineAction(GetCvmListSchema, async (client, request) => {
|
|
2348
|
-
const validatedRequest = GetCvmListRequestSchema.parse(request ?? {});
|
|
2349
|
-
return await client.get("/cvms/paginated", { params: validatedRequest });
|
|
2350
|
-
});
|
|
2351
|
-
|
|
2352
|
-
// src/actions/get_kms_info.ts
|
|
2353
|
-
var import_zod17 = require("zod");
|
|
2354
|
-
var GetKmsInfoRequestSchema = import_zod17.z.object({
|
|
2355
|
-
kms_id: import_zod17.z.string().min(1, "KMS ID is required")
|
|
2356
|
-
});
|
|
2357
|
-
var { action: getKmsInfo, safeAction: safeGetKmsInfo } = defineAction(KmsInfoSchema, async (client, request) => {
|
|
2358
|
-
const validatedRequest = GetKmsInfoRequestSchema.parse(request);
|
|
2359
|
-
return await client.get(`/kms/${validatedRequest.kms_id}`);
|
|
2360
|
-
});
|
|
2361
|
-
|
|
2362
|
-
// src/actions/get_kms_list.ts
|
|
2363
|
-
var import_zod18 = require("zod");
|
|
2364
|
-
var GetKmsListRequestSchema = import_zod18.z.object({
|
|
2365
|
-
page: import_zod18.z.number().int().min(1).optional(),
|
|
2366
|
-
page_size: import_zod18.z.number().int().min(1).optional(),
|
|
2367
|
-
is_onchain: import_zod18.z.boolean().optional()
|
|
2368
|
-
}).strict();
|
|
2369
|
-
var GetKmsListSchema = import_zod18.z.object({
|
|
2370
|
-
items: import_zod18.z.array(KmsInfoSchema),
|
|
2371
|
-
total: import_zod18.z.number(),
|
|
2372
|
-
page: import_zod18.z.number(),
|
|
2373
|
-
page_size: import_zod18.z.number(),
|
|
2374
|
-
pages: import_zod18.z.number()
|
|
2375
|
-
}).strict();
|
|
2376
|
-
var { action: getKmsList, safeAction: safeGetKmsList } = defineAction(GetKmsListSchema, async (client, request) => {
|
|
2377
|
-
const validatedRequest = GetKmsListRequestSchema.parse(request ?? {});
|
|
2378
|
-
return await client.get("/kms", { params: validatedRequest });
|
|
2379
|
-
});
|
|
2380
|
-
|
|
2381
|
-
// src/actions/workspaces/list_workspaces.ts
|
|
2382
|
-
var import_zod19 = require("zod");
|
|
2383
|
-
var WorkspaceResponseSchema = import_zod19.z.object({
|
|
2384
|
-
id: import_zod19.z.string(),
|
|
2385
|
-
name: import_zod19.z.string(),
|
|
2386
|
-
slug: import_zod19.z.string().nullable(),
|
|
2387
|
-
tier: import_zod19.z.string(),
|
|
2388
|
-
role: import_zod19.z.string(),
|
|
2389
|
-
created_at: import_zod19.z.string()
|
|
2390
|
-
}).passthrough();
|
|
2391
|
-
var PaginationMetadataSchema = import_zod19.z.object({
|
|
2392
|
-
has_more: import_zod19.z.boolean(),
|
|
2393
|
-
next_cursor: import_zod19.z.string().nullable(),
|
|
2394
|
-
total: import_zod19.z.number().nullable()
|
|
2395
|
-
}).passthrough();
|
|
2396
|
-
var ListWorkspacesSchema = import_zod19.z.object({
|
|
2397
|
-
data: import_zod19.z.array(WorkspaceResponseSchema),
|
|
2398
|
-
pagination: PaginationMetadataSchema
|
|
2399
|
-
}).passthrough();
|
|
2400
|
-
var { action: listWorkspaces, safeAction: safeListWorkspaces } = defineAction(ListWorkspacesSchema, async (client, request) => {
|
|
2401
|
-
const queryParams = new URLSearchParams();
|
|
2402
|
-
if (request?.cursor) queryParams.append("cursor", request.cursor);
|
|
2403
|
-
if (request?.limit) queryParams.append("limit", request.limit.toString());
|
|
2404
|
-
const url = queryParams.toString() ? `/workspaces?${queryParams.toString()}` : "/workspaces";
|
|
2405
|
-
return await client.get(url);
|
|
2406
|
-
});
|
|
2407
|
-
|
|
2408
|
-
// src/actions/workspaces/get_workspace.ts
|
|
2409
|
-
var { action: getWorkspace, safeAction: safeGetWorkspace } = defineAction(WorkspaceResponseSchema, async (client, teamSlug) => {
|
|
2410
|
-
return await client.get(`/workspaces/${teamSlug}`);
|
|
2411
|
-
});
|
|
2412
|
-
|
|
2413
|
-
// src/actions/list-instance-types.ts
|
|
2414
|
-
var import_zod20 = require("zod");
|
|
2415
|
-
var ListInstanceTypesRequestSchema = import_zod20.z.object({
|
|
2416
|
-
page: import_zod20.z.number().int().min(1).optional().default(1),
|
|
2417
|
-
page_size: import_zod20.z.number().int().min(1).max(1e3).optional().default(100)
|
|
2418
|
-
}).strict();
|
|
2419
|
-
var InstanceTypeSchema = import_zod20.z.object({
|
|
2420
|
-
id: import_zod20.z.string(),
|
|
2421
|
-
name: import_zod20.z.string(),
|
|
2422
|
-
description: import_zod20.z.string(),
|
|
2423
|
-
vcpu: import_zod20.z.number(),
|
|
2424
|
-
memory_mb: import_zod20.z.number(),
|
|
2425
|
-
hourly_rate: import_zod20.z.string(),
|
|
2426
|
-
requires_gpu: import_zod20.z.boolean(),
|
|
2427
|
-
public: import_zod20.z.boolean(),
|
|
2428
|
-
enabled: import_zod20.z.boolean()
|
|
2429
|
-
}).passthrough();
|
|
2430
|
-
var PaginatedInstanceTypesSchema = import_zod20.z.object({
|
|
2431
|
-
items: import_zod20.z.array(InstanceTypeSchema),
|
|
2432
|
-
total: import_zod20.z.number(),
|
|
2433
|
-
page: import_zod20.z.number(),
|
|
2434
|
-
page_size: import_zod20.z.number(),
|
|
2435
|
-
pages: import_zod20.z.number()
|
|
2436
|
-
}).strict();
|
|
2437
|
-
var { action: listInstanceTypes, safeAction: safeListInstanceTypes } = defineAction(PaginatedInstanceTypesSchema, async (client, request) => {
|
|
2438
|
-
const validatedRequest = ListInstanceTypesRequestSchema.parse(request ?? {});
|
|
2439
|
-
const queryParams = new URLSearchParams();
|
|
2440
|
-
queryParams.append("page", validatedRequest.page.toString());
|
|
2441
|
-
queryParams.append("page_size", validatedRequest.page_size.toString());
|
|
2442
|
-
return await client.get(`/api/instance-types?${queryParams.toString()}`);
|
|
2443
|
-
});
|
|
2444
|
-
|
|
2445
2470
|
// src/parse_dotenv.ts
|
|
2446
2471
|
var LINE = /(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/gm;
|
|
2447
2472
|
function parseEnv(input) {
|
|
@@ -2528,6 +2553,7 @@ var import_verify_env_encrypt_public_key = require("@phala/dstack-sdk/verify-env
|
|
|
2528
2553
|
checkNetworkStatus,
|
|
2529
2554
|
commitCvmComposeFileUpdate,
|
|
2530
2555
|
commitCvmProvision,
|
|
2556
|
+
createBaseClient,
|
|
2531
2557
|
createClient,
|
|
2532
2558
|
createClientsFromBrowser,
|
|
2533
2559
|
createClientsFromPrivateKey,
|