@phala/cloud 0.2.1-beta.4 → 0.2.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.
Files changed (69) hide show
  1. package/LICENSE +201 -0
  2. package/dist/actions/apps/get_app_cvms.d.ts +30 -0
  3. package/dist/actions/apps/get_app_info.d.ts +30 -0
  4. package/dist/actions/apps/get_app_list.d.ts +74 -0
  5. package/dist/actions/apps/get_app_revision_detail.d.ts +48 -0
  6. package/dist/actions/apps/get_app_revisions.d.ts +42 -0
  7. package/dist/actions/cvms/commit_cvm_compose_file_update.d.ts +7 -7
  8. package/dist/actions/cvms/commit_cvm_provision.d.ts +31 -31
  9. package/dist/actions/cvms/delete_cvm.d.ts +10 -7
  10. package/dist/actions/cvms/get_available_os_images.d.ts +10 -7
  11. package/dist/actions/cvms/get_cvm_attestation.d.ts +10 -7
  12. package/dist/actions/cvms/get_cvm_compose_file.d.ts +18 -15
  13. package/dist/actions/cvms/get_cvm_containers_stats.d.ts +14 -11
  14. package/dist/actions/cvms/get_cvm_docker_compose.d.ts +10 -7
  15. package/dist/actions/cvms/get_cvm_info.d.ts +19 -35
  16. package/dist/actions/cvms/get_cvm_list.d.ts +11 -537
  17. package/dist/actions/cvms/get_cvm_network.d.ts +10 -7
  18. package/dist/actions/cvms/get_cvm_prelaunch_script.d.ts +42 -0
  19. package/dist/actions/cvms/get_cvm_state.d.ts +10 -7
  20. package/dist/actions/cvms/get_cvm_stats.d.ts +10 -7
  21. package/dist/actions/cvms/get_cvm_status_batch.d.ts +167 -0
  22. package/dist/actions/cvms/provision_cvm.d.ts +404 -21
  23. package/dist/actions/cvms/provision_cvm_compose_file_update.d.ts +32 -32
  24. package/dist/actions/cvms/restart_cvm.d.ts +17 -14
  25. package/dist/actions/cvms/shutdown_cvm.d.ts +18 -15
  26. package/dist/actions/cvms/start_cvm.d.ts +18 -15
  27. package/dist/actions/cvms/stop_cvm.d.ts +18 -15
  28. package/dist/actions/cvms/update_cvm_envs.d.ts +32 -118
  29. package/dist/actions/cvms/update_cvm_resources.d.ts +13 -10
  30. package/dist/actions/cvms/update_cvm_visibility.d.ts +33 -14
  31. package/dist/actions/cvms/update_docker_compose.d.ts +420 -0
  32. package/dist/actions/cvms/update_os_image.d.ts +9 -6
  33. package/dist/actions/cvms/update_prelaunch_script.d.ts +417 -0
  34. package/dist/actions/cvms/watch_cvm_state.d.ts +1 -1
  35. package/dist/actions/get_available_nodes.d.ts +6 -6
  36. package/dist/actions/get_current_user.d.ts +36 -89
  37. package/dist/actions/index.d.ts +13 -2
  38. package/dist/actions/kms/get_app_env_encrypt_pubkey.d.ts +6 -6
  39. package/dist/actions/kms/get_kms_info.d.ts +6 -6
  40. package/dist/actions/kms/get_kms_list.d.ts +6 -6
  41. package/dist/actions/kms/next_app_ids.d.ts +6 -6
  42. package/dist/actions/list-instance-types.d.ts +16 -16
  43. package/dist/actions/workspaces/get_workspace.d.ts +8 -6
  44. package/dist/actions/workspaces/get_workspace_nodes.d.ts +313 -0
  45. package/dist/actions/workspaces/get_workspace_quotas.d.ts +1169 -0
  46. package/dist/actions/workspaces/list_workspaces.d.ts +24 -6
  47. package/dist/client.d.ts +49 -9
  48. package/dist/create-client.d.ts +72 -36
  49. package/dist/credentials/current_user_v20251028.d.ts +30 -0
  50. package/dist/credentials/current_user_v20260121.d.ts +276 -0
  51. package/dist/credentials/index.d.ts +4 -0
  52. package/dist/index.d.ts +1 -0
  53. package/dist/index.js +1713 -664
  54. package/dist/index.mjs +1627 -657
  55. package/dist/types/app_info_v20251028.d.ts +1266 -0
  56. package/dist/types/app_info_v20260121.d.ts +3385 -0
  57. package/dist/types/app_revision.d.ts +453 -0
  58. package/dist/types/client.d.ts +41 -3
  59. package/dist/types/cvm_id.d.ts +29 -11
  60. package/dist/types/cvm_info.d.ts +16 -502
  61. package/dist/types/cvm_info_v20251028.d.ts +988 -0
  62. package/dist/types/cvm_info_v20260121.d.ts +1333 -0
  63. package/dist/types/index.d.ts +6 -0
  64. package/dist/types/version-mappings.d.ts +38 -0
  65. package/dist/utils/define-action.d.ts +15 -14
  66. package/dist/utils/errors.d.ts +2 -2
  67. package/dist/utils/hostname.d.ts +77 -0
  68. package/dist/utils/index.d.ts +1 -0
  69. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -33,33 +33,65 @@ __export(index_exports, {
33
33
  AddComposeHashSchema: () => AddComposeHashSchema,
34
34
  AllFamiliesResponseSchema: () => AllFamiliesResponseSchema,
35
35
  ApiErrorSchema: () => ApiErrorSchema,
36
+ AppRevisionDetailResponseSchema: () => AppRevisionDetailResponseSchema,
37
+ AppRevisionResponseSchema: () => AppRevisionResponseSchema,
38
+ AppRevisionsResponseSchema: () => AppRevisionsResponseSchema,
36
39
  AuthError: () => AuthError,
40
+ AuthResponseSchema: () => CurrentUserV20260121Schema,
37
41
  AvailableNodesSchema: () => AvailableNodesSchema,
42
+ BillingPeriodSchema: () => BillingPeriodSchema,
38
43
  BusinessError: () => BusinessError,
39
44
  CommitCvmComposeFileUpdateRequestSchema: () => CommitCvmComposeFileUpdateRequestSchema,
40
45
  CommitCvmComposeFileUpdateSchema: () => CommitCvmComposeFileUpdateSchema,
41
46
  CommitCvmProvisionRequestSchema: () => CommitCvmProvisionRequestSchema,
42
47
  CommitCvmProvisionSchema: () => CommitCvmProvisionSchema,
43
- CurrentUserSchema: () => CurrentUserSchema,
48
+ CreditsInfoSchema: () => CreditsInfoSchema,
49
+ CurrentUserSchema: () => CurrentUserV20251028Schema,
50
+ CurrentUserV20251028Schema: () => CurrentUserV20251028Schema,
51
+ CurrentUserV20260121Schema: () => CurrentUserV20260121Schema,
44
52
  CvmAttestationSchema: () => CvmAttestationSchema,
53
+ CvmBasicInfoV20251028Schema: () => CvmBasicInfoV20251028Schema,
45
54
  CvmContainersStatsSchema: () => CvmContainersStatsSchema,
55
+ CvmDetailV20251028Schema: () => CvmDetailV20251028Schema,
56
+ CvmGatewayInfoV20260121Schema: () => CvmGatewayInfoV20260121Schema,
46
57
  CvmIdBaseSchema: () => CvmIdBaseSchema,
47
58
  CvmIdObjectSchema: () => CvmIdObjectSchema,
48
59
  CvmIdSchema: () => CvmIdSchema,
49
- CvmInfoSchema: () => CvmInfoSchema,
50
- CvmLegacyDetailSchema: () => CvmLegacyDetailSchema,
60
+ CvmInfoDetailV20260121Schema: () => CvmInfoDetailV20260121Schema,
61
+ CvmInfoV20251028Schema: () => CvmInfoV20251028Schema,
62
+ CvmInfoV20260121Schema: () => CvmInfoV20260121Schema,
63
+ CvmKmsInfoV20260121Schema: () => CvmKmsInfoV20260121Schema,
51
64
  CvmNetworkSchema: () => CvmNetworkSchema,
52
- CvmNetworkUrlsSchema: () => CvmNetworkUrlsSchema,
53
- CvmNodeSchema: () => CvmNodeSchema,
65
+ CvmNetworkUrlsV20251028Schema: () => CvmNetworkUrlsV20251028Schema,
66
+ CvmNodeInfoV20260121Schema: () => CvmNodeInfoV20260121Schema,
67
+ CvmNodeV20251028Schema: () => CvmNodeV20251028Schema,
68
+ CvmOsInfoV20260121Schema: () => CvmOsInfoV20260121Schema,
69
+ CvmProgressInfoV20260121Schema: () => CvmProgressInfoV20260121Schema,
70
+ CvmRefSchema: () => CvmRefSchema,
71
+ CvmResourceInfoV20260121Schema: () => CvmResourceInfoV20260121Schema,
54
72
  CvmStateSchema: () => CvmStateSchema,
73
+ CvmStatusSchema: () => CvmStatusSchema,
55
74
  CvmSystemInfoSchema: () => CvmSystemInfoSchema,
56
75
  DeleteCvmRequestSchema: () => DeleteCvmRequestSchema,
57
76
  DeployAppAuthRequestSchema: () => DeployAppAuthRequestSchema,
58
77
  DeployAppAuthSchema: () => DeployAppAuthSchema,
78
+ DstackAppFullResponseV20251028Schema: () => DstackAppFullResponseV20251028Schema,
79
+ DstackAppFullResponseV20260121Schema: () => DstackAppFullResponseV20260121Schema,
80
+ DstackAppListResponseV20251028Schema: () => DstackAppListResponseV20251028Schema,
81
+ DstackAppListResponseV20260121Schema: () => DstackAppListResponseV20260121Schema,
82
+ DstackAppMinimalResponseV20251028Schema: () => DstackAppMinimalResponseV20251028Schema,
83
+ DstackAppMinimalResponseV20260121Schema: () => DstackAppMinimalResponseV20260121Schema,
84
+ DstackAppWithCvmResponseV20251028Schema: () => DstackAppWithCvmResponseV20251028Schema,
85
+ DstackAppWithCvmResponseV20260121Schema: () => DstackAppWithCvmResponseV20260121Schema,
59
86
  FamilyGroupSchema: () => FamilyGroupSchema,
60
87
  FamilyInstanceTypesResponseSchema: () => FamilyInstanceTypesResponseSchema,
88
+ GetAppCvmsRequestSchema: () => GetAppCvmsRequestSchema,
61
89
  GetAppEnvEncryptPubKeyRequestSchema: () => GetAppEnvEncryptPubKeyRequestSchema,
62
90
  GetAppEnvEncryptPubKeySchema: () => GetAppEnvEncryptPubKeySchema,
91
+ GetAppInfoRequestSchema: () => GetAppInfoRequestSchema,
92
+ GetAppListRequestSchema: () => GetAppListRequestSchema,
93
+ GetAppRevisionDetailRequestSchema: () => GetAppRevisionDetailRequestSchema,
94
+ GetAppRevisionsRequestSchema: () => GetAppRevisionsRequestSchema,
63
95
  GetAvailableOSImagesRequestSchema: () => GetAvailableOSImagesRequestSchema,
64
96
  GetAvailableOSImagesResponseSchema: () => GetAvailableOSImagesResponseSchema,
65
97
  GetCvmAttestationRequestSchema: () => GetCvmAttestationRequestSchema,
@@ -68,29 +100,40 @@ __export(index_exports, {
68
100
  GetCvmDockerComposeRequestSchema: () => GetCvmDockerComposeRequestSchema,
69
101
  GetCvmInfoRequestSchema: () => GetCvmInfoRequestSchema,
70
102
  GetCvmListRequestSchema: () => GetCvmListRequestSchema,
71
- GetCvmListSchema: () => GetCvmListSchema,
72
103
  GetCvmNetworkRequestSchema: () => GetCvmNetworkRequestSchema,
104
+ GetCvmPreLaunchScriptRequestSchema: () => GetCvmPreLaunchScriptRequestSchema,
73
105
  GetCvmStateRequestSchema: () => GetCvmStateRequestSchema,
74
106
  GetCvmStatsRequestSchema: () => GetCvmStatsRequestSchema,
107
+ GetCvmStatusBatchRequestSchema: () => GetCvmStatusBatchRequestSchema,
108
+ GetCvmStatusBatchResponseSchema: () => GetCvmStatusBatchResponseSchema,
75
109
  GetKmsInfoRequestSchema: () => GetKmsInfoRequestSchema,
76
110
  GetKmsListRequestSchema: () => GetKmsListRequestSchema,
77
111
  GetKmsListSchema: () => GetKmsListSchema,
112
+ GetWorkspaceNodesSchema: () => GetWorkspaceNodesSchema,
113
+ GetWorkspaceQuotasSchema: () => GetWorkspaceQuotasSchema,
78
114
  InstanceTypeSchema: () => InstanceTypeSchema,
79
115
  KmsInfoSchema: () => KmsInfoSchema,
116
+ KmsTypeSchema: () => KmsTypeSchema,
80
117
  ListFamilyInstanceTypesRequestSchema: () => ListFamilyInstanceTypesRequestSchema,
81
118
  ListWorkspacesSchema: () => ListWorkspacesSchema,
82
- ManagedUserSchema: () => ManagedUserSchema,
119
+ MachineInfoV20251028Schema: () => MachineInfoV20251028Schema,
120
+ ManagedUserV20251028Schema: () => ManagedUserV20251028Schema,
83
121
  MaxRetriesExceededError: () => MaxRetriesExceededError,
84
122
  NetworkError: () => NetworkError,
85
123
  NextAppIdsRequestSchema: () => NextAppIdsRequestSchema,
86
124
  NextAppIdsSchema: () => NextAppIdsSchema,
125
+ NodeInfoSchema: () => NodeInfoSchema,
126
+ NodeRefSchema: () => NodeRefSchema,
87
127
  OSImageVariantSchema: () => OSImageVariantSchema,
128
+ PaginatedCvmInfosV20251028Schema: () => PaginatedCvmInfosV20251028Schema,
129
+ PaginatedCvmInfosV20260121Schema: () => PaginatedCvmInfosV20260121Schema,
88
130
  PaginationMetadataSchema: () => PaginationMetadataSchema,
89
131
  PhalaCloudError: () => PhalaCloudError,
90
132
  ProvisionCvmComposeFileUpdateRequestSchema: () => ProvisionCvmComposeFileUpdateRequestSchema,
91
133
  ProvisionCvmComposeFileUpdateResultSchema: () => ProvisionCvmComposeFileUpdateResultSchema,
92
134
  ProvisionCvmRequestSchema: () => ProvisionCvmRequestSchema,
93
135
  ProvisionCvmSchema: () => ProvisionCvmSchema,
136
+ QuotaMetricSchema: () => QuotaMetricSchema,
94
137
  RequestError: () => RequestError,
95
138
  ResourceError: () => ResourceError,
96
139
  RestartCvmRequestSchema: () => RestartCvmRequestSchema,
@@ -106,13 +149,23 @@ __export(index_exports, {
106
149
  UpdateCvmEnvsResultSchema: () => UpdateCvmEnvsResultSchema,
107
150
  UpdateCvmResourcesRequestSchema: () => UpdateCvmResourcesRequestSchema,
108
151
  UpdateCvmVisibilityRequestSchema: () => UpdateCvmVisibilityRequestSchema,
152
+ UpdateDockerComposeRequestSchema: () => UpdateDockerComposeRequestSchema,
153
+ UpdateDockerComposeResultSchema: () => UpdateDockerComposeResultSchema,
109
154
  UpdateOsImageRequestSchema: () => UpdateOsImageRequestSchema,
155
+ UpdatePreLaunchScriptRequestSchema: () => UpdatePreLaunchScriptRequestSchema,
156
+ UpdatePreLaunchScriptResultSchema: () => UpdatePreLaunchScriptResultSchema,
157
+ UserInfoSchema: () => UserInfoSchema,
158
+ UserRefSchema: () => UserRefSchema,
110
159
  VMSchema: () => VMSchema,
111
160
  ValidationError: () => ValidationError,
112
- VmInfoSchema: () => VmInfoSchema,
161
+ VmInfoV20251028Schema: () => VmInfoV20251028Schema,
113
162
  WalletError: () => WalletError,
114
163
  WatchAbortedError: () => WatchAbortedError,
115
164
  WatchCvmStateRequestSchema: () => WatchCvmStateRequestSchema,
165
+ WorkspaceInfoSchema: () => WorkspaceInfoSchema,
166
+ WorkspaceQuotasSchema: () => WorkspaceQuotasSchema,
167
+ WorkspaceRefSchema: () => WorkspaceRefSchema,
168
+ WorkspaceReservedGpuQuotaSchema: () => WorkspaceReservedGpuQuotaSchema,
116
169
  WorkspaceResponseSchema: () => WorkspaceResponseSchema,
117
170
  addComposeHash: () => addComposeHash,
118
171
  addNetwork: () => addNetwork,
@@ -122,6 +175,7 @@ __export(index_exports, {
122
175
  checkNetworkStatus: () => checkNetworkStatus,
123
176
  commitCvmComposeFileUpdate: () => commitCvmComposeFileUpdate,
124
177
  commitCvmProvision: () => commitCvmProvision,
178
+ convertToHostname: () => convertToHostname,
125
179
  createBaseClient: () => createClient,
126
180
  createClient: () => createClient2,
127
181
  createClientsFromBrowser: () => createClientsFromBrowser,
@@ -142,7 +196,14 @@ __export(index_exports, {
142
196
  formatErrorMessage: () => formatErrorMessage,
143
197
  formatStructuredError: () => formatStructuredError,
144
198
  formatValidationErrors: () => formatValidationErrors,
199
+ generateDefaultCvmName: () => generateDefaultCvmName,
200
+ generateFallbackHostname: () => generateFallbackHostname,
201
+ getAppCvms: () => getAppCvms,
145
202
  getAppEnvEncryptPubKey: () => getAppEnvEncryptPubKey,
203
+ getAppInfo: () => getAppInfo,
204
+ getAppList: () => getAppList,
205
+ getAppRevisionDetail: () => getAppRevisionDetail,
206
+ getAppRevisions: () => getAppRevisions,
146
207
  getAvailableNodes: () => getAvailableNodes,
147
208
  getAvailableOsImages: () => getAvailableOsImages,
148
209
  getComposeHash: () => import_get_compose_hash3.getComposeHash,
@@ -154,13 +215,18 @@ __export(index_exports, {
154
215
  getCvmInfo: () => getCvmInfo,
155
216
  getCvmList: () => getCvmList,
156
217
  getCvmNetwork: () => getCvmNetwork,
218
+ getCvmPreLaunchScript: () => getCvmPreLaunchScript,
157
219
  getCvmState: () => getCvmState,
158
220
  getCvmStats: () => getCvmStats,
221
+ getCvmStatusBatch: () => getCvmStatusBatch,
159
222
  getErrorMessage: () => getErrorMessage,
160
223
  getKmsInfo: () => getKmsInfo,
161
224
  getKmsList: () => getKmsList,
162
225
  getValidationFields: () => getValidationFields,
163
226
  getWorkspace: () => getWorkspace,
227
+ getWorkspaceNodes: () => getWorkspaceNodes,
228
+ getWorkspaceQuotas: () => getWorkspaceQuotas,
229
+ isValidHostname: () => isValidHostname,
164
230
  listAllInstanceTypeFamilies: () => listAllInstanceTypeFamilies,
165
231
  listFamilyInstanceTypes: () => listFamilyInstanceTypes,
166
232
  listWorkspaces: () => listWorkspaces,
@@ -178,7 +244,12 @@ __export(index_exports, {
178
244
  safeCommitCvmProvision: () => safeCommitCvmProvision,
179
245
  safeDeleteCvm: () => safeDeleteCvm,
180
246
  safeDeployAppAuth: () => safeDeployAppAuth,
247
+ safeGetAppCvms: () => safeGetAppCvms,
181
248
  safeGetAppEnvEncryptPubKey: () => safeGetAppEnvEncryptPubKey,
249
+ safeGetAppInfo: () => safeGetAppInfo,
250
+ safeGetAppList: () => safeGetAppList,
251
+ safeGetAppRevisionDetail: () => safeGetAppRevisionDetail,
252
+ safeGetAppRevisions: () => safeGetAppRevisions,
182
253
  safeGetAvailableNodes: () => safeGetAvailableNodes,
183
254
  safeGetAvailableOsImages: () => safeGetAvailableOsImages,
184
255
  safeGetCurrentUser: () => safeGetCurrentUser,
@@ -189,11 +260,15 @@ __export(index_exports, {
189
260
  safeGetCvmInfo: () => safeGetCvmInfo,
190
261
  safeGetCvmList: () => safeGetCvmList,
191
262
  safeGetCvmNetwork: () => safeGetCvmNetwork,
263
+ safeGetCvmPreLaunchScript: () => safeGetCvmPreLaunchScript,
192
264
  safeGetCvmState: () => safeGetCvmState,
193
265
  safeGetCvmStats: () => safeGetCvmStats,
266
+ safeGetCvmStatusBatch: () => safeGetCvmStatusBatch,
194
267
  safeGetKmsInfo: () => safeGetKmsInfo,
195
268
  safeGetKmsList: () => safeGetKmsList,
196
269
  safeGetWorkspace: () => safeGetWorkspace,
270
+ safeGetWorkspaceNodes: () => safeGetWorkspaceNodes,
271
+ safeGetWorkspaceQuotas: () => safeGetWorkspaceQuotas,
197
272
  safeListAllInstanceTypeFamilies: () => safeListAllInstanceTypeFamilies,
198
273
  safeListFamilyInstanceTypes: () => safeListFamilyInstanceTypes,
199
274
  safeListWorkspaces: () => safeListWorkspaces,
@@ -207,7 +282,9 @@ __export(index_exports, {
207
282
  safeUpdateCvmEnvs: () => safeUpdateCvmEnvs,
208
283
  safeUpdateCvmResources: () => safeUpdateCvmResources,
209
284
  safeUpdateCvmVisibility: () => safeUpdateCvmVisibility,
285
+ safeUpdateDockerCompose: () => safeUpdateDockerCompose,
210
286
  safeUpdateOsImage: () => safeUpdateOsImage,
287
+ safeUpdatePreLaunchScript: () => safeUpdatePreLaunchScript,
211
288
  safeValidateActionParameters: () => safeValidateActionParameters,
212
289
  shutdownCvm: () => shutdownCvm,
213
290
  sortObject: () => sortObject,
@@ -217,7 +294,9 @@ __export(index_exports, {
217
294
  updateCvmEnvs: () => updateCvmEnvs,
218
295
  updateCvmResources: () => updateCvmResources,
219
296
  updateCvmVisibility: () => updateCvmVisibility,
297
+ updateDockerCompose: () => updateDockerCompose,
220
298
  updateOsImage: () => updateOsImage,
299
+ updatePreLaunchScript: () => updatePreLaunchScript,
221
300
  validateActionParameters: () => validateActionParameters,
222
301
  validateNetworkPrerequisites: () => validateNetworkPrerequisites,
223
302
  verifyEnvEncryptPublicKey: () => import_verify_env_encrypt_public_key.verifyEnvEncryptPublicKey,
@@ -562,7 +641,11 @@ function formatStructuredError(error, options) {
562
641
  }
563
642
 
564
643
  // src/client.ts
565
- var SUPPORTED_API_VERSIONS = ["2025-05-31", "2025-10-28"];
644
+ var SUPPORTED_API_VERSIONS = [
645
+ "2025-10-28",
646
+ "2026-01-21"
647
+ ];
648
+ var DEFAULT_API_VERSION = "2026-01-21";
566
649
  var logger = (0, import_debug.default)("phala::api-client");
567
650
  function formatHeaders(headers) {
568
651
  return Object.entries(headers).map(([key, value]) => ` -H "${key}: ${value}"`).join("\n");
@@ -586,17 +669,19 @@ function formatResponse(status, statusText, headers, body) {
586
669
  bodyStr
587
670
  ].filter(Boolean).join("\n");
588
671
  }
589
- var Client = class {
672
+ var Client = class _Client {
590
673
  constructor(config = {}) {
591
674
  this.emitter = (0, import_mitt.default)();
592
- const resolvedConfig = {
675
+ const resolvedApiKey = config.apiKey || process?.env?.PHALA_CLOUD_API_KEY;
676
+ const resolvedBaseURL = config.baseURL || process?.env?.PHALA_CLOUD_API_PREFIX || "https://cloud-api.phala.com/api/v1";
677
+ const version = config.version && SUPPORTED_API_VERSIONS.includes(config.version) ? config.version : DEFAULT_API_VERSION;
678
+ this.config = {
593
679
  ...config,
594
- apiKey: config.apiKey || process?.env?.PHALA_CLOUD_API_KEY,
595
- baseURL: config.baseURL || process?.env?.PHALA_CLOUD_API_PREFIX || "https://cloud-api.phala.network/api/v1"
680
+ apiKey: resolvedApiKey,
681
+ baseURL: resolvedBaseURL,
682
+ version
596
683
  };
597
- const version = resolvedConfig.version && SUPPORTED_API_VERSIONS.includes(resolvedConfig.version) ? resolvedConfig.version : SUPPORTED_API_VERSIONS[SUPPORTED_API_VERSIONS.length - 1];
598
- this.config = resolvedConfig;
599
- const { apiKey, baseURL, timeout, headers, useCookieAuth, onResponseError, ...fetchOptions } = resolvedConfig;
684
+ const { apiKey, baseURL, timeout, headers, useCookieAuth, onResponseError, ...fetchOptions } = this.config;
600
685
  const requestHeaders = {
601
686
  "X-Phala-Version": version,
602
687
  "Content-Type": "application/json"
@@ -655,8 +740,8 @@ var Client = class {
655
740
  },
656
741
  // Generic handlers for response error (similar to request.ts)
657
742
  onResponseError: ({ request, response, options }) => {
658
- console.warn(`HTTP ${response.status}: ${response.url}`);
659
743
  if (logger.enabled) {
744
+ console.warn(`HTTP ${response.status}: ${response.url}`);
660
745
  const method = options.method || "GET";
661
746
  const url = typeof request === "string" ? request : request.url;
662
747
  logger(
@@ -692,6 +777,49 @@ var Client = class {
692
777
  this.emitter.on(type, wrappedHandler);
693
778
  }
694
779
  // ===== Direct methods (throw on error) =====
780
+ /**
781
+ * Generic request method (throws PhalaCloudError on error)
782
+ */
783
+ async request(url, options) {
784
+ try {
785
+ const method = options?.method || "GET";
786
+ return await this.fetchInstance(url, {
787
+ ...options,
788
+ method
789
+ });
790
+ } catch (error) {
791
+ const requestError = this.convertToRequestError(error);
792
+ const phalaCloudError = this.emitError(requestError);
793
+ throw phalaCloudError;
794
+ }
795
+ }
796
+ /**
797
+ * Generic request method that returns the full response (status + headers + data)
798
+ *
799
+ * Unlike other direct methods, this does NOT throw for non-2xx HTTP statuses.
800
+ * It only throws for network/transport/unexpected errors.
801
+ */
802
+ async requestFull(url, options) {
803
+ try {
804
+ const method = options?.method || "GET";
805
+ const response = await this.fetchInstance.raw(url, {
806
+ ...options,
807
+ method,
808
+ ignoreResponseError: true
809
+ });
810
+ return {
811
+ status: response.status,
812
+ statusText: response.statusText,
813
+ headers: response.headers,
814
+ data: response._data,
815
+ ok: response.ok
816
+ };
817
+ } catch (error) {
818
+ const requestError = this.convertToRequestError(error);
819
+ const phalaCloudError = this.emitError(requestError);
820
+ throw phalaCloudError;
821
+ }
822
+ }
695
823
  /**
696
824
  * Perform GET request (throws PhalaCloudError on error)
697
825
  */
@@ -842,6 +970,34 @@ var Client = class {
842
970
  async safeDelete(request, options) {
843
971
  return this.safeRequest(() => this.delete(request, options));
844
972
  }
973
+ /**
974
+ * Safe wrapper around the generic request method (returns SafeResult)
975
+ */
976
+ async safeRequestMethod(url, options) {
977
+ return this.safeRequest(() => this.request(url, options));
978
+ }
979
+ /**
980
+ * Safe wrapper around requestFull (returns SafeResult)
981
+ */
982
+ async safeRequestFull(url, options) {
983
+ return this.safeRequest(() => this.requestFull(url, options));
984
+ }
985
+ /**
986
+ * Create a new client with a different API version
987
+ *
988
+ * @example
989
+ * ```typescript
990
+ * const client = createClient(); // defaults to 2026-01-21
991
+ * const legacyClient = client.withVersion("2025-10-28");
992
+ * const data = await getCvmInfo(legacyClient, { id: "xxx" });
993
+ * ```
994
+ */
995
+ withVersion(version) {
996
+ return new _Client({
997
+ ...this.config,
998
+ version
999
+ });
1000
+ }
845
1001
  /**
846
1002
  * Extend client with additional actions
847
1003
  *
@@ -869,8 +1025,113 @@ function createClient(config = {}) {
869
1025
  return new Client(config);
870
1026
  }
871
1027
 
872
- // src/actions/get_current_user.ts
1028
+ // src/credentials/current_user_v20260121.ts
873
1029
  var import_zod2 = require("zod");
1030
+ var UserInfoSchema = import_zod2.z.object({
1031
+ username: import_zod2.z.string(),
1032
+ email: import_zod2.z.string(),
1033
+ role: import_zod2.z.enum(["admin", "user"]),
1034
+ avatar: import_zod2.z.string(),
1035
+ email_verified: import_zod2.z.boolean(),
1036
+ totp_enabled: import_zod2.z.boolean(),
1037
+ has_backup_codes: import_zod2.z.boolean(),
1038
+ flag_has_password: import_zod2.z.boolean()
1039
+ }).passthrough();
1040
+ var WorkspaceInfoSchema = import_zod2.z.object({
1041
+ id: import_zod2.z.string(),
1042
+ name: import_zod2.z.string(),
1043
+ slug: import_zod2.z.string().nullable(),
1044
+ tier: import_zod2.z.string(),
1045
+ role: import_zod2.z.string(),
1046
+ avatar: import_zod2.z.string().nullable().optional()
1047
+ }).passthrough();
1048
+ var CreditsInfoSchema = import_zod2.z.object({
1049
+ balance: import_zod2.z.string().or(import_zod2.z.number()),
1050
+ granted_balance: import_zod2.z.string().or(import_zod2.z.number()),
1051
+ is_post_paid: import_zod2.z.boolean(),
1052
+ outstanding_amount: import_zod2.z.string().or(import_zod2.z.number()).nullable()
1053
+ }).passthrough();
1054
+ var CurrentUserV20260121Schema = import_zod2.z.object({
1055
+ user: UserInfoSchema,
1056
+ workspace: WorkspaceInfoSchema,
1057
+ credits: CreditsInfoSchema
1058
+ }).passthrough();
1059
+
1060
+ // src/credentials/current_user_v20251028.ts
1061
+ var import_zod3 = require("zod");
1062
+ var CurrentUserV20251028Schema = import_zod3.z.object({
1063
+ username: import_zod3.z.string(),
1064
+ email: import_zod3.z.string(),
1065
+ credits: import_zod3.z.number(),
1066
+ granted_credits: import_zod3.z.number(),
1067
+ avatar: import_zod3.z.string(),
1068
+ team_name: import_zod3.z.string(),
1069
+ team_tier: import_zod3.z.string()
1070
+ }).passthrough();
1071
+
1072
+ // src/actions/get_current_user.ts
1073
+ function getSchemaForVersion(version) {
1074
+ return version === "2025-10-28" ? CurrentUserV20251028Schema : CurrentUserV20260121Schema;
1075
+ }
1076
+ async function getCurrentUser(client, parameters) {
1077
+ const response = await client.get("/auth/me");
1078
+ if (parameters?.schema === false) {
1079
+ return response;
1080
+ }
1081
+ const schema = parameters?.schema || getSchemaForVersion(client.config.version);
1082
+ return schema.parse(response);
1083
+ }
1084
+ async function safeGetCurrentUser(client, parameters) {
1085
+ try {
1086
+ const data = await getCurrentUser(client, parameters);
1087
+ return { success: true, data };
1088
+ } catch (error) {
1089
+ if (error && typeof error === "object" && ("status" in error || "issues" in error)) {
1090
+ return { success: false, error };
1091
+ }
1092
+ return {
1093
+ success: false,
1094
+ error: {
1095
+ name: "Error",
1096
+ message: error instanceof Error ? error.message : String(error)
1097
+ }
1098
+ };
1099
+ }
1100
+ }
1101
+
1102
+ // src/actions/get_available_nodes.ts
1103
+ var import_zod5 = require("zod");
1104
+
1105
+ // src/types/kms_info.ts
1106
+ var import_zod4 = require("zod");
1107
+
1108
+ // src/types/supported_chains.ts
1109
+ var import_chains = require("viem/chains");
1110
+ var SUPPORTED_CHAINS = {
1111
+ [import_chains.mainnet.id]: import_chains.mainnet,
1112
+ [import_chains.base.id]: import_chains.base,
1113
+ [import_chains.anvil.id]: import_chains.anvil
1114
+ };
1115
+
1116
+ // src/types/kms_info.ts
1117
+ var KmsInfoBaseSchema = import_zod4.z.object({
1118
+ id: import_zod4.z.string(),
1119
+ slug: import_zod4.z.string().nullable(),
1120
+ url: import_zod4.z.string(),
1121
+ version: import_zod4.z.string(),
1122
+ chain_id: import_zod4.z.number().nullable(),
1123
+ kms_contract_address: import_zod4.z.string().nullable().transform((val) => val),
1124
+ gateway_app_id: import_zod4.z.string().nullable().transform((val) => val)
1125
+ }).passthrough();
1126
+ var KmsInfoSchema = KmsInfoBaseSchema.transform((data) => {
1127
+ if (data.chain_id != null) {
1128
+ const chain = SUPPORTED_CHAINS[data.chain_id];
1129
+ if (chain) {
1130
+ return { ...data, chain };
1131
+ }
1132
+ }
1133
+ return data;
1134
+ });
874
1135
 
875
1136
  // src/utils/validate-parameters.ts
876
1137
  function validateActionParameters(parameters) {
@@ -1018,95 +1279,44 @@ function defineAction(schema, fn) {
1018
1279
  };
1019
1280
  }
1020
1281
 
1021
- // src/actions/get_current_user.ts
1022
- var CurrentUserSchema = import_zod2.z.object({
1023
- username: import_zod2.z.string(),
1024
- email: import_zod2.z.string(),
1025
- credits: import_zod2.z.number(),
1026
- granted_credits: import_zod2.z.number(),
1027
- avatar: import_zod2.z.string(),
1028
- team_name: import_zod2.z.string(),
1029
- team_tier: import_zod2.z.string()
1030
- }).passthrough();
1031
- var { action: getCurrentUser, safeAction: safeGetCurrentUser } = defineSimpleAction(
1032
- CurrentUserSchema,
1033
- async (client) => {
1034
- return await client.get("/auth/me");
1035
- }
1036
- );
1037
-
1038
1282
  // src/actions/get_available_nodes.ts
1039
- var import_zod4 = require("zod");
1040
-
1041
- // src/types/kms_info.ts
1042
- var import_zod3 = require("zod");
1043
-
1044
- // src/types/supported_chains.ts
1045
- var import_chains = require("viem/chains");
1046
- var SUPPORTED_CHAINS = {
1047
- [import_chains.mainnet.id]: import_chains.mainnet,
1048
- [import_chains.base.id]: import_chains.base,
1049
- [import_chains.anvil.id]: import_chains.anvil
1050
- };
1051
-
1052
- // src/types/kms_info.ts
1053
- var KmsInfoBaseSchema = import_zod3.z.object({
1054
- id: import_zod3.z.string(),
1055
- slug: import_zod3.z.string().nullable(),
1056
- url: import_zod3.z.string(),
1057
- version: import_zod3.z.string(),
1058
- chain_id: import_zod3.z.number().nullable(),
1059
- kms_contract_address: import_zod3.z.string().nullable().transform((val) => val),
1060
- gateway_app_id: import_zod3.z.string().nullable().transform((val) => val)
1061
- }).passthrough();
1062
- var KmsInfoSchema = KmsInfoBaseSchema.transform((data) => {
1063
- if (data.chain_id != null) {
1064
- const chain = SUPPORTED_CHAINS[data.chain_id];
1065
- if (chain) {
1066
- return { ...data, chain };
1067
- }
1068
- }
1069
- return data;
1070
- });
1071
-
1072
- // src/actions/get_available_nodes.ts
1073
- var AvailableOSImageSchema = import_zod4.z.object({
1074
- name: import_zod4.z.string(),
1075
- is_dev: import_zod4.z.boolean(),
1076
- version: import_zod4.z.union([
1077
- import_zod4.z.tuple([import_zod4.z.number(), import_zod4.z.number(), import_zod4.z.number()]),
1078
- import_zod4.z.tuple([import_zod4.z.number(), import_zod4.z.number(), import_zod4.z.number(), import_zod4.z.number()])
1283
+ var AvailableOSImageSchema = import_zod5.z.object({
1284
+ name: import_zod5.z.string(),
1285
+ is_dev: import_zod5.z.boolean(),
1286
+ version: import_zod5.z.union([
1287
+ import_zod5.z.tuple([import_zod5.z.number(), import_zod5.z.number(), import_zod5.z.number()]),
1288
+ import_zod5.z.tuple([import_zod5.z.number(), import_zod5.z.number(), import_zod5.z.number(), import_zod5.z.number()])
1079
1289
  ]),
1080
- os_image_hash: import_zod4.z.string().nullable().optional()
1290
+ os_image_hash: import_zod5.z.string().nullable().optional()
1081
1291
  }).passthrough();
1082
- var TeepodCapacitySchema = import_zod4.z.object({
1083
- teepod_id: import_zod4.z.number(),
1084
- name: import_zod4.z.string(),
1085
- listed: import_zod4.z.boolean(),
1086
- resource_score: import_zod4.z.number(),
1087
- remaining_vcpu: import_zod4.z.number(),
1088
- remaining_memory: import_zod4.z.number(),
1089
- remaining_cvm_slots: import_zod4.z.number(),
1090
- images: import_zod4.z.array(AvailableOSImageSchema),
1091
- support_onchain_kms: import_zod4.z.boolean().optional(),
1092
- fmspc: import_zod4.z.string().nullable().optional(),
1093
- device_id: import_zod4.z.string().nullable().optional(),
1094
- region_identifier: import_zod4.z.string().nullable().optional(),
1095
- default_kms: import_zod4.z.string().nullable().optional(),
1096
- kms_list: import_zod4.z.array(import_zod4.z.string()).default([])
1292
+ var TeepodCapacitySchema = import_zod5.z.object({
1293
+ teepod_id: import_zod5.z.number(),
1294
+ name: import_zod5.z.string(),
1295
+ listed: import_zod5.z.boolean(),
1296
+ resource_score: import_zod5.z.number(),
1297
+ remaining_vcpu: import_zod5.z.number(),
1298
+ remaining_memory: import_zod5.z.number(),
1299
+ remaining_cvm_slots: import_zod5.z.number(),
1300
+ images: import_zod5.z.array(AvailableOSImageSchema),
1301
+ support_onchain_kms: import_zod5.z.boolean().optional(),
1302
+ fmspc: import_zod5.z.string().nullable().optional(),
1303
+ device_id: import_zod5.z.string().nullable().optional(),
1304
+ region_identifier: import_zod5.z.string().nullable().optional(),
1305
+ default_kms: import_zod5.z.string().nullable().optional(),
1306
+ kms_list: import_zod5.z.array(import_zod5.z.string()).default([])
1097
1307
  }).passthrough();
1098
- var ResourceThresholdSchema = import_zod4.z.object({
1099
- max_instances: import_zod4.z.number().nullable().optional(),
1100
- max_vcpu: import_zod4.z.number().nullable().optional(),
1101
- max_memory: import_zod4.z.number().nullable().optional(),
1102
- max_disk: import_zod4.z.number().nullable().optional()
1308
+ var ResourceThresholdSchema = import_zod5.z.object({
1309
+ max_instances: import_zod5.z.number().nullable().optional(),
1310
+ max_vcpu: import_zod5.z.number().nullable().optional(),
1311
+ max_memory: import_zod5.z.number().nullable().optional(),
1312
+ max_disk: import_zod5.z.number().nullable().optional()
1103
1313
  }).passthrough();
1104
- var AvailableNodesSchema = import_zod4.z.object({
1105
- tier: import_zod4.z.string(),
1314
+ var AvailableNodesSchema = import_zod5.z.object({
1315
+ tier: import_zod5.z.string(),
1106
1316
  // TeamTier is string enum
1107
1317
  capacity: ResourceThresholdSchema,
1108
- nodes: import_zod4.z.array(TeepodCapacitySchema),
1109
- kms_list: import_zod4.z.array(KmsInfoSchema)
1318
+ nodes: import_zod5.z.array(TeepodCapacitySchema),
1319
+ kms_list: import_zod5.z.array(KmsInfoSchema)
1110
1320
  }).passthrough();
1111
1321
  var { action: getAvailableNodes, safeAction: safeGetAvailableNodes } = defineSimpleAction(
1112
1322
  AvailableNodesSchema,
@@ -1116,33 +1326,33 @@ var { action: getAvailableNodes, safeAction: safeGetAvailableNodes } = defineSim
1116
1326
  );
1117
1327
 
1118
1328
  // src/actions/list-instance-types.ts
1119
- var import_zod5 = require("zod");
1120
- var InstanceTypeSchema = import_zod5.z.object({
1121
- id: import_zod5.z.string(),
1122
- name: import_zod5.z.string(),
1123
- description: import_zod5.z.string(),
1124
- vcpu: import_zod5.z.number(),
1125
- memory_mb: import_zod5.z.number(),
1126
- hourly_rate: import_zod5.z.string(),
1127
- requires_gpu: import_zod5.z.boolean(),
1128
- default_disk_size_gb: import_zod5.z.number().default(20),
1129
- family: import_zod5.z.string().nullable()
1329
+ var import_zod6 = require("zod");
1330
+ var InstanceTypeSchema = import_zod6.z.object({
1331
+ id: import_zod6.z.string(),
1332
+ name: import_zod6.z.string(),
1333
+ description: import_zod6.z.string(),
1334
+ vcpu: import_zod6.z.number(),
1335
+ memory_mb: import_zod6.z.number(),
1336
+ hourly_rate: import_zod6.z.string(),
1337
+ requires_gpu: import_zod6.z.boolean(),
1338
+ default_disk_size_gb: import_zod6.z.number().default(20),
1339
+ family: import_zod6.z.string().nullable()
1130
1340
  }).passthrough();
1131
- var FamilyGroupSchema = import_zod5.z.object({
1132
- name: import_zod5.z.string(),
1133
- items: import_zod5.z.array(InstanceTypeSchema),
1134
- total: import_zod5.z.number()
1341
+ var FamilyGroupSchema = import_zod6.z.object({
1342
+ name: import_zod6.z.string(),
1343
+ items: import_zod6.z.array(InstanceTypeSchema),
1344
+ total: import_zod6.z.number()
1135
1345
  }).strict();
1136
- var AllFamiliesResponseSchema = import_zod5.z.object({
1137
- result: import_zod5.z.array(FamilyGroupSchema)
1346
+ var AllFamiliesResponseSchema = import_zod6.z.object({
1347
+ result: import_zod6.z.array(FamilyGroupSchema)
1138
1348
  }).strict();
1139
- var FamilyInstanceTypesResponseSchema = import_zod5.z.object({
1140
- items: import_zod5.z.array(InstanceTypeSchema),
1141
- total: import_zod5.z.number(),
1142
- family: import_zod5.z.string()
1349
+ var FamilyInstanceTypesResponseSchema = import_zod6.z.object({
1350
+ items: import_zod6.z.array(InstanceTypeSchema),
1351
+ total: import_zod6.z.number(),
1352
+ family: import_zod6.z.string()
1143
1353
  }).strict();
1144
- var ListFamilyInstanceTypesRequestSchema = import_zod5.z.object({
1145
- family: import_zod5.z.string()
1354
+ var ListFamilyInstanceTypesRequestSchema = import_zod6.z.object({
1355
+ family: import_zod6.z.string()
1146
1356
  }).strict();
1147
1357
  var { action: listAllInstanceTypeFamilies, safeAction: safeListAllInstanceTypeFamilies } = defineAction(
1148
1358
  AllFamiliesResponseSchema,
@@ -1156,22 +1366,23 @@ var { action: listFamilyInstanceTypes, safeAction: safeListFamilyInstanceTypes }
1156
1366
  });
1157
1367
 
1158
1368
  // src/actions/workspaces/list_workspaces.ts
1159
- var import_zod6 = require("zod");
1160
- var WorkspaceResponseSchema = import_zod6.z.object({
1161
- id: import_zod6.z.string(),
1162
- name: import_zod6.z.string(),
1163
- slug: import_zod6.z.string().nullable(),
1164
- tier: import_zod6.z.string(),
1165
- role: import_zod6.z.string(),
1166
- created_at: import_zod6.z.string()
1369
+ var import_zod7 = require("zod");
1370
+ var WorkspaceResponseSchema = import_zod7.z.object({
1371
+ id: import_zod7.z.string(),
1372
+ name: import_zod7.z.string(),
1373
+ slug: import_zod7.z.string().nullable(),
1374
+ tier: import_zod7.z.string(),
1375
+ role: import_zod7.z.string(),
1376
+ is_default: import_zod7.z.boolean(),
1377
+ created_at: import_zod7.z.string()
1167
1378
  }).passthrough();
1168
- var PaginationMetadataSchema = import_zod6.z.object({
1169
- has_more: import_zod6.z.boolean(),
1170
- next_cursor: import_zod6.z.string().nullable(),
1171
- total: import_zod6.z.number().nullable()
1379
+ var PaginationMetadataSchema = import_zod7.z.object({
1380
+ has_more: import_zod7.z.boolean(),
1381
+ next_cursor: import_zod7.z.string().nullable(),
1382
+ total: import_zod7.z.number().nullable()
1172
1383
  }).passthrough();
1173
- var ListWorkspacesSchema = import_zod6.z.object({
1174
- data: import_zod6.z.array(WorkspaceResponseSchema),
1384
+ var ListWorkspacesSchema = import_zod7.z.object({
1385
+ data: import_zod7.z.array(WorkspaceResponseSchema),
1175
1386
  pagination: PaginationMetadataSchema
1176
1387
  }).passthrough();
1177
1388
  var { action: listWorkspaces, safeAction: safeListWorkspaces } = defineAction(ListWorkspacesSchema, async (client, request) => {
@@ -1187,135 +1398,285 @@ var { action: getWorkspace, safeAction: safeGetWorkspace } = defineAction(Worksp
1187
1398
  return await client.get(`/workspaces/${teamSlug}`);
1188
1399
  });
1189
1400
 
1190
- // src/types/cvm_info.ts
1191
- var import_zod7 = require("zod");
1192
- var VmInfoSchema = import_zod7.z.object({
1193
- id: import_zod7.z.string(),
1194
- name: import_zod7.z.string(),
1195
- status: import_zod7.z.string(),
1196
- uptime: import_zod7.z.string(),
1197
- app_url: import_zod7.z.string().nullable(),
1198
- app_id: import_zod7.z.string(),
1199
- instance_id: import_zod7.z.string().nullable(),
1200
- configuration: import_zod7.z.any().optional(),
1201
- // TODO: add VmConfiguration schema if needed
1202
- exited_at: import_zod7.z.string().nullable(),
1203
- boot_progress: import_zod7.z.string().nullable(),
1204
- boot_error: import_zod7.z.string().nullable(),
1205
- shutdown_progress: import_zod7.z.string().nullable(),
1206
- image_version: import_zod7.z.string().nullable()
1207
- });
1208
- var ManagedUserSchema = import_zod7.z.object({
1209
- id: import_zod7.z.number(),
1210
- username: import_zod7.z.string()
1211
- });
1212
- var CvmNodeSchema = import_zod7.z.object({
1213
- id: import_zod7.z.number(),
1214
- name: import_zod7.z.string(),
1215
- region_identifier: import_zod7.z.string().nullable().optional()
1401
+ // src/types/cvm_info_v20251028.ts
1402
+ var import_zod8 = require("zod");
1403
+ var VmInfoV20251028Schema = import_zod8.z.object({
1404
+ id: import_zod8.z.string(),
1405
+ name: import_zod8.z.string(),
1406
+ status: import_zod8.z.string(),
1407
+ uptime: import_zod8.z.string(),
1408
+ app_url: import_zod8.z.string().nullable(),
1409
+ app_id: import_zod8.z.string(),
1410
+ instance_id: import_zod8.z.string().nullable(),
1411
+ configuration: import_zod8.z.any().optional(),
1412
+ exited_at: import_zod8.z.string().nullable(),
1413
+ boot_progress: import_zod8.z.string().nullable(),
1414
+ boot_error: import_zod8.z.string().nullable(),
1415
+ shutdown_progress: import_zod8.z.string().nullable(),
1416
+ image_version: import_zod8.z.string().nullable()
1216
1417
  });
1217
- var CvmNetworkUrlsSchema = import_zod7.z.object({
1218
- app: import_zod7.z.string(),
1219
- instance: import_zod7.z.string()
1418
+ var ManagedUserV20251028Schema = import_zod8.z.object({
1419
+ id: import_zod8.z.number(),
1420
+ username: import_zod8.z.string()
1220
1421
  });
1221
- var CvmInfoSchema = import_zod7.z.object({
1222
- hosted: VmInfoSchema,
1223
- name: import_zod7.z.string(),
1224
- managed_user: ManagedUserSchema.nullable(),
1225
- node: CvmNodeSchema.nullable(),
1226
- listed: import_zod7.z.boolean().default(false),
1227
- status: import_zod7.z.string(),
1228
- in_progress: import_zod7.z.boolean().default(false),
1229
- dapp_dashboard_url: import_zod7.z.string().nullable(),
1230
- syslog_endpoint: import_zod7.z.string().nullable(),
1231
- allow_upgrade: import_zod7.z.boolean().default(false),
1232
- project_id: import_zod7.z.string().nullable(),
1233
- // HashedId is represented as string in JS
1234
- project_type: import_zod7.z.string().nullable(),
1235
- billing_period: import_zod7.z.string().nullable(),
1422
+ var CvmNodeV20251028Schema = import_zod8.z.object({
1423
+ id: import_zod8.z.number(),
1424
+ name: import_zod8.z.string(),
1425
+ region_identifier: import_zod8.z.string().nullable().optional()
1426
+ });
1427
+ var MachineInfoV20251028Schema = import_zod8.z.object({
1428
+ vcpu: import_zod8.z.number(),
1429
+ memory: import_zod8.z.number(),
1430
+ disk_size: import_zod8.z.number(),
1431
+ gpu_count: import_zod8.z.number().default(0)
1432
+ });
1433
+ var CvmNetworkUrlsV20251028Schema = import_zod8.z.object({
1434
+ app: import_zod8.z.string(),
1435
+ instance: import_zod8.z.string()
1436
+ });
1437
+ var CvmInfoV20251028Schema = import_zod8.z.object({
1438
+ hosted: VmInfoV20251028Schema,
1439
+ name: import_zod8.z.string(),
1440
+ managed_user: ManagedUserV20251028Schema.nullable(),
1441
+ node: CvmNodeV20251028Schema.nullable(),
1442
+ listed: import_zod8.z.boolean().default(false),
1443
+ status: import_zod8.z.string(),
1444
+ in_progress: import_zod8.z.boolean().default(false),
1445
+ dapp_dashboard_url: import_zod8.z.string().nullable(),
1446
+ syslog_endpoint: import_zod8.z.string().nullable(),
1447
+ allow_upgrade: import_zod8.z.boolean().default(false),
1448
+ project_id: import_zod8.z.string().nullable(),
1449
+ project_type: import_zod8.z.string().nullable(),
1450
+ billing_period: import_zod8.z.string().nullable(),
1236
1451
  kms_info: KmsInfoSchema.nullable(),
1237
- vcpu: import_zod7.z.number().nullable(),
1238
- memory: import_zod7.z.number().nullable(),
1239
- disk_size: import_zod7.z.number().nullable(),
1240
- gateway_domain: import_zod7.z.string().nullable(),
1241
- public_urls: import_zod7.z.array(CvmNetworkUrlsSchema)
1242
- });
1243
- var CvmLegacyDetailSchema = import_zod7.z.object({
1244
- id: import_zod7.z.number(),
1245
- name: import_zod7.z.string(),
1246
- status: import_zod7.z.string(),
1247
- in_progress: import_zod7.z.boolean().optional().default(false),
1248
- teepod_id: import_zod7.z.number().nullable(),
1249
- teepod: CvmNodeSchema.optional().nullable(),
1250
- app_id: import_zod7.z.string(),
1251
- vm_uuid: import_zod7.z.string().nullable(),
1252
- instance_id: import_zod7.z.string().nullable(),
1253
- vcpu: import_zod7.z.number(),
1254
- memory: import_zod7.z.number(),
1255
- disk_size: import_zod7.z.number(),
1256
- base_image: import_zod7.z.string().nullable(),
1257
- encrypted_env_pubkey: import_zod7.z.string().nullable(),
1258
- listed: import_zod7.z.boolean().optional().default(false),
1259
- project_id: import_zod7.z.string().optional().nullable(),
1260
- project_type: import_zod7.z.string().optional().nullable(),
1261
- public_sysinfo: import_zod7.z.boolean().optional().default(false),
1262
- public_logs: import_zod7.z.boolean().optional().default(false),
1263
- dapp_dashboard_url: import_zod7.z.string().optional().nullable(),
1264
- syslog_endpoint: import_zod7.z.string().optional().nullable(),
1452
+ vcpu: import_zod8.z.number().nullable(),
1453
+ memory: import_zod8.z.number().nullable(),
1454
+ disk_size: import_zod8.z.number().nullable(),
1455
+ gateway_domain: import_zod8.z.string().nullable(),
1456
+ public_urls: import_zod8.z.array(CvmNetworkUrlsV20251028Schema),
1457
+ machine_info: MachineInfoV20251028Schema.nullable().optional(),
1458
+ updated_at: import_zod8.z.string().nullable().optional()
1459
+ });
1460
+ var CvmDetailV20251028Schema = import_zod8.z.object({
1461
+ id: import_zod8.z.number(),
1462
+ name: import_zod8.z.string(),
1463
+ status: import_zod8.z.string(),
1464
+ in_progress: import_zod8.z.boolean().optional().default(false),
1465
+ teepod_id: import_zod8.z.number().nullable(),
1466
+ teepod: CvmNodeV20251028Schema.optional().nullable(),
1467
+ app_id: import_zod8.z.string(),
1468
+ vm_uuid: import_zod8.z.string().nullable(),
1469
+ instance_id: import_zod8.z.string().nullable(),
1470
+ vcpu: import_zod8.z.number(),
1471
+ memory: import_zod8.z.number(),
1472
+ disk_size: import_zod8.z.number(),
1473
+ base_image: import_zod8.z.string().nullable(),
1474
+ encrypted_env_pubkey: import_zod8.z.string().nullable(),
1475
+ listed: import_zod8.z.boolean().optional().default(false),
1476
+ project_id: import_zod8.z.string().optional().nullable(),
1477
+ project_type: import_zod8.z.string().optional().nullable(),
1478
+ instance_type: import_zod8.z.string().optional().nullable(),
1479
+ public_sysinfo: import_zod8.z.boolean().optional().default(false),
1480
+ public_logs: import_zod8.z.boolean().optional().default(false),
1481
+ dapp_dashboard_url: import_zod8.z.string().optional().nullable(),
1482
+ syslog_endpoint: import_zod8.z.string().optional().nullable(),
1265
1483
  kms_info: KmsInfoSchema.optional().nullable(),
1266
- contract_address: import_zod7.z.string().optional().nullable(),
1267
- deployer_address: import_zod7.z.string().optional().nullable(),
1268
- scheduled_delete_at: import_zod7.z.string().optional().nullable(),
1269
- public_urls: import_zod7.z.array(CvmNetworkUrlsSchema).optional().default([]),
1270
- gateway_domain: import_zod7.z.string().optional().nullable()
1271
- });
1272
- var VMSchema = import_zod7.z.object({
1273
- id: import_zod7.z.number(),
1274
- name: import_zod7.z.string(),
1275
- status: import_zod7.z.string(),
1276
- teepod_id: import_zod7.z.number(),
1277
- teepod: CvmNodeSchema.optional().nullable(),
1278
- user_id: import_zod7.z.number().optional().nullable(),
1279
- app_id: import_zod7.z.string(),
1280
- vm_uuid: import_zod7.z.string().nullable(),
1281
- instance_id: import_zod7.z.string().nullable(),
1282
- app_url: import_zod7.z.string().optional().nullable(),
1283
- base_image: import_zod7.z.string().nullable(),
1284
- vcpu: import_zod7.z.number(),
1285
- memory: import_zod7.z.number(),
1286
- disk_size: import_zod7.z.number(),
1287
- manifest_version: import_zod7.z.number().optional().nullable(),
1288
- version: import_zod7.z.string().optional().nullable(),
1289
- runner: import_zod7.z.string().optional().nullable(),
1290
- docker_compose_file: import_zod7.z.string().optional().nullable(),
1291
- features: import_zod7.z.array(import_zod7.z.string()).optional().nullable(),
1292
- created_at: import_zod7.z.string(),
1293
- // datetime serialized as ISO string
1294
- encrypted_env_pubkey: import_zod7.z.string().nullable()
1484
+ contract_address: import_zod8.z.string().optional().nullable(),
1485
+ deployer_address: import_zod8.z.string().optional().nullable(),
1486
+ scheduled_delete_at: import_zod8.z.string().optional().nullable(),
1487
+ public_urls: import_zod8.z.array(CvmNetworkUrlsV20251028Schema).optional().default([]),
1488
+ gateway_domain: import_zod8.z.string().optional().nullable(),
1489
+ machine_info: MachineInfoV20251028Schema.optional().nullable(),
1490
+ updated_at: import_zod8.z.string().optional().nullable()
1491
+ });
1492
+ var PaginatedCvmInfosV20251028Schema = import_zod8.z.object({
1493
+ items: import_zod8.z.array(CvmInfoV20251028Schema),
1494
+ total: import_zod8.z.number(),
1495
+ page: import_zod8.z.number(),
1496
+ page_size: import_zod8.z.number(),
1497
+ pages: import_zod8.z.number()
1498
+ });
1499
+
1500
+ // src/types/cvm_info_v20260121.ts
1501
+ var import_zod9 = require("zod");
1502
+ var BillingPeriodSchema = import_zod9.z.enum(["skip", "hourly", "monthly"]);
1503
+ var KmsTypeSchema = import_zod9.z.enum(["phala", "ethereum", "base", "legacy"]);
1504
+ var UserRefSchema = import_zod9.z.object({
1505
+ object_type: import_zod9.z.literal("user"),
1506
+ id: import_zod9.z.string().nullable().optional(),
1507
+ username: import_zod9.z.string().nullable().optional(),
1508
+ avatar_url: import_zod9.z.string().nullable().optional()
1509
+ });
1510
+ var WorkspaceRefSchema = import_zod9.z.object({
1511
+ object_type: import_zod9.z.literal("workspace"),
1512
+ id: import_zod9.z.string(),
1513
+ name: import_zod9.z.string(),
1514
+ slug: import_zod9.z.string().nullable().optional(),
1515
+ avatar_url: import_zod9.z.string().nullable().optional()
1516
+ });
1517
+ var CvmResourceInfoV20260121Schema = import_zod9.z.object({
1518
+ instance_type: import_zod9.z.string().nullable().optional(),
1519
+ vcpu: import_zod9.z.number().int().nullable().optional(),
1520
+ memory_in_gb: import_zod9.z.number().nullable().optional(),
1521
+ disk_in_gb: import_zod9.z.number().int().nullable().optional(),
1522
+ gpus: import_zod9.z.number().int().nullable().optional(),
1523
+ compute_billing_price: import_zod9.z.string().nullable().optional(),
1524
+ billing_period: BillingPeriodSchema.nullable().optional()
1525
+ });
1526
+ var CvmOsInfoV20260121Schema = import_zod9.z.object({
1527
+ name: import_zod9.z.string().nullable().optional(),
1528
+ version: import_zod9.z.string().nullable().optional(),
1529
+ is_dev: import_zod9.z.boolean().nullable().optional(),
1530
+ os_image_hash: import_zod9.z.string().nullable().optional()
1531
+ });
1532
+ var CvmKmsInfoV20260121Schema = import_zod9.z.object({
1533
+ chain_id: import_zod9.z.number().int().nullable().optional(),
1534
+ dstack_kms_address: import_zod9.z.string().nullable().optional(),
1535
+ dstack_app_address: import_zod9.z.string().nullable().optional(),
1536
+ deployer_address: import_zod9.z.string().nullable().optional(),
1537
+ rpc_endpoint: import_zod9.z.string().nullable().optional(),
1538
+ encrypted_env_pubkey: import_zod9.z.string().nullable().optional()
1539
+ });
1540
+ var CvmProgressInfoV20260121Schema = import_zod9.z.object({
1541
+ target: import_zod9.z.string().nullable().optional(),
1542
+ started_at: import_zod9.z.string().nullable().optional(),
1543
+ correlation_id: import_zod9.z.string().nullable().optional()
1544
+ });
1545
+ var CvmGatewayInfoV20260121Schema = import_zod9.z.object({
1546
+ base_domain: import_zod9.z.string().nullable().optional(),
1547
+ cname: import_zod9.z.string().nullable().optional()
1548
+ });
1549
+ var NodeRefSchema = import_zod9.z.object({
1550
+ object_type: import_zod9.z.literal("node"),
1551
+ id: import_zod9.z.number().int().nullable().optional(),
1552
+ name: import_zod9.z.string().nullable().optional(),
1553
+ region: import_zod9.z.string().nullable().optional(),
1554
+ device_id: import_zod9.z.string().nullable().optional(),
1555
+ ppid: import_zod9.z.string().nullable().optional(),
1556
+ status: import_zod9.z.string().nullable().optional(),
1557
+ version: import_zod9.z.string().nullable().optional()
1558
+ });
1559
+ var CvmNodeInfoV20260121Schema = NodeRefSchema;
1560
+ var CvmInfoV20260121Schema = import_zod9.z.object({
1561
+ id: import_zod9.z.string(),
1562
+ // hashed CvmId
1563
+ name: import_zod9.z.string(),
1564
+ app_id: import_zod9.z.string().nullable().optional(),
1565
+ vm_uuid: import_zod9.z.string().nullable().optional(),
1566
+ resource: CvmResourceInfoV20260121Schema,
1567
+ node_info: NodeRefSchema.nullable().optional(),
1568
+ os: CvmOsInfoV20260121Schema.nullable().optional(),
1569
+ kms_type: KmsTypeSchema.nullable().optional(),
1570
+ kms_info: CvmKmsInfoV20260121Schema.nullable().optional(),
1571
+ status: import_zod9.z.string(),
1572
+ progress: CvmProgressInfoV20260121Schema.nullable().optional(),
1573
+ compose_hash: import_zod9.z.string().nullable().optional(),
1574
+ gateway: CvmGatewayInfoV20260121Schema,
1575
+ services: import_zod9.z.array(import_zod9.z.record(import_zod9.z.any())).optional().default([]),
1576
+ endpoints: import_zod9.z.array(CvmNetworkUrlsV20251028Schema).nullable().optional(),
1577
+ public_logs: import_zod9.z.boolean().optional(),
1578
+ public_sysinfo: import_zod9.z.boolean().optional(),
1579
+ public_tcbinfo: import_zod9.z.boolean().optional(),
1580
+ gateway_enabled: import_zod9.z.boolean().optional(),
1581
+ secure_time: import_zod9.z.boolean().optional(),
1582
+ storage_fs: import_zod9.z.string().optional(),
1583
+ workspace: WorkspaceRefSchema.nullable().optional(),
1584
+ creator: UserRefSchema.nullable().optional()
1585
+ });
1586
+ var CvmInfoDetailV20260121Schema = CvmInfoV20260121Schema.extend({
1587
+ compose_file: import_zod9.z.union([import_zod9.z.record(import_zod9.z.any()), import_zod9.z.string()]).nullable().optional()
1588
+ });
1589
+ var PaginatedCvmInfosV20260121Schema = import_zod9.z.object({
1590
+ items: import_zod9.z.array(CvmInfoV20260121Schema),
1591
+ total: import_zod9.z.number(),
1592
+ page: import_zod9.z.number(),
1593
+ page_size: import_zod9.z.number(),
1594
+ pages: import_zod9.z.number()
1295
1595
  });
1296
1596
 
1297
1597
  // src/types/cvm_id.ts
1298
- var import_zod8 = require("zod");
1299
- var CvmIdObjectSchema = import_zod8.z.object({
1300
- /** Direct CVM ID (any format) */
1301
- id: import_zod8.z.string().optional(),
1598
+ var import_zod10 = require("zod");
1599
+
1600
+ // src/utils/hostname.ts
1601
+ function isValidHostname(name) {
1602
+ if (typeof name !== "string" || name.length < 5 || name.length > 63) {
1603
+ return false;
1604
+ }
1605
+ return /^[a-zA-Z](?!.*--)([a-zA-Z0-9-]*[a-zA-Z0-9])?$/.test(name);
1606
+ }
1607
+ function convertToHostname(input) {
1608
+ if (typeof input !== "string") {
1609
+ return generateFallbackHostname();
1610
+ }
1611
+ let result = input;
1612
+ result = result.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
1613
+ result = result.replace(/_/g, "-");
1614
+ result = result.replace(/[^a-z0-9\s-]/gi, "-").replace(/\s+/g, "-");
1615
+ result = result.replace(/-+/g, "-").replace(/^-+/, "").replace(/-+$/, "");
1616
+ if (result.length === 0) {
1617
+ return generateFallbackHostname();
1618
+ }
1619
+ if (/^\d/.test(result)) {
1620
+ result = `dstack-app-${result}`;
1621
+ }
1622
+ if (result.length < 5) {
1623
+ result = `dstack-app-${result}`;
1624
+ }
1625
+ result = result.slice(0, 63).replace(/-+$/, "");
1626
+ if (result.length === 0) {
1627
+ return generateFallbackHostname();
1628
+ }
1629
+ if (!isValidHostname(result)) {
1630
+ return generateFallbackHostname();
1631
+ }
1632
+ return result;
1633
+ }
1634
+ function generateFallbackHostname() {
1635
+ const timestamp = Date.now().toString(36);
1636
+ const random = Math.random().toString(36).substring(2, 6);
1637
+ return `dstack-app-${timestamp}-${random}`;
1638
+ }
1639
+ function generateDefaultCvmName(prefix = "dstack-app") {
1640
+ const random = Array.from(
1641
+ { length: 5 },
1642
+ () => "abcdefghijklmnopqrstuvwxyz0123456789"[Math.floor(Math.random() * 36)]
1643
+ ).join("");
1644
+ const result = `${prefix}-${random}`;
1645
+ if (result.length > 63) {
1646
+ const shortRandom = Array.from(
1647
+ { length: 3 },
1648
+ () => "abcdefghijklmnopqrstuvwxyz0123456789"[Math.floor(Math.random() * 36)]
1649
+ ).join("");
1650
+ return `${prefix.slice(0, 55)}-${shortRandom}`;
1651
+ }
1652
+ return result;
1653
+ }
1654
+
1655
+ // src/types/cvm_id.ts
1656
+ var CvmIdObjectSchema = import_zod10.z.object({
1657
+ /** Direct CVM ID (any format) - accepts any string including names */
1658
+ id: import_zod10.z.string().optional(),
1302
1659
  /** UUID format (with or without dashes) */
1303
- uuid: import_zod8.z.string().regex(
1660
+ uuid: import_zod10.z.string().regex(
1304
1661
  /^[0-9a-f]{8}[-]?[0-9a-f]{4}[-]?4[0-9a-f]{3}[-]?[89ab][0-9a-f]{3}[-]?[0-9a-f]{12}$/i,
1305
1662
  "Invalid UUID format"
1306
1663
  ).optional(),
1307
1664
  /** App ID (40 characters, optionally prefixed with 'app_id_') */
1308
- app_id: import_zod8.z.string().optional(),
1665
+ app_id: import_zod10.z.string().optional(),
1309
1666
  /** Instance ID (40 characters, optionally prefixed with 'instance_') */
1310
- instance_id: import_zod8.z.string().optional()
1667
+ instance_id: import_zod10.z.string().optional(),
1668
+ /** CVM name (RFC 1123 hostname format: 5-63 chars, starts with letter, alphanumeric + hyphens) */
1669
+ name: import_zod10.z.string().refine(isValidHostname, {
1670
+ message: "Name must be 5-63 characters, start with letter, and contain only letters/numbers/hyphens"
1671
+ }).optional()
1311
1672
  });
1312
1673
  var refineCvmId = (schema) => schema.refine(
1313
1674
  (data) => {
1314
1675
  const obj = data;
1315
- return !!(obj.id || obj.uuid || obj.app_id || obj.instance_id);
1676
+ return !!(obj.id || obj.uuid || obj.app_id || obj.instance_id || obj.name);
1316
1677
  },
1317
1678
  {
1318
- message: "One of id, uuid, app_id, or instance_id must be provided"
1679
+ message: "One of id, uuid, app_id, instance_id, or name must be provided"
1319
1680
  }
1320
1681
  );
1321
1682
  var CvmIdBaseSchema = refineCvmId(CvmIdObjectSchema);
@@ -1329,6 +1690,8 @@ var CvmIdSchema = CvmIdBaseSchema.transform((data) => {
1329
1690
  rawValue = data.app_id;
1330
1691
  } else if (data.instance_id) {
1331
1692
  rawValue = data.instance_id;
1693
+ } else if (data.name) {
1694
+ return { cvmId: data.name };
1332
1695
  } else {
1333
1696
  throw new Error("No valid identifier provided");
1334
1697
  }
@@ -1347,46 +1710,84 @@ var CvmIdSchema = CvmIdBaseSchema.transform((data) => {
1347
1710
 
1348
1711
  // src/actions/cvms/get_cvm_info.ts
1349
1712
  var GetCvmInfoRequestSchema = CvmIdSchema;
1350
- var { action: getCvmInfo, safeAction: safeGetCvmInfo } = defineAction(CvmLegacyDetailSchema, async (client, request) => {
1713
+ function getSchemaForVersion2(version) {
1714
+ return version === "2025-10-28" ? CvmDetailV20251028Schema : CvmInfoDetailV20260121Schema;
1715
+ }
1716
+ async function getCvmInfo(client, request) {
1351
1717
  const { cvmId } = GetCvmInfoRequestSchema.parse(request);
1352
- return await client.get(`/cvms/${cvmId}`);
1353
- });
1718
+ const response = await client.get(`/cvms/${cvmId}`);
1719
+ const schema = getSchemaForVersion2(client.config.version);
1720
+ return schema.parse(response);
1721
+ }
1722
+ async function safeGetCvmInfo(client, request) {
1723
+ try {
1724
+ const data = await getCvmInfo(client, request);
1725
+ return { success: true, data };
1726
+ } catch (error) {
1727
+ if (error && typeof error === "object" && ("status" in error || "issues" in error)) {
1728
+ return { success: false, error };
1729
+ }
1730
+ return {
1731
+ success: false,
1732
+ error: {
1733
+ name: "Error",
1734
+ message: error instanceof Error ? error.message : String(error)
1735
+ }
1736
+ };
1737
+ }
1738
+ }
1354
1739
 
1355
1740
  // src/actions/cvms/get_cvm_list.ts
1356
- var import_zod9 = require("zod");
1357
- var GetCvmListRequestSchema = import_zod9.z.object({
1358
- page: import_zod9.z.number().int().min(1).optional(),
1359
- page_size: import_zod9.z.number().int().min(1).optional(),
1360
- node_id: import_zod9.z.number().int().min(1).optional(),
1361
- teepod_id: import_zod9.z.number().int().min(1).optional(),
1362
- user_id: import_zod9.z.string().optional()
1363
- }).strict();
1364
- var GetCvmListSchema = import_zod9.z.object({
1365
- items: import_zod9.z.array(CvmInfoSchema),
1366
- total: import_zod9.z.number(),
1367
- page: import_zod9.z.number(),
1368
- page_size: import_zod9.z.number(),
1369
- pages: import_zod9.z.number()
1741
+ var import_zod11 = require("zod");
1742
+ var GetCvmListRequestSchema = import_zod11.z.object({
1743
+ page: import_zod11.z.number().int().min(1).optional(),
1744
+ page_size: import_zod11.z.number().int().min(1).optional(),
1745
+ node_id: import_zod11.z.number().int().min(1).optional(),
1746
+ teepod_id: import_zod11.z.number().int().min(1).optional(),
1747
+ user_id: import_zod11.z.string().optional()
1370
1748
  }).strict();
1371
- var { action: getCvmList, safeAction: safeGetCvmList } = defineAction(GetCvmListSchema, async (client, request) => {
1749
+ function getSchemaForVersion3(version) {
1750
+ return version === "2025-10-28" ? PaginatedCvmInfosV20251028Schema : PaginatedCvmInfosV20260121Schema;
1751
+ }
1752
+ async function getCvmList(client, request) {
1372
1753
  const validatedRequest = GetCvmListRequestSchema.parse(request ?? {});
1373
- return await client.get("/cvms/paginated", { params: validatedRequest });
1374
- });
1754
+ const response = await client.get("/cvms/paginated", { params: validatedRequest });
1755
+ const schema = getSchemaForVersion3(client.config.version);
1756
+ return schema.parse(response);
1757
+ }
1758
+ async function safeGetCvmList(client, request) {
1759
+ try {
1760
+ const data = await getCvmList(client, request);
1761
+ return { success: true, data };
1762
+ } catch (error) {
1763
+ if (error && typeof error === "object" && ("status" in error || "issues" in error)) {
1764
+ return { success: false, error };
1765
+ }
1766
+ return {
1767
+ success: false,
1768
+ error: {
1769
+ name: "Error",
1770
+ message: error instanceof Error ? error.message : String(error)
1771
+ }
1772
+ };
1773
+ }
1774
+ }
1375
1775
 
1376
1776
  // src/actions/cvms/provision_cvm.ts
1377
- var import_zod10 = require("zod");
1378
- var ProvisionCvmSchema = import_zod10.z.object({
1379
- app_id: import_zod10.z.string().nullable().optional(),
1380
- app_env_encrypt_pubkey: import_zod10.z.string().nullable().optional(),
1381
- compose_hash: import_zod10.z.string(),
1382
- fmspc: import_zod10.z.string().nullable().optional(),
1383
- device_id: import_zod10.z.string().nullable().optional(),
1384
- os_image_hash: import_zod10.z.string().nullable().optional(),
1385
- instance_type: import_zod10.z.string().nullable().optional(),
1386
- teepod_id: import_zod10.z.number().nullable().optional(),
1777
+ var import_zod12 = require("zod");
1778
+ var ProvisionCvmSchema = import_zod12.z.object({
1779
+ app_id: import_zod12.z.string().nullable().optional(),
1780
+ app_env_encrypt_pubkey: import_zod12.z.string().nullable().optional(),
1781
+ compose_hash: import_zod12.z.string(),
1782
+ kms_info: KmsInfoSchema.nullable().optional(),
1783
+ fmspc: import_zod12.z.string().nullable().optional(),
1784
+ device_id: import_zod12.z.string().nullable().optional(),
1785
+ os_image_hash: import_zod12.z.string().nullable().optional(),
1786
+ instance_type: import_zod12.z.string().nullable().optional(),
1787
+ teepod_id: import_zod12.z.number().nullable().optional(),
1387
1788
  // Will be transformed to node_id
1388
- node_id: import_zod10.z.number().nullable().optional(),
1389
- kms_id: import_zod10.z.string().nullable().optional()
1789
+ node_id: import_zod12.z.number().nullable().optional(),
1790
+ kms_id: import_zod12.z.string().nullable().optional()
1390
1791
  }).passthrough().transform((data) => {
1391
1792
  if ("teepod_id" in data && data.teepod_id !== void 0) {
1392
1793
  const { teepod_id, ...rest } = data;
@@ -1394,47 +1795,55 @@ var ProvisionCvmSchema = import_zod10.z.object({
1394
1795
  }
1395
1796
  return data;
1396
1797
  });
1397
- var ProvisionCvmRequestSchema = import_zod10.z.object({
1398
- node_id: import_zod10.z.number().optional(),
1798
+ var NAME_VALIDATION_MESSAGE = "Name must be 5-63 characters, start with letter, and contain only letters/numbers/hyphens";
1799
+ var ProvisionCvmRequestSchema = import_zod12.z.object({
1800
+ node_id: import_zod12.z.number().optional(),
1399
1801
  // recommended - optional, system auto-selects if not specified
1400
- teepod_id: import_zod10.z.number().optional(),
1802
+ teepod_id: import_zod12.z.number().optional(),
1401
1803
  // deprecated, for compatibility
1402
- region: import_zod10.z.string().optional(),
1804
+ region: import_zod12.z.string().optional(),
1403
1805
  // optional - region filter for auto-selection
1404
- name: import_zod10.z.string(),
1405
- instance_type: import_zod10.z.string().default("tdx.small"),
1406
- // defaults to "tdx.small"
1407
- image: import_zod10.z.string().optional(),
1408
- vcpu: import_zod10.z.number().optional(),
1409
- memory: import_zod10.z.number().optional(),
1410
- disk_size: import_zod10.z.number().optional(),
1411
- compose_file: import_zod10.z.object({
1412
- allowed_envs: import_zod10.z.array(import_zod10.z.string()).optional(),
1413
- pre_launch_script: import_zod10.z.string().optional(),
1414
- docker_compose_file: import_zod10.z.string().optional(),
1415
- name: import_zod10.z.string().optional().default(""),
1806
+ name: import_zod12.z.string().min(5, NAME_VALIDATION_MESSAGE).max(63, NAME_VALIDATION_MESSAGE).refine((val) => isValidHostname(val), NAME_VALIDATION_MESSAGE),
1807
+ instance_type: import_zod12.z.string().optional(),
1808
+ // optional, defaults to "tdx.small" when no resource params specified
1809
+ image: import_zod12.z.string().optional(),
1810
+ vcpu: import_zod12.z.number().optional(),
1811
+ // deprecated, use instance_type instead
1812
+ memory: import_zod12.z.number().optional(),
1813
+ // deprecated, use instance_type instead
1814
+ disk_size: import_zod12.z.number().optional(),
1815
+ compose_file: import_zod12.z.object({
1816
+ allowed_envs: import_zod12.z.array(import_zod12.z.string()).optional(),
1817
+ pre_launch_script: import_zod12.z.string().optional(),
1818
+ docker_compose_file: import_zod12.z.string().optional(),
1819
+ name: import_zod12.z.string().optional().default(""),
1416
1820
  // optional with default empty string
1417
- kms_enabled: import_zod10.z.boolean().optional(),
1418
- public_logs: import_zod10.z.boolean().optional(),
1419
- public_sysinfo: import_zod10.z.boolean().optional(),
1420
- gateway_enabled: import_zod10.z.boolean().optional(),
1821
+ kms_enabled: import_zod12.z.boolean().optional(),
1822
+ public_logs: import_zod12.z.boolean().optional(),
1823
+ public_sysinfo: import_zod12.z.boolean().optional(),
1824
+ gateway_enabled: import_zod12.z.boolean().optional(),
1421
1825
  // recommended
1422
- tproxy_enabled: import_zod10.z.boolean().optional()
1826
+ tproxy_enabled: import_zod12.z.boolean().optional()
1423
1827
  // deprecated, for compatibility
1424
1828
  }),
1425
- listed: import_zod10.z.boolean().optional(),
1426
- kms_id: import_zod10.z.string().optional(),
1427
- kms: import_zod10.z.enum(["PHALA", "ETHEREUM", "BASE"]).optional(),
1829
+ listed: import_zod12.z.boolean().optional(),
1830
+ kms_id: import_zod12.z.string().optional(),
1831
+ kms: import_zod12.z.enum(["PHALA", "ETHEREUM", "BASE"]).optional(),
1428
1832
  // KMS type selection (defaults to PHALA)
1429
- kms_contract: import_zod10.z.string().optional(),
1833
+ kms_contract: import_zod12.z.string().optional(),
1430
1834
  // KMS contract address for on-chain KMS
1431
- env_keys: import_zod10.z.array(import_zod10.z.string()).optional(),
1835
+ env_keys: import_zod12.z.array(import_zod12.z.string()).optional(),
1432
1836
  // Manual nonce specification (Advanced - PHALA KMS only)
1433
- nonce: import_zod10.z.number().optional(),
1837
+ nonce: import_zod12.z.number().optional(),
1434
1838
  // User-specified nonce for deterministic app_id generation
1435
- app_id: import_zod10.z.string().optional()
1839
+ app_id: import_zod12.z.string().optional()
1436
1840
  // Expected app_id (must match calculated app_id from nonce)
1437
- }).passthrough();
1841
+ }).passthrough().transform((data) => {
1842
+ if (!data.instance_type && !data.vcpu && !data.memory) {
1843
+ return { ...data, instance_type: "tdx.small" };
1844
+ }
1845
+ return data;
1846
+ });
1438
1847
  function handleGatewayCompatibility(appCompose) {
1439
1848
  if (!appCompose.compose_file) {
1440
1849
  return appCompose;
@@ -1470,63 +1879,64 @@ var { action: provisionCvm, safeAction: safeProvisionCvm } = defineAction(Provis
1470
1879
  });
1471
1880
 
1472
1881
  // src/actions/cvms/commit_cvm_provision.ts
1473
- var import_zod11 = require("zod");
1474
- var CommitCvmProvisionSchema = import_zod11.z.object({
1475
- id: import_zod11.z.number(),
1476
- name: import_zod11.z.string(),
1477
- status: import_zod11.z.string(),
1478
- teepod_id: import_zod11.z.number(),
1479
- teepod: import_zod11.z.object({
1480
- id: import_zod11.z.number(),
1481
- name: import_zod11.z.string()
1882
+ var import_zod13 = require("zod");
1883
+ var CommitCvmProvisionSchema = import_zod13.z.object({
1884
+ id: import_zod13.z.number(),
1885
+ name: import_zod13.z.string(),
1886
+ status: import_zod13.z.string(),
1887
+ teepod_id: import_zod13.z.number(),
1888
+ teepod: import_zod13.z.object({
1889
+ id: import_zod13.z.number(),
1890
+ name: import_zod13.z.string()
1482
1891
  }).nullable(),
1483
- user_id: import_zod11.z.number().nullable(),
1484
- app_id: import_zod11.z.string().nullable(),
1485
- vm_uuid: import_zod11.z.string().nullable(),
1486
- instance_id: import_zod11.z.string().nullable(),
1487
- app_url: import_zod11.z.string().nullable(),
1488
- base_image: import_zod11.z.string().nullable(),
1489
- vcpu: import_zod11.z.number(),
1490
- memory: import_zod11.z.number(),
1491
- disk_size: import_zod11.z.number(),
1492
- manifest_version: import_zod11.z.number().nullable(),
1493
- version: import_zod11.z.string().nullable(),
1494
- runner: import_zod11.z.string().nullable(),
1495
- docker_compose_file: import_zod11.z.string().nullable(),
1496
- features: import_zod11.z.array(import_zod11.z.string()).nullable(),
1497
- created_at: import_zod11.z.string(),
1498
- encrypted_env_pubkey: import_zod11.z.string().nullable().optional(),
1499
- app_auth_contract_address: import_zod11.z.string().nullable().optional(),
1500
- deployer_address: import_zod11.z.string().nullable().optional()
1892
+ user_id: import_zod13.z.number().nullable(),
1893
+ app_id: import_zod13.z.string().nullable(),
1894
+ vm_uuid: import_zod13.z.string().nullable(),
1895
+ instance_id: import_zod13.z.string().nullable(),
1896
+ // Deprecated fields - will be removed in next API version
1897
+ app_url: import_zod13.z.string().nullable().default(null),
1898
+ base_image: import_zod13.z.string().nullable(),
1899
+ vcpu: import_zod13.z.number(),
1900
+ memory: import_zod13.z.number(),
1901
+ disk_size: import_zod13.z.number(),
1902
+ manifest_version: import_zod13.z.number().nullable().default(2),
1903
+ version: import_zod13.z.string().nullable().default("1.0.0"),
1904
+ runner: import_zod13.z.string().nullable().default("docker-compose"),
1905
+ docker_compose_file: import_zod13.z.string().nullable(),
1906
+ features: import_zod13.z.array(import_zod13.z.string()).nullable().default(["kms", "tproxy-net"]),
1907
+ created_at: import_zod13.z.string(),
1908
+ encrypted_env_pubkey: import_zod13.z.string().nullable().optional(),
1909
+ app_auth_contract_address: import_zod13.z.string().nullable().optional(),
1910
+ deployer_address: import_zod13.z.string().nullable().optional()
1501
1911
  }).passthrough();
1502
- var CommitCvmProvisionRequestSchema = import_zod11.z.object({
1503
- encrypted_env: import_zod11.z.string().optional().nullable(),
1504
- app_id: import_zod11.z.string(),
1505
- compose_hash: import_zod11.z.string(),
1506
- kms_id: import_zod11.z.string().optional(),
1507
- contract_address: import_zod11.z.string().optional(),
1508
- deployer_address: import_zod11.z.string().optional(),
1509
- env_keys: import_zod11.z.array(import_zod11.z.string()).optional().nullable()
1912
+ var CommitCvmProvisionRequestSchema = import_zod13.z.object({
1913
+ encrypted_env: import_zod13.z.string().optional().nullable(),
1914
+ app_id: import_zod13.z.string(),
1915
+ compose_hash: import_zod13.z.string(),
1916
+ kms_id: import_zod13.z.string().optional(),
1917
+ contract_address: import_zod13.z.string().optional(),
1918
+ deployer_address: import_zod13.z.string().optional(),
1919
+ env_keys: import_zod13.z.array(import_zod13.z.string()).optional().nullable()
1510
1920
  }).passthrough();
1511
1921
  var { action: commitCvmProvision, safeAction: safeCommitCvmProvision } = defineAction(CommitCvmProvisionSchema, async (client, payload) => {
1512
1922
  return await client.post("/cvms", payload);
1513
1923
  });
1514
1924
 
1515
1925
  // src/types/app_compose.ts
1516
- var import_zod12 = require("zod");
1517
- var LooseAppComposeSchema = import_zod12.z.object({
1518
- allowed_envs: import_zod12.z.array(import_zod12.z.string()).optional(),
1519
- docker_compose_file: import_zod12.z.string(),
1520
- features: import_zod12.z.array(import_zod12.z.string()).optional(),
1521
- name: import_zod12.z.string().optional(),
1522
- manifest_version: import_zod12.z.number().optional(),
1523
- kms_enabled: import_zod12.z.boolean().optional(),
1524
- public_logs: import_zod12.z.boolean().optional(),
1525
- public_sysinfo: import_zod12.z.boolean().optional(),
1526
- tproxy_enabled: import_zod12.z.boolean().optional(),
1527
- pre_launch_script: import_zod12.z.string().optional(),
1528
- env_pubkey: import_zod12.z.string().optional(),
1529
- salt: import_zod12.z.string().optional().nullable()
1926
+ var import_zod14 = require("zod");
1927
+ var LooseAppComposeSchema = import_zod14.z.object({
1928
+ allowed_envs: import_zod14.z.array(import_zod14.z.string()).optional(),
1929
+ docker_compose_file: import_zod14.z.string(),
1930
+ features: import_zod14.z.array(import_zod14.z.string()).optional(),
1931
+ name: import_zod14.z.string().optional(),
1932
+ manifest_version: import_zod14.z.number().optional(),
1933
+ kms_enabled: import_zod14.z.boolean().optional(),
1934
+ public_logs: import_zod14.z.boolean().optional(),
1935
+ public_sysinfo: import_zod14.z.boolean().optional(),
1936
+ tproxy_enabled: import_zod14.z.boolean().optional(),
1937
+ pre_launch_script: import_zod14.z.string().optional(),
1938
+ env_pubkey: import_zod14.z.string().optional(),
1939
+ salt: import_zod14.z.string().optional().nullable()
1530
1940
  }).passthrough();
1531
1941
 
1532
1942
  // src/utils/get_compose_hash.ts
@@ -1589,20 +1999,20 @@ var { action: getCvmComposeFile, safeAction: safeGetCvmComposeFile } = defineAct
1589
1999
  });
1590
2000
 
1591
2001
  // src/actions/cvms/provision_cvm_compose_file_update.ts
1592
- var import_zod13 = require("zod");
1593
- var ProvisionCvmComposeFileUpdateRequestSchema = import_zod13.z.object({
1594
- id: import_zod13.z.string().optional(),
1595
- 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(),
1596
- app_id: import_zod13.z.string().refine(
2002
+ var import_zod15 = require("zod");
2003
+ var ProvisionCvmComposeFileUpdateRequestSchema = import_zod15.z.object({
2004
+ id: import_zod15.z.string().optional(),
2005
+ 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(),
2006
+ app_id: import_zod15.z.string().refine(
1597
2007
  (val) => !val.startsWith("app_") && val.length === 40,
1598
2008
  "app_id should be 40 characters without prefix"
1599
2009
  ).transform((val) => val.startsWith("app_") ? val : `app_${val}`).optional(),
1600
- instance_id: import_zod13.z.string().refine(
2010
+ instance_id: import_zod15.z.string().refine(
1601
2011
  (val) => !val.startsWith("instance_") && val.length === 40,
1602
2012
  "instance_id should be 40 characters without prefix"
1603
2013
  ).transform((val) => val.startsWith("instance_") ? val : `instance_${val}`).optional(),
1604
2014
  app_compose: LooseAppComposeSchema,
1605
- update_env_vars: import_zod13.z.boolean().optional().nullable()
2015
+ update_env_vars: import_zod15.z.boolean().optional().nullable()
1606
2016
  }).refine(
1607
2017
  (data) => !!(data.id || data.uuid || data.app_id || data.instance_id),
1608
2018
  "One of id, uuid, app_id, or instance_id must be provided"
@@ -1613,10 +2023,10 @@ var ProvisionCvmComposeFileUpdateRequestSchema = import_zod13.z.object({
1613
2023
  _raw: data
1614
2024
  };
1615
2025
  });
1616
- var ProvisionCvmComposeFileUpdateResultSchema = import_zod13.z.object({
1617
- app_id: import_zod13.z.string().nullable(),
1618
- device_id: import_zod13.z.string().nullable(),
1619
- compose_hash: import_zod13.z.string(),
2026
+ var ProvisionCvmComposeFileUpdateResultSchema = import_zod15.z.object({
2027
+ app_id: import_zod15.z.string().nullable(),
2028
+ device_id: import_zod15.z.string().nullable(),
2029
+ compose_hash: import_zod15.z.string(),
1620
2030
  kms_info: KmsInfoSchema.nullable().optional()
1621
2031
  }).passthrough();
1622
2032
  var { action: provisionCvmComposeFileUpdate, safeAction: safeProvisionCvmComposeFileUpdate } = defineAction(ProvisionCvmComposeFileUpdateResultSchema, async (client, request) => {
@@ -1628,22 +2038,22 @@ var { action: provisionCvmComposeFileUpdate, safeAction: safeProvisionCvmCompose
1628
2038
  });
1629
2039
 
1630
2040
  // src/actions/cvms/commit_cvm_compose_file_update.ts
1631
- var import_zod14 = require("zod");
1632
- var CommitCvmComposeFileUpdateRequestSchema = import_zod14.z.object({
1633
- id: import_zod14.z.string().optional(),
1634
- 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(),
1635
- app_id: import_zod14.z.string().refine(
2041
+ var import_zod16 = require("zod");
2042
+ var CommitCvmComposeFileUpdateRequestSchema = import_zod16.z.object({
2043
+ id: import_zod16.z.string().optional(),
2044
+ uuid: import_zod16.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(),
2045
+ app_id: import_zod16.z.string().refine(
1636
2046
  (val) => !val.startsWith("app_") && val.length === 40,
1637
2047
  "app_id should be 40 characters without prefix"
1638
2048
  ).transform((val) => val.startsWith("app_") ? val : `app_${val}`).optional(),
1639
- instance_id: import_zod14.z.string().refine(
2049
+ instance_id: import_zod16.z.string().refine(
1640
2050
  (val) => !val.startsWith("instance_") && val.length === 40,
1641
2051
  "instance_id should be 40 characters without prefix"
1642
2052
  ).transform((val) => val.startsWith("instance_") ? val : `instance_${val}`).optional(),
1643
- compose_hash: import_zod14.z.string().min(1, "Compose hash is required"),
1644
- encrypted_env: import_zod14.z.string().optional(),
1645
- env_keys: import_zod14.z.array(import_zod14.z.string()).optional(),
1646
- update_env_vars: import_zod14.z.boolean().optional().nullable()
2053
+ compose_hash: import_zod16.z.string().min(1, "Compose hash is required"),
2054
+ encrypted_env: import_zod16.z.string().optional(),
2055
+ env_keys: import_zod16.z.array(import_zod16.z.string()).optional(),
2056
+ update_env_vars: import_zod16.z.boolean().optional().nullable()
1647
2057
  }).refine(
1648
2058
  (data) => !!(data.id || data.uuid || data.app_id || data.instance_id),
1649
2059
  "One of id, uuid, app_id, or instance_id must be provided"
@@ -1652,10 +2062,10 @@ var CommitCvmComposeFileUpdateRequestSchema = import_zod14.z.object({
1652
2062
  compose_hash: data.compose_hash,
1653
2063
  encrypted_env: data.encrypted_env,
1654
2064
  env_keys: data.env_keys,
1655
- update_env_vars: !!data.update_env_vars,
2065
+ update_env_vars: data.update_env_vars ?? void 0,
1656
2066
  _raw: data
1657
2067
  }));
1658
- var CommitCvmComposeFileUpdateSchema = import_zod14.z.any().transform(() => void 0);
2068
+ var CommitCvmComposeFileUpdateSchema = import_zod16.z.any().transform(() => void 0);
1659
2069
  var { action: commitCvmComposeFileUpdate, safeAction: safeCommitCvmComposeFileUpdate } = defineAction(
1660
2070
  CommitCvmComposeFileUpdateSchema,
1661
2071
  async (client, request) => {
@@ -1663,36 +2073,27 @@ var { action: commitCvmComposeFileUpdate, safeAction: safeCommitCvmComposeFileUp
1663
2073
  return await client.patch(`/cvms/${validatedRequest.cvmId}/compose_file`, {
1664
2074
  compose_hash: validatedRequest.compose_hash,
1665
2075
  encrypted_env: validatedRequest.encrypted_env,
1666
- env_keys: validatedRequest.env_keys
2076
+ env_keys: validatedRequest.env_keys,
2077
+ update_env_vars: validatedRequest.update_env_vars
1667
2078
  });
1668
2079
  }
1669
2080
  );
1670
2081
 
1671
2082
  // src/actions/cvms/update_cvm_envs.ts
1672
- var import_zod15 = require("zod");
1673
- var UpdateCvmEnvsRequestSchema = import_zod15.z.object({
1674
- id: import_zod15.z.string().optional(),
1675
- 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(),
1676
- app_id: import_zod15.z.string().refine(
1677
- (val) => !val.startsWith("app_") && val.length === 40,
1678
- "app_id should be 40 characters without prefix"
1679
- ).transform((val) => val.startsWith("app_") ? val : `app_${val}`).optional(),
1680
- instance_id: import_zod15.z.string().refine(
1681
- (val) => !val.startsWith("instance_") && val.length === 40,
1682
- "instance_id should be 40 characters without prefix"
1683
- ).transform((val) => val.startsWith("instance_") ? val : `instance_${val}`).optional(),
1684
- encrypted_env: import_zod15.z.string().describe("Encrypted environment variables (hex string)"),
1685
- env_keys: import_zod15.z.array(import_zod15.z.string()).optional().describe("List of allowed environment variable keys"),
1686
- compose_hash: import_zod15.z.string().optional().describe("Compose hash for verification (Phase 2, required when env_keys changes)"),
1687
- transaction_hash: import_zod15.z.string().optional().describe(
1688
- "On-chain transaction hash for verification (Phase 2, required when env_keys changes)"
1689
- )
1690
- }).refine(
1691
- (data) => !!(data.id || data.uuid || data.app_id || data.instance_id),
1692
- "One of id, uuid, app_id, or instance_id must be provided"
2083
+ var import_zod17 = require("zod");
2084
+ var UpdateCvmEnvsRequestSchema = refineCvmId(
2085
+ CvmIdObjectSchema.extend({
2086
+ encrypted_env: import_zod17.z.string().describe("Encrypted environment variables (hex string)"),
2087
+ env_keys: import_zod17.z.array(import_zod17.z.string()).optional().describe("List of allowed environment variable keys"),
2088
+ compose_hash: import_zod17.z.string().optional().describe("Compose hash for verification (Phase 2, required when env_keys changes)"),
2089
+ transaction_hash: import_zod17.z.string().optional().describe(
2090
+ "On-chain transaction hash for verification (Phase 2, required when env_keys changes)"
2091
+ )
2092
+ })
1693
2093
  ).transform((data) => {
2094
+ const { cvmId } = CvmIdSchema.parse(data);
1694
2095
  return {
1695
- cvmId: data.id || data.uuid || data.app_id || data.instance_id,
2096
+ cvmId,
1696
2097
  request: {
1697
2098
  encrypted_env: data.encrypted_env,
1698
2099
  env_keys: data.env_keys,
@@ -1702,21 +2103,21 @@ var UpdateCvmEnvsRequestSchema = import_zod15.z.object({
1702
2103
  _raw: data
1703
2104
  };
1704
2105
  });
1705
- var UpdateCvmEnvsInProgressSchema = import_zod15.z.object({
1706
- status: import_zod15.z.literal("in_progress"),
1707
- message: import_zod15.z.string(),
1708
- correlation_id: import_zod15.z.string(),
1709
- allowed_envs_changed: import_zod15.z.boolean()
2106
+ var UpdateCvmEnvsInProgressSchema = import_zod17.z.object({
2107
+ status: import_zod17.z.literal("in_progress"),
2108
+ message: import_zod17.z.string(),
2109
+ correlation_id: import_zod17.z.string(),
2110
+ allowed_envs_changed: import_zod17.z.boolean()
1710
2111
  });
1711
- var UpdateCvmEnvsPreconditionRequiredSchema = import_zod15.z.object({
1712
- status: import_zod15.z.literal("precondition_required"),
1713
- message: import_zod15.z.string(),
1714
- compose_hash: import_zod15.z.string(),
1715
- app_id: import_zod15.z.string(),
1716
- device_id: import_zod15.z.string(),
2112
+ var UpdateCvmEnvsPreconditionRequiredSchema = import_zod17.z.object({
2113
+ status: import_zod17.z.literal("precondition_required"),
2114
+ message: import_zod17.z.string(),
2115
+ compose_hash: import_zod17.z.string(),
2116
+ app_id: import_zod17.z.string(),
2117
+ device_id: import_zod17.z.string(),
1717
2118
  kms_info: KmsInfoSchema
1718
2119
  });
1719
- var UpdateCvmEnvsResultSchema = import_zod15.z.union([
2120
+ var UpdateCvmEnvsResultSchema = import_zod17.z.union([
1720
2121
  UpdateCvmEnvsInProgressSchema,
1721
2122
  UpdateCvmEnvsPreconditionRequiredSchema
1722
2123
  ]);
@@ -1729,7 +2130,81 @@ var { action: updateCvmEnvs, safeAction: safeUpdateCvmEnvs } = defineAction(Upda
1729
2130
  );
1730
2131
  return response;
1731
2132
  } catch (error) {
1732
- if (error instanceof PhalaCloudError && error.status === 428) {
2133
+ if (error instanceof PhalaCloudError && error.status === 465) {
2134
+ const detail = error.detail;
2135
+ if (detail && typeof detail === "object") {
2136
+ const detailObj = detail;
2137
+ return {
2138
+ status: "precondition_required",
2139
+ message: detailObj.message || "Compose hash verification required",
2140
+ compose_hash: detailObj.compose_hash,
2141
+ app_id: detailObj.app_id,
2142
+ device_id: detailObj.device_id,
2143
+ kms_info: detailObj.kms_info
2144
+ };
2145
+ }
2146
+ }
2147
+ throw error;
2148
+ }
2149
+ });
2150
+
2151
+ // src/actions/cvms/update_docker_compose.ts
2152
+ var import_zod18 = require("zod");
2153
+ var UpdateDockerComposeRequestSchema = refineCvmId(
2154
+ CvmIdObjectSchema.extend({
2155
+ docker_compose_file: import_zod18.z.string().describe("Docker Compose YAML content"),
2156
+ compose_hash: import_zod18.z.string().optional().describe("Compose hash for verification (Phase 2, contract-owned KMS only)"),
2157
+ transaction_hash: import_zod18.z.string().optional().describe("On-chain transaction hash for verification (Phase 2, contract-owned KMS only)")
2158
+ })
2159
+ ).transform((data) => {
2160
+ const { cvmId } = CvmIdSchema.parse(data);
2161
+ return {
2162
+ cvmId,
2163
+ request: {
2164
+ docker_compose_file: data.docker_compose_file,
2165
+ compose_hash: data.compose_hash,
2166
+ transaction_hash: data.transaction_hash
2167
+ },
2168
+ _raw: data
2169
+ };
2170
+ });
2171
+ var UpdateDockerComposeInProgressSchema = import_zod18.z.object({
2172
+ status: import_zod18.z.literal("in_progress"),
2173
+ message: import_zod18.z.string(),
2174
+ correlation_id: import_zod18.z.string()
2175
+ });
2176
+ var UpdateDockerComposePreconditionRequiredSchema = import_zod18.z.object({
2177
+ status: import_zod18.z.literal("precondition_required"),
2178
+ message: import_zod18.z.string(),
2179
+ compose_hash: import_zod18.z.string(),
2180
+ app_id: import_zod18.z.string(),
2181
+ device_id: import_zod18.z.string(),
2182
+ kms_info: KmsInfoSchema
2183
+ });
2184
+ var UpdateDockerComposeResultSchema = import_zod18.z.union([
2185
+ UpdateDockerComposeInProgressSchema,
2186
+ UpdateDockerComposePreconditionRequiredSchema
2187
+ ]);
2188
+ var { action: updateDockerCompose, safeAction: safeUpdateDockerCompose } = defineAction(UpdateDockerComposeResultSchema, async (client, request) => {
2189
+ const validatedRequest = UpdateDockerComposeRequestSchema.parse(request);
2190
+ const headers = {
2191
+ "Content-Type": "text/yaml"
2192
+ };
2193
+ if (validatedRequest.request.compose_hash) {
2194
+ headers["X-Compose-Hash"] = validatedRequest.request.compose_hash;
2195
+ }
2196
+ if (validatedRequest.request.transaction_hash) {
2197
+ headers["X-Transaction-Hash"] = validatedRequest.request.transaction_hash;
2198
+ }
2199
+ try {
2200
+ const response = await client.patch(
2201
+ `/cvms/${validatedRequest.cvmId}/docker-compose`,
2202
+ validatedRequest.request.docker_compose_file,
2203
+ { headers }
2204
+ );
2205
+ return response;
2206
+ } catch (error) {
2207
+ if (error instanceof PhalaCloudError && error.status === 465) {
1733
2208
  const detail = error.detail;
1734
2209
  if (detail && typeof detail === "object") {
1735
2210
  const detailObj = detail;
@@ -1747,10 +2222,92 @@ var { action: updateCvmEnvs, safeAction: safeUpdateCvmEnvs } = defineAction(Upda
1747
2222
  }
1748
2223
  });
1749
2224
 
2225
+ // src/actions/cvms/update_prelaunch_script.ts
2226
+ var import_zod19 = require("zod");
2227
+ var UpdatePreLaunchScriptRequestSchema = refineCvmId(
2228
+ CvmIdObjectSchema.extend({
2229
+ pre_launch_script: import_zod19.z.string().describe("Pre-launch script content (shell script)"),
2230
+ compose_hash: import_zod19.z.string().optional().describe("Compose hash for verification (Phase 2, contract-owned KMS only)"),
2231
+ transaction_hash: import_zod19.z.string().optional().describe("On-chain transaction hash for verification (Phase 2, contract-owned KMS only)")
2232
+ })
2233
+ ).transform((data) => {
2234
+ const { cvmId } = CvmIdSchema.parse(data);
2235
+ return {
2236
+ cvmId,
2237
+ request: {
2238
+ pre_launch_script: data.pre_launch_script,
2239
+ compose_hash: data.compose_hash,
2240
+ transaction_hash: data.transaction_hash
2241
+ },
2242
+ _raw: data
2243
+ };
2244
+ });
2245
+ var UpdatePreLaunchScriptInProgressSchema = import_zod19.z.object({
2246
+ status: import_zod19.z.literal("in_progress"),
2247
+ message: import_zod19.z.string(),
2248
+ correlation_id: import_zod19.z.string()
2249
+ });
2250
+ var UpdatePreLaunchScriptPreconditionRequiredSchema = import_zod19.z.object({
2251
+ status: import_zod19.z.literal("precondition_required"),
2252
+ message: import_zod19.z.string(),
2253
+ compose_hash: import_zod19.z.string(),
2254
+ app_id: import_zod19.z.string(),
2255
+ device_id: import_zod19.z.string(),
2256
+ kms_info: KmsInfoSchema
2257
+ });
2258
+ var UpdatePreLaunchScriptResultSchema = import_zod19.z.union([
2259
+ UpdatePreLaunchScriptInProgressSchema,
2260
+ UpdatePreLaunchScriptPreconditionRequiredSchema
2261
+ ]);
2262
+ var { action: updatePreLaunchScript, safeAction: safeUpdatePreLaunchScript } = defineAction(UpdatePreLaunchScriptResultSchema, async (client, request) => {
2263
+ const validatedRequest = UpdatePreLaunchScriptRequestSchema.parse(request);
2264
+ const headers = {
2265
+ "Content-Type": "text/plain"
2266
+ };
2267
+ if (validatedRequest.request.compose_hash) {
2268
+ headers["X-Compose-Hash"] = validatedRequest.request.compose_hash;
2269
+ }
2270
+ if (validatedRequest.request.transaction_hash) {
2271
+ headers["X-Transaction-Hash"] = validatedRequest.request.transaction_hash;
2272
+ }
2273
+ try {
2274
+ const response = await client.patch(
2275
+ `/cvms/${validatedRequest.cvmId}/pre-launch-script`,
2276
+ validatedRequest.request.pre_launch_script,
2277
+ { headers }
2278
+ );
2279
+ return response;
2280
+ } catch (error) {
2281
+ if (error instanceof PhalaCloudError && error.status === 465) {
2282
+ const detail = error.detail;
2283
+ if (detail && typeof detail === "object") {
2284
+ const detailObj = detail;
2285
+ return {
2286
+ status: "precondition_required",
2287
+ message: detailObj.message || "Compose hash verification required",
2288
+ compose_hash: detailObj.compose_hash,
2289
+ app_id: detailObj.app_id,
2290
+ device_id: detailObj.device_id,
2291
+ kms_info: detailObj.kms_info
2292
+ };
2293
+ }
2294
+ }
2295
+ throw error;
2296
+ }
2297
+ });
2298
+
2299
+ // src/actions/cvms/get_cvm_prelaunch_script.ts
2300
+ var import_zod20 = require("zod");
2301
+ var GetCvmPreLaunchScriptRequestSchema = CvmIdSchema;
2302
+ var { action: getCvmPreLaunchScript, safeAction: safeGetCvmPreLaunchScript } = defineAction(import_zod20.z.string(), async (client, request) => {
2303
+ const { cvmId } = GetCvmPreLaunchScriptRequestSchema.parse(request);
2304
+ return await client.get(`/cvms/${cvmId}/pre-launch-script`);
2305
+ });
2306
+
1750
2307
  // src/actions/kms/get_kms_info.ts
1751
- var import_zod16 = require("zod");
1752
- var GetKmsInfoRequestSchema = import_zod16.z.object({
1753
- kms_id: import_zod16.z.string().min(1, "KMS ID is required")
2308
+ var import_zod21 = require("zod");
2309
+ var GetKmsInfoRequestSchema = import_zod21.z.object({
2310
+ kms_id: import_zod21.z.string().min(1, "KMS ID is required")
1754
2311
  });
1755
2312
  var { action: getKmsInfo, safeAction: safeGetKmsInfo } = defineAction(KmsInfoSchema, async (client, request) => {
1756
2313
  const validatedRequest = GetKmsInfoRequestSchema.parse(request);
@@ -1758,18 +2315,18 @@ var { action: getKmsInfo, safeAction: safeGetKmsInfo } = defineAction(KmsInfoSch
1758
2315
  });
1759
2316
 
1760
2317
  // src/actions/kms/get_kms_list.ts
1761
- var import_zod17 = require("zod");
1762
- var GetKmsListRequestSchema = import_zod17.z.object({
1763
- page: import_zod17.z.number().int().min(1).optional(),
1764
- page_size: import_zod17.z.number().int().min(1).optional(),
1765
- is_onchain: import_zod17.z.boolean().optional()
2318
+ var import_zod22 = require("zod");
2319
+ var GetKmsListRequestSchema = import_zod22.z.object({
2320
+ page: import_zod22.z.number().int().min(1).optional(),
2321
+ page_size: import_zod22.z.number().int().min(1).optional(),
2322
+ is_onchain: import_zod22.z.boolean().optional()
1766
2323
  }).strict();
1767
- var GetKmsListSchema = import_zod17.z.object({
1768
- items: import_zod17.z.array(KmsInfoSchema),
1769
- total: import_zod17.z.number(),
1770
- page: import_zod17.z.number(),
1771
- page_size: import_zod17.z.number(),
1772
- pages: import_zod17.z.number()
2324
+ var GetKmsListSchema = import_zod22.z.object({
2325
+ items: import_zod22.z.array(KmsInfoSchema),
2326
+ total: import_zod22.z.number(),
2327
+ page: import_zod22.z.number(),
2328
+ page_size: import_zod22.z.number(),
2329
+ pages: import_zod22.z.number()
1773
2330
  }).strict();
1774
2331
  var { action: getKmsList, safeAction: safeGetKmsList } = defineAction(GetKmsListSchema, async (client, request) => {
1775
2332
  const validatedRequest = GetKmsListRequestSchema.parse(request ?? {});
@@ -1777,17 +2334,17 @@ var { action: getKmsList, safeAction: safeGetKmsList } = defineAction(GetKmsList
1777
2334
  });
1778
2335
 
1779
2336
  // src/actions/kms/get_app_env_encrypt_pubkey.ts
1780
- var import_zod18 = require("zod");
1781
- var GetAppEnvEncryptPubKeyRequestSchema = import_zod18.z.object({
1782
- kms: import_zod18.z.string().min(1, "KMS ID or slug is required"),
1783
- app_id: import_zod18.z.string().refine(
2337
+ var import_zod23 = require("zod");
2338
+ var GetAppEnvEncryptPubKeyRequestSchema = import_zod23.z.object({
2339
+ kms: import_zod23.z.string().min(1, "KMS ID or slug is required"),
2340
+ app_id: import_zod23.z.string().refine(
1784
2341
  (val) => val.length === 40 || val.startsWith("0x") && val.length === 42,
1785
2342
  "App ID must be exactly 40 characters or 42 characters with 0x prefix"
1786
2343
  )
1787
2344
  }).strict();
1788
- var GetAppEnvEncryptPubKeySchema = import_zod18.z.object({
1789
- public_key: import_zod18.z.string(),
1790
- signature: import_zod18.z.string()
2345
+ var GetAppEnvEncryptPubKeySchema = import_zod23.z.object({
2346
+ public_key: import_zod23.z.string(),
2347
+ signature: import_zod23.z.string()
1791
2348
  }).strict();
1792
2349
  var { action: getAppEnvEncryptPubKey, safeAction: safeGetAppEnvEncryptPubKey } = defineAction(GetAppEnvEncryptPubKeySchema, async (client, payload) => {
1793
2350
  const validatedRequest = GetAppEnvEncryptPubKeyRequestSchema.parse(payload);
@@ -1795,15 +2352,15 @@ var { action: getAppEnvEncryptPubKey, safeAction: safeGetAppEnvEncryptPubKey } =
1795
2352
  });
1796
2353
 
1797
2354
  // src/actions/kms/next_app_ids.ts
1798
- var import_zod19 = require("zod");
1799
- var NextAppIdsRequestSchema = import_zod19.z.object({
1800
- counts: import_zod19.z.number().int().min(1).max(20).optional().default(1)
2355
+ var import_zod24 = require("zod");
2356
+ var NextAppIdsRequestSchema = import_zod24.z.object({
2357
+ counts: import_zod24.z.number().int().min(1).max(20).optional().default(1)
1801
2358
  }).strict();
1802
- var NextAppIdsSchema = import_zod19.z.object({
1803
- app_ids: import_zod19.z.array(
1804
- import_zod19.z.object({
1805
- app_id: import_zod19.z.string(),
1806
- nonce: import_zod19.z.number().int().min(0)
2359
+ var NextAppIdsSchema = import_zod24.z.object({
2360
+ app_ids: import_zod24.z.array(
2361
+ import_zod24.z.object({
2362
+ app_id: import_zod24.z.string(),
2363
+ nonce: import_zod24.z.number().int().min(0)
1807
2364
  })
1808
2365
  )
1809
2366
  }).strict();
@@ -1814,6 +2371,36 @@ var { action: nextAppIds, safeAction: safeNextAppIds } = defineAction(NextAppIds
1814
2371
  return await client.get(`/kms/phala/next_app_id?${params.toString()}`);
1815
2372
  });
1816
2373
 
2374
+ // src/types/cvm_info.ts
2375
+ var import_zod25 = require("zod");
2376
+ var VMSchema = import_zod25.z.object({
2377
+ id: import_zod25.z.number(),
2378
+ name: import_zod25.z.string(),
2379
+ status: import_zod25.z.string(),
2380
+ teepod_id: import_zod25.z.number(),
2381
+ teepod: import_zod25.z.object({
2382
+ id: import_zod25.z.number(),
2383
+ name: import_zod25.z.string(),
2384
+ region_identifier: import_zod25.z.string().nullable().optional()
2385
+ }).optional().nullable(),
2386
+ user_id: import_zod25.z.number().optional().nullable(),
2387
+ app_id: import_zod25.z.string(),
2388
+ vm_uuid: import_zod25.z.string().nullable(),
2389
+ instance_id: import_zod25.z.string().nullable(),
2390
+ app_url: import_zod25.z.string().optional().nullable(),
2391
+ base_image: import_zod25.z.string().nullable(),
2392
+ vcpu: import_zod25.z.number(),
2393
+ memory: import_zod25.z.number(),
2394
+ disk_size: import_zod25.z.number(),
2395
+ manifest_version: import_zod25.z.number().optional().nullable(),
2396
+ version: import_zod25.z.string().optional().nullable(),
2397
+ runner: import_zod25.z.string().optional().nullable(),
2398
+ docker_compose_file: import_zod25.z.string().optional().nullable(),
2399
+ features: import_zod25.z.array(import_zod25.z.string()).optional().nullable(),
2400
+ created_at: import_zod25.z.string(),
2401
+ encrypted_env_pubkey: import_zod25.z.string().nullable()
2402
+ });
2403
+
1817
2404
  // src/actions/cvms/start_cvm.ts
1818
2405
  var StartCvmRequestSchema = CvmIdSchema;
1819
2406
  var { action: startCvm, safeAction: safeStartCvm } = defineAction(VMSchema, async (client, request) => {
@@ -1839,10 +2426,10 @@ var { action: shutdownCvm, safeAction: safeShutdownCvm } = defineAction(VMSchema
1839
2426
  });
1840
2427
 
1841
2428
  // src/actions/cvms/restart_cvm.ts
1842
- var import_zod20 = require("zod");
2429
+ var import_zod26 = require("zod");
1843
2430
  var RestartCvmRequestSchema = refineCvmId(
1844
2431
  CvmIdObjectSchema.extend({
1845
- force: import_zod20.z.boolean().optional()
2432
+ force: import_zod26.z.boolean().optional()
1846
2433
  })
1847
2434
  );
1848
2435
  var { action: restartCvm, safeAction: safeRestartCvm } = defineAction(VMSchema, async (client, request) => {
@@ -1853,10 +2440,10 @@ var { action: restartCvm, safeAction: safeRestartCvm } = defineAction(VMSchema,
1853
2440
  });
1854
2441
 
1855
2442
  // src/actions/cvms/delete_cvm.ts
1856
- var import_zod21 = require("zod");
2443
+ var import_zod27 = require("zod");
1857
2444
  var DeleteCvmRequestSchema = CvmIdSchema;
1858
2445
  var { action: deleteCvm, safeAction: safeDeleteCvm } = defineAction(
1859
- import_zod21.z.void(),
2446
+ import_zod27.z.void(),
1860
2447
  async (client, request) => {
1861
2448
  const { cvmId } = DeleteCvmRequestSchema.parse(request);
1862
2449
  await client.delete(`/cvms/${cvmId}`);
@@ -1865,41 +2452,41 @@ var { action: deleteCvm, safeAction: safeDeleteCvm } = defineAction(
1865
2452
  );
1866
2453
 
1867
2454
  // src/actions/cvms/get_cvm_stats.ts
1868
- var import_zod22 = require("zod");
1869
- var DiskInfoSchema = import_zod22.z.object({
1870
- name: import_zod22.z.string(),
1871
- mount_point: import_zod22.z.string(),
1872
- total_size: import_zod22.z.number(),
1873
- free_size: import_zod22.z.number()
1874
- });
1875
- var SystemInfoSchema = import_zod22.z.object({
1876
- os_name: import_zod22.z.string(),
1877
- os_version: import_zod22.z.string(),
1878
- kernel_version: import_zod22.z.string(),
1879
- cpu_model: import_zod22.z.string(),
1880
- num_cpus: import_zod22.z.number(),
1881
- total_memory: import_zod22.z.number(),
1882
- available_memory: import_zod22.z.number(),
1883
- used_memory: import_zod22.z.number(),
1884
- free_memory: import_zod22.z.number(),
1885
- total_swap: import_zod22.z.number(),
1886
- used_swap: import_zod22.z.number(),
1887
- free_swap: import_zod22.z.number(),
1888
- uptime: import_zod22.z.number(),
1889
- loadavg_one: import_zod22.z.number(),
1890
- loadavg_five: import_zod22.z.number(),
1891
- loadavg_fifteen: import_zod22.z.number(),
1892
- disks: import_zod22.z.array(DiskInfoSchema)
1893
- });
1894
- var CvmSystemInfoSchema = import_zod22.z.object({
1895
- is_online: import_zod22.z.boolean(),
1896
- is_public: import_zod22.z.boolean().default(false),
1897
- error: import_zod22.z.string().nullable(),
2455
+ var import_zod28 = require("zod");
2456
+ var DiskInfoSchema = import_zod28.z.object({
2457
+ name: import_zod28.z.string(),
2458
+ mount_point: import_zod28.z.string(),
2459
+ total_size: import_zod28.z.number(),
2460
+ free_size: import_zod28.z.number()
2461
+ });
2462
+ var SystemInfoSchema = import_zod28.z.object({
2463
+ os_name: import_zod28.z.string(),
2464
+ os_version: import_zod28.z.string(),
2465
+ kernel_version: import_zod28.z.string(),
2466
+ cpu_model: import_zod28.z.string(),
2467
+ num_cpus: import_zod28.z.number(),
2468
+ total_memory: import_zod28.z.number(),
2469
+ available_memory: import_zod28.z.number(),
2470
+ used_memory: import_zod28.z.number(),
2471
+ free_memory: import_zod28.z.number(),
2472
+ total_swap: import_zod28.z.number(),
2473
+ used_swap: import_zod28.z.number(),
2474
+ free_swap: import_zod28.z.number(),
2475
+ uptime: import_zod28.z.number(),
2476
+ loadavg_one: import_zod28.z.number(),
2477
+ loadavg_five: import_zod28.z.number(),
2478
+ loadavg_fifteen: import_zod28.z.number(),
2479
+ disks: import_zod28.z.array(DiskInfoSchema)
2480
+ });
2481
+ var CvmSystemInfoSchema = import_zod28.z.object({
2482
+ is_online: import_zod28.z.boolean(),
2483
+ is_public: import_zod28.z.boolean().default(false),
2484
+ error: import_zod28.z.string().nullable(),
1898
2485
  sysinfo: SystemInfoSchema.nullable(),
1899
- status: import_zod22.z.string().nullable(),
1900
- in_progress: import_zod22.z.boolean().default(false),
1901
- boot_progress: import_zod22.z.string().nullable(),
1902
- boot_error: import_zod22.z.string().nullable()
2486
+ status: import_zod28.z.string().nullable(),
2487
+ in_progress: import_zod28.z.boolean().default(false),
2488
+ boot_progress: import_zod28.z.string().nullable(),
2489
+ boot_error: import_zod28.z.string().nullable()
1903
2490
  });
1904
2491
  var GetCvmStatsRequestSchema = CvmIdSchema;
1905
2492
  var { action: getCvmStats, safeAction: safeGetCvmStats } = defineAction(CvmSystemInfoSchema, async (client, request) => {
@@ -1908,18 +2495,18 @@ var { action: getCvmStats, safeAction: safeGetCvmStats } = defineAction(CvmSyste
1908
2495
  });
1909
2496
 
1910
2497
  // src/actions/cvms/get_cvm_network.ts
1911
- var import_zod23 = require("zod");
1912
- var CvmNetworkUrlsSchema2 = import_zod23.z.object({
1913
- app: import_zod23.z.string(),
1914
- instance: import_zod23.z.string()
1915
- });
1916
- var CvmNetworkSchema = import_zod23.z.object({
1917
- is_online: import_zod23.z.boolean(),
1918
- is_public: import_zod23.z.boolean().default(true),
1919
- error: import_zod23.z.string().nullable(),
1920
- internal_ip: import_zod23.z.string().nullable(),
1921
- latest_handshake: import_zod23.z.string().nullable(),
1922
- public_urls: import_zod23.z.array(CvmNetworkUrlsSchema2).nullable()
2498
+ var import_zod29 = require("zod");
2499
+ var CvmNetworkUrlsSchema = import_zod29.z.object({
2500
+ app: import_zod29.z.string(),
2501
+ instance: import_zod29.z.string()
2502
+ });
2503
+ var CvmNetworkSchema = import_zod29.z.object({
2504
+ is_online: import_zod29.z.boolean(),
2505
+ is_public: import_zod29.z.boolean().default(true),
2506
+ error: import_zod29.z.string().nullable(),
2507
+ internal_ip: import_zod29.z.string().nullable(),
2508
+ latest_handshake: import_zod29.z.string().nullable(),
2509
+ public_urls: import_zod29.z.array(CvmNetworkUrlsSchema).nullable()
1923
2510
  });
1924
2511
  var GetCvmNetworkRequestSchema = CvmIdSchema;
1925
2512
  var { action: getCvmNetwork, safeAction: safeGetCvmNetwork } = defineAction(CvmNetworkSchema, async (client, request) => {
@@ -1928,36 +2515,36 @@ var { action: getCvmNetwork, safeAction: safeGetCvmNetwork } = defineAction(CvmN
1928
2515
  });
1929
2516
 
1930
2517
  // src/actions/cvms/get_cvm_docker_compose.ts
1931
- var import_zod24 = require("zod");
2518
+ var import_zod30 = require("zod");
1932
2519
  var GetCvmDockerComposeRequestSchema = CvmIdSchema;
1933
- var { action: getCvmDockerCompose, safeAction: safeGetCvmDockerCompose } = defineAction(import_zod24.z.string(), async (client, request) => {
2520
+ var { action: getCvmDockerCompose, safeAction: safeGetCvmDockerCompose } = defineAction(import_zod30.z.string(), async (client, request) => {
1934
2521
  const { cvmId } = GetCvmDockerComposeRequestSchema.parse(request);
1935
2522
  return await client.get(`/cvms/${cvmId}/docker-compose.yml`);
1936
2523
  });
1937
2524
 
1938
2525
  // src/actions/cvms/get_cvm_containers_stats.ts
1939
- var import_zod25 = require("zod");
1940
- var ContainerInfoSchema = import_zod25.z.object({
1941
- id: import_zod25.z.string(),
1942
- names: import_zod25.z.array(import_zod25.z.string()),
1943
- image: import_zod25.z.string(),
1944
- image_id: import_zod25.z.string(),
1945
- command: import_zod25.z.string().nullable().optional(),
1946
- created: import_zod25.z.number(),
1947
- state: import_zod25.z.string(),
1948
- status: import_zod25.z.string(),
1949
- log_endpoint: import_zod25.z.string().nullable()
1950
- });
1951
- var CvmContainersStatsSchema = import_zod25.z.object({
1952
- is_online: import_zod25.z.boolean(),
1953
- is_public: import_zod25.z.boolean().default(true),
1954
- error: import_zod25.z.string().nullable(),
1955
- docker_compose_file: import_zod25.z.string().nullable(),
1956
- manifest_version: import_zod25.z.number().nullable(),
1957
- version: import_zod25.z.string().nullable(),
1958
- runner: import_zod25.z.string().nullable(),
1959
- features: import_zod25.z.array(import_zod25.z.string()).nullable(),
1960
- containers: import_zod25.z.array(ContainerInfoSchema).nullable()
2526
+ var import_zod31 = require("zod");
2527
+ var ContainerInfoSchema = import_zod31.z.object({
2528
+ id: import_zod31.z.string(),
2529
+ names: import_zod31.z.array(import_zod31.z.string()),
2530
+ image: import_zod31.z.string(),
2531
+ image_id: import_zod31.z.string(),
2532
+ command: import_zod31.z.string().nullable().optional(),
2533
+ created: import_zod31.z.number(),
2534
+ state: import_zod31.z.string(),
2535
+ status: import_zod31.z.string(),
2536
+ log_endpoint: import_zod31.z.string().nullable()
2537
+ });
2538
+ var CvmContainersStatsSchema = import_zod31.z.object({
2539
+ is_online: import_zod31.z.boolean(),
2540
+ is_public: import_zod31.z.boolean().default(true),
2541
+ error: import_zod31.z.string().nullable(),
2542
+ docker_compose_file: import_zod31.z.string().nullable(),
2543
+ manifest_version: import_zod31.z.number().nullable(),
2544
+ version: import_zod31.z.string().nullable(),
2545
+ runner: import_zod31.z.string().nullable(),
2546
+ features: import_zod31.z.array(import_zod31.z.string()).nullable(),
2547
+ containers: import_zod31.z.array(ContainerInfoSchema).nullable()
1961
2548
  });
1962
2549
  var GetCvmContainersStatsRequestSchema = CvmIdSchema;
1963
2550
  var { action: getCvmContainersStats, safeAction: safeGetCvmContainersStats } = defineAction(CvmContainersStatsSchema, async (client, request) => {
@@ -1966,62 +2553,62 @@ var { action: getCvmContainersStats, safeAction: safeGetCvmContainersStats } = d
1966
2553
  });
1967
2554
 
1968
2555
  // src/actions/cvms/get_cvm_attestation.ts
1969
- var import_zod26 = require("zod");
1970
- var CertificateSubjectSchema = import_zod26.z.object({
1971
- common_name: import_zod26.z.string().nullable(),
1972
- organization: import_zod26.z.string().nullable(),
1973
- country: import_zod26.z.string().nullable(),
1974
- state: import_zod26.z.string().nullable(),
1975
- locality: import_zod26.z.string().nullable()
1976
- });
1977
- var CertificateIssuerSchema = import_zod26.z.object({
1978
- common_name: import_zod26.z.string().nullable(),
1979
- organization: import_zod26.z.string().nullable(),
1980
- country: import_zod26.z.string().nullable()
1981
- });
1982
- var CertificateSchema = import_zod26.z.object({
2556
+ var import_zod32 = require("zod");
2557
+ var CertificateSubjectSchema = import_zod32.z.object({
2558
+ common_name: import_zod32.z.string().nullable(),
2559
+ organization: import_zod32.z.string().nullable(),
2560
+ country: import_zod32.z.string().nullable(),
2561
+ state: import_zod32.z.string().nullable(),
2562
+ locality: import_zod32.z.string().nullable()
2563
+ });
2564
+ var CertificateIssuerSchema = import_zod32.z.object({
2565
+ common_name: import_zod32.z.string().nullable(),
2566
+ organization: import_zod32.z.string().nullable(),
2567
+ country: import_zod32.z.string().nullable()
2568
+ });
2569
+ var CertificateSchema = import_zod32.z.object({
1983
2570
  subject: CertificateSubjectSchema,
1984
2571
  issuer: CertificateIssuerSchema,
1985
- serial_number: import_zod26.z.string(),
1986
- not_before: import_zod26.z.string(),
2572
+ serial_number: import_zod32.z.string(),
2573
+ not_before: import_zod32.z.string(),
1987
2574
  // datetime serialized as ISO string
1988
- not_after: import_zod26.z.string(),
2575
+ not_after: import_zod32.z.string(),
1989
2576
  // datetime serialized as ISO string
1990
- version: import_zod26.z.string(),
1991
- fingerprint: import_zod26.z.string(),
1992
- signature_algorithm: import_zod26.z.string(),
1993
- sans: import_zod26.z.array(import_zod26.z.string()).nullable(),
1994
- is_ca: import_zod26.z.boolean(),
1995
- position_in_chain: import_zod26.z.number().nullable(),
1996
- quote: import_zod26.z.string().nullable(),
1997
- app_id: import_zod26.z.string().nullable().optional(),
1998
- cert_usage: import_zod26.z.string().nullable().optional()
1999
- });
2000
- var EventLogSchema = import_zod26.z.object({
2001
- imr: import_zod26.z.number(),
2002
- event_type: import_zod26.z.number(),
2003
- digest: import_zod26.z.string(),
2004
- event: import_zod26.z.string(),
2005
- event_payload: import_zod26.z.string()
2006
- });
2007
- var TcbInfoSchema = import_zod26.z.object({
2008
- mrtd: import_zod26.z.string(),
2009
- rootfs_hash: import_zod26.z.string().nullable().optional(),
2010
- rtmr0: import_zod26.z.string(),
2011
- rtmr1: import_zod26.z.string(),
2012
- rtmr2: import_zod26.z.string(),
2013
- rtmr3: import_zod26.z.string(),
2014
- event_log: import_zod26.z.array(EventLogSchema),
2015
- app_compose: import_zod26.z.string()
2016
- });
2017
- var CvmAttestationSchema = import_zod26.z.object({
2018
- name: import_zod26.z.string().nullable(),
2019
- is_online: import_zod26.z.boolean(),
2020
- is_public: import_zod26.z.boolean().default(true),
2021
- error: import_zod26.z.string().nullable(),
2022
- app_certificates: import_zod26.z.array(CertificateSchema).nullable(),
2577
+ version: import_zod32.z.string(),
2578
+ fingerprint: import_zod32.z.string(),
2579
+ signature_algorithm: import_zod32.z.string(),
2580
+ sans: import_zod32.z.array(import_zod32.z.string()).nullable(),
2581
+ is_ca: import_zod32.z.boolean(),
2582
+ position_in_chain: import_zod32.z.number().nullable(),
2583
+ quote: import_zod32.z.string().nullable(),
2584
+ app_id: import_zod32.z.string().nullable().optional(),
2585
+ cert_usage: import_zod32.z.string().nullable().optional()
2586
+ });
2587
+ var EventLogSchema = import_zod32.z.object({
2588
+ imr: import_zod32.z.number(),
2589
+ event_type: import_zod32.z.number(),
2590
+ digest: import_zod32.z.string(),
2591
+ event: import_zod32.z.string(),
2592
+ event_payload: import_zod32.z.string()
2593
+ });
2594
+ var TcbInfoSchema = import_zod32.z.object({
2595
+ mrtd: import_zod32.z.string(),
2596
+ rootfs_hash: import_zod32.z.string().nullable().optional(),
2597
+ rtmr0: import_zod32.z.string(),
2598
+ rtmr1: import_zod32.z.string(),
2599
+ rtmr2: import_zod32.z.string(),
2600
+ rtmr3: import_zod32.z.string(),
2601
+ event_log: import_zod32.z.array(EventLogSchema),
2602
+ app_compose: import_zod32.z.string()
2603
+ });
2604
+ var CvmAttestationSchema = import_zod32.z.object({
2605
+ name: import_zod32.z.string().nullable(),
2606
+ is_online: import_zod32.z.boolean(),
2607
+ is_public: import_zod32.z.boolean().default(true),
2608
+ error: import_zod32.z.string().nullable(),
2609
+ app_certificates: import_zod32.z.array(CertificateSchema).nullable(),
2023
2610
  tcb_info: TcbInfoSchema.nullable(),
2024
- compose_file: import_zod26.z.string().nullable()
2611
+ compose_file: import_zod32.z.string().nullable()
2025
2612
  });
2026
2613
  var GetCvmAttestationRequestSchema = CvmIdSchema;
2027
2614
  var { action: getCvmAttestation, safeAction: safeGetCvmAttestation } = defineAction(CvmAttestationSchema, async (client, request) => {
@@ -2030,17 +2617,17 @@ var { action: getCvmAttestation, safeAction: safeGetCvmAttestation } = defineAct
2030
2617
  });
2031
2618
 
2032
2619
  // src/actions/cvms/update_cvm_resources.ts
2033
- var import_zod27 = require("zod");
2620
+ var import_zod33 = require("zod");
2034
2621
  var UpdateCvmResourcesRequestSchema = refineCvmId(
2035
2622
  CvmIdObjectSchema.extend({
2036
- vcpu: import_zod27.z.number().optional(),
2037
- memory: import_zod27.z.number().optional(),
2038
- disk_size: import_zod27.z.number().optional(),
2039
- instance_type: import_zod27.z.string().optional(),
2040
- allow_restart: import_zod27.z.boolean().optional()
2623
+ vcpu: import_zod33.z.number().optional(),
2624
+ memory: import_zod33.z.number().optional(),
2625
+ disk_size: import_zod33.z.number().optional(),
2626
+ instance_type: import_zod33.z.string().optional(),
2627
+ allow_restart: import_zod33.z.boolean().optional()
2041
2628
  })
2042
2629
  );
2043
- var { action: updateCvmResources, safeAction: safeUpdateCvmResources } = defineAction(import_zod27.z.void(), async (client, request) => {
2630
+ var { action: updateCvmResources, safeAction: safeUpdateCvmResources } = defineAction(import_zod33.z.void(), async (client, request) => {
2044
2631
  const parsed = UpdateCvmResourcesRequestSchema.parse(request);
2045
2632
  const { cvmId } = CvmIdSchema.parse(parsed);
2046
2633
  const { ...body } = parsed;
@@ -2049,14 +2636,14 @@ var { action: updateCvmResources, safeAction: safeUpdateCvmResources } = defineA
2049
2636
  });
2050
2637
 
2051
2638
  // src/actions/cvms/update_cvm_visibility.ts
2052
- var import_zod28 = require("zod");
2639
+ var import_zod34 = require("zod");
2053
2640
  var UpdateCvmVisibilityRequestSchema = refineCvmId(
2054
2641
  CvmIdObjectSchema.extend({
2055
- public_sysinfo: import_zod28.z.boolean(),
2056
- public_logs: import_zod28.z.boolean()
2642
+ public_sysinfo: import_zod34.z.boolean(),
2643
+ public_logs: import_zod34.z.boolean()
2057
2644
  })
2058
2645
  );
2059
- var { action: updateCvmVisibility, safeAction: safeUpdateCvmVisibility } = defineAction(CvmLegacyDetailSchema, async (client, request) => {
2646
+ var { action: updateCvmVisibility, safeAction: safeUpdateCvmVisibility } = defineAction(CvmDetailV20251028Schema, async (client, request) => {
2060
2647
  const parsed = UpdateCvmVisibilityRequestSchema.parse(request);
2061
2648
  const { cvmId } = CvmIdSchema.parse(parsed);
2062
2649
  const { public_sysinfo, public_logs } = parsed;
@@ -2064,21 +2651,21 @@ var { action: updateCvmVisibility, safeAction: safeUpdateCvmVisibility } = defin
2064
2651
  });
2065
2652
 
2066
2653
  // src/actions/cvms/get_available_os_images.ts
2067
- var import_zod29 = require("zod");
2068
- var OSImageVariantSchema = import_zod29.z.object({
2069
- name: import_zod29.z.string(),
2070
- os_image_hash: import_zod29.z.string().nullable(),
2071
- is_current: import_zod29.z.boolean()
2072
- });
2073
- var AvailableOSImageSchema2 = import_zod29.z.object({
2074
- version: import_zod29.z.union([
2075
- import_zod29.z.tuple([import_zod29.z.number(), import_zod29.z.number(), import_zod29.z.number(), import_zod29.z.number()]),
2076
- import_zod29.z.tuple([import_zod29.z.number(), import_zod29.z.number(), import_zod29.z.number()])
2654
+ var import_zod35 = require("zod");
2655
+ var OSImageVariantSchema = import_zod35.z.object({
2656
+ name: import_zod35.z.string(),
2657
+ os_image_hash: import_zod35.z.string().nullable(),
2658
+ is_current: import_zod35.z.boolean()
2659
+ });
2660
+ var AvailableOSImageSchema2 = import_zod35.z.object({
2661
+ version: import_zod35.z.union([
2662
+ import_zod35.z.tuple([import_zod35.z.number(), import_zod35.z.number(), import_zod35.z.number(), import_zod35.z.number()]),
2663
+ import_zod35.z.tuple([import_zod35.z.number(), import_zod35.z.number(), import_zod35.z.number()])
2077
2664
  ]),
2078
2665
  prod: OSImageVariantSchema.nullable(),
2079
2666
  dev: OSImageVariantSchema.nullable()
2080
2667
  });
2081
- var GetAvailableOSImagesResponseSchema = import_zod29.z.array(AvailableOSImageSchema2);
2668
+ var GetAvailableOSImagesResponseSchema = import_zod35.z.array(AvailableOSImageSchema2);
2082
2669
  var GetAvailableOSImagesRequestSchema = CvmIdSchema;
2083
2670
  var { action: getAvailableOsImages, safeAction: safeGetAvailableOsImages } = defineAction(GetAvailableOSImagesResponseSchema, async (client, request) => {
2084
2671
  const { cvmId } = GetAvailableOSImagesRequestSchema.parse(request);
@@ -2086,13 +2673,13 @@ var { action: getAvailableOsImages, safeAction: safeGetAvailableOsImages } = def
2086
2673
  });
2087
2674
 
2088
2675
  // src/actions/cvms/update_os_image.ts
2089
- var import_zod30 = require("zod");
2676
+ var import_zod36 = require("zod");
2090
2677
  var UpdateOsImageRequestSchema = refineCvmId(
2091
2678
  CvmIdObjectSchema.extend({
2092
- os_image_name: import_zod30.z.string().min(1, "OS image name is required")
2679
+ os_image_name: import_zod36.z.string().min(1, "OS image name is required")
2093
2680
  })
2094
2681
  );
2095
- var { action: updateOsImage, safeAction: safeUpdateOsImage } = defineAction(import_zod30.z.void(), async (client, request) => {
2682
+ var { action: updateOsImage, safeAction: safeUpdateOsImage } = defineAction(import_zod36.z.void(), async (client, request) => {
2096
2683
  const parsed = UpdateOsImageRequestSchema.parse(request);
2097
2684
  const { cvmId } = CvmIdSchema.parse(parsed);
2098
2685
  const { os_image_name } = parsed;
@@ -2101,17 +2688,17 @@ var { action: updateOsImage, safeAction: safeUpdateOsImage } = defineAction(impo
2101
2688
  });
2102
2689
 
2103
2690
  // src/actions/cvms/get_cvm_state.ts
2104
- var import_zod31 = require("zod");
2105
- var CvmStateSchema = import_zod31.z.object({
2106
- id: import_zod31.z.string().optional(),
2107
- instance_id: import_zod31.z.string().optional(),
2108
- name: import_zod31.z.string(),
2109
- status: import_zod31.z.string(),
2110
- uptime: import_zod31.z.string().optional(),
2111
- exited_at: import_zod31.z.string().optional(),
2112
- boot_progress: import_zod31.z.string().optional(),
2113
- boot_error: import_zod31.z.string().optional(),
2114
- shutdown_progress: import_zod31.z.string().optional()
2691
+ var import_zod37 = require("zod");
2692
+ var CvmStateSchema = import_zod37.z.object({
2693
+ id: import_zod37.z.string().optional(),
2694
+ instance_id: import_zod37.z.string().optional(),
2695
+ name: import_zod37.z.string(),
2696
+ status: import_zod37.z.string(),
2697
+ uptime: import_zod37.z.string().optional(),
2698
+ exited_at: import_zod37.z.string().optional(),
2699
+ boot_progress: import_zod37.z.string().optional(),
2700
+ boot_error: import_zod37.z.string().optional(),
2701
+ shutdown_progress: import_zod37.z.string().optional()
2115
2702
  });
2116
2703
  var GetCvmStateRequestSchema = CvmIdSchema;
2117
2704
  var { action: getCvmState, safeAction: safeGetCvmState } = defineAction(CvmStateSchema, async (client, request) => {
@@ -2151,6 +2738,12 @@ function createClient2(config = {}) {
2151
2738
  safeCommitCvmComposeFileUpdate,
2152
2739
  updateCvmEnvs,
2153
2740
  safeUpdateCvmEnvs,
2741
+ updateDockerCompose,
2742
+ safeUpdateDockerCompose,
2743
+ updatePreLaunchScript,
2744
+ safeUpdatePreLaunchScript,
2745
+ getCvmPreLaunchScript,
2746
+ safeGetCvmPreLaunchScript,
2154
2747
  startCvm,
2155
2748
  safeStartCvm,
2156
2749
  stopCvm,
@@ -2193,8 +2786,147 @@ function createClient2(config = {}) {
2193
2786
  return client.extend(allActions);
2194
2787
  }
2195
2788
 
2789
+ // src/types/app_info_v20251028.ts
2790
+ var import_zod38 = require("zod");
2791
+ var CvmBasicInfoV20251028Schema = import_zod38.z.object({
2792
+ vm_uuid: import_zod38.z.string().nullable(),
2793
+ app_id: import_zod38.z.string(),
2794
+ name: import_zod38.z.string().default(""),
2795
+ status: import_zod38.z.string(),
2796
+ vcpu: import_zod38.z.number().int(),
2797
+ memory: import_zod38.z.number().int(),
2798
+ disk_size: import_zod38.z.number().int(),
2799
+ teepod_id: import_zod38.z.number().int(),
2800
+ teepod_name: import_zod38.z.string(),
2801
+ region_identifier: import_zod38.z.string().nullable().optional(),
2802
+ kms_type: import_zod38.z.string().nullable().optional(),
2803
+ instance_type: import_zod38.z.string().nullable().optional(),
2804
+ listed: import_zod38.z.boolean().nullable().optional(),
2805
+ base_image: import_zod38.z.string().nullable().optional(),
2806
+ kms_slug: import_zod38.z.string().nullable().optional(),
2807
+ kms_id: import_zod38.z.string().nullable().optional(),
2808
+ instance_id: import_zod38.z.string().nullable().optional(),
2809
+ machine_info: MachineInfoV20251028Schema.nullable().optional(),
2810
+ updated_at: import_zod38.z.string().nullable().optional()
2811
+ });
2812
+ var DstackAppFullResponseV20251028Schema = import_zod38.z.object({
2813
+ id: import_zod38.z.string(),
2814
+ name: import_zod38.z.string(),
2815
+ app_id: import_zod38.z.string(),
2816
+ app_provision_type: import_zod38.z.string().nullable().optional(),
2817
+ app_icon_url: import_zod38.z.string().nullable().optional(),
2818
+ created_at: import_zod38.z.string(),
2819
+ kms_type: import_zod38.z.string(),
2820
+ current_cvm: CvmBasicInfoV20251028Schema.nullable().optional(),
2821
+ cvms: import_zod38.z.array(CvmBasicInfoV20251028Schema).default([]),
2822
+ cvm_count: import_zod38.z.number().int().default(0)
2823
+ });
2824
+ var DstackAppMinimalResponseV20251028Schema = import_zod38.z.object({
2825
+ id: import_zod38.z.null().optional(),
2826
+ app_id: import_zod38.z.string(),
2827
+ name: import_zod38.z.null().optional(),
2828
+ app_provision_type: import_zod38.z.null().optional(),
2829
+ app_icon_url: import_zod38.z.null().optional(),
2830
+ created_at: import_zod38.z.null().optional(),
2831
+ kms_type: import_zod38.z.null().optional(),
2832
+ current_cvm: import_zod38.z.null().optional(),
2833
+ cvms: import_zod38.z.null().optional(),
2834
+ cvm_count: import_zod38.z.null().optional()
2835
+ });
2836
+ var DstackAppWithCvmResponseV20251028Schema = import_zod38.z.union([
2837
+ DstackAppFullResponseV20251028Schema,
2838
+ DstackAppMinimalResponseV20251028Schema
2839
+ ]);
2840
+ var DstackAppListResponseV20251028Schema = import_zod38.z.object({
2841
+ dstack_apps: import_zod38.z.array(DstackAppWithCvmResponseV20251028Schema),
2842
+ page: import_zod38.z.number().int(),
2843
+ page_size: import_zod38.z.number().int(),
2844
+ total: import_zod38.z.number().int(),
2845
+ total_pages: import_zod38.z.number().int()
2846
+ });
2847
+
2848
+ // src/types/app_info_v20260121.ts
2849
+ var import_zod39 = require("zod");
2850
+ var DstackAppFullResponseV20260121Schema = import_zod39.z.object({
2851
+ id: import_zod39.z.string(),
2852
+ name: import_zod39.z.string(),
2853
+ app_id: import_zod39.z.string(),
2854
+ app_provision_type: import_zod39.z.string().nullable().optional(),
2855
+ app_icon_url: import_zod39.z.string().nullable().optional(),
2856
+ created_at: import_zod39.z.string(),
2857
+ kms_type: import_zod39.z.string(),
2858
+ current_cvm: CvmInfoV20260121Schema.nullable().optional(),
2859
+ cvms: import_zod39.z.array(CvmInfoV20260121Schema).default([]),
2860
+ cvm_count: import_zod39.z.number().int().default(0)
2861
+ });
2862
+ var DstackAppMinimalResponseV20260121Schema = import_zod39.z.object({
2863
+ id: import_zod39.z.null().optional(),
2864
+ app_id: import_zod39.z.string(),
2865
+ name: import_zod39.z.null().optional(),
2866
+ app_provision_type: import_zod39.z.null().optional(),
2867
+ app_icon_url: import_zod39.z.null().optional(),
2868
+ created_at: import_zod39.z.null().optional(),
2869
+ kms_type: import_zod39.z.null().optional(),
2870
+ current_cvm: import_zod39.z.null().optional(),
2871
+ cvms: import_zod39.z.null().optional(),
2872
+ cvm_count: import_zod39.z.null().optional()
2873
+ });
2874
+ var DstackAppWithCvmResponseV20260121Schema = import_zod39.z.union([
2875
+ DstackAppFullResponseV20260121Schema,
2876
+ DstackAppMinimalResponseV20260121Schema
2877
+ ]);
2878
+ var DstackAppListResponseV20260121Schema = import_zod39.z.object({
2879
+ dstack_apps: import_zod39.z.array(DstackAppWithCvmResponseV20260121Schema),
2880
+ page: import_zod39.z.number().int(),
2881
+ page_size: import_zod39.z.number().int(),
2882
+ total: import_zod39.z.number().int(),
2883
+ total_pages: import_zod39.z.number().int()
2884
+ });
2885
+
2886
+ // src/types/app_revision.ts
2887
+ var import_zod40 = require("zod");
2888
+ var CvmRefSchema = import_zod40.z.object({
2889
+ object_type: import_zod40.z.literal("cvm"),
2890
+ id: import_zod40.z.string().nullable().optional(),
2891
+ name: import_zod40.z.string().nullable().optional(),
2892
+ app_id: import_zod40.z.string().nullable().optional(),
2893
+ vm_uuid: import_zod40.z.string().nullable().optional()
2894
+ });
2895
+ var AppRevisionResponseSchema = import_zod40.z.object({
2896
+ app_id: import_zod40.z.string(),
2897
+ vm_uuid: import_zod40.z.string(),
2898
+ compose_hash: import_zod40.z.string(),
2899
+ created_at: import_zod40.z.string(),
2900
+ trace_id: import_zod40.z.string().nullable().optional(),
2901
+ operation_type: import_zod40.z.string(),
2902
+ triggered_by: UserRefSchema.nullable().optional(),
2903
+ cvm: CvmRefSchema.nullable().optional(),
2904
+ workspace: WorkspaceRefSchema.nullable().optional()
2905
+ });
2906
+ var AppRevisionDetailResponseSchema = import_zod40.z.object({
2907
+ app_id: import_zod40.z.string(),
2908
+ vm_uuid: import_zod40.z.string(),
2909
+ compose_hash: import_zod40.z.string(),
2910
+ compose_file: import_zod40.z.union([import_zod40.z.record(import_zod40.z.any()), import_zod40.z.string()]).nullable().optional(),
2911
+ encrypted_env: import_zod40.z.string(),
2912
+ user_config: import_zod40.z.string(),
2913
+ created_at: import_zod40.z.string(),
2914
+ trace_id: import_zod40.z.string().nullable().optional(),
2915
+ operation_type: import_zod40.z.string(),
2916
+ triggered_by: UserRefSchema.nullable().optional(),
2917
+ cvm: CvmRefSchema.nullable().optional(),
2918
+ workspace: WorkspaceRefSchema.nullable().optional()
2919
+ });
2920
+ var AppRevisionsResponseSchema = import_zod40.z.object({
2921
+ revisions: import_zod40.z.array(AppRevisionResponseSchema),
2922
+ total: import_zod40.z.number().int(),
2923
+ page: import_zod40.z.number().int(),
2924
+ page_size: import_zod40.z.number().int(),
2925
+ total_pages: import_zod40.z.number().int()
2926
+ });
2927
+
2196
2928
  // src/actions/blockchains/deploy_app_auth.ts
2197
- var import_zod32 = require("zod");
2929
+ var import_zod41 = require("zod");
2198
2930
  var import_viem3 = require("viem");
2199
2931
  var import_accounts2 = require("viem/accounts");
2200
2932
 
@@ -2844,25 +3576,25 @@ var kmsAuthAbi = [
2844
3576
  anonymous: false
2845
3577
  }
2846
3578
  ];
2847
- var DeployAppAuthRequestBaseSchema = import_zod32.z.object({
3579
+ var DeployAppAuthRequestBaseSchema = import_zod41.z.object({
2848
3580
  // Chain configuration (conditionally required)
2849
- chain: import_zod32.z.unknown().optional(),
2850
- rpcUrl: import_zod32.z.string().optional(),
3581
+ chain: import_zod41.z.unknown().optional(),
3582
+ rpcUrl: import_zod41.z.string().optional(),
2851
3583
  // Contract configuration (required)
2852
- kmsContractAddress: import_zod32.z.string(),
3584
+ kmsContractAddress: import_zod41.z.string(),
2853
3585
  // Authentication mode: either privateKey OR walletClient (required, mutually exclusive)
2854
- privateKey: import_zod32.z.string().optional(),
2855
- walletClient: import_zod32.z.unknown().optional(),
3586
+ privateKey: import_zod41.z.string().optional(),
3587
+ walletClient: import_zod41.z.unknown().optional(),
2856
3588
  // Public client (optional, will create default if not provided)
2857
- publicClient: import_zod32.z.unknown().optional(),
3589
+ publicClient: import_zod41.z.unknown().optional(),
2858
3590
  // App configuration (optional)
2859
- allowAnyDevice: import_zod32.z.boolean().optional().default(false),
2860
- deviceId: import_zod32.z.string().optional().default("0000000000000000000000000000000000000000000000000000000000000000"),
2861
- composeHash: import_zod32.z.string().optional().default("0000000000000000000000000000000000000000000000000000000000000000"),
2862
- disableUpgrades: import_zod32.z.boolean().optional().default(false),
3591
+ allowAnyDevice: import_zod41.z.boolean().optional().default(false),
3592
+ deviceId: import_zod41.z.string().optional().default("0000000000000000000000000000000000000000000000000000000000000000"),
3593
+ composeHash: import_zod41.z.string().optional().default("0000000000000000000000000000000000000000000000000000000000000000"),
3594
+ disableUpgrades: import_zod41.z.boolean().optional().default(false),
2863
3595
  // Validation configuration (optional)
2864
- skipPrerequisiteChecks: import_zod32.z.boolean().optional().default(false),
2865
- minBalance: import_zod32.z.string().optional()
3596
+ skipPrerequisiteChecks: import_zod41.z.boolean().optional().default(false),
3597
+ minBalance: import_zod41.z.string().optional()
2866
3598
  // ETH amount as string, e.g., "0.01"
2867
3599
  }).passthrough();
2868
3600
  var DeployAppAuthRequestSchema = DeployAppAuthRequestBaseSchema.refine(
@@ -2890,13 +3622,13 @@ var DeployAppAuthRequestSchema = DeployAppAuthRequestBaseSchema.refine(
2890
3622
  path: ["chain"]
2891
3623
  }
2892
3624
  );
2893
- var DeployAppAuthSchema = import_zod32.z.object({
2894
- appId: import_zod32.z.string(),
2895
- appAuthAddress: import_zod32.z.string(),
2896
- deployer: import_zod32.z.string(),
2897
- transactionHash: import_zod32.z.string(),
2898
- blockNumber: import_zod32.z.bigint().optional(),
2899
- gasUsed: import_zod32.z.bigint().optional()
3625
+ var DeployAppAuthSchema = import_zod41.z.object({
3626
+ appId: import_zod41.z.string(),
3627
+ appAuthAddress: import_zod41.z.string(),
3628
+ deployer: import_zod41.z.string(),
3629
+ transactionHash: import_zod41.z.string(),
3630
+ blockNumber: import_zod41.z.bigint().optional(),
3631
+ gasUsed: import_zod41.z.bigint().optional()
2900
3632
  }).passthrough();
2901
3633
  function parseDeploymentResult(receipt, deployer, kmsContractAddress) {
2902
3634
  try {
@@ -3142,7 +3874,7 @@ async function safeDeployAppAuth(request, parameters) {
3142
3874
  }
3143
3875
 
3144
3876
  // src/actions/blockchains/add_compose_hash.ts
3145
- var import_zod33 = require("zod");
3877
+ var import_zod42 = require("zod");
3146
3878
  var import_viem4 = require("viem");
3147
3879
  var import_accounts3 = require("viem/accounts");
3148
3880
  var appAuthAbi = [
@@ -3160,29 +3892,29 @@ var appAuthAbi = [
3160
3892
  anonymous: false
3161
3893
  }
3162
3894
  ];
3163
- var AddComposeHashRequestSchema = import_zod33.z.object({
3895
+ var AddComposeHashRequestSchema = import_zod42.z.object({
3164
3896
  // Chain configuration (conditionally required)
3165
- chain: import_zod33.z.unknown().optional(),
3166
- rpcUrl: import_zod33.z.string().optional(),
3167
- appId: import_zod33.z.string(),
3168
- composeHash: import_zod33.z.string(),
3897
+ chain: import_zod42.z.unknown().optional(),
3898
+ rpcUrl: import_zod42.z.string().optional(),
3899
+ appId: import_zod42.z.string(),
3900
+ composeHash: import_zod42.z.string(),
3169
3901
  // Authentication mode: either privateKey OR walletClient (required, mutually exclusive)
3170
- privateKey: import_zod33.z.string().optional(),
3171
- walletClient: import_zod33.z.unknown().optional(),
3902
+ privateKey: import_zod42.z.string().optional(),
3903
+ walletClient: import_zod42.z.unknown().optional(),
3172
3904
  // Public client (optional, will create default if not provided)
3173
- publicClient: import_zod33.z.unknown().optional(),
3905
+ publicClient: import_zod42.z.unknown().optional(),
3174
3906
  // Validation configuration (optional)
3175
- skipPrerequisiteChecks: import_zod33.z.boolean().optional().default(false),
3176
- minBalance: import_zod33.z.string().optional(),
3907
+ skipPrerequisiteChecks: import_zod42.z.boolean().optional().default(false),
3908
+ minBalance: import_zod42.z.string().optional(),
3177
3909
  // ETH amount as string, e.g., "0.01"
3178
3910
  // Transaction control options
3179
- timeout: import_zod33.z.number().optional().default(12e4),
3180
- retryOptions: import_zod33.z.unknown().optional(),
3181
- signal: import_zod33.z.unknown().optional(),
3911
+ timeout: import_zod42.z.number().optional().default(12e4),
3912
+ retryOptions: import_zod42.z.unknown().optional(),
3913
+ signal: import_zod42.z.unknown().optional(),
3182
3914
  // Progress callbacks
3183
- onTransactionStateChange: import_zod33.z.function().optional(),
3184
- onTransactionSubmitted: import_zod33.z.function().optional(),
3185
- onTransactionConfirmed: import_zod33.z.function().optional()
3915
+ onTransactionStateChange: import_zod42.z.function().optional(),
3916
+ onTransactionSubmitted: import_zod42.z.function().optional(),
3917
+ onTransactionConfirmed: import_zod42.z.function().optional()
3186
3918
  }).passthrough().refine(
3187
3919
  (data) => {
3188
3920
  const hasPrivateKey = !!data.privateKey;
@@ -3206,12 +3938,12 @@ var AddComposeHashRequestSchema = import_zod33.z.object({
3206
3938
  path: ["chain"]
3207
3939
  }
3208
3940
  );
3209
- var AddComposeHashSchema = import_zod33.z.object({
3210
- composeHash: import_zod33.z.string(),
3211
- appId: import_zod33.z.string(),
3212
- transactionHash: import_zod33.z.string(),
3213
- blockNumber: import_zod33.z.bigint().optional(),
3214
- gasUsed: import_zod33.z.bigint().optional()
3941
+ var AddComposeHashSchema = import_zod42.z.object({
3942
+ composeHash: import_zod42.z.string(),
3943
+ appId: import_zod42.z.string(),
3944
+ transactionHash: import_zod42.z.string(),
3945
+ blockNumber: import_zod42.z.bigint().optional(),
3946
+ gasUsed: import_zod42.z.bigint().optional()
3215
3947
  }).passthrough();
3216
3948
  function parseComposeHashResult(receipt, composeHash, appAuthAddress, appId) {
3217
3949
  console.log(receipt.logs);
@@ -3402,14 +4134,63 @@ async function safeAddComposeHash(request, parameters) {
3402
4134
  }
3403
4135
  }
3404
4136
 
4137
+ // src/actions/workspaces/get_workspace_nodes.ts
4138
+ var import_zod43 = require("zod");
4139
+ var NodeRefSchema2 = NodeRefSchema;
4140
+ var NodeInfoSchema = NodeRefSchema2;
4141
+ var GetWorkspaceNodesSchema = import_zod43.z.object({
4142
+ items: import_zod43.z.array(NodeRefSchema2),
4143
+ total: import_zod43.z.number(),
4144
+ page: import_zod43.z.number(),
4145
+ page_size: import_zod43.z.number(),
4146
+ pages: import_zod43.z.number()
4147
+ }).passthrough();
4148
+ var { action: getWorkspaceNodes, safeAction: safeGetWorkspaceNodes } = defineAction(GetWorkspaceNodesSchema, async (client, request) => {
4149
+ const { teamSlug, page, pageSize } = request;
4150
+ const queryParams = new URLSearchParams();
4151
+ if (page !== void 0) queryParams.append("page", page.toString());
4152
+ if (pageSize !== void 0) queryParams.append("page_size", pageSize.toString());
4153
+ const url = queryParams.toString() ? `/workspaces/${teamSlug}/nodes?${queryParams.toString()}` : `/workspaces/${teamSlug}/nodes`;
4154
+ return await client.get(url);
4155
+ });
4156
+
4157
+ // src/actions/workspaces/get_workspace_quotas.ts
4158
+ var import_zod44 = require("zod");
4159
+ var QuotaMetricSchema = import_zod44.z.object({
4160
+ limit: import_zod44.z.number(),
4161
+ remaining: import_zod44.z.number()
4162
+ }).passthrough();
4163
+ var WorkspaceQuotasSchema = import_zod44.z.object({
4164
+ vm_slots: QuotaMetricSchema,
4165
+ vcpu: QuotaMetricSchema,
4166
+ memory_mb: QuotaMetricSchema,
4167
+ disk_gb: QuotaMetricSchema
4168
+ }).passthrough();
4169
+ var WorkspaceReservedGpuQuotaSchema = import_zod44.z.object({
4170
+ gpus: QuotaMetricSchema,
4171
+ in_use: import_zod44.z.number(),
4172
+ misconfigured: import_zod44.z.number()
4173
+ }).passthrough();
4174
+ var GetWorkspaceQuotasSchema = import_zod44.z.object({
4175
+ team_slug: import_zod44.z.string(),
4176
+ tier: import_zod44.z.string(),
4177
+ quotas: WorkspaceQuotasSchema,
4178
+ reserved_nodes: QuotaMetricSchema,
4179
+ reserved_gpu: WorkspaceReservedGpuQuotaSchema,
4180
+ as_of: import_zod44.z.string()
4181
+ }).passthrough();
4182
+ var { action: getWorkspaceQuotas, safeAction: safeGetWorkspaceQuotas } = defineAction(GetWorkspaceQuotasSchema, async (client, request) => {
4183
+ return await client.get(`/workspaces/${request.teamSlug}/quotas`);
4184
+ });
4185
+
3405
4186
  // src/actions/cvms/watch_cvm_state.ts
3406
- var import_zod34 = require("zod");
3407
- var WatchCvmStateParamsSchema = import_zod34.z.object({
3408
- target: import_zod34.z.string().describe("Target status to wait for (e.g., 'running', 'stopped')"),
3409
- interval: import_zod34.z.number().min(5).max(30).default(5).describe("Polling interval in seconds"),
3410
- timeout: import_zod34.z.number().min(10).max(600).default(300).describe("Timeout per attempt in seconds"),
3411
- maxRetries: import_zod34.z.number().min(0).default(Number.POSITIVE_INFINITY).describe("Maximum number of retry attempts (Infinity for unlimited)"),
3412
- retryDelay: import_zod34.z.number().min(0).default(5e3).describe("Delay between retries in milliseconds")
4187
+ var import_zod45 = require("zod");
4188
+ var WatchCvmStateParamsSchema = import_zod45.z.object({
4189
+ target: import_zod45.z.string().describe("Target status to wait for (e.g., 'running', 'stopped')"),
4190
+ interval: import_zod45.z.number().min(5).max(30).default(5).describe("Polling interval in seconds"),
4191
+ timeout: import_zod45.z.number().min(10).max(600).default(300).describe("Timeout per attempt in seconds"),
4192
+ maxRetries: import_zod45.z.number().min(0).default(Number.POSITIVE_INFINITY).describe("Maximum number of retry attempts (Infinity for unlimited)"),
4193
+ retryDelay: import_zod45.z.number().min(0).default(5e3).describe("Delay between retries in milliseconds")
3413
4194
  });
3414
4195
  var WatchCvmStateRequestSchema = WatchCvmStateParamsSchema;
3415
4196
  var WatchAbortedError = class extends Error {
@@ -3596,6 +4377,195 @@ function sleep(ms, signal) {
3596
4377
  });
3597
4378
  }
3598
4379
 
4380
+ // src/actions/cvms/get_cvm_status_batch.ts
4381
+ var import_zod46 = require("zod");
4382
+ var CvmStatusSchema = import_zod46.z.object({
4383
+ vm_uuid: import_zod46.z.string(),
4384
+ status: import_zod46.z.string(),
4385
+ uptime: import_zod46.z.string().nullable().optional(),
4386
+ in_progress: import_zod46.z.boolean(),
4387
+ boot_progress: import_zod46.z.string().nullable().optional(),
4388
+ boot_error: import_zod46.z.string().nullable().optional(),
4389
+ operation_type: import_zod46.z.string().nullable().optional(),
4390
+ operation_started_at: import_zod46.z.string().nullable().optional(),
4391
+ correlation_id: import_zod46.z.string().nullable().optional()
4392
+ });
4393
+ var GetCvmStatusBatchResponseSchema = import_zod46.z.record(import_zod46.z.string(), CvmStatusSchema);
4394
+ var GetCvmStatusBatchRequestSchema = import_zod46.z.object({
4395
+ vmUuids: import_zod46.z.array(import_zod46.z.string())
4396
+ });
4397
+ var { action: getCvmStatusBatch, safeAction: safeGetCvmStatusBatch } = defineAction(GetCvmStatusBatchResponseSchema, async (client, request) => {
4398
+ const { vmUuids } = GetCvmStatusBatchRequestSchema.parse(request);
4399
+ return await client.post("/status/batch", { vm_uuids: vmUuids });
4400
+ });
4401
+
4402
+ // src/actions/apps/get_app_list.ts
4403
+ var import_zod47 = require("zod");
4404
+ var GetAppListRequestSchema = import_zod47.z.object({
4405
+ page: import_zod47.z.number().int().min(1).optional(),
4406
+ page_size: import_zod47.z.number().int().min(1).max(100).optional(),
4407
+ search: import_zod47.z.string().optional(),
4408
+ status: import_zod47.z.array(import_zod47.z.string()).optional(),
4409
+ listed: import_zod47.z.boolean().optional(),
4410
+ base_image: import_zod47.z.string().optional(),
4411
+ instance_type: import_zod47.z.string().optional(),
4412
+ kms_slug: import_zod47.z.string().optional(),
4413
+ kms_type: import_zod47.z.string().optional(),
4414
+ teepod_name: import_zod47.z.string().optional(),
4415
+ region: import_zod47.z.string().optional()
4416
+ }).strict();
4417
+ function getSchemaForVersion4(version) {
4418
+ return version === "2025-10-28" ? DstackAppListResponseV20251028Schema : DstackAppListResponseV20260121Schema;
4419
+ }
4420
+ async function getAppList(client, request) {
4421
+ const validatedRequest = GetAppListRequestSchema.parse(request ?? {});
4422
+ const response = await client.get("/apps", { params: validatedRequest });
4423
+ const schema = getSchemaForVersion4(client.config.version);
4424
+ return schema.parse(response);
4425
+ }
4426
+ async function safeGetAppList(client, request) {
4427
+ try {
4428
+ const data = await getAppList(client, request);
4429
+ return { success: true, data };
4430
+ } catch (error) {
4431
+ if (error && typeof error === "object" && ("status" in error || "issues" in error)) {
4432
+ return { success: false, error };
4433
+ }
4434
+ return {
4435
+ success: false,
4436
+ error: {
4437
+ name: "Error",
4438
+ message: error instanceof Error ? error.message : String(error)
4439
+ }
4440
+ };
4441
+ }
4442
+ }
4443
+
4444
+ // src/actions/apps/get_app_info.ts
4445
+ var import_zod48 = require("zod");
4446
+ var GetAppInfoRequestSchema = import_zod48.z.object({
4447
+ appId: import_zod48.z.string().min(1)
4448
+ }).strict();
4449
+ function getSchemaForVersion5(version) {
4450
+ return version === "2025-10-28" ? DstackAppWithCvmResponseV20251028Schema : DstackAppWithCvmResponseV20260121Schema;
4451
+ }
4452
+ async function getAppInfo(client, request) {
4453
+ const { appId } = GetAppInfoRequestSchema.parse(request);
4454
+ const response = await client.get(`/apps/${appId}`);
4455
+ const schema = getSchemaForVersion5(client.config.version);
4456
+ return schema.parse(response);
4457
+ }
4458
+ async function safeGetAppInfo(client, request) {
4459
+ try {
4460
+ const data = await getAppInfo(client, request);
4461
+ return { success: true, data };
4462
+ } catch (error) {
4463
+ if (error && typeof error === "object" && ("status" in error || "issues" in error)) {
4464
+ return { success: false, error };
4465
+ }
4466
+ return {
4467
+ success: false,
4468
+ error: {
4469
+ name: "Error",
4470
+ message: error instanceof Error ? error.message : String(error)
4471
+ }
4472
+ };
4473
+ }
4474
+ }
4475
+
4476
+ // src/actions/apps/get_app_cvms.ts
4477
+ var import_zod49 = require("zod");
4478
+ var GetAppCvmsRequestSchema = import_zod49.z.object({
4479
+ appId: import_zod49.z.string().min(1)
4480
+ }).strict();
4481
+ function getSchemaForVersion6(version) {
4482
+ return version === "2025-10-28" ? import_zod49.z.array(CvmInfoV20251028Schema) : import_zod49.z.array(CvmInfoV20260121Schema);
4483
+ }
4484
+ async function getAppCvms(client, request) {
4485
+ const { appId } = GetAppCvmsRequestSchema.parse(request);
4486
+ const response = await client.get(`/apps/${appId}/cvms`);
4487
+ const schema = getSchemaForVersion6(client.config.version);
4488
+ return schema.parse(response);
4489
+ }
4490
+ async function safeGetAppCvms(client, request) {
4491
+ try {
4492
+ const data = await getAppCvms(client, request);
4493
+ return { success: true, data };
4494
+ } catch (error) {
4495
+ if (error && typeof error === "object" && ("status" in error || "issues" in error)) {
4496
+ return { success: false, error };
4497
+ }
4498
+ return {
4499
+ success: false,
4500
+ error: {
4501
+ name: "Error",
4502
+ message: error instanceof Error ? error.message : String(error)
4503
+ }
4504
+ };
4505
+ }
4506
+ }
4507
+
4508
+ // src/actions/apps/get_app_revisions.ts
4509
+ var import_zod50 = require("zod");
4510
+ var GetAppRevisionsRequestSchema = import_zod50.z.object({
4511
+ appId: import_zod50.z.string().min(1),
4512
+ page: import_zod50.z.number().int().min(1).optional(),
4513
+ page_size: import_zod50.z.number().int().min(1).max(1e3).optional()
4514
+ }).strict();
4515
+ async function getAppRevisions(client, request) {
4516
+ const { appId, ...params } = GetAppRevisionsRequestSchema.parse(request);
4517
+ const response = await client.get(`/apps/${appId}/revisions`, { params });
4518
+ return AppRevisionsResponseSchema.parse(response);
4519
+ }
4520
+ async function safeGetAppRevisions(client, request) {
4521
+ try {
4522
+ const data = await getAppRevisions(client, request);
4523
+ return { success: true, data };
4524
+ } catch (error) {
4525
+ if (error && typeof error === "object" && ("status" in error || "issues" in error)) {
4526
+ return { success: false, error };
4527
+ }
4528
+ return {
4529
+ success: false,
4530
+ error: {
4531
+ name: "Error",
4532
+ message: error instanceof Error ? error.message : String(error)
4533
+ }
4534
+ };
4535
+ }
4536
+ }
4537
+
4538
+ // src/actions/apps/get_app_revision_detail.ts
4539
+ var import_zod51 = require("zod");
4540
+ var GetAppRevisionDetailRequestSchema = import_zod51.z.object({
4541
+ appId: import_zod51.z.string().min(1),
4542
+ composeHash: import_zod51.z.string().min(1),
4543
+ rawComposeFile: import_zod51.z.boolean().optional()
4544
+ }).strict();
4545
+ async function getAppRevisionDetail(client, request) {
4546
+ const { appId, composeHash, rawComposeFile } = GetAppRevisionDetailRequestSchema.parse(request);
4547
+ const params = rawComposeFile !== void 0 ? { raw_compose_file: rawComposeFile } : void 0;
4548
+ const response = await client.get(`/apps/${appId}/revisions/${composeHash}`, { params });
4549
+ return AppRevisionDetailResponseSchema.parse(response);
4550
+ }
4551
+ async function safeGetAppRevisionDetail(client, request) {
4552
+ try {
4553
+ const data = await getAppRevisionDetail(client, request);
4554
+ return { success: true, data };
4555
+ } catch (error) {
4556
+ if (error && typeof error === "object" && ("status" in error || "issues" in error)) {
4557
+ return { success: false, error };
4558
+ }
4559
+ return {
4560
+ success: false,
4561
+ error: {
4562
+ name: "Error",
4563
+ message: error instanceof Error ? error.message : String(error)
4564
+ }
4565
+ };
4566
+ }
4567
+ }
4568
+
3599
4569
  // src/parse_dotenv.ts
3600
4570
  var LINE = /(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/gm;
3601
4571
  function parseEnv(input) {
@@ -3636,33 +4606,65 @@ var import_verify_env_encrypt_public_key = require("@phala/dstack-sdk/verify-env
3636
4606
  AddComposeHashSchema,
3637
4607
  AllFamiliesResponseSchema,
3638
4608
  ApiErrorSchema,
4609
+ AppRevisionDetailResponseSchema,
4610
+ AppRevisionResponseSchema,
4611
+ AppRevisionsResponseSchema,
3639
4612
  AuthError,
4613
+ AuthResponseSchema,
3640
4614
  AvailableNodesSchema,
4615
+ BillingPeriodSchema,
3641
4616
  BusinessError,
3642
4617
  CommitCvmComposeFileUpdateRequestSchema,
3643
4618
  CommitCvmComposeFileUpdateSchema,
3644
4619
  CommitCvmProvisionRequestSchema,
3645
4620
  CommitCvmProvisionSchema,
4621
+ CreditsInfoSchema,
3646
4622
  CurrentUserSchema,
4623
+ CurrentUserV20251028Schema,
4624
+ CurrentUserV20260121Schema,
3647
4625
  CvmAttestationSchema,
4626
+ CvmBasicInfoV20251028Schema,
3648
4627
  CvmContainersStatsSchema,
4628
+ CvmDetailV20251028Schema,
4629
+ CvmGatewayInfoV20260121Schema,
3649
4630
  CvmIdBaseSchema,
3650
4631
  CvmIdObjectSchema,
3651
4632
  CvmIdSchema,
3652
- CvmInfoSchema,
3653
- CvmLegacyDetailSchema,
4633
+ CvmInfoDetailV20260121Schema,
4634
+ CvmInfoV20251028Schema,
4635
+ CvmInfoV20260121Schema,
4636
+ CvmKmsInfoV20260121Schema,
3654
4637
  CvmNetworkSchema,
3655
- CvmNetworkUrlsSchema,
3656
- CvmNodeSchema,
4638
+ CvmNetworkUrlsV20251028Schema,
4639
+ CvmNodeInfoV20260121Schema,
4640
+ CvmNodeV20251028Schema,
4641
+ CvmOsInfoV20260121Schema,
4642
+ CvmProgressInfoV20260121Schema,
4643
+ CvmRefSchema,
4644
+ CvmResourceInfoV20260121Schema,
3657
4645
  CvmStateSchema,
4646
+ CvmStatusSchema,
3658
4647
  CvmSystemInfoSchema,
3659
4648
  DeleteCvmRequestSchema,
3660
4649
  DeployAppAuthRequestSchema,
3661
4650
  DeployAppAuthSchema,
4651
+ DstackAppFullResponseV20251028Schema,
4652
+ DstackAppFullResponseV20260121Schema,
4653
+ DstackAppListResponseV20251028Schema,
4654
+ DstackAppListResponseV20260121Schema,
4655
+ DstackAppMinimalResponseV20251028Schema,
4656
+ DstackAppMinimalResponseV20260121Schema,
4657
+ DstackAppWithCvmResponseV20251028Schema,
4658
+ DstackAppWithCvmResponseV20260121Schema,
3662
4659
  FamilyGroupSchema,
3663
4660
  FamilyInstanceTypesResponseSchema,
4661
+ GetAppCvmsRequestSchema,
3664
4662
  GetAppEnvEncryptPubKeyRequestSchema,
3665
4663
  GetAppEnvEncryptPubKeySchema,
4664
+ GetAppInfoRequestSchema,
4665
+ GetAppListRequestSchema,
4666
+ GetAppRevisionDetailRequestSchema,
4667
+ GetAppRevisionsRequestSchema,
3666
4668
  GetAvailableOSImagesRequestSchema,
3667
4669
  GetAvailableOSImagesResponseSchema,
3668
4670
  GetCvmAttestationRequestSchema,
@@ -3671,29 +4673,40 @@ var import_verify_env_encrypt_public_key = require("@phala/dstack-sdk/verify-env
3671
4673
  GetCvmDockerComposeRequestSchema,
3672
4674
  GetCvmInfoRequestSchema,
3673
4675
  GetCvmListRequestSchema,
3674
- GetCvmListSchema,
3675
4676
  GetCvmNetworkRequestSchema,
4677
+ GetCvmPreLaunchScriptRequestSchema,
3676
4678
  GetCvmStateRequestSchema,
3677
4679
  GetCvmStatsRequestSchema,
4680
+ GetCvmStatusBatchRequestSchema,
4681
+ GetCvmStatusBatchResponseSchema,
3678
4682
  GetKmsInfoRequestSchema,
3679
4683
  GetKmsListRequestSchema,
3680
4684
  GetKmsListSchema,
4685
+ GetWorkspaceNodesSchema,
4686
+ GetWorkspaceQuotasSchema,
3681
4687
  InstanceTypeSchema,
3682
4688
  KmsInfoSchema,
4689
+ KmsTypeSchema,
3683
4690
  ListFamilyInstanceTypesRequestSchema,
3684
4691
  ListWorkspacesSchema,
3685
- ManagedUserSchema,
4692
+ MachineInfoV20251028Schema,
4693
+ ManagedUserV20251028Schema,
3686
4694
  MaxRetriesExceededError,
3687
4695
  NetworkError,
3688
4696
  NextAppIdsRequestSchema,
3689
4697
  NextAppIdsSchema,
4698
+ NodeInfoSchema,
4699
+ NodeRefSchema,
3690
4700
  OSImageVariantSchema,
4701
+ PaginatedCvmInfosV20251028Schema,
4702
+ PaginatedCvmInfosV20260121Schema,
3691
4703
  PaginationMetadataSchema,
3692
4704
  PhalaCloudError,
3693
4705
  ProvisionCvmComposeFileUpdateRequestSchema,
3694
4706
  ProvisionCvmComposeFileUpdateResultSchema,
3695
4707
  ProvisionCvmRequestSchema,
3696
4708
  ProvisionCvmSchema,
4709
+ QuotaMetricSchema,
3697
4710
  RequestError,
3698
4711
  ResourceError,
3699
4712
  RestartCvmRequestSchema,
@@ -3709,13 +4722,23 @@ var import_verify_env_encrypt_public_key = require("@phala/dstack-sdk/verify-env
3709
4722
  UpdateCvmEnvsResultSchema,
3710
4723
  UpdateCvmResourcesRequestSchema,
3711
4724
  UpdateCvmVisibilityRequestSchema,
4725
+ UpdateDockerComposeRequestSchema,
4726
+ UpdateDockerComposeResultSchema,
3712
4727
  UpdateOsImageRequestSchema,
4728
+ UpdatePreLaunchScriptRequestSchema,
4729
+ UpdatePreLaunchScriptResultSchema,
4730
+ UserInfoSchema,
4731
+ UserRefSchema,
3713
4732
  VMSchema,
3714
4733
  ValidationError,
3715
- VmInfoSchema,
4734
+ VmInfoV20251028Schema,
3716
4735
  WalletError,
3717
4736
  WatchAbortedError,
3718
4737
  WatchCvmStateRequestSchema,
4738
+ WorkspaceInfoSchema,
4739
+ WorkspaceQuotasSchema,
4740
+ WorkspaceRefSchema,
4741
+ WorkspaceReservedGpuQuotaSchema,
3719
4742
  WorkspaceResponseSchema,
3720
4743
  addComposeHash,
3721
4744
  addNetwork,
@@ -3725,6 +4748,7 @@ var import_verify_env_encrypt_public_key = require("@phala/dstack-sdk/verify-env
3725
4748
  checkNetworkStatus,
3726
4749
  commitCvmComposeFileUpdate,
3727
4750
  commitCvmProvision,
4751
+ convertToHostname,
3728
4752
  createBaseClient,
3729
4753
  createClient,
3730
4754
  createClientsFromBrowser,
@@ -3745,7 +4769,14 @@ var import_verify_env_encrypt_public_key = require("@phala/dstack-sdk/verify-env
3745
4769
  formatErrorMessage,
3746
4770
  formatStructuredError,
3747
4771
  formatValidationErrors,
4772
+ generateDefaultCvmName,
4773
+ generateFallbackHostname,
4774
+ getAppCvms,
3748
4775
  getAppEnvEncryptPubKey,
4776
+ getAppInfo,
4777
+ getAppList,
4778
+ getAppRevisionDetail,
4779
+ getAppRevisions,
3749
4780
  getAvailableNodes,
3750
4781
  getAvailableOsImages,
3751
4782
  getComposeHash,
@@ -3757,13 +4788,18 @@ var import_verify_env_encrypt_public_key = require("@phala/dstack-sdk/verify-env
3757
4788
  getCvmInfo,
3758
4789
  getCvmList,
3759
4790
  getCvmNetwork,
4791
+ getCvmPreLaunchScript,
3760
4792
  getCvmState,
3761
4793
  getCvmStats,
4794
+ getCvmStatusBatch,
3762
4795
  getErrorMessage,
3763
4796
  getKmsInfo,
3764
4797
  getKmsList,
3765
4798
  getValidationFields,
3766
4799
  getWorkspace,
4800
+ getWorkspaceNodes,
4801
+ getWorkspaceQuotas,
4802
+ isValidHostname,
3767
4803
  listAllInstanceTypeFamilies,
3768
4804
  listFamilyInstanceTypes,
3769
4805
  listWorkspaces,
@@ -3781,7 +4817,12 @@ var import_verify_env_encrypt_public_key = require("@phala/dstack-sdk/verify-env
3781
4817
  safeCommitCvmProvision,
3782
4818
  safeDeleteCvm,
3783
4819
  safeDeployAppAuth,
4820
+ safeGetAppCvms,
3784
4821
  safeGetAppEnvEncryptPubKey,
4822
+ safeGetAppInfo,
4823
+ safeGetAppList,
4824
+ safeGetAppRevisionDetail,
4825
+ safeGetAppRevisions,
3785
4826
  safeGetAvailableNodes,
3786
4827
  safeGetAvailableOsImages,
3787
4828
  safeGetCurrentUser,
@@ -3792,11 +4833,15 @@ var import_verify_env_encrypt_public_key = require("@phala/dstack-sdk/verify-env
3792
4833
  safeGetCvmInfo,
3793
4834
  safeGetCvmList,
3794
4835
  safeGetCvmNetwork,
4836
+ safeGetCvmPreLaunchScript,
3795
4837
  safeGetCvmState,
3796
4838
  safeGetCvmStats,
4839
+ safeGetCvmStatusBatch,
3797
4840
  safeGetKmsInfo,
3798
4841
  safeGetKmsList,
3799
4842
  safeGetWorkspace,
4843
+ safeGetWorkspaceNodes,
4844
+ safeGetWorkspaceQuotas,
3800
4845
  safeListAllInstanceTypeFamilies,
3801
4846
  safeListFamilyInstanceTypes,
3802
4847
  safeListWorkspaces,
@@ -3810,7 +4855,9 @@ var import_verify_env_encrypt_public_key = require("@phala/dstack-sdk/verify-env
3810
4855
  safeUpdateCvmEnvs,
3811
4856
  safeUpdateCvmResources,
3812
4857
  safeUpdateCvmVisibility,
4858
+ safeUpdateDockerCompose,
3813
4859
  safeUpdateOsImage,
4860
+ safeUpdatePreLaunchScript,
3814
4861
  safeValidateActionParameters,
3815
4862
  shutdownCvm,
3816
4863
  sortObject,
@@ -3820,7 +4867,9 @@ var import_verify_env_encrypt_public_key = require("@phala/dstack-sdk/verify-env
3820
4867
  updateCvmEnvs,
3821
4868
  updateCvmResources,
3822
4869
  updateCvmVisibility,
4870
+ updateDockerCompose,
3823
4871
  updateOsImage,
4872
+ updatePreLaunchScript,
3824
4873
  validateActionParameters,
3825
4874
  validateNetworkPrerequisites,
3826
4875
  verifyEnvEncryptPublicKey,