@fyow/copilot-everything 1.0.0 → 1.0.2
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/package.json +2 -1
- package/scripts/hooks/evaluate-session.js +78 -0
- package/scripts/hooks/post-tool-use.ps1 +55 -0
- package/scripts/hooks/post-tool-use.sh +68 -0
- package/scripts/hooks/pre-compact.js +48 -0
- package/scripts/hooks/session-end.js +82 -0
- package/scripts/hooks/session-start.js +61 -0
- package/scripts/hooks/suggest-compact.js +60 -0
- package/scripts/lib/package-manager.js +390 -0
- package/scripts/lib/utils.js +368 -0
- package/scripts/migrate-to-copilot.js +247 -0
- package/scripts/setup-package-manager.js +206 -0
- package/src/commands/init.js +11 -0
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Package Manager Setup Script
|
|
4
|
+
*
|
|
5
|
+
* Interactive script to configure preferred package manager.
|
|
6
|
+
* Can be run directly or via the /setup-pm command.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* node scripts/setup-package-manager.js [pm-name]
|
|
10
|
+
* node scripts/setup-package-manager.js --detect
|
|
11
|
+
* node scripts/setup-package-manager.js --global pnpm
|
|
12
|
+
* node scripts/setup-package-manager.js --project bun
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
const {
|
|
16
|
+
PACKAGE_MANAGERS,
|
|
17
|
+
getPackageManager,
|
|
18
|
+
setPreferredPackageManager,
|
|
19
|
+
setProjectPackageManager,
|
|
20
|
+
getAvailablePackageManagers,
|
|
21
|
+
detectFromLockFile,
|
|
22
|
+
detectFromPackageJson,
|
|
23
|
+
getSelectionPrompt
|
|
24
|
+
} = require('./lib/package-manager');
|
|
25
|
+
const { log } = require('./lib/utils');
|
|
26
|
+
|
|
27
|
+
function showHelp() {
|
|
28
|
+
console.log(`
|
|
29
|
+
Package Manager Setup for Claude Code
|
|
30
|
+
|
|
31
|
+
Usage:
|
|
32
|
+
node scripts/setup-package-manager.js [options] [package-manager]
|
|
33
|
+
|
|
34
|
+
Options:
|
|
35
|
+
--detect Detect and show current package manager
|
|
36
|
+
--global <pm> Set global preference (saves to ~/.claude/package-manager.json)
|
|
37
|
+
--project <pm> Set project preference (saves to .claude/package-manager.json)
|
|
38
|
+
--list List available package managers
|
|
39
|
+
--help Show this help message
|
|
40
|
+
|
|
41
|
+
Package Managers:
|
|
42
|
+
npm Node Package Manager (default with Node.js)
|
|
43
|
+
pnpm Fast, disk space efficient package manager
|
|
44
|
+
yarn Classic Yarn package manager
|
|
45
|
+
bun All-in-one JavaScript runtime & toolkit
|
|
46
|
+
|
|
47
|
+
Examples:
|
|
48
|
+
# Detect current package manager
|
|
49
|
+
node scripts/setup-package-manager.js --detect
|
|
50
|
+
|
|
51
|
+
# Set pnpm as global preference
|
|
52
|
+
node scripts/setup-package-manager.js --global pnpm
|
|
53
|
+
|
|
54
|
+
# Set bun for current project
|
|
55
|
+
node scripts/setup-package-manager.js --project bun
|
|
56
|
+
|
|
57
|
+
# List available package managers
|
|
58
|
+
node scripts/setup-package-manager.js --list
|
|
59
|
+
`);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function detectAndShow() {
|
|
63
|
+
const pm = getPackageManager();
|
|
64
|
+
const available = getAvailablePackageManagers();
|
|
65
|
+
const fromLock = detectFromLockFile();
|
|
66
|
+
const fromPkg = detectFromPackageJson();
|
|
67
|
+
|
|
68
|
+
console.log('\n=== Package Manager Detection ===\n');
|
|
69
|
+
|
|
70
|
+
console.log('Current selection:');
|
|
71
|
+
console.log(` Package Manager: ${pm.name}`);
|
|
72
|
+
console.log(` Source: ${pm.source}`);
|
|
73
|
+
console.log('');
|
|
74
|
+
|
|
75
|
+
console.log('Detection results:');
|
|
76
|
+
console.log(` From package.json: ${fromPkg || 'not specified'}`);
|
|
77
|
+
console.log(` From lock file: ${fromLock || 'not found'}`);
|
|
78
|
+
console.log(` Environment var: ${process.env.CLAUDE_PACKAGE_MANAGER || 'not set'}`);
|
|
79
|
+
console.log('');
|
|
80
|
+
|
|
81
|
+
console.log('Available package managers:');
|
|
82
|
+
for (const pmName of Object.keys(PACKAGE_MANAGERS)) {
|
|
83
|
+
const installed = available.includes(pmName);
|
|
84
|
+
const indicator = installed ? '✓' : '✗';
|
|
85
|
+
const current = pmName === pm.name ? ' (current)' : '';
|
|
86
|
+
console.log(` ${indicator} ${pmName}${current}`);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
console.log('');
|
|
90
|
+
console.log('Commands:');
|
|
91
|
+
console.log(` Install: ${pm.config.installCmd}`);
|
|
92
|
+
console.log(` Run script: ${pm.config.runCmd} <script>`);
|
|
93
|
+
console.log(` Execute binary: ${pm.config.execCmd} <binary>`);
|
|
94
|
+
console.log('');
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
function listAvailable() {
|
|
98
|
+
const available = getAvailablePackageManagers();
|
|
99
|
+
const pm = getPackageManager();
|
|
100
|
+
|
|
101
|
+
console.log('\nAvailable Package Managers:\n');
|
|
102
|
+
|
|
103
|
+
for (const pmName of Object.keys(PACKAGE_MANAGERS)) {
|
|
104
|
+
const config = PACKAGE_MANAGERS[pmName];
|
|
105
|
+
const installed = available.includes(pmName);
|
|
106
|
+
const current = pmName === pm.name ? ' (current)' : '';
|
|
107
|
+
|
|
108
|
+
console.log(`${pmName}${current}`);
|
|
109
|
+
console.log(` Installed: ${installed ? 'Yes' : 'No'}`);
|
|
110
|
+
console.log(` Lock file: ${config.lockFile}`);
|
|
111
|
+
console.log(` Install: ${config.installCmd}`);
|
|
112
|
+
console.log(` Run: ${config.runCmd}`);
|
|
113
|
+
console.log('');
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
function setGlobal(pmName) {
|
|
118
|
+
if (!PACKAGE_MANAGERS[pmName]) {
|
|
119
|
+
console.error(`Error: Unknown package manager "${pmName}"`);
|
|
120
|
+
console.error(`Available: ${Object.keys(PACKAGE_MANAGERS).join(', ')}`);
|
|
121
|
+
process.exit(1);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
const available = getAvailablePackageManagers();
|
|
125
|
+
if (!available.includes(pmName)) {
|
|
126
|
+
console.warn(`Warning: ${pmName} is not installed on your system`);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
try {
|
|
130
|
+
setPreferredPackageManager(pmName);
|
|
131
|
+
console.log(`\n✓ Global preference set to: ${pmName}`);
|
|
132
|
+
console.log(' Saved to: ~/.claude/package-manager.json');
|
|
133
|
+
console.log('');
|
|
134
|
+
} catch (err) {
|
|
135
|
+
console.error(`Error: ${err.message}`);
|
|
136
|
+
process.exit(1);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
function setProject(pmName) {
|
|
141
|
+
if (!PACKAGE_MANAGERS[pmName]) {
|
|
142
|
+
console.error(`Error: Unknown package manager "${pmName}"`);
|
|
143
|
+
console.error(`Available: ${Object.keys(PACKAGE_MANAGERS).join(', ')}`);
|
|
144
|
+
process.exit(1);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
try {
|
|
148
|
+
setProjectPackageManager(pmName);
|
|
149
|
+
console.log(`\n✓ Project preference set to: ${pmName}`);
|
|
150
|
+
console.log(' Saved to: .claude/package-manager.json');
|
|
151
|
+
console.log('');
|
|
152
|
+
} catch (err) {
|
|
153
|
+
console.error(`Error: ${err.message}`);
|
|
154
|
+
process.exit(1);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// Main
|
|
159
|
+
const args = process.argv.slice(2);
|
|
160
|
+
|
|
161
|
+
if (args.length === 0 || args.includes('--help') || args.includes('-h')) {
|
|
162
|
+
showHelp();
|
|
163
|
+
process.exit(0);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
if (args.includes('--detect')) {
|
|
167
|
+
detectAndShow();
|
|
168
|
+
process.exit(0);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
if (args.includes('--list')) {
|
|
172
|
+
listAvailable();
|
|
173
|
+
process.exit(0);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
const globalIdx = args.indexOf('--global');
|
|
177
|
+
if (globalIdx !== -1) {
|
|
178
|
+
const pmName = args[globalIdx + 1];
|
|
179
|
+
if (!pmName) {
|
|
180
|
+
console.error('Error: --global requires a package manager name');
|
|
181
|
+
process.exit(1);
|
|
182
|
+
}
|
|
183
|
+
setGlobal(pmName);
|
|
184
|
+
process.exit(0);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
const projectIdx = args.indexOf('--project');
|
|
188
|
+
if (projectIdx !== -1) {
|
|
189
|
+
const pmName = args[projectIdx + 1];
|
|
190
|
+
if (!pmName) {
|
|
191
|
+
console.error('Error: --project requires a package manager name');
|
|
192
|
+
process.exit(1);
|
|
193
|
+
}
|
|
194
|
+
setProject(pmName);
|
|
195
|
+
process.exit(0);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
// If just a package manager name is provided, set it globally
|
|
199
|
+
const pmName = args[0];
|
|
200
|
+
if (PACKAGE_MANAGERS[pmName]) {
|
|
201
|
+
setGlobal(pmName);
|
|
202
|
+
} else {
|
|
203
|
+
console.error(`Error: Unknown option or package manager "${pmName}"`);
|
|
204
|
+
showHelp();
|
|
205
|
+
process.exit(1);
|
|
206
|
+
}
|
package/src/commands/init.js
CHANGED
|
@@ -169,6 +169,17 @@ function init(flags = {}) {
|
|
|
169
169
|
totalSkipped += copilotResult.skipped;
|
|
170
170
|
totalErrors.push(...copilotResult.errors);
|
|
171
171
|
|
|
172
|
+
// Scripts (hook implementations)
|
|
173
|
+
if (!skipHooks) {
|
|
174
|
+
const scriptsSrc = path.join(PACKAGE_ROOT, 'scripts');
|
|
175
|
+
const scriptsDest = path.join(targetDir, 'scripts');
|
|
176
|
+
const scriptsResult = copyDir(scriptsSrc, scriptsDest, options);
|
|
177
|
+
console.log(` ✅ Scripts: ${scriptsResult.copied} copied, ${scriptsResult.skipped} skipped`);
|
|
178
|
+
totalCopied += scriptsResult.copied;
|
|
179
|
+
totalSkipped += scriptsResult.skipped;
|
|
180
|
+
totalErrors.push(...scriptsResult.errors);
|
|
181
|
+
}
|
|
182
|
+
|
|
172
183
|
// AGENTS.md at root
|
|
173
184
|
const agentsMdSrc = path.join(PACKAGE_ROOT, 'AGENTS.md');
|
|
174
185
|
const agentsMdDest = path.join(targetDir, 'AGENTS.md');
|