@team-semicolon/semicolony-cli 4.18.60 → 4.18.62
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle.js +3 -3
- package/package.json +1 -1
package/dist/bundle.js
CHANGED
|
@@ -2724,7 +2724,7 @@ ${e}`:null,`[\uC0AC\uC7A5\uB2D8 \uC0C8 \uBA54\uC2DC\uC9C0] ${t.message}`,"\uC704
|
|
|
2724
2724
|
\u{1F309} SemiColony chat-bridge
|
|
2725
2725
|
`)),console.log(` listen: ${$a.default.green(`http://127.0.0.1:${i}`)}`),console.log(` host_kind: ${$a.default.green(s)} ${A.ok?$a.default.gray(`(${A.detail??"ok"})`):$a.default.yellow(`(probe \uC2E4\uD328: ${A.detail??"n/a"} \u2014 \uC694\uCCAD \uC2DC 503)`)}`),console.log(` timeout: ${o}ms`),console.log(` max-concurrent:${a}`),console.log(` workspace: ${$a.default.gray(g)} (\uACA9\uB9AC cwd)`),console.log(` isolation: ${s==="claude-code"?$a.default.green("--system-prompt \uB300\uCCB4 (ambient CLAUDE.md \uCC28\uB2E8)"):s==="openai-chat"?$a.default.green("OpenAI system role \uBD84\uB9AC"):$a.default.yellow("\uC778\uB77C\uC778 system (host \uACA9\uB9AC \uC2AC\uB86F \uC5C6\uC74C)")}`),console.log(` auth: ${QH} \uC124\uC815\uB428 (fail-closed)
|
|
2726
2726
|
`)});let C=v=>{console.log($a.default.yellow(`
|
|
2727
|
-
[chat-bridge] ${v} \uC218\uC2E0 \u2014 \uC885\uB8CC.`)),E.close(()=>process.exit(0)),setTimeout(()=>process.exit(0),3e3).unref()};process.on("SIGINT",()=>C("SIGINT")),process.on("SIGTERM",()=>C("SIGTERM"))})}var RH=x(require("node:fs")),Ltt=x(require("node:os")),DH=x(require("node:path")),Wce=require("node:crypto");hn();var Kt=x(Oe()),XM=require("crypto");hn();var Ga=process.env.SEMICOLONY_DB_SCHEMA??"semicolony",Itt="sck_",_tt="wck_",ZM=["kb:read","kb:write","persona:read"],qce=["kb:read","skills:read","worker:release:read","worker:release:report"],cf="team-semicolon",DVn=/^[a-z][a-z0-9-]{0,99}$/,jce=/^[a-z][a-z0-9-]{0,63}$/,Btt=/^[a-z][a-z0-9-]{0,99}$/,vtt="colony",ktt="agent:team-semicolon:colony",Stt="team-semicolon:member",$ce="semo-ops:fabric-bridge",Gce="fabric:query",Qtt=[Gce];function Dtt(t){if(!DVn.test(t))throw new Error(`\uC798\uBABB\uB41C project id: "${t}"`);return t}function RVn(t){let e=t.indexOf(":"),n=Dtt(e<0?t:t.slice(0,e)),i=(e<0?"":t.slice(e+1)).split(",").map(a=>a.trim().toLowerCase()).filter(Boolean);if(i.length===0)throw new Error(`project credential environment\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4: "${t}"`);if(i.some(a=>a==="prod"||a==="production"))throw new Error("production credential projection\uC740 \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.");let s=i.find(a=>a!=="dev"&&a!=="e2e");if(s)throw new Error(`\uC9C0\uC6D0\uD558\uC9C0 \uC54A\uB294 project credential environment: "${s}"`);let o=[...new Set(i)].sort();return{projectId:n,capability:"credentials-read",environments:o}}function MVn(t){return{projectId:Dtt(t.trim()),capability:"assets-read",environments:[]}}function TVn(t=[]){let e=new Map;for(let r of t){let i=`${r.projectId}:${r.capability}`,s=e.get(i);e.set(i,{...r,environments:[...new Set([...s?.environments??[],...r.environments])].sort()})}let n={"credentials-read":0,"assets-read":1};return[...e.values()].sort((r,i)=>r.projectId.localeCompare(i.projectId)||n[r.capability]-n[i.capability])}function OVn(t,e){let n=new Set(t?.length?t:qce);return e.some(r=>r.capability==="credentials-read")&&n.add("workspace:credentials-read"),e.some(r=>r.capability==="assets-read")&&n.add("workspace:assets-read"),[...n]}function Rtt(t){return(0,XM.createHash)("sha256").update(t).digest("hex")}function Hce(t){let e=(0,XM.randomBytes)(32).toString("base64url"),n=`${Itt}${t}_${e}`,r=n.slice(0,Itt.length+t.length+1+6);return{token:n,tokenHash:Rtt(n),tokenPrefix:r}}function Mtt(t){let e=(0,XM.randomBytes)(32).toString("base64url"),n=`${_tt}${t}_${e}`,r=n.slice(0,_tt.length+t.length+1+6);return{token:n,tokenHash:Rtt(n),tokenPrefix:r}}function Uce(t){if(!t)return ZM;let e=t.split(",").map(n=>n.trim().toLowerCase()).filter(Boolean);for(let n of e)if(!/^[a-z0-9-]
|
|
2727
|
+
[chat-bridge] ${v} \uC218\uC2E0 \u2014 \uC885\uB8CC.`)),E.close(()=>process.exit(0)),setTimeout(()=>process.exit(0),3e3).unref()};process.on("SIGINT",()=>C("SIGINT")),process.on("SIGTERM",()=>C("SIGTERM"))})}var RH=x(require("node:fs")),Ltt=x(require("node:os")),DH=x(require("node:path")),Wce=require("node:crypto");hn();var Kt=x(Oe()),XM=require("crypto");hn();var Ga=process.env.SEMICOLONY_DB_SCHEMA??"semicolony",Itt="sck_",_tt="wck_",ZM=["kb:read","kb:write","persona:read"],qce=["kb:read","skills:read","worker:release:read","worker:release:report"],cf="team-semicolon",DVn=/^[a-z][a-z0-9-]{0,99}$/,jce=/^[a-z][a-z0-9-]{0,63}$/,Btt=/^[a-z][a-z0-9-]{0,99}$/,vtt="colony",ktt="agent:team-semicolon:colony",Stt="team-semicolon:member",$ce="semo-ops:fabric-bridge",Gce="fabric:query",Qtt=[Gce];function Dtt(t){if(!DVn.test(t))throw new Error(`\uC798\uBABB\uB41C project id: "${t}"`);return t}function RVn(t){let e=t.indexOf(":"),n=Dtt(e<0?t:t.slice(0,e)),i=(e<0?"":t.slice(e+1)).split(",").map(a=>a.trim().toLowerCase()).filter(Boolean);if(i.length===0)throw new Error(`project credential environment\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4: "${t}"`);if(i.some(a=>a==="prod"||a==="production"))throw new Error("production credential projection\uC740 \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.");let s=i.find(a=>a!=="dev"&&a!=="e2e");if(s)throw new Error(`\uC9C0\uC6D0\uD558\uC9C0 \uC54A\uB294 project credential environment: "${s}"`);let o=[...new Set(i)].sort();return{projectId:n,capability:"credentials-read",environments:o}}function MVn(t){return{projectId:Dtt(t.trim()),capability:"assets-read",environments:[]}}function TVn(t=[]){let e=new Map;for(let r of t){let i=`${r.projectId}:${r.capability}`,s=e.get(i);e.set(i,{...r,environments:[...new Set([...s?.environments??[],...r.environments])].sort()})}let n={"credentials-read":0,"assets-read":1};return[...e.values()].sort((r,i)=>r.projectId.localeCompare(i.projectId)||n[r.capability]-n[i.capability])}function OVn(t,e){let n=new Set(t?.length?t:qce);return e.some(r=>r.capability==="credentials-read")&&n.add("workspace:credentials-read"),e.some(r=>r.capability==="assets-read")&&n.add("workspace:assets-read"),[...n]}function Rtt(t){return(0,XM.createHash)("sha256").update(t).digest("hex")}function Hce(t){let e=(0,XM.randomBytes)(32).toString("base64url"),n=`${Itt}${t}_${e}`,r=n.slice(0,Itt.length+t.length+1+6);return{token:n,tokenHash:Rtt(n),tokenPrefix:r}}function Mtt(t){let e=(0,XM.randomBytes)(32).toString("base64url"),n=`${_tt}${t}_${e}`,r=n.slice(0,_tt.length+t.length+1+6);return{token:n,tokenHash:Rtt(n),tokenPrefix:r}}function Uce(t){if(!t)return ZM;let e=t.split(",").map(n=>n.trim().toLowerCase()).filter(Boolean);for(let n of e)if(!/^[a-z0-9-]+(?::[a-z0-9*-]+)+$/.test(n))throw new Error(`\uC798\uBABB\uB41C scope \uD615\uC2DD: "${n}" (\uAE30\uB300: "{resource}:{action}" \uB610\uB294 \uACC4\uCE35 scope, \uC608: worker:release:read)`);return e.length?e:ZM}async function Jx(t){let e=G(),{rows:n}=await e.query("SELECT id, slug, display_name FROM public.tenants WHERE slug = $1",[t]);if(!n[0])throw new Error(`\uD14C\uB10C\uD2B8\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4: "${t}" (public.tenants)`);return n[0]}function xtt(t,e,n){console.log(Kt.default.green(`
|
|
2728
2728
|
\u2714 \uAC8C\uC774\uD2B8\uC6E8\uC774 \uC790\uACA9\uC99D\uBA85 \uBC1C\uAE09 \uC644\uB8CC`)),console.log(Kt.default.yellow(` \uC544\uB798 \uD1A0\uD070\uC740 \uC9C0\uAE08 \uD55C \uBC88\uB9CC \uD45C\uC2DC\uB429\uB2C8\uB2E4. \uC548\uC804\uD558\uAC8C \uBCF4\uAD00\uD558\uC138\uC694.
|
|
2729
2729
|
`)),console.log(" "+Kt.default.bold.cyan(t)+`
|
|
2730
2730
|
`),console.log(Kt.default.gray(` tenant=${n} prefix=${e}`)),console.log(Kt.default.gray(` Colony env: export SEMICOLONY_API_KEY=${t}
|
|
@@ -3163,7 +3163,7 @@ ${e}`}function iqr(t={}){let e=Buffer.alloc(0);process.stdin.on("data",r=>{e=Buf
|
|
|
3163
3163
|
AND r.profile_id = wp.profile_id
|
|
3164
3164
|
WHERE wp.profile_id = $1
|
|
3165
3165
|
`,[n]),i=r[0];if(!i)throw new Error(`workspace profile not found: ${n}`);let s=typeof i.active_release_id=="string"?{release_id:i.active_release_id,version:String(i.active_release_version),status:"active",manifest_sha256:String(i.manifest_sha256),source_commit:String(i.source_commit),activated_at:typeof i.activated_at=="string"?i.activated_at:null,activated_by:typeof i.activated_by=="string"?i.activated_by:null}:null,o=(await NJ({profileId:n},e)).map(HN);return{profile_id:n,active_release:s,devices:o}}function Uqr(t){let e=t.active_release,n=["",rp.default.cyan.bold(`SEMO Ops worker release: ${t.profile_id}`)];e?(n.push(` active=${e.version} (${e.release_id})`),n.push(rp.default.gray(` activated=${e.activated_at??"-"} by=${e.activated_by??"-"}`))):n.push(rp.default.yellow(" active=none")),t.devices.length||n.push(rp.default.gray(" registered devices=none"));for(let r of t.devices){let i=r.applied_release_version??r.applied_release_id??"none";n.push(` ${r.worker_id}/${r.device_id} \xB7 applied=${i} \xB7 doctor=${r.last_doctor_status}`)}return n.push(""),n.join(`
|
|
3166
|
-
`)}function iWt(t,e){let n=t.command("release").description("immutable worker profile release operator commands");n.command("stage").description("rendered immutable manifest\uB97C staged release\uB85C \uC800\uC7A5\uD569\uB2C8\uB2E4").requiredOption("--profile <id>","workspace profile id").requiredOption("--version <version>","release version").requiredOption("--manifest <file>","already-rendered manifest JSON file").requiredOption("--source-commit <sha>","reviewed source commit SHA").action(async r=>{try{let i=await Pqr({profileId:r.profile,version:r.
|
|
3166
|
+
`)}function iWt(t,e){let n=t.command("release").description("immutable worker profile release operator commands");n.command("stage").description("rendered immutable manifest\uB97C staged release\uB85C \uC800\uC7A5\uD569\uB2C8\uB2E4").requiredOption("--profile <id>","workspace profile id").requiredOption("--release-version <version>","release version").requiredOption("--manifest <file>","already-rendered manifest JSON file").requiredOption("--source-commit <sha>","reviewed source commit SHA").action(async r=>{try{let i=await Pqr({profileId:r.profile,version:r.releaseVersion,manifestPath:r.manifest,sourceCommit:r.sourceCommit});console.log(rp.default.green(`\u2714 staged worker release ${i.profile_id}@${i.version} (${i.release_id})`))}catch(i){console.error(rp.default.red(`${e} worker release stage failed: ${i instanceof Error?i.message:i}`)),process.exitCode=1}finally{await S()}}),n.command("activate <release-id>").description("staged release\uB97C \uD574\uB2F9 profile\uC758 desired release\uB85C \uD65C\uC131\uD654\uD569\uB2C8\uB2E4").requiredOption("--activated-by <actor>","operator identity").action(async(r,i)=>{try{await Fqr({releaseId:r,activatedBy:i.activatedBy}),console.log(rp.default.green(`\u2714 activated worker release ${r}`))}catch(s){console.error(rp.default.red(`${e} worker release activate failed: ${s instanceof Error?s.message:s}`)),process.exitCode=1}finally{await S()}}),n.command("status").description("profile desired release\uC640 registered device rollout \uC0C1\uD0DC\uB97C \uC870\uD68C\uD569\uB2C8\uB2E4").requiredOption("--profile <id>","workspace profile id").option("--json","JSON output").action(async r=>{try{let i=await Lqr(r.profile);console.log(r.json?JSON.stringify(i,null,2):Uqr(i))}catch(i){console.error(rp.default.red(`${e} worker release status failed: ${i instanceof Error?i.message:i}`)),process.exitCode=1}finally{await S()}})}var hWt=require("node:crypto"),bt=x(require("node:fs")),fWt=x(require("node:os")),Ft=x(require("node:path"));rs();var pWt=/^[A-Fa-f0-9]{64}$/,VN=/^[a-z0-9][a-z0-9-]*$/,qqr=/^[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$/,jqr=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,gWt=new Set(["shared-script:feedback-capture.py"]);function lI(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function YN(t,e,n){let r=Object.keys(t).find(i=>!e.includes(i));if(r)throw new Error(`${n} has unsupported field: ${r}`)}function bl(t,e){if(typeof t!="string"||t.length===0)throw new Error(`${e} must be a non-empty string`);return t}function jJ(t,e){if(!Array.isArray(t))throw new Error(`${e} must be an array`);return t}function uI(t){return(0,hWt.createHash)("sha256").update(t).digest("hex")}function $J(t){if(t===null)return"null";if(typeof t=="string"||typeof t=="boolean")return JSON.stringify(t);if(typeof t=="number"){if(!Number.isFinite(t))throw new Error("manifest JSON contains a non-finite number");return JSON.stringify(t)}if(Array.isArray(t))return`[${t.map($J).join(",")}]`;if(lI(t))return`{${Object.keys(t).sort().map(e=>`${JSON.stringify(e)}:${$J(t[e])}`).join(",")}}`;throw new Error("manifest contains a non-JSON value")}function iBe(t,e,n){if(!pWt.test(t)||t.toLowerCase()!==uI(e))throw new Error(`${n}.sha256 does not match its content`)}function hQ(t,e){if(new Set(t).size!==t.length)throw new Error(`${e} must not contain duplicates`)}function $qr(t){if(!lI(t))throw new Error("worker release manifest must be an object");if(YN(t,["schema","contexts","skills","assets","required_doctor_checks"],"worker release manifest"),t.schema!=="semo-ops/worker-release/v1")throw new Error("worker release manifest schema is invalid");let e=jJ(t.contexts,"contexts").map((s,o)=>{if(!lI(s))throw new Error(`contexts[${o}] must be an object`);YN(s,["id","parity_group","claude_content","codex_content","sha256"],`contexts[${o}]`);let a={id:bl(s.id,`contexts[${o}].id`),parity_group:bl(s.parity_group,`contexts[${o}].parity_group`),claude_content:bl(s.claude_content,`contexts[${o}].claude_content`),codex_content:bl(s.codex_content,`contexts[${o}].codex_content`),sha256:bl(s.sha256,`contexts[${o}].sha256`)};if(!VN.test(a.id)||!VN.test(a.parity_group))throw new Error(`contexts[${o}] identifiers are invalid`);return iBe(a.sha256,$J({claude_content:a.claude_content,codex_content:a.codex_content}),`contexts[${o}]`),a}),n=jJ(t.skills,"skills").map((s,o)=>{if(!lI(s))throw new Error(`skills[${o}] must be an object`);YN(s,["name","content","sha256"],`skills[${o}]`);let a={name:bl(s.name,`skills[${o}].name`),content:bl(s.content,`skills[${o}].content`),sha256:bl(s.sha256,`skills[${o}].sha256`)};if(!VN.test(a.name))throw new Error(`skills[${o}] skill name is invalid`);return iBe(a.sha256,a.content,`skills[${o}]`),a}),r=jJ(t.assets,"assets").map((s,o)=>{if(!lI(s))throw new Error(`assets[${o}] must be an object`);YN(s,["id","target","content_base64","sha256","mode"],`assets[${o}]`);let a=bl(s.id,`assets[${o}].id`),c=bl(s.target,`assets[${o}].target`),l=bl(s.content_base64,`assets[${o}].content_base64`),u=bl(s.sha256,`assets[${o}].sha256`),d=bl(s.mode,`assets[${o}].mode`);if(!VN.test(a))throw new Error(`assets[${o}].id is invalid`);if(!gWt.has(c))throw new Error(`assets[${o}] asset target is invalid`);if(d!=="0755"&&d!=="0644")throw new Error(`assets[${o}].mode is invalid`);if(!jqr.test(l))throw new Error(`assets[${o}].content_base64 is invalid`);let A=Buffer.from(l,"base64");if(A.length===0||A.toString("base64")!==l)throw new Error(`assets[${o}].content_base64 is not canonical`);return iBe(u,A,`assets[${o}]`),{id:a,target:c,content:A,sha256:u.toLowerCase(),mode:d}}),i=jJ(t.required_doctor_checks,"required_doctor_checks").map((s,o)=>bl(s,`required_doctor_checks[${o}]`));return hQ(e.map(({id:s})=>s),"context ids"),hQ(e.map(({parity_group:s})=>s),"context parity groups"),hQ(n.map(({name:s})=>s),"skill names"),hQ(r.map(({id:s})=>s),"asset ids"),hQ(r.map(({target:s})=>s),"asset targets"),hQ(i,"required_doctor_checks"),{schema:"semo-ops/worker-release/v1",contexts:e,skills:n,assets:r,required_doctor_checks:i}}function mWt(t){if(!lI(t)||typeof t.release_id!="string"||typeof t.version!="string"||typeof t.manifest_sha256!="string")throw new Error("worker release Gateway response is invalid");if(!qqr.test(t.release_id))throw new Error("worker release id is invalid");let e=Yh(t.version);if(!pWt.test(t.manifest_sha256))throw new Error("worker release manifest sha256 is invalid");return{releaseId:t.release_id,version:e,manifestSha256:t.manifest_sha256.toLowerCase()}}function Gqr(t){let e=mWt(t);if(!lI(t))throw new Error("worker release Gateway response is invalid");YN(t,["release_id","version","manifest","manifest_sha256"],"worker release");let n=$qr(t.manifest);if(uI($J(t.manifest))!==e.manifestSha256)throw new Error("worker release manifest sha256 does not match the canonical manifest");return{...e,manifest:n}}function cBe(t,e){if(e==="shared-script:feedback-capture.py")return Ft.join(t,".semo","shared","scripts","feedback-capture.py");throw new Error("worker release asset target has no local mapping")}function Hqr(t,e){return[Ft.join(t,".claude","CLAUDE.md"),Ft.join(t,".codex","AGENTS.md"),...e.manifest.skills.flatMap(n=>[Ft.join(t,".claude","skills",n.name,"SKILL.md"),Ft.join(t,".agents","skills",n.name,"SKILL.md")]),...e.manifest.assets.map(n=>cBe(t,n.target)),jo(t).workerState,jo(t).releaseState,jo(t).updateLock,jo(t).rollbackFailure]}function ph(t){try{return bt.lstatSync(t)}catch(e){if(e.code==="ENOENT")return null;throw e}}function Su(t,e){let n=Ft.resolve(t),r=Ft.resolve(e),i=Ft.relative(n,r);if(i===""||i.startsWith("..")||Ft.isAbsolute(i))throw new Error("worker release target escapes the worker home");let s=n,o=i.split(Ft.sep);for(let[a,c]of o.entries()){s=Ft.join(s,c);let l=ph(s);if(l){if(l.isSymbolicLink())throw new Error("worker release target contains a symlink");if(a<o.length-1&&!l.isDirectory())throw new Error("worker release target ancestor is not a directory");if(a===o.length-1&&l.isDirectory())throw new Error("worker release file target is a directory")}}}function sWt(t,e){for(let n of Hqr(t,e))Su(t,n)}var fQ=class extends Error{constructor(n,r){super(`worker doctor returned ${n}`);this.doctorStatus=n;this.report=r}};function GJ(t,e){return`<!-- SEMO_OPS_WORKER_RELEASE:${t}:${e} -->`}function oBe(t,e){let n=0,r=0;for(;;){let i=t.indexOf(e,r);if(i<0)return n;n+=1,r=i+e.length}}function oWt(t,e,n){let r=GJ(e,"BEGIN"),i=GJ(e,"END");if(n.includes("SEMO_OPS_WORKER_RELEASE"))throw new Error("worker release context content contains a reserved marker");let s=oBe(t,r),o=oBe(t,i);if(s!==o||s>1)throw new Error(`worker release context ${e} has unpaired managed markers`);let a=n.endsWith(`
|
|
3167
3167
|
`)?n:`${n}
|
|
3168
3168
|
`,c=`${r}
|
|
3169
3169
|
${a}${i}`;if(s===0){let d=t.length===0||t.endsWith(`
|
|
@@ -3526,4 +3526,4 @@ DB \uC5F0\uACB0:`)),await ve()?console.log(B.default.green(" \u2713 DB \uC5F0\u
|
|
|
3526
3526
|
`)),await S();return}}let o=await uj(n,t,!!e.force);e.format==="json"?console.log(JSON.stringify(o,null,2)):o.success?(console.log(B.default.green(`
|
|
3527
3527
|
\u2705 \uB3C4\uBA54\uC778 '${t}' \uC0AD\uC81C \uC644\uB8CC`)),o.deleted_entries&&o.deleted_entries>0&&console.log(B.default.gray(` KB \uD56D\uBAA9 ${o.deleted_entries}\uAC74 \uD568\uAED8 \uC0AD\uC81C\uB428`)),console.log()):(console.log(B.default.red(`
|
|
3528
3528
|
\u274C \uC0AD\uC81C \uC2E4\uD328: ${o.error}
|
|
3529
|
-
`)),process.exit(1)),await S()}catch(n){console.error(B.default.red(`\uC0AD\uC81C \uC2E4\uD328: ${n}`)),await S(),process.exit(1)}});O$e(Ke);EGe(Ke);wGe(Ke);_Ge(Ke);xGe(Ke);kGe(Ke);DJe(Ke);NJe(Ke);VJe(Ke);YJe(Ke);KJe(Ke);n3e(Ke);i3e(Ke);b3e(Ke);I3e(Ke);_Ke(Ke);iZe(Ke);aZe(Ke);l3e(Ke);u3e(Ke);async function b5r(){let t=process.argv.slice(2);t.length===1&&(t[0]==="-v"||t[0]==="--version-info")&&(await c4t(),process.exit(0)),Ke.
|
|
3529
|
+
`)),process.exit(1)),await S()}catch(n){console.error(B.default.red(`\uC0AD\uC81C \uC2E4\uD328: ${n}`)),await S(),process.exit(1)}});O$e(Ke);EGe(Ke);wGe(Ke);_Ge(Ke);xGe(Ke);kGe(Ke);DJe(Ke);NJe(Ke);VJe(Ke);YJe(Ke);KJe(Ke);n3e(Ke);i3e(Ke);b3e(Ke);I3e(Ke);_Ke(Ke);iZe(Ke);aZe(Ke);l3e(Ke);u3e(Ke);async function b5r(){let t=process.argv.slice(2);t.length===1&&(t[0]==="-v"||t[0]==="--version-info")&&(await c4t(),process.exit(0)),await Ke.parseAsync()}b5r();
|