@phala/cloud 0.2.1-beta.4 → 0.2.1

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