phala 1.1.0-beta.10 → 1.1.0-beta.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +1 -1
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -186,7 +186,7 @@ ${be}/dashboard/cvms/app_${s.app_id}`),0}catch(r){return l.error("Failed to rest
186
186
  ${be}/dashboard/cvms/app_${n.app_id}`),0}catch(r){return l.error("Failed to start CVM"),l.logDetailedError(r),1}}var tw=$({path:["cvms","start"],meta:Q6,schema:ew,handler:y3});import{z as rw}from"zod";var ow={name:"stop",description:"Stop a running CVM",arguments:[{name:"app-id",description:"App ID of the CVM (optional)",required:!1,target:"appId"}],examples:[{name:"Stop a specific CVM",value:"phala cvms stop app_123"}]},nw=rw.object({appId:rw.string().optional()});async function b3(e,t){try{let r=await Ct(e.appId),o=l.startSpinner(`Stopping CVM with App ID app_${r}`),n=await lo(()=>i6(r),{spinner:o});return o.stop(!0),l.break(),l.keyValueTable({"CVM ID":n.id,Name:n.name,Status:n.status,"App ID":`app_${n.app_id}`},{borderStyle:"rounded"}),l.break(),l.success(`Your CVM is being stopped. You can check the dashboard for more details:
187
187
  ${be}/dashboard/cvms/app_${n.app_id}`),0}catch(r){return l.error("Failed to stop CVM"),l.logDetailedError(r),1}}var sw=$({path:["cvms","stop"],meta:ow,schema:nw,handler:b3});import x3 from"node:fs";import{z as Ja}from"zod";var iw={name:"upgrade",description:'[DEPRECATED] Upgrade a CVM to a new version (use "phala deploy" instead)',arguments:[{name:"app-id",description:"CVM app ID to upgrade (optional)",required:!1,target:"appId"}],options:[{name:"compose",shorthand:"c",description:"Path to new Docker Compose file",type:"string",target:"compose"},{name:"env-file",shorthand:"e",description:"Path to environment file",type:"string",target:"envFile"},{name:"debug",description:"Enable debug mode",type:"boolean",target:"debug"}],examples:[{name:"Upgrade a CVM interactively",value:"phala cvms upgrade"},{name:"Upgrade using a compose file",value:"phala cvms upgrade app_123 --compose ./docker-compose.yml"}]},aw=Ja.object({appId:Ja.string().optional(),compose:Ja.string().optional(),envFile:Ja.string().optional(),debug:Ja.boolean().default(!1)});async function w3(e){if(e.compose)return e.compose;let r=$i(["docker-compose.yml","docker-compose.yaml"],"Detected docker compose file: {path}");return Hr("Enter the path to your Docker Compose file:",r,"file")}async function v3(e,t){try{l.warn('\u26A0\uFE0F This command is deprecated. Please use "phala deploy" instead.'),l.warn(`\u26A0\uFE0F This legacy API will be maintained but may have limited support.
188
188
  `);let r=await Ct(e.appId),o=l.startSpinner(`Fetching current configuration for CVM app_${r}`),n=await Ti(r);if(o.stop(!0),!n)return l.error(`CVM with App ID app_${r} not found`),1;let s=await w3(e),i="";if(s)try{i=x3.readFileSync(s,"utf8")}catch(p){return l.error(`Failed to read Docker Compose file: ${p instanceof Error?p.message:String(p)}`),1}await Zn(),process.env.DSTACK_DOCKER_USERNAME&&process.env.DSTACK_DOCKER_PASSWORD?l.info("\u{1F510} Using private DockerHub registry credentials..."):process.env.DSTACK_AWS_ACCESS_KEY_ID&&process.env.DSTACK_AWS_SECRET_ACCESS_KEY&&process.env.DSTACK_AWS_REGION&&process.env.DSTACK_AWS_ECR_REGISTRY?l.info(`\u{1F510} Using private AWS ECR registry: ${process.env.DSTACK_AWS_ECR_REGISTRY}`):l.info("\u{1F510} Using public DockerHub registry...");let a,c=[];if(e.envFile)try{let p=Va([],e.envFile);a=await(0,fr.encryptEnvVars)(p,n.encrypted_env_pubkey),c=p.map(d=>d.key)}catch(p){return l.error(`Failed to read environment file: ${p instanceof Error?p.message:String(p)}`),1}let m={compose_manifest:{docker_compose_file:i,manifest_version:1,runner:"docker-compose",version:"1.0.0",features:["kms","tproxy-net"],name:`app_${r}`,allowed_envs:c},encrypted_env:a,allow_restart:!0,env_keys:c},u=l.startSpinner(`Upgrading CVM app_${r}`),f=await l6(r,m);return f?(u.stop(!0),f.detail&&l.info(`Details: ${f.detail}`),l.break(),l.success(`Your CVM is being upgraded. You can check the dashboard for more details:
189
- ${be}/dashboard/cvms/app_${r}`),0):(u.stop(!1),l.error("Failed to upgrade CVM"),1)}catch(r){return l.error(`Failed to upgrade CVM: ${r instanceof Error?r.message:String(r)}`),e.debug&&l.error("Full Error:",r),1}}var cw=$({path:["cvms","upgrade"],meta:iw,schema:aw,handler:v3});var Jd={group:e6,commands:[y6,I6,T6,B6,N6,O6,G6,K6,Y6,tw,sw,cw]};import{z as le}from"zod";var mw={name:"deploy",description:"Create a new CVM with on-chain KMS in one step.",arguments:[],options:[...ts,{name:"json",description:"Output in JSON format",type:"boolean",target:"json",negatedName:"no-json"},{name:"debug",description:"Enable debug logging",type:"boolean",target:"debug"},{name:"name",shorthand:"n",description:"Name of the CVM",type:"string",target:"name"},{name:"compose",shorthand:"c",description:"Path to Docker Compose file (default: docker-compose.yml in current directory)",type:"string",target:"compose"},{name:"instance-type",shorthand:"t",description:"Instance type (e.g., tdx.small, tdx.medium, tdx.large). Optional - auto-selected if not specified.",type:"string",target:"instanceType"},{name:"vcpu",description:`Number of vCPUs (optional, auto-matched if not specified), default is ${Kn}`,type:"string",target:"vcpu"},{name:"memory",description:`Memory with optional unit (optional, auto-matched if not specified), e.g., 2G, 1024MB, default is ${Wn}MB`,type:"string",target:"memory"},{name:"disk-size",description:`Disk size with optional unit (optional, auto-matched if not specified), e.g., 50G, 100GB, default is ${Jn}GB`,type:"string",target:"diskSize"},{name:"image",description:"OS image version (optional, auto-selected if not specified)",type:"string",target:"image"},{name:"region",shorthand:"r",description:"Preferred region (e.g., us-west, eu-central). Optional - auto-selected if not specified.",type:"string",target:"region"},{name:"node-id",description:"Node ID (optional, auto-selected if not specified)",type:"string",target:"nodeId"},{name:"env-file",shorthand:"e",description:"Prompt for environment variables and save to file (optional)",type:"string",target:"envFile"},{name:"interactive",shorthand:"i",description:"Enable interactive mode for required parameters",type:"boolean",target:"interactive"},{name:"kms-id",description:"KMS ID to use.",type:"string",target:"kmsId"},{name:"uuid",description:"UUID of the CVM to upgrade",type:"string",target:"uuid"},{name:"custom-app-id",description:"Custom App ID to use.",type:"string",target:"customAppId"},{name:"pre-launch-script",description:"Path to pre-launch script",type:"string",target:"preLaunchScript"},{name:"private-key",description:"Private key for signing transactions.",type:"string",target:"privateKey"},{name:"rpc-url",description:"RPC URL for the blockchain.",type:"string",target:"rpcUrl"},{name:"wait",description:"Wait for CVM to complete deployment/update before returning (only applies to updates)",type:"boolean",target:"wait"},{name:"ssh-pubkey",description:"Path to SSH public key file (default: ~/.ssh/id_rsa.pub)",type:"string",target:"sshPubkey"},{name:"dev-os",description:"Use development OS image (requires SSH public key)",type:"boolean",target:"devOs"},{name:"non-dev-os",description:"Use non-development OS image (SSH public key only if explicitly specified)",type:"boolean",target:"nonDevOs"}],examples:[{name:"Deploy with auto-selection (simplest)",value:"phala deploy"},{name:"Deploy with specific instance type",value:"phala deploy --instance-type tdx.medium"},{name:"Deploy to specific region",value:"phala deploy --region us-west"},{name:"Deploy with instance type and region",value:"phala deploy --instance-type tdx.small --region eu-central"},{name:"Deploy with manual resource specs",value:"phala deploy --vcpu 4 --memory 8G --disk-size 100G"},{name:"Deploy with on-chain KMS",value:"phala deploy --kms-id ethereum --private-key <key> --rpc-url <url>"},{name:"Deploy to specific node (advanced)",value:"phala deploy --node-id 6"}]},uw=le.object({compose:le.string().optional(),json:le.boolean().default(!0),debug:le.boolean().default(!1),apiKey:le.string().optional(),name:le.string().optional(),instanceType:le.string().optional(),vcpu:le.string().optional(),memory:le.string().optional(),diskSize:le.string().optional(),image:le.string().optional(),region:le.string().optional(),nodeId:le.string().optional(),envFile:le.string().optional(),interactive:le.boolean().default(!1),kmsId:le.string().optional(),uuid:le.string().optional(),customAppId:le.string().optional(),preLaunchScript:le.string().optional(),privateKey:le.string().optional(),rpcUrl:le.string().optional(),wait:le.boolean().default(!1),sshPubkey:le.string().optional(),devOs:le.boolean().default(!1),nonDevOs:le.boolean().default(!1)});import Ri from"node:path";import dw from"node:os";function pw(e,t="B"){if(!e||typeof e!="string")throw new Error("Invalid input: must be a non-empty string");let r=e.trim().match(/^(\d+(?:\.\d+)?)\s*([KkMmGgTt][Bb]?)?$/);if(!r)throw new Error(`Invalid format: ${e}. Expected format: <number>[unit] (e.g., 2G, 500MB, 1T)`);let o=Number.parseFloat(r[1]),n=(r[2]||t).toUpperCase().replace("B",""),s={K:1024,M:1024*1024,G:1024*1024*1024,T:1024*1024*1024*1024,"":1};if(!(n in s))throw new Error(`Unsupported unit: ${n}. Supported units: B, K/KB, M/MB, G/GB, T/TB`);return Math.round(o*s[n])}function fw(e){let t=pw(e,"MB"),r=Math.round(t/(1024*1024));if(r%1024!==0)throw new Error(`Memory must be a multiple of 1GB (1024MB). Got: ${r}MB`);return r}function lw(e){let t=pw(e,"GB"),r=Math.round(t/(1024*1024*1024));if(r%1!==0)throw new Error(`Disk size must be a multiple of 1GB. Got: ${r}GB`);let o=250;if(r>o)throw new Error(`Maximum disk size is ${o}GB. Got: ${r}GB`);return r}import Up from"dedent";import Bi from"fs-extra";import Zd from"inquirer";function C3(e,t){if(e instanceof pd)return t.json?{success:!1,error_code:e.errorCode,message:e.message,details:e.structuredDetails,suggestions:e.suggestions,links:e.links}:Zx(e);if(e&&typeof e=="object"&&"response"in e){let n=e.response?.data?.detail;if(n&&typeof n=="object"&&"error_code"in n){let{error_code:s,message:i,details:a,suggestions:c,links:m}=n;if(t.json)return{success:!1,error_code:s,message:i,details:a,suggestions:c,links:m};let u=`
189
+ ${be}/dashboard/cvms/app_${r}`),0):(u.stop(!1),l.error("Failed to upgrade CVM"),1)}catch(r){return l.error(`Failed to upgrade CVM: ${r instanceof Error?r.message:String(r)}`),e.debug&&l.error("Full Error:",r),1}}var cw=$({path:["cvms","upgrade"],meta:iw,schema:aw,handler:v3});var Jd={group:e6,commands:[y6,I6,T6,B6,N6,O6,G6,K6,Y6,tw,sw,cw]};import{z as le}from"zod";var mw={name:"deploy",description:"Create a new CVM with on-chain KMS in one step.",arguments:[],options:[...ts,{name:"json",description:"Output in JSON format",type:"boolean",target:"json",negatedName:"no-json"},{name:"debug",description:"Enable debug logging",type:"boolean",target:"debug"},{name:"name",shorthand:"n",description:"Name of the CVM",type:"string",target:"name"},{name:"compose",shorthand:"c",description:"Path to Docker Compose file (default: docker-compose.yml in current directory)",type:"string",target:"compose"},{name:"instance-type",shorthand:"t",description:"Instance type (e.g., tdx.small, tdx.medium, tdx.large). Optional - auto-selected if not specified.",type:"string",target:"instanceType"},{name:"vcpu",description:`Number of vCPUs (optional, auto-matched if not specified), default is ${Kn}`,type:"string",target:"vcpu"},{name:"memory",description:`Memory with optional unit (optional, auto-matched if not specified), e.g., 2G, 1024MB, default is ${Wn}MB`,type:"string",target:"memory"},{name:"disk-size",description:`Disk size with optional unit (optional, auto-matched if not specified), e.g., 50G, 100GB, default is ${Jn}GB`,type:"string",target:"diskSize"},{name:"image",description:"OS image version (optional, auto-selected if not specified)",type:"string",target:"image"},{name:"region",shorthand:"r",description:"Preferred region (e.g., us-west, eu-central). Optional - auto-selected if not specified.",type:"string",target:"region"},{name:"node-id",description:"Node ID (optional, auto-selected if not specified)",type:"string",target:"nodeId"},{name:"env-file",shorthand:"e",description:"Prompt for environment variables and save to file (optional)",type:"string",target:"envFile"},{name:"interactive",shorthand:"i",description:"Enable interactive mode for required parameters",type:"boolean",target:"interactive"},{name:"kms-id",description:"KMS ID to use.",type:"string",target:"kmsId"},{name:"uuid",description:"UUID of the CVM to upgrade",type:"string",target:"uuid"},{name:"custom-app-id",description:"Custom App ID to use.",type:"string",target:"customAppId"},{name:"pre-launch-script",description:"Path to pre-launch script",type:"string",target:"preLaunchScript"},{name:"private-key",description:"Private key for signing transactions.",type:"string",target:"privateKey"},{name:"rpc-url",description:"RPC URL for the blockchain.",type:"string",target:"rpcUrl"},{name:"wait",description:"Wait for CVM to complete deployment/update before returning (only applies to updates)",type:"boolean",target:"wait"},{name:"ssh-pubkey",description:"Path to SSH public key file (default: ~/.ssh/id_rsa.pub)",type:"string",target:"sshPubkey"},{name:"dev-os",description:"Use development OS image (requires SSH public key)",type:"boolean",target:"devOs"},{name:"non-dev-os",description:"Use non-development OS image (SSH public key only if explicitly specified)",type:"boolean",target:"nonDevOs"}],examples:[{name:"Deploy with auto-selection (simplest)",value:"phala deploy"},{name:"Deploy with specific instance type",value:"phala deploy --instance-type tdx.medium"},{name:"Deploy to specific region",value:"phala deploy --region us-west"},{name:"Deploy with instance type and region",value:"phala deploy --instance-type tdx.small --region eu-central"},{name:"Deploy with manual resource specs",value:"phala deploy --vcpu 4 --memory 8G --disk-size 100G"},{name:"Deploy with on-chain KMS",value:"phala deploy --kms-id ethereum --private-key <key> --rpc-url <url>"},{name:"Deploy to specific node (advanced)",value:"phala deploy --node-id 6"}]},uw=le.object({compose:le.string().optional(),json:le.boolean().default(!0),debug:le.boolean().default(!1),apiKey:le.string().optional(),name:le.string().optional(),instanceType:le.string().optional(),vcpu:le.string().optional(),memory:le.string().optional(),diskSize:le.string().optional(),image:le.string().optional(),region:le.string().optional(),nodeId:le.string().optional(),envFile:le.string().optional(),interactive:le.boolean().default(!1),kmsId:le.string().optional(),uuid:le.string().optional(),customAppId:le.string().optional(),preLaunchScript:le.string().optional(),privateKey:le.string().optional(),rpcUrl:le.string().optional(),wait:le.boolean().default(!1),sshPubkey:le.string().optional(),devOs:le.boolean().default(!1),nonDevOs:le.boolean().default(!1)});import Ri from"node:path";import dw from"node:os";function pw(e,t="B"){if(!e||typeof e!="string")throw new Error("Invalid input: must be a non-empty string");let r=e.trim().match(/^(\d+(?:\.\d+)?)\s*([KkMmGgTt][Bb]?)?$/);if(!r)throw new Error(`Invalid format: ${e}. Expected format: <number>[unit] (e.g., 2G, 500MB, 1T)`);let o=Number.parseFloat(r[1]),n=(r[2]||t).toUpperCase().replace("B",""),s={K:1024,M:1024*1024,G:1024*1024*1024,T:1024*1024*1024*1024,"":1};if(!(n in s))throw new Error(`Unsupported unit: ${n}. Supported units: B, K/KB, M/MB, G/GB, T/TB`);return Math.round(o*s[n])}function fw(e){let t=pw(e,"MB"),r=Math.round(t/(1024*1024));if(r%1024!==0)throw new Error(`Memory must be a multiple of 1GB (1024MB). Got: ${r}MB`);return r}function lw(e){let t=pw(e,"GB"),r=Math.round(t/(1024*1024*1024));if(r%1!==0)throw new Error(`Disk size must be a multiple of 1GB. Got: ${r}GB`);return r}import Up from"dedent";import Bi from"fs-extra";import Zd from"inquirer";function C3(e,t){if(e instanceof pd)return t.json?{success:!1,error_code:e.errorCode,message:e.message,details:e.structuredDetails,suggestions:e.suggestions,links:e.links}:Zx(e);if(e&&typeof e=="object"&&"response"in e){let n=e.response?.data?.detail;if(n&&typeof n=="object"&&"error_code"in n){let{error_code:s,message:i,details:a,suggestions:c,links:m}=n;if(t.json)return{success:!1,error_code:s,message:i,details:a,suggestions:c,links:m};let u=`
190
190
  Error [${s}]: ${i}
191
191
  `;if(a&&a.length>0){u+=`
192
192
  Details:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "phala",
3
- "version": "1.1.0-beta.10",
3
+ "version": "1.1.0-beta.11",
4
4
  "description": "CLI for Managing Phala Cloud Services",
5
5
  "author": {
6
6
  "name": "Phala Network",