pai-zero 0.11.2 → 0.11.3
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/README.md +1 -1
- package/dist/bin/pai.js +56 -82
- package/dist/bin/pai.js.map +1 -1
- package/dist/cli/index.js +56 -82
- package/dist/cli/index.js.map +1 -1
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -3477,13 +3477,15 @@ var init_detector = __esm({
|
|
|
3477
3477
|
label: "roboco (AI \uC9C4\uB2E8)",
|
|
3478
3478
|
description: "\uC124\uCE58 \uC0C1\uD0DC \uD3C9\uAC00 \uBC0F AI \uC900\uBE44\uB3C4 \uB9AC\uD3EC\uD2B8 \uC0DD\uC131",
|
|
3479
3479
|
modes: ["prototype", "poc", "production"],
|
|
3480
|
-
required: false
|
|
3480
|
+
required: false,
|
|
3481
|
+
url: "https://github.com/SoInKyu/roboco-cli"
|
|
3481
3482
|
},
|
|
3482
3483
|
omc: {
|
|
3483
|
-
label: "OMC (
|
|
3484
|
-
description: "\uAC1D\uCCB4 \uBAA8\uB378 \uCEE8\uD14D\uC2A4\uD2B8
|
|
3484
|
+
label: "OMC (oh-my-claudecode)",
|
|
3485
|
+
description: "\uAC1D\uCCB4 \uBAA8\uB378 \uCEE8\uD14D\uC2A4\uD2B8 + Claude Code \uBA40\uD2F0 \uC5D0\uC774\uC804\uD2B8 \uC624\uCF00\uC2A4\uD2B8\uB808\uC774\uC158",
|
|
3485
3486
|
modes: ["poc", "production"],
|
|
3486
|
-
required: false
|
|
3487
|
+
required: false,
|
|
3488
|
+
url: "https://github.com/SoInKyu/oh-my-claudecode"
|
|
3487
3489
|
},
|
|
3488
3490
|
vercel: {
|
|
3489
3491
|
label: "Vercel \uBC30\uD3EC \uC5F0\uB3D9",
|
|
@@ -3495,7 +3497,8 @@ var init_detector = __esm({
|
|
|
3495
3497
|
label: "gstack (QA / \uD488\uC9C8\uAD00\uB9AC)",
|
|
3496
3498
|
description: "\uD14C\uC2A4\uD2B8 \uC790\uB3D9\uD654 \uBC0F \uD488\uC9C8 \uAE30\uC900 \uC124\uC815",
|
|
3497
3499
|
modes: ["production"],
|
|
3498
|
-
required: false
|
|
3500
|
+
required: false,
|
|
3501
|
+
url: "https://github.com/SoInKyu/gstack"
|
|
3499
3502
|
},
|
|
3500
3503
|
harness: {
|
|
3501
3504
|
label: "Harness Engineering (\uAC80\uC99D \uC790\uB3D9\uD654)",
|
|
@@ -4319,7 +4322,7 @@ var init_claude_settings = __esm({
|
|
|
4319
4322
|
"use strict";
|
|
4320
4323
|
init_platform();
|
|
4321
4324
|
DEFAULT_MARKETPLACE_ID = "omc";
|
|
4322
|
-
DEFAULT_MARKETPLACE_URL = "https://github.com/
|
|
4325
|
+
DEFAULT_MARKETPLACE_URL = "https://github.com/SoInKyu/oh-my-claudecode.git";
|
|
4323
4326
|
DEFAULT_PLUGIN_ID = "oh-my-claudecode@omc";
|
|
4324
4327
|
ClaudeSettingsError = class extends Error {
|
|
4325
4328
|
constructor(message, backupPath) {
|
|
@@ -4837,9 +4840,9 @@ async function showCompletion(projectName, projectDir, extraTools, isCurrentDir)
|
|
|
4837
4840
|
default: true
|
|
4838
4841
|
}]);
|
|
4839
4842
|
if (runEval) {
|
|
4840
|
-
const { createSpinner:
|
|
4843
|
+
const { createSpinner: createSpinner3 } = await Promise.resolve().then(() => (init_progress(), progress_exports));
|
|
4841
4844
|
await sleep2(2e3);
|
|
4842
|
-
const spinner =
|
|
4845
|
+
const spinner = createSpinner3("\uBC14\uC774\uBE0C\uCF54\uB529 \uC0C1\uD0DC \uCCB4\uD06C \uC911...");
|
|
4843
4846
|
try {
|
|
4844
4847
|
const { analyzeRepository: analyzeRepository2 } = await Promise.resolve().then(() => (init_analyzer2(), analyzer_exports2));
|
|
4845
4848
|
const { computeResult: computeResult2 } = await Promise.resolve().then(() => (init_scorer(), scorer_exports));
|
|
@@ -4878,97 +4881,68 @@ async function showCompletion(projectName, projectDir, extraTools, isCurrentDir)
|
|
|
4878
4881
|
success("\uC774\uC81C Claude Code\uC640 \uD568\uAED8 PRD \uBB38\uC11C\uB97C \uC791\uC131\uD558\uC138\uC694.");
|
|
4879
4882
|
console.log("");
|
|
4880
4883
|
console.log(colors.dim(" \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"));
|
|
4884
|
+
console.log("");
|
|
4885
|
+
const { createSpinner: createSpinner2 } = await Promise.resolve().then(() => (init_progress(), progress_exports));
|
|
4886
|
+
const omcSpinner = createSpinner2("OMC \uD50C\uB7EC\uADF8\uC778 \uB4F1\uB85D \uC911...");
|
|
4887
|
+
try {
|
|
4888
|
+
const { enableOmcPlugin: enableOmcPlugin2 } = await Promise.resolve().then(() => (init_claude_settings(), claude_settings_exports));
|
|
4889
|
+
const result = await enableOmcPlugin2();
|
|
4890
|
+
if (result.action === "already-enabled") {
|
|
4891
|
+
omcSpinner.succeed("OMC \uD50C\uB7EC\uADF8\uC778 \uC774\uBBF8 \uB4F1\uB85D\uB428");
|
|
4892
|
+
} else if (result.action === "created") {
|
|
4893
|
+
omcSpinner.succeed("Claude \uC124\uC815 \uC2E0\uADDC \uC0DD\uC131 + OMC \uD50C\uB7EC\uADF8\uC778 \uB4F1\uB85D \uC644\uB8CC");
|
|
4894
|
+
} else {
|
|
4895
|
+
omcSpinner.succeed("OMC \uD50C\uB7EC\uADF8\uC778 \uB4F1\uB85D \uC644\uB8CC");
|
|
4896
|
+
}
|
|
4897
|
+
hint("Claude Code \uAE30\uB3D9 \uC2DC \uD50C\uB7EC\uADF8\uC778\uC774 \uC790\uB3D9 \uC124\uCE58\uB429\uB2C8\uB2E4.");
|
|
4898
|
+
if (result.backupPath) {
|
|
4899
|
+
hint(`\uC124\uC815 \uBC31\uC5C5: ${result.backupPath}`);
|
|
4900
|
+
}
|
|
4901
|
+
} catch (err) {
|
|
4902
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
4903
|
+
omcSpinner.warn(`OMC \uD50C\uB7EC\uADF8\uC778 \uB4F1\uB85D \uC2E4\uD328 \u2014 ${msg}`);
|
|
4904
|
+
hint("Claude Code \uAE30\uB3D9 \uD6C4 \uC9C1\uC811 \uB4F1\uB85D\uD558\uC138\uC694:");
|
|
4905
|
+
hint(" /plugin install SoInKyu/oh-my-claudecode");
|
|
4906
|
+
}
|
|
4881
4907
|
const { getShellRcPath: getShellRcPath2, hasYoloAlias: checkYolo } = await Promise.resolve().then(() => (init_platform(), platform_exports));
|
|
4882
4908
|
const shellRc = getShellRcPath2();
|
|
4883
|
-
let
|
|
4909
|
+
let yoloAlreadyAliased = false;
|
|
4884
4910
|
try {
|
|
4885
4911
|
const rcContent = await fs15.readFile(shellRc, "utf8");
|
|
4886
|
-
|
|
4912
|
+
yoloAlreadyAliased = checkYolo(rcContent);
|
|
4887
4913
|
} catch {
|
|
4888
4914
|
}
|
|
4889
|
-
let useYolo = false;
|
|
4890
|
-
if (!hasYoloAliasSet) {
|
|
4891
|
-
console.log("");
|
|
4892
|
-
const { mode } = await inquirer.prompt([{
|
|
4893
|
-
type: "list",
|
|
4894
|
-
name: "mode",
|
|
4895
|
-
message: "Claude Code \uC2E4\uD589 \uBAA8\uB4DC\uB97C \uC124\uC815\uD569\uB2C8\uB2E4:",
|
|
4896
|
-
choices: [
|
|
4897
|
-
{ name: `\uC77C\uBC18 \uBAA8\uB4DC ${colors.dim("\u2500 \uAD8C\uD55C \uD655\uC778 \uD6C4 \uC2E4\uD589")}`, value: "normal" },
|
|
4898
|
-
{ name: `claude-YOLO mode ${colors.dim("\u2500 \uAD8C\uD55C \uD655\uC778 \uC5C6\uC774 \uC790\uB3D9 \uC2E4\uD589 (alias \uC124\uC815)")}`, value: "yolo" }
|
|
4899
|
-
]
|
|
4900
|
-
}]);
|
|
4901
|
-
if (mode === "yolo") {
|
|
4902
|
-
useYolo = true;
|
|
4903
|
-
const { getYoloAliasLine: getYoloAliasLine2 } = await Promise.resolve().then(() => (init_platform(), platform_exports));
|
|
4904
|
-
const aliasLine = getYoloAliasLine2();
|
|
4905
|
-
try {
|
|
4906
|
-
const rcContent = await fs15.readFile(shellRc, "utf8").catch(() => "");
|
|
4907
|
-
if (!rcContent.includes("claude-yolo")) {
|
|
4908
|
-
await fs15.ensureDir(join11(shellRc, ".."));
|
|
4909
|
-
await fs15.appendFile(shellRc, `
|
|
4910
|
-
# PAI \u2014 claude-YOLO mode
|
|
4911
|
-
${aliasLine}
|
|
4912
|
-
`);
|
|
4913
|
-
await sleep2(500);
|
|
4914
|
-
success("claude-yolo alias \uC124\uC815 \uC644\uB8CC");
|
|
4915
|
-
hint("\uC0C8 \uD130\uBBF8\uB110\uC5D0\uC11C claude-yolo \uB85C \uC2E4\uD589 \uAC00\uB2A5");
|
|
4916
|
-
}
|
|
4917
|
-
} catch {
|
|
4918
|
-
}
|
|
4919
|
-
}
|
|
4920
|
-
} else {
|
|
4921
|
-
useYolo = true;
|
|
4922
|
-
}
|
|
4923
4915
|
console.log("");
|
|
4924
|
-
|
|
4916
|
+
console.log(colors.dim(" \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"));
|
|
4925
4917
|
const { launch } = await inquirer.prompt([{
|
|
4926
4918
|
type: "list",
|
|
4927
4919
|
name: "launch",
|
|
4928
|
-
message: "Claude Code\uB97C \uC2DC\uC791\uD560\uAE4C\uC694?",
|
|
4920
|
+
message: "Claude Code\uB97C \uC5B4\uB5A4 \uBAA8\uB4DC\uB85C \uC2DC\uC791\uD560\uAE4C\uC694?",
|
|
4929
4921
|
choices: [
|
|
4930
|
-
{ name: `
|
|
4931
|
-
{ name: `
|
|
4932
|
-
{ name: chalk8.gray("\uB098\uC911\uC5D0 \uC9C1\uC811 \uC2E4\uD589"), value: "none" }
|
|
4922
|
+
{ name: `claude ${colors.dim("\u2500 \uAD8C\uD55C \uD655\uC778 \uD6C4 \uC2E4\uD589 (\uC77C\uBC18 \uBAA8\uB4DC)")}`, value: "claude" },
|
|
4923
|
+
{ name: `claude YOLO ${colors.dim("\u2500 \uAD8C\uD55C \uD655\uC778 \uC5C6\uC774 \uC790\uB3D9 \uC2E4\uD589 (--dangerously-skip-permissions)")}`, value: "yolo" }
|
|
4933
4924
|
]
|
|
4934
4925
|
}]);
|
|
4935
|
-
|
|
4936
|
-
|
|
4937
|
-
hint("claude \uB97C \uC785\uB825\uD558\uBA74 \uC2DC\uC791\uB429\uB2C8\uB2E4.");
|
|
4938
|
-
console.log("");
|
|
4939
|
-
if (!isCurrentDir) {
|
|
4940
|
-
const { spawnSubshell: spawnSubshell2 } = await Promise.resolve().then(() => (init_platform(), platform_exports));
|
|
4941
|
-
spawnSubshell2(projectDir);
|
|
4942
|
-
}
|
|
4943
|
-
return;
|
|
4944
|
-
}
|
|
4945
|
-
if (launch === "omc") {
|
|
4946
|
-
console.log("");
|
|
4947
|
-
const { createSpinner: createSpinner2 } = await Promise.resolve().then(() => (init_progress(), progress_exports));
|
|
4948
|
-
const spinner = createSpinner2("OMC \uD50C\uB7EC\uADF8\uC778 \uB4F1\uB85D \uC911...");
|
|
4926
|
+
const useYolo = launch === "yolo";
|
|
4927
|
+
if (useYolo && !yoloAlreadyAliased) {
|
|
4949
4928
|
try {
|
|
4950
|
-
const {
|
|
4951
|
-
const
|
|
4952
|
-
|
|
4953
|
-
|
|
4954
|
-
|
|
4955
|
-
|
|
4956
|
-
|
|
4957
|
-
|
|
4958
|
-
|
|
4959
|
-
|
|
4960
|
-
|
|
4961
|
-
hint(
|
|
4929
|
+
const { getYoloAliasLine: getYoloAliasLine2 } = await Promise.resolve().then(() => (init_platform(), platform_exports));
|
|
4930
|
+
const aliasLine = getYoloAliasLine2();
|
|
4931
|
+
const rcContent = await fs15.readFile(shellRc, "utf8").catch(() => "");
|
|
4932
|
+
if (!rcContent.includes("claude-yolo")) {
|
|
4933
|
+
await fs15.ensureDir(join11(shellRc, ".."));
|
|
4934
|
+
await fs15.appendFile(shellRc, `
|
|
4935
|
+
# PAI \u2014 claude-YOLO mode
|
|
4936
|
+
${aliasLine}
|
|
4937
|
+
`);
|
|
4938
|
+
await sleep2(300);
|
|
4939
|
+
success("claude-yolo alias \uC124\uC815 \uC644\uB8CC");
|
|
4940
|
+
hint("\uC0C8 \uD130\uBBF8\uB110\uC5D0\uC11C claude-yolo \uB85C \uC2E4\uD589 \uAC00\uB2A5");
|
|
4962
4941
|
}
|
|
4963
|
-
|
|
4964
|
-
} catch (err) {
|
|
4965
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
4966
|
-
spinner.warn(`OMC \uD50C\uB7EC\uADF8\uC778 \uB4F1\uB85D \uC2E4\uD328 \u2014 ${msg}`);
|
|
4967
|
-
hint("Claude Code \uAE30\uB3D9 \uD6C4 \uC9C1\uC811 \uB4F1\uB85D\uD558\uC138\uC694:");
|
|
4968
|
-
hint(" /plugin install Yeachan-Heo/oh-my-claudecode");
|
|
4942
|
+
} catch {
|
|
4969
4943
|
}
|
|
4970
4944
|
}
|
|
4971
|
-
const cmd =
|
|
4945
|
+
const cmd = useYolo ? "claude --dangerously-skip-permissions" : "claude";
|
|
4972
4946
|
console.log("");
|
|
4973
4947
|
if (!isCurrentDir) {
|
|
4974
4948
|
console.log(colors.dim(` \u2192 cd ${projectName}`));
|