faf-cli 3.4.0 ā 3.4.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.
|
@@ -44,16 +44,13 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
44
44
|
return result;
|
|
45
45
|
};
|
|
46
46
|
})();
|
|
47
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
48
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
49
|
-
};
|
|
50
47
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
51
48
|
exports.pluginInstall = pluginInstall;
|
|
52
49
|
exports.registerPluginInstallCommand = registerPluginInstallCommand;
|
|
53
50
|
const child_process_1 = require("child_process");
|
|
54
51
|
const fs = __importStar(require("fs"));
|
|
55
52
|
const path = __importStar(require("path"));
|
|
56
|
-
const
|
|
53
|
+
const colors_1 = require("../fix-once/colors");
|
|
57
54
|
const CLAUDE_PLUGINS_DIR = path.join(process.env.HOME || '', '.claude/plugins/marketplaces');
|
|
58
55
|
function parseRepoInput(input) {
|
|
59
56
|
// Handle: owner/repo
|
|
@@ -75,34 +72,34 @@ function parseRepoInput(input) {
|
|
|
75
72
|
}
|
|
76
73
|
async function pluginInstall(options) {
|
|
77
74
|
const { repo, force } = options;
|
|
78
|
-
console.log(
|
|
79
|
-
console.log(
|
|
75
|
+
console.log(colors_1.chalk.cyan('\nš FAF Plugin Install'));
|
|
76
|
+
console.log(colors_1.chalk.gray(' Workaround for Claude Code SSH bug\n'));
|
|
80
77
|
// Parse repo input
|
|
81
78
|
const parsed = parseRepoInput(repo);
|
|
82
79
|
if (!parsed) {
|
|
83
|
-
console.error(
|
|
84
|
-
console.log(
|
|
85
|
-
console.log(
|
|
86
|
-
console.log(
|
|
87
|
-
console.log(
|
|
80
|
+
console.error(colors_1.chalk.red('ā Invalid repo format.'));
|
|
81
|
+
console.log(colors_1.chalk.gray(' Accepted formats:'));
|
|
82
|
+
console.log(colors_1.chalk.gray(' - owner/repo'));
|
|
83
|
+
console.log(colors_1.chalk.gray(' - https://github.com/owner/repo'));
|
|
84
|
+
console.log(colors_1.chalk.gray(' - https://github.com/owner/repo.git'));
|
|
88
85
|
process.exit(1);
|
|
89
86
|
}
|
|
90
87
|
const { owner, repo: repoName } = parsed;
|
|
91
88
|
const installDir = path.join(CLAUDE_PLUGINS_DIR, `${owner}-${repoName}`);
|
|
92
89
|
// Use HTTPS (the fix!)
|
|
93
90
|
const httpsUrl = `https://github.com/${owner}/${repoName}.git`;
|
|
94
|
-
console.log(
|
|
95
|
-
console.log(
|
|
96
|
-
console.log(
|
|
91
|
+
console.log(colors_1.chalk.white(` Repo: ${owner}/${repoName}`));
|
|
92
|
+
console.log(colors_1.chalk.white(` URL: ${httpsUrl}`));
|
|
93
|
+
console.log(colors_1.chalk.white(` Into: ${installDir}\n`));
|
|
97
94
|
// Check if already installed
|
|
98
95
|
if (fs.existsSync(installDir)) {
|
|
99
96
|
if (force) {
|
|
100
|
-
console.log(
|
|
97
|
+
console.log(colors_1.chalk.yellow('ā ļø Removing existing installation...'));
|
|
101
98
|
fs.rmSync(installDir, { recursive: true, force: true });
|
|
102
99
|
}
|
|
103
100
|
else {
|
|
104
|
-
console.log(
|
|
105
|
-
console.log(
|
|
101
|
+
console.log(colors_1.chalk.yellow('ā ļø Already installed.'));
|
|
102
|
+
console.log(colors_1.chalk.gray(' Use --force to reinstall.\n'));
|
|
106
103
|
// Verify structure
|
|
107
104
|
verifyPluginStructure(installDir);
|
|
108
105
|
return;
|
|
@@ -113,7 +110,7 @@ async function pluginInstall(options) {
|
|
|
113
110
|
fs.mkdirSync(CLAUDE_PLUGINS_DIR, { recursive: true });
|
|
114
111
|
}
|
|
115
112
|
// Clone using HTTPS (the fix!)
|
|
116
|
-
console.log(
|
|
113
|
+
console.log(colors_1.chalk.cyan('š„ Cloning via HTTPS...'));
|
|
117
114
|
try {
|
|
118
115
|
const startTime = Date.now();
|
|
119
116
|
(0, child_process_1.execSync)(`git clone ${httpsUrl} "${installDir}"`, {
|
|
@@ -121,20 +118,20 @@ async function pluginInstall(options) {
|
|
|
121
118
|
timeout: 60000, // 60 second timeout
|
|
122
119
|
});
|
|
123
120
|
const elapsed = ((Date.now() - startTime) / 1000).toFixed(2);
|
|
124
|
-
console.log(
|
|
121
|
+
console.log(colors_1.chalk.green(`ā Cloned in ${elapsed}s\n`));
|
|
125
122
|
}
|
|
126
123
|
catch (error) {
|
|
127
|
-
console.error(
|
|
128
|
-
console.error(
|
|
124
|
+
console.error(colors_1.chalk.red('ā Clone failed.'));
|
|
125
|
+
console.error(colors_1.chalk.gray(` ${error.message}`));
|
|
129
126
|
process.exit(1);
|
|
130
127
|
}
|
|
131
128
|
// Verify plugin structure
|
|
132
129
|
verifyPluginStructure(installDir);
|
|
133
|
-
console.log(
|
|
134
|
-
console.log(
|
|
130
|
+
console.log(colors_1.chalk.green('\nā Plugin installed successfully!'));
|
|
131
|
+
console.log(colors_1.chalk.gray(' Restart Claude Code to load the plugin.\n'));
|
|
135
132
|
}
|
|
136
133
|
function verifyPluginStructure(installDir) {
|
|
137
|
-
console.log(
|
|
134
|
+
console.log(colors_1.chalk.cyan('š Verifying plugin structure...'));
|
|
138
135
|
const checks = [
|
|
139
136
|
{ path: '.claude-plugin/plugin.json', name: 'plugin.json', required: true },
|
|
140
137
|
{ path: 'commands', name: 'commands/', required: false },
|
|
@@ -152,25 +149,25 @@ function verifyPluginStructure(installDir) {
|
|
|
152
149
|
hasSkills = exists;
|
|
153
150
|
}
|
|
154
151
|
if (exists) {
|
|
155
|
-
console.log(
|
|
152
|
+
console.log(colors_1.chalk.green(` ā ${check.name}`));
|
|
156
153
|
}
|
|
157
154
|
else if (check.required) {
|
|
158
|
-
console.log(
|
|
155
|
+
console.log(colors_1.chalk.red(` ā ${check.name} (MISSING - required)`));
|
|
159
156
|
}
|
|
160
157
|
else {
|
|
161
|
-
console.log(
|
|
158
|
+
console.log(colors_1.chalk.gray(` - ${check.name} (optional)`));
|
|
162
159
|
}
|
|
163
160
|
}
|
|
164
161
|
// Count commands and skills
|
|
165
162
|
if (hasCommands) {
|
|
166
163
|
const commands = fs.readdirSync(path.join(installDir, 'commands'))
|
|
167
164
|
.filter(f => f.endsWith('.md'));
|
|
168
|
-
console.log(
|
|
165
|
+
console.log(colors_1.chalk.green(` ā ${commands.length} commands found`));
|
|
169
166
|
}
|
|
170
167
|
if (hasSkills) {
|
|
171
168
|
const skills = fs.readdirSync(path.join(installDir, 'skills'))
|
|
172
169
|
.filter(f => fs.statSync(path.join(installDir, 'skills', f)).isDirectory());
|
|
173
|
-
console.log(
|
|
170
|
+
console.log(colors_1.chalk.green(` ā ${skills.length} skills found`));
|
|
174
171
|
}
|
|
175
172
|
}
|
|
176
173
|
// CLI entry point
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-install.js","sourceRoot":"","sources":["../../src/commands/plugin-install.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG
|
|
1
|
+
{"version":3,"file":"plugin-install.js","sourceRoot":"","sources":["../../src/commands/plugin-install.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "faf-cli",
|
|
3
|
-
"version": "3.4.
|
|
3
|
+
"version": "3.4.1",
|
|
4
4
|
"description": "Anthropic-Approved codebase that powers claude-faf-mcp ⢠Persistent project context, on-demand ⢠Format-driven CLI ⢠Open Source Universal Standard ⢠MIT License",
|
|
5
5
|
"icon": "https://faf.one/orange-smiley.svg",
|
|
6
6
|
"logo": "https://faf.one/orange-smiley.svg",
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"version:truth": "node scripts/version-check.js",
|
|
62
62
|
"prepublish:check": "npm run version:truth",
|
|
63
63
|
"precommit": "npm run version:check",
|
|
64
|
-
"postinstall": "echo '\nšļø Welcome to FAF!\n\nā” Getting started:\n 1. Run \"faf init\" in your project\n 2. Get AI-ready context in <50ms\n 3. Share .faf files with Claude/Gemini/OpenAI-Codex\n\nš Docs: faf.one/docs\nšØ Want TURBO? faf.one/pricing\n\nāļø FREE FOREVER ⢠10,000+ developers ⢠Podium Edition\n'"
|
|
64
|
+
"postinstall": "echo '\nšļø Welcome to FAF!\n\nā” Getting started:\n 1. Run \"faf init\" in your project\n 2. Get AI-ready context in <50ms\n 3. Share .faf files with Claude/Gemini/OpenAI-Codex\n\nš Docs: faf.one/docs\nšØ Want TURBO? faf.one/pricing\n\nā Love it? Star us: github.com/Wolfe-Jam/faf-cli\nš¬ Questions? github.com/Wolfe-Jam/faf-cli/discussions\n\nāļø FREE FOREVER ⢠10,000+ developers ⢠Podium Edition\n'"
|
|
65
65
|
},
|
|
66
66
|
"keywords": [
|
|
67
67
|
"faf",
|