@claudetools/cli 0.13.13 → 0.13.15
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/__tests__/factories.d.ts +173 -0
- package/dist/__tests__/factories.d.ts.map +1 -0
- package/dist/__tests__/factories.js +150 -0
- package/dist/__tests__/factories.js.map +1 -0
- package/dist/__tests__/helpers.d.ts +36 -0
- package/dist/__tests__/helpers.d.ts.map +1 -0
- package/dist/__tests__/helpers.js +52 -0
- package/dist/__tests__/helpers.js.map +1 -0
- package/dist/analytics/index.d.ts +14 -0
- package/dist/analytics/index.d.ts.map +1 -0
- package/dist/analytics/index.js +259 -0
- package/dist/analytics/index.js.map +1 -0
- package/dist/analytics/session.d.ts +17 -0
- package/dist/analytics/session.d.ts.map +1 -0
- package/dist/analytics/session.js +130 -0
- package/dist/analytics/session.js.map +1 -0
- package/dist/analytics/token-tracker.d.ts +48 -0
- package/dist/analytics/token-tracker.d.ts.map +1 -0
- package/dist/analytics/token-tracker.js +269 -0
- package/dist/analytics/token-tracker.js.map +1 -0
- package/dist/analytics/tracker.d.ts +33 -0
- package/dist/analytics/tracker.d.ts.map +1 -0
- package/dist/analytics/tracker.js +210 -0
- package/dist/analytics/tracker.js.map +1 -0
- package/dist/api-keys/index.d.ts +15 -0
- package/dist/api-keys/index.d.ts.map +1 -0
- package/dist/api-keys/index.js +228 -0
- package/dist/api-keys/index.js.map +1 -0
- package/dist/auth/config.d.ts +15 -0
- package/dist/auth/config.d.ts.map +1 -0
- package/dist/auth/config.js +67 -0
- package/dist/auth/config.js.map +1 -0
- package/dist/auth/index.d.ts +8 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +299 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/keychain.d.ts +21 -0
- package/dist/auth/keychain.d.ts.map +1 -0
- package/dist/auth/keychain.js +256 -0
- package/dist/auth/keychain.js.map +1 -0
- package/dist/billing/index.d.ts +7 -0
- package/dist/billing/index.d.ts.map +1 -0
- package/dist/billing/index.js +233 -0
- package/dist/billing/index.js.map +1 -0
- package/dist/cli.js +291 -43
- package/dist/cli.js.map +1 -1
- package/dist/commands/hook.d.ts +12 -0
- package/dist/commands/hook.d.ts.map +1 -0
- package/dist/commands/hook.js +190 -0
- package/dist/commands/hook.js.map +1 -0
- package/dist/commands/keys.d.ts +4 -0
- package/dist/commands/keys.d.ts.map +1 -0
- package/dist/commands/keys.js +43 -0
- package/dist/commands/keys.js.map +1 -0
- package/dist/commands/mcp.d.ts +4 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +43 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/project.d.ts +4 -0
- package/dist/commands/project.d.ts.map +1 -0
- package/dist/commands/project.js +68 -0
- package/dist/commands/project.js.map +1 -0
- package/dist/commands/skill.d.ts +4 -0
- package/dist/commands/skill.d.ts.map +1 -0
- package/dist/commands/skill.js +37 -0
- package/dist/commands/skill.js.map +1 -0
- package/dist/commands/stacks.d.ts +4 -0
- package/dist/commands/stacks.d.ts.map +1 -0
- package/dist/commands/stacks.js +103 -0
- package/dist/commands/stacks.js.map +1 -0
- package/dist/commands/stats.d.ts +4 -0
- package/dist/commands/stats.d.ts.map +1 -0
- package/dist/commands/stats.js +6 -0
- package/dist/commands/stats.js.map +1 -0
- package/dist/commands/sync.d.ts +4 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +60 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/update.d.ts +4 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +63 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/daemon/client.d.ts +107 -0
- package/dist/daemon/client.d.ts.map +1 -0
- package/dist/daemon/client.js +250 -0
- package/dist/daemon/client.js.map +1 -0
- package/dist/daemon/health.d.ts +38 -0
- package/dist/daemon/health.d.ts.map +1 -0
- package/dist/daemon/health.js +212 -0
- package/dist/daemon/health.js.map +1 -0
- package/dist/daemon/index.d.ts +34 -0
- package/dist/daemon/index.d.ts.map +1 -0
- package/dist/daemon/index.js +197 -0
- package/dist/daemon/index.js.map +1 -0
- package/dist/daemon/protocol.d.ts +144 -0
- package/dist/daemon/protocol.d.ts.map +1 -0
- package/dist/daemon/protocol.js +5 -0
- package/dist/daemon/protocol.js.map +1 -0
- package/dist/gamification/index.d.ts +13 -0
- package/dist/gamification/index.d.ts.map +1 -0
- package/dist/gamification/index.js +120 -0
- package/dist/gamification/index.js.map +1 -0
- package/dist/gamification/types.d.ts +34 -0
- package/dist/gamification/types.d.ts.map +1 -0
- package/dist/gamification/types.js +5 -0
- package/dist/gamification/types.js.map +1 -0
- package/dist/hooks/index.d.ts +65 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +403 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/lib/api.d.ts +29 -0
- package/dist/lib/api.d.ts.map +1 -0
- package/dist/lib/api.js +213 -0
- package/dist/lib/api.js.map +1 -0
- package/dist/lib/browser.d.ts +6 -0
- package/dist/lib/browser.d.ts.map +1 -0
- package/dist/lib/browser.js +14 -0
- package/dist/lib/browser.js.map +1 -0
- package/dist/lib/channel-config.d.ts +10 -0
- package/dist/lib/channel-config.d.ts.map +1 -0
- package/dist/lib/channel-config.js +48 -0
- package/dist/lib/channel-config.js.map +1 -0
- package/dist/lib/command-runner.d.ts +16 -0
- package/dist/lib/command-runner.d.ts.map +1 -0
- package/dist/lib/command-runner.js +59 -0
- package/dist/lib/command-runner.js.map +1 -0
- package/dist/lib/command-utils.d.ts +22 -0
- package/dist/lib/command-utils.d.ts.map +1 -0
- package/dist/lib/command-utils.js +88 -0
- package/dist/lib/command-utils.js.map +1 -0
- package/dist/lib/error-handler.d.ts +13 -0
- package/dist/lib/error-handler.d.ts.map +1 -0
- package/dist/lib/error-handler.js +70 -0
- package/dist/lib/error-handler.js.map +1 -0
- package/dist/lib/errors.d.ts +35 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +70 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/exit.d.ts +10 -0
- package/dist/lib/exit.d.ts.map +1 -0
- package/dist/lib/exit.js +21 -0
- package/dist/lib/exit.js.map +1 -0
- package/dist/lib/formatters.d.ts +65 -0
- package/dist/lib/formatters.d.ts.map +1 -0
- package/dist/lib/formatters.js +180 -0
- package/dist/lib/formatters.js.map +1 -0
- package/dist/lib/hybrid-data.d.ts +47 -0
- package/dist/lib/hybrid-data.d.ts.map +1 -0
- package/dist/lib/hybrid-data.js +326 -0
- package/dist/lib/hybrid-data.js.map +1 -0
- package/dist/lib/local-store.d.ts +113 -0
- package/dist/lib/local-store.d.ts.map +1 -0
- package/dist/lib/local-store.js +220 -0
- package/dist/lib/local-store.js.map +1 -0
- package/dist/lib/machine-id.d.ts +8 -0
- package/dist/lib/machine-id.d.ts.map +1 -0
- package/dist/lib/machine-id.js +39 -0
- package/dist/lib/machine-id.js.map +1 -0
- package/dist/lib/network.d.ts +15 -0
- package/dist/lib/network.d.ts.map +1 -0
- package/dist/lib/network.js +46 -0
- package/dist/lib/network.js.map +1 -0
- package/dist/lib/theme.d.ts +77 -0
- package/dist/lib/theme.d.ts.map +1 -0
- package/dist/lib/theme.js +137 -0
- package/dist/lib/theme.js.map +1 -0
- package/dist/lib/tool-availability.d.ts +13 -0
- package/dist/lib/tool-availability.d.ts.map +1 -0
- package/dist/lib/tool-availability.js +48 -0
- package/dist/lib/tool-availability.js.map +1 -0
- package/dist/lib/update-checker.d.ts +21 -0
- package/dist/lib/update-checker.d.ts.map +1 -0
- package/dist/lib/update-checker.js +110 -0
- package/dist/lib/update-checker.js.map +1 -0
- package/dist/lib/validation.d.ts +30 -0
- package/dist/lib/validation.d.ts.map +1 -0
- package/dist/lib/validation.js +82 -0
- package/dist/lib/validation.js.map +1 -0
- package/dist/lib/validators.d.ts +18 -0
- package/dist/lib/validators.d.ts.map +1 -0
- package/dist/lib/validators.js +30 -0
- package/dist/lib/validators.js.map +1 -0
- package/dist/marketplace/api.d.ts +24 -0
- package/dist/marketplace/api.d.ts.map +1 -0
- package/dist/marketplace/api.js +92 -0
- package/dist/marketplace/api.js.map +1 -0
- package/dist/marketplace/index.d.ts +13 -0
- package/dist/marketplace/index.d.ts.map +1 -0
- package/dist/marketplace/index.js +155 -0
- package/dist/marketplace/index.js.map +1 -0
- package/dist/marketplace/installer.d.ts +18 -0
- package/dist/marketplace/installer.d.ts.map +1 -0
- package/dist/marketplace/installer.js +184 -0
- package/dist/marketplace/installer.js.map +1 -0
- package/dist/mcp/api.d.ts +93 -0
- package/dist/mcp/api.d.ts.map +1 -0
- package/dist/mcp/api.js +106 -0
- package/dist/mcp/api.js.map +1 -0
- package/dist/mcp/config.d.ts +72 -0
- package/dist/mcp/config.d.ts.map +1 -0
- package/dist/mcp/config.js +156 -0
- package/dist/mcp/config.js.map +1 -0
- package/dist/mcp/index.d.ts +54 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +381 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/prompt.clean.d.ts +25 -0
- package/dist/mcp/prompt.clean.d.ts.map +1 -0
- package/dist/mcp/prompt.clean.js +206 -0
- package/dist/mcp/prompt.clean.js.map +1 -0
- package/dist/mcp/prompt.d.ts +52 -0
- package/dist/mcp/prompt.d.ts.map +1 -0
- package/dist/mcp/prompt.js +210 -0
- package/dist/mcp/prompt.js.map +1 -0
- package/dist/mcp/secrets.clean.d.ts +18 -0
- package/dist/mcp/secrets.clean.d.ts.map +1 -0
- package/dist/mcp/secrets.clean.js +357 -0
- package/dist/mcp/secrets.clean.js.map +1 -0
- package/dist/mcp/secrets.d.ts +46 -0
- package/dist/mcp/secrets.d.ts.map +1 -0
- package/dist/mcp/secrets.js +339 -0
- package/dist/mcp/secrets.js.map +1 -0
- package/dist/memory/index.d.ts +14 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +98 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/onboard/agents-md-builder.d.ts.map +1 -1
- package/dist/onboard/agents-md-builder.js +45 -0
- package/dist/onboard/agents-md-builder.js.map +1 -1
- package/dist/onboard/claude-inference.d.ts.map +1 -1
- package/dist/onboard/claude-inference.js +15 -4
- package/dist/onboard/claude-inference.js.map +1 -1
- package/dist/onboard/context7-fetcher.d.ts +1 -1
- package/dist/onboard/context7-fetcher.d.ts.map +1 -1
- package/dist/onboard/context7-fetcher.js +50 -16
- package/dist/onboard/context7-fetcher.js.map +1 -1
- package/dist/onboard/docs-builder.d.ts.map +1 -1
- package/dist/onboard/docs-builder.js +523 -50
- package/dist/onboard/docs-builder.js.map +1 -1
- package/dist/onboard/index.d.ts.map +1 -1
- package/dist/onboard/index.js +74 -25
- package/dist/onboard/index.js.map +1 -1
- package/dist/onboard/stack-detector.d.ts.map +1 -1
- package/dist/onboard/stack-detector.js +5 -55
- package/dist/onboard/stack-detector.js.map +1 -1
- package/dist/project/constants.d.ts +21 -0
- package/dist/project/constants.d.ts.map +1 -0
- package/dist/project/constants.js +21 -0
- package/dist/project/constants.js.map +1 -0
- package/dist/project/format.d.ts +16 -0
- package/dist/project/format.d.ts.map +1 -0
- package/dist/project/format.js +40 -0
- package/dist/project/format.js.map +1 -0
- package/dist/project/git.d.ts +28 -0
- package/dist/project/git.d.ts.map +1 -0
- package/dist/project/git.js +93 -0
- package/dist/project/git.js.map +1 -0
- package/dist/project/index.d.ts +36 -0
- package/dist/project/index.d.ts.map +1 -0
- package/dist/project/index.js +272 -0
- package/dist/project/index.js.map +1 -0
- package/dist/project/mapper.d.ts +27 -0
- package/dist/project/mapper.d.ts.map +1 -0
- package/dist/project/mapper.js +64 -0
- package/dist/project/mapper.js.map +1 -0
- package/dist/project/storage.d.ts +71 -0
- package/dist/project/storage.d.ts.map +1 -0
- package/dist/project/storage.js +274 -0
- package/dist/project/storage.js.map +1 -0
- package/dist/project/sync-bridge.d.ts +33 -0
- package/dist/project/sync-bridge.d.ts.map +1 -0
- package/dist/project/sync-bridge.js +155 -0
- package/dist/project/sync-bridge.js.map +1 -0
- package/dist/project/types.d.ts +107 -0
- package/dist/project/types.d.ts.map +1 -0
- package/dist/project/types.js +77 -0
- package/dist/project/types.js.map +1 -0
- package/dist/publish/index.d.ts +4 -0
- package/dist/publish/index.d.ts.map +1 -0
- package/dist/publish/index.js +92 -0
- package/dist/publish/index.js.map +1 -0
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +29 -10
- package/dist/setup.js.map +1 -1
- package/dist/skills/index.d.ts +51 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +509 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/stacks/check.d.ts +2 -0
- package/dist/stacks/check.d.ts.map +1 -0
- package/dist/stacks/check.js +144 -0
- package/dist/stacks/check.js.map +1 -0
- package/dist/stacks/diff.d.ts +11 -0
- package/dist/stacks/diff.d.ts.map +1 -0
- package/dist/stacks/diff.js +123 -0
- package/dist/stacks/diff.js.map +1 -0
- package/dist/stacks/index.d.ts +17 -0
- package/dist/stacks/index.d.ts.map +1 -0
- package/dist/stacks/index.js +525 -0
- package/dist/stacks/index.js.map +1 -0
- package/dist/stacks/index.refactored.d.ts.map +1 -0
- package/dist/stacks/index.refactored.js.map +1 -0
- package/dist/stacks/io.d.ts +11 -0
- package/dist/stacks/io.d.ts.map +1 -0
- package/dist/stacks/io.js +179 -0
- package/dist/stacks/io.js.map +1 -0
- package/dist/stacks/rollback.d.ts +5 -0
- package/dist/stacks/rollback.d.ts.map +1 -0
- package/dist/stacks/rollback.js +162 -0
- package/dist/stacks/rollback.js.map +1 -0
- package/dist/stacks/types.d.ts +70 -0
- package/dist/stacks/types.d.ts.map +1 -0
- package/dist/stacks/types.js +6 -0
- package/dist/stacks/types.js.map +1 -0
- package/dist/stacks/utils.d.ts +9 -0
- package/dist/stacks/utils.d.ts.map +1 -0
- package/dist/stacks/utils.js +11 -0
- package/dist/stacks/utils.js.map +1 -0
- package/dist/start/index.d.ts +23 -0
- package/dist/start/index.d.ts.map +1 -0
- package/dist/start/index.js +386 -0
- package/dist/start/index.js.map +1 -0
- package/dist/sync/index.d.ts +49 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +207 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync-engine/__tests__/test-helpers.d.ts +14 -0
- package/dist/sync-engine/__tests__/test-helpers.d.ts.map +1 -0
- package/dist/sync-engine/__tests__/test-helpers.js +73 -0
- package/dist/sync-engine/__tests__/test-helpers.js.map +1 -0
- package/dist/sync-engine/client.d.ts +128 -0
- package/dist/sync-engine/client.d.ts.map +1 -0
- package/dist/sync-engine/client.js +289 -0
- package/dist/sync-engine/client.js.map +1 -0
- package/dist/sync-engine/health.d.ts +38 -0
- package/dist/sync-engine/health.d.ts.map +1 -0
- package/dist/sync-engine/health.js +259 -0
- package/dist/sync-engine/health.js.map +1 -0
- package/dist/sync-engine/index.d.ts +34 -0
- package/dist/sync-engine/index.d.ts.map +1 -0
- package/dist/sync-engine/index.js +197 -0
- package/dist/sync-engine/index.js.map +1 -0
- package/dist/sync-engine/protocol.d.ts +153 -0
- package/dist/sync-engine/protocol.d.ts.map +1 -0
- package/dist/sync-engine/protocol.js +5 -0
- package/dist/sync-engine/protocol.js.map +1 -0
- package/dist/tasks/index.d.ts +14 -0
- package/dist/tasks/index.d.ts.map +1 -0
- package/dist/tasks/index.js +109 -0
- package/dist/tasks/index.js.map +1 -0
- package/dist/team/index.d.ts +12 -0
- package/dist/team/index.d.ts.map +1 -0
- package/dist/team/index.js +151 -0
- package/dist/team/index.js.map +1 -0
- package/dist/updater.d.ts +5 -5
- package/dist/updater.d.ts.map +1 -1
- package/dist/updater.js +24 -88
- package/dist/updater.js.map +1 -1
- package/dist/usage/index.d.ts +10 -0
- package/dist/usage/index.d.ts.map +1 -0
- package/dist/usage/index.js +104 -0
- package/dist/usage/index.js.map +1 -0
- package/dist/webhooks/index.d.ts +7 -0
- package/dist/webhooks/index.d.ts.map +1 -0
- package/dist/webhooks/index.js +81 -0
- package/dist/webhooks/index.js.map +1 -0
- package/package.json +26 -15
- package/scripts/postinstall.js +282 -0
package/dist/cli.js
CHANGED
|
@@ -7,15 +7,19 @@ import { parseArgs } from 'node:util';
|
|
|
7
7
|
import { readFileSync } from 'node:fs';
|
|
8
8
|
import { fileURLToPath } from 'node:url';
|
|
9
9
|
import { dirname, join } from 'node:path';
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
10
|
+
import { showUpdateBanner, checkVersionQuiet } from './updater.js';
|
|
11
|
+
import { isLoggedIn, loadConfig } from './auth/config.js';
|
|
12
|
+
import { startSession } from './analytics/session.js';
|
|
13
|
+
import { setCliVersion } from './analytics/tracker.js';
|
|
14
|
+
import { executeCommand, getBool, getString, requireArg } from './lib/command-utils.js';
|
|
13
15
|
// Get version from package.json
|
|
14
16
|
const __filename = fileURLToPath(import.meta.url);
|
|
15
17
|
const __dirname = dirname(__filename);
|
|
16
18
|
const packagePath = join(__dirname, '..', 'package.json');
|
|
17
19
|
const packageJson = JSON.parse(readFileSync(packagePath, 'utf-8'));
|
|
18
20
|
const version = packageJson.version;
|
|
21
|
+
// Set CLI version for analytics
|
|
22
|
+
setCliVersion(version);
|
|
19
23
|
// Parse command-line arguments
|
|
20
24
|
const { values, positionals } = parseArgs({
|
|
21
25
|
options: {
|
|
@@ -25,6 +29,18 @@ const { values, positionals } = parseArgs({
|
|
|
25
29
|
verbose: { type: 'boolean' },
|
|
26
30
|
'skip-docs': { type: 'boolean' },
|
|
27
31
|
'no-update': { type: 'boolean' },
|
|
32
|
+
'no-browser': { type: 'boolean' },
|
|
33
|
+
channel: { type: 'string' },
|
|
34
|
+
json: { type: 'boolean', short: 'j' },
|
|
35
|
+
type: { type: 'string', short: 't' },
|
|
36
|
+
range: { type: 'string' },
|
|
37
|
+
force: { type: 'boolean', short: 'f' },
|
|
38
|
+
name: { type: 'string' },
|
|
39
|
+
description: { type: 'string' },
|
|
40
|
+
team: { type: 'string' },
|
|
41
|
+
visibility: { type: 'string' },
|
|
42
|
+
follow: { type: 'boolean' },
|
|
43
|
+
lines: { type: 'string' },
|
|
28
44
|
},
|
|
29
45
|
allowPositionals: true,
|
|
30
46
|
strict: false,
|
|
@@ -34,7 +50,7 @@ if (values.version) {
|
|
|
34
50
|
const newer = await checkVersionQuiet(version);
|
|
35
51
|
console.log(`claudetools v${version}`);
|
|
36
52
|
if (newer) {
|
|
37
|
-
console.log(` (v${newer} available
|
|
53
|
+
console.log(` (v${newer} available — run: claudetools update)`);
|
|
38
54
|
}
|
|
39
55
|
process.exit(0);
|
|
40
56
|
}
|
|
@@ -50,72 +66,304 @@ Commands:
|
|
|
50
66
|
init Initialize current directory as a project
|
|
51
67
|
onboard Detect stack, fetch docs, generate AGENTS.md
|
|
52
68
|
cleanup Remove legacy config and broken hooks
|
|
69
|
+
login Authenticate with ClaudeTools
|
|
70
|
+
logout Sign out of ClaudeTools
|
|
71
|
+
whoami Show current user information
|
|
72
|
+
analytics Show usage statistics (requires auth)
|
|
73
|
+
stats Show gamification progress (level, XP, streak)
|
|
74
|
+
update Check for and install CLI updates
|
|
75
|
+
upgrade [tier] Upgrade to ClaudeTools Pro or Team
|
|
76
|
+
billing Manage your billing and subscription
|
|
77
|
+
sync Sync stacks to/from cloud (Pro/Team only)
|
|
78
|
+
sync start Start the sync engine in the background
|
|
79
|
+
sync stop Stop the running sync engine
|
|
80
|
+
sync status Show sync engine status
|
|
81
|
+
sync pool Show MCP process pool status
|
|
82
|
+
sync reload Reload sync engine configuration
|
|
83
|
+
sync logs Tail the sync engine log file
|
|
84
|
+
project Manage registered projects
|
|
85
|
+
search [query] Search the marketplace for extensions
|
|
86
|
+
install <slug> Install an extension from the marketplace
|
|
87
|
+
uninstall <slug> Remove an installed extension (type auto-detected)
|
|
88
|
+
list List all installed extensions
|
|
89
|
+
|
|
90
|
+
API Keys:
|
|
91
|
+
keys list List all your API keys
|
|
92
|
+
keys create <name> Create a new API key
|
|
93
|
+
keys revoke <id> Revoke an API key
|
|
94
|
+
|
|
95
|
+
Stacks:
|
|
96
|
+
stacks list List all your stacks
|
|
97
|
+
stacks create <name> Create a new stack
|
|
98
|
+
stacks show <name> Show stack details
|
|
99
|
+
stacks add <stack> <ext> Add extension to stack
|
|
100
|
+
stacks remove <stack> <ext> Remove extension from stack
|
|
101
|
+
stacks delete <name> Delete a stack
|
|
102
|
+
stacks apply <name> Apply stack locally (install all extensions)
|
|
103
|
+
|
|
104
|
+
Hooks:
|
|
105
|
+
hook Show hook status
|
|
106
|
+
hook install Install claudetools hooks into Claude Code
|
|
107
|
+
hook uninstall Remove claudetools hooks
|
|
108
|
+
|
|
109
|
+
MCP Servers:
|
|
110
|
+
mcp add <name> Install MCP server from marketplace
|
|
111
|
+
mcp list List installed MCP servers
|
|
112
|
+
mcp show <name> Show MCP server configuration
|
|
113
|
+
mcp remove <name> Remove MCP server
|
|
114
|
+
mcp env <name> Update environment variables
|
|
115
|
+
mcp search [query] Search marketplace for MCP servers
|
|
53
116
|
|
|
54
117
|
Options:
|
|
55
118
|
-v, --version Show version
|
|
56
119
|
-h, --help Show this help
|
|
57
120
|
-r, --refresh Refresh existing documentation (with onboard)
|
|
121
|
+
-j, --json Output in JSON format (with search, list, whoami, analytics)
|
|
122
|
+
-t, --type Filter by type (with search)
|
|
123
|
+
--range Analytics time range: 7, 30, 90 days (with analytics)
|
|
58
124
|
--verbose Show detailed output
|
|
59
125
|
--skip-docs Skip documentation generation (with onboard)
|
|
60
|
-
--no-update Skip
|
|
126
|
+
--no-update Skip update check on startup
|
|
127
|
+
--channel Set release channel: stable, beta, nightly (with update)
|
|
61
128
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
129
|
+
Updates:
|
|
130
|
+
claudetools update # Update to latest on your channel
|
|
131
|
+
claudetools update --channel beta # Switch to beta channel and update
|
|
132
|
+
Set CLAUDETOOLS_NO_UPDATE=1 to disable startup update check.
|
|
65
133
|
|
|
66
134
|
Examples:
|
|
67
135
|
claudetools init # Set up a new project
|
|
68
136
|
claudetools onboard # Generate documentation and AGENTS.md
|
|
69
137
|
claudetools onboard --refresh # Re-fetch and regenerate documentation
|
|
138
|
+
claudetools search react # Search for React-related extensions
|
|
139
|
+
claudetools install my-skill # Install an extension
|
|
140
|
+
claudetools list # List installed extensions
|
|
70
141
|
|
|
71
|
-
Documentation: https://
|
|
142
|
+
Documentation: https://claudetools.com/docs
|
|
72
143
|
`);
|
|
73
144
|
process.exit(0);
|
|
74
145
|
}
|
|
75
|
-
//
|
|
76
|
-
if (!values['no-update']) {
|
|
77
|
-
await
|
|
146
|
+
// Show update banner on startup (unless --no-update or running 'update' command)
|
|
147
|
+
if (!values['no-update'] && positionals[0] !== 'update') {
|
|
148
|
+
await showUpdateBanner(version);
|
|
78
149
|
}
|
|
150
|
+
// Start session tracking (exit handlers registered automatically)
|
|
151
|
+
startSession({
|
|
152
|
+
command: positionals[0] || 'help',
|
|
153
|
+
args: positionals.slice(1),
|
|
154
|
+
});
|
|
155
|
+
// Auto-sync on startup for Pro/Team users (silent, non-blocking)
|
|
156
|
+
isLoggedIn().then((loggedIn) => {
|
|
157
|
+
if (loggedIn) {
|
|
158
|
+
const config = loadConfig();
|
|
159
|
+
if (config.tier && config.tier !== 'free') {
|
|
160
|
+
import('./sync/index.js')
|
|
161
|
+
.then(({ syncStacks }) => syncStacks({ silent: true }))
|
|
162
|
+
.catch((err) => {
|
|
163
|
+
if (process.env.DEBUG) {
|
|
164
|
+
console.error('[auto-sync error]:', err instanceof Error ? err.message : String(err));
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}).catch(() => { });
|
|
170
|
+
// First-run detection
|
|
171
|
+
const { existsSync: fsExists } = await import('node:fs');
|
|
172
|
+
const { homedir } = await import('node:os');
|
|
173
|
+
const claudetoolsConfigDir = join(homedir(), '.claudetools');
|
|
174
|
+
const claudeProjectDir = join(process.cwd(), '.claude');
|
|
175
|
+
const isFirstRun = !fsExists(claudetoolsConfigDir) && !fsExists(claudeProjectDir);
|
|
79
176
|
// Handle commands
|
|
80
177
|
const command = positionals[0];
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
178
|
+
// Simple command handlers (no subcommands) - using dynamic imports for faster startup
|
|
179
|
+
const simpleCommands = {
|
|
180
|
+
init: async () => {
|
|
181
|
+
const { runInit } = await import('./setup.js');
|
|
182
|
+
return runInit();
|
|
183
|
+
},
|
|
184
|
+
cleanup: async () => {
|
|
185
|
+
const { runCleanup } = await import('./setup.js');
|
|
186
|
+
return runCleanup();
|
|
187
|
+
},
|
|
188
|
+
onboard: async () => {
|
|
189
|
+
const { runOnboard } = await import('./onboard/index.js');
|
|
190
|
+
return runOnboard(process.cwd(), {
|
|
191
|
+
refresh: getBool(values, 'refresh'),
|
|
192
|
+
verbose: getBool(values, 'verbose'),
|
|
193
|
+
skipDocs: getBool(values, 'skip-docs'),
|
|
96
194
|
});
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
195
|
+
},
|
|
196
|
+
login: async () => {
|
|
197
|
+
const { runLogin } = await import('./auth/index.js');
|
|
198
|
+
return runLogin({ noBrowser: getBool(values, 'no-browser') });
|
|
199
|
+
},
|
|
200
|
+
logout: async () => {
|
|
201
|
+
const { runLogout } = await import('./auth/index.js');
|
|
202
|
+
return runLogout();
|
|
203
|
+
},
|
|
204
|
+
whoami: async () => {
|
|
205
|
+
const { runWhoami } = await import('./auth/index.js');
|
|
206
|
+
return runWhoami({ json: getBool(values, 'json') });
|
|
207
|
+
},
|
|
208
|
+
analytics: async () => {
|
|
209
|
+
const subcommand = positionals[1];
|
|
210
|
+
const analyticsModule = await import('./analytics/index.js');
|
|
211
|
+
switch (subcommand) {
|
|
212
|
+
case 'budget':
|
|
213
|
+
return analyticsModule.runBudget({ json: getBool(values, 'json') });
|
|
214
|
+
case 'languages':
|
|
215
|
+
return analyticsModule.runLanguages({ json: getBool(values, 'json') });
|
|
216
|
+
case 'export':
|
|
217
|
+
return analyticsModule.runExport({ filename: positionals[2] });
|
|
218
|
+
default:
|
|
219
|
+
return analyticsModule.runAnalytics({
|
|
220
|
+
range: getString(values, 'range'),
|
|
221
|
+
json: getBool(values, 'json'),
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
},
|
|
225
|
+
upgrade: async () => {
|
|
226
|
+
const { runUpgrade } = await import('./billing/index.js');
|
|
227
|
+
return runUpgrade(positionals[1], { noBrowser: getBool(values, 'no-browser') });
|
|
228
|
+
},
|
|
229
|
+
billing: async () => {
|
|
230
|
+
const { runBilling } = await import('./billing/index.js');
|
|
231
|
+
return runBilling({ noBrowser: getBool(values, 'no-browser') });
|
|
232
|
+
},
|
|
233
|
+
search: async () => {
|
|
234
|
+
const { runSearch } = await import('./marketplace/index.js');
|
|
235
|
+
return runSearch(positionals[1], {
|
|
236
|
+
type: getString(values, 'type'),
|
|
237
|
+
json: getBool(values, 'json'),
|
|
102
238
|
});
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
239
|
+
},
|
|
240
|
+
install: async () => {
|
|
241
|
+
const slug = requireArg(positionals, 1, 'extension slug', 'claudetools install <slug>');
|
|
242
|
+
const { runInstall } = await import('./marketplace/index.js');
|
|
243
|
+
return runInstall(slug);
|
|
244
|
+
},
|
|
245
|
+
uninstall: async () => {
|
|
246
|
+
const slug = requireArg(positionals, 1, 'extension slug', 'claudetools uninstall <slug> [type]');
|
|
247
|
+
const extensionType = positionals[2]; // optional - will be auto-detected
|
|
248
|
+
const { runUninstall } = await import('./marketplace/index.js');
|
|
249
|
+
return runUninstall(slug, extensionType);
|
|
250
|
+
},
|
|
251
|
+
list: async () => {
|
|
252
|
+
const { runList } = await import('./marketplace/index.js');
|
|
253
|
+
return runList({ json: getBool(values, 'json') });
|
|
254
|
+
},
|
|
255
|
+
// sync moved to complexCommands to support subcommands
|
|
256
|
+
};
|
|
257
|
+
// Complex command handlers (with subcommands) - using dynamic imports
|
|
258
|
+
const complexCommands = {
|
|
259
|
+
keys: async () => {
|
|
260
|
+
const { handleKeysCommand } = await import('./commands/keys.js');
|
|
261
|
+
return handleKeysCommand(positionals, values);
|
|
262
|
+
},
|
|
263
|
+
stacks: async () => {
|
|
264
|
+
const { handleStacksCommand } = await import('./commands/stacks.js');
|
|
265
|
+
return handleStacksCommand(positionals, values);
|
|
266
|
+
},
|
|
267
|
+
project: async () => {
|
|
268
|
+
const { handleProjectCommand } = await import('./commands/project.js');
|
|
269
|
+
return handleProjectCommand(positionals, values);
|
|
270
|
+
},
|
|
271
|
+
mcp: async () => {
|
|
272
|
+
const { handleMcpCommand } = await import('./commands/mcp.js');
|
|
273
|
+
return handleMcpCommand(positionals, values);
|
|
274
|
+
},
|
|
275
|
+
update: async () => {
|
|
276
|
+
const { handleUpdateCommand } = await import('./commands/update.js');
|
|
277
|
+
return handleUpdateCommand(positionals, values, version);
|
|
278
|
+
},
|
|
279
|
+
hook: async () => {
|
|
280
|
+
const { handleHookCommand } = await import('./commands/hook.js');
|
|
281
|
+
return handleHookCommand(positionals, values);
|
|
282
|
+
},
|
|
283
|
+
sync: async () => {
|
|
284
|
+
const { handleSyncCommand } = await import('./commands/sync.js');
|
|
285
|
+
return handleSyncCommand(positionals, values);
|
|
286
|
+
},
|
|
287
|
+
stats: async () => {
|
|
288
|
+
const { handleStatsCommand } = await import('./commands/stats.js');
|
|
289
|
+
return handleStatsCommand(positionals, values);
|
|
290
|
+
},
|
|
291
|
+
skill: async () => {
|
|
292
|
+
const { handleSkillCommand } = await import('./commands/skill.js');
|
|
293
|
+
return handleSkillCommand(positionals, values);
|
|
294
|
+
},
|
|
295
|
+
};
|
|
296
|
+
// Execute command
|
|
297
|
+
if (command && simpleCommands[command]) {
|
|
298
|
+
await executeCommand(command.charAt(0).toUpperCase() + command.slice(1), simpleCommands[command]);
|
|
299
|
+
}
|
|
300
|
+
else if (command && complexCommands[command]) {
|
|
301
|
+
await complexCommands[command]();
|
|
302
|
+
}
|
|
303
|
+
else {
|
|
304
|
+
// Show welcome message for first-time users
|
|
305
|
+
if (!command && isFirstRun) {
|
|
106
306
|
console.log(`
|
|
307
|
+
Looks like you're new to ClaudeTools.
|
|
308
|
+
|
|
309
|
+
Run: claudetools init -- to set up your project
|
|
310
|
+
Or: claudetools login -- to sign in first
|
|
311
|
+
`);
|
|
312
|
+
}
|
|
313
|
+
// Show grouped command help
|
|
314
|
+
console.log(`
|
|
107
315
|
claudetools - AI agent project setup for Claude Code
|
|
108
316
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
317
|
+
Getting Started:
|
|
318
|
+
init Initialize project
|
|
319
|
+
onboard Generate documentation and AGENTS.md
|
|
320
|
+
login Authenticate with ClaudeTools
|
|
321
|
+
logout Sign out
|
|
322
|
+
whoami Show current user info
|
|
323
|
+
|
|
324
|
+
Marketplace:
|
|
325
|
+
search [query] Search marketplace for extensions
|
|
326
|
+
install <slug> Install an extension
|
|
327
|
+
uninstall <slug> Remove an extension (type auto-detected)
|
|
328
|
+
list List installed extensions
|
|
329
|
+
|
|
330
|
+
Stacks:
|
|
331
|
+
stacks Manage extension stacks
|
|
332
|
+
sync Sync stacks to/from cloud
|
|
333
|
+
|
|
334
|
+
Sync Engine:
|
|
335
|
+
sync start Start the sync engine
|
|
336
|
+
sync stop Stop the sync engine
|
|
337
|
+
sync pool Show MCP process pool
|
|
338
|
+
sync reload Reload configuration
|
|
339
|
+
sync logs Tail engine logs
|
|
340
|
+
|
|
341
|
+
Account:
|
|
342
|
+
analytics Show usage statistics
|
|
343
|
+
stats Show gamification progress (level, XP, streak)
|
|
344
|
+
upgrade Upgrade to ClaudeTools Pro
|
|
345
|
+
billing Manage billing
|
|
346
|
+
keys Manage API keys
|
|
347
|
+
|
|
348
|
+
Skills:
|
|
349
|
+
skill list List installed skills
|
|
350
|
+
skill add <ref> Install a skill
|
|
351
|
+
skill remove Remove a skill
|
|
352
|
+
skill show Show skill details
|
|
353
|
+
skill validate Validate a skill file
|
|
354
|
+
|
|
355
|
+
Advanced:
|
|
356
|
+
project Manage registered projects
|
|
357
|
+
mcp Manage MCP servers
|
|
358
|
+
hook Manage Claude Code hooks
|
|
359
|
+
cleanup Remove legacy config
|
|
360
|
+
update Check for and install updates
|
|
113
361
|
|
|
114
362
|
Run 'claudetools --help' for more options.
|
|
115
363
|
`);
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
364
|
+
if (command) {
|
|
365
|
+
console.error(`Unknown command: ${command}`);
|
|
366
|
+
process.exit(1);
|
|
367
|
+
}
|
|
120
368
|
}
|
|
121
369
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,gFAAgF;AAChF,8BAA8B;AAC9B,gFAAgF;AAChF,iEAAiE;AAEjE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hook command — install/uninstall/status for Claude Code hook configuration.
|
|
3
|
+
*
|
|
4
|
+
* `claudetools hook` — Check hook status
|
|
5
|
+
* `claudetools hook install` — Write hooks to ~/.claude/settings.json
|
|
6
|
+
* `claudetools hook uninstall` — Remove claudetools hooks from settings
|
|
7
|
+
* `claudetools hook status` — Show hook configuration status
|
|
8
|
+
*/
|
|
9
|
+
type ParsedValues = Record<string, string | boolean | undefined>;
|
|
10
|
+
export declare function handleHookCommand(positionals: string[], _values: ParsedValues): Promise<void>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=hook.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../src/commands/hook.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;AA6LjE,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,IAAI,CAAC,CAoCf"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hook command — install/uninstall/status for Claude Code hook configuration.
|
|
3
|
+
*
|
|
4
|
+
* `claudetools hook` — Check hook status
|
|
5
|
+
* `claudetools hook install` — Write hooks to ~/.claude/settings.json
|
|
6
|
+
* `claudetools hook uninstall` — Remove claudetools hooks from settings
|
|
7
|
+
* `claudetools hook status` — Show hook configuration status
|
|
8
|
+
*/
|
|
9
|
+
import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'node:fs';
|
|
10
|
+
import { join } from 'node:path';
|
|
11
|
+
import { homedir } from 'node:os';
|
|
12
|
+
import { executeCommand } from '../lib/command-utils.js';
|
|
13
|
+
// Hook entries that claudetools manages
|
|
14
|
+
const CLAUDETOOLS_HOOK_MARKER = 'claudetools-sync hook';
|
|
15
|
+
/** Hook definitions that claudetools installs. */
|
|
16
|
+
function claudetoolsHooks() {
|
|
17
|
+
return {
|
|
18
|
+
PreToolUse: [
|
|
19
|
+
{
|
|
20
|
+
matcher: '*',
|
|
21
|
+
hooks: [
|
|
22
|
+
{
|
|
23
|
+
type: 'command',
|
|
24
|
+
command: 'claudetools-sync hook PreToolUse --tool-name $TOOL_NAME',
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
},
|
|
28
|
+
],
|
|
29
|
+
PostToolUse: [
|
|
30
|
+
{
|
|
31
|
+
matcher: '*',
|
|
32
|
+
hooks: [
|
|
33
|
+
{
|
|
34
|
+
type: 'command',
|
|
35
|
+
command: 'claudetools-sync hook PostToolUse --tool-name $TOOL_NAME',
|
|
36
|
+
},
|
|
37
|
+
],
|
|
38
|
+
},
|
|
39
|
+
],
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/** Resolve path to ~/.claude/settings.json */
|
|
43
|
+
function settingsPath() {
|
|
44
|
+
const home = homedir();
|
|
45
|
+
if (!home) {
|
|
46
|
+
throw new Error('Cannot determine home directory — $HOME is not set');
|
|
47
|
+
}
|
|
48
|
+
return join(home, '.claude', 'settings.json');
|
|
49
|
+
}
|
|
50
|
+
/** Read existing settings.json or return empty object. */
|
|
51
|
+
function readSettings() {
|
|
52
|
+
const path = settingsPath();
|
|
53
|
+
if (!existsSync(path)) {
|
|
54
|
+
return {};
|
|
55
|
+
}
|
|
56
|
+
const raw = readFileSync(path, 'utf-8');
|
|
57
|
+
return JSON.parse(raw);
|
|
58
|
+
}
|
|
59
|
+
/** Write settings.json with proper formatting. */
|
|
60
|
+
function writeSettings(settings) {
|
|
61
|
+
const path = settingsPath();
|
|
62
|
+
const home = homedir();
|
|
63
|
+
if (!home) {
|
|
64
|
+
throw new Error('Cannot determine home directory — $HOME is not set');
|
|
65
|
+
}
|
|
66
|
+
const dir = join(home, '.claude');
|
|
67
|
+
if (!existsSync(dir)) {
|
|
68
|
+
mkdirSync(dir, { recursive: true });
|
|
69
|
+
}
|
|
70
|
+
writeFileSync(path, JSON.stringify(settings, null, 2) + '\n', 'utf-8');
|
|
71
|
+
}
|
|
72
|
+
/** Check if a hook matcher entry is a claudetools hook. */
|
|
73
|
+
function isClaudetoolsHook(matcher) {
|
|
74
|
+
return matcher.hooks.some((h) => h.command && h.command.includes(CLAUDETOOLS_HOOK_MARKER));
|
|
75
|
+
}
|
|
76
|
+
/** Install claudetools hooks into settings.json (merge, don't overwrite). */
|
|
77
|
+
async function runHookInstall() {
|
|
78
|
+
const settings = readSettings();
|
|
79
|
+
const ctHooks = claudetoolsHooks();
|
|
80
|
+
if (!settings.hooks) {
|
|
81
|
+
settings.hooks = {};
|
|
82
|
+
}
|
|
83
|
+
let installed = 0;
|
|
84
|
+
for (const [event, matchers] of Object.entries(ctHooks)) {
|
|
85
|
+
if (!settings.hooks[event]) {
|
|
86
|
+
settings.hooks[event] = [];
|
|
87
|
+
}
|
|
88
|
+
// Remove any existing claudetools hooks for this event first
|
|
89
|
+
settings.hooks[event] = settings.hooks[event].filter((m) => !isClaudetoolsHook(m));
|
|
90
|
+
// Add our hooks
|
|
91
|
+
settings.hooks[event].push(...matchers);
|
|
92
|
+
installed += matchers.length;
|
|
93
|
+
}
|
|
94
|
+
writeSettings(settings);
|
|
95
|
+
console.log(`Installed ${installed} hook(s) into ${settingsPath()}`);
|
|
96
|
+
console.log('Events: PreToolUse, PostToolUse');
|
|
97
|
+
}
|
|
98
|
+
/** Remove only claudetools hooks from settings.json (preserve user hooks). */
|
|
99
|
+
async function runHookUninstall() {
|
|
100
|
+
const settings = readSettings();
|
|
101
|
+
if (!settings.hooks) {
|
|
102
|
+
console.log('No hooks configured — nothing to uninstall.');
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
let removed = 0;
|
|
106
|
+
for (const event of Object.keys(settings.hooks)) {
|
|
107
|
+
const eventHooks = settings.hooks[event];
|
|
108
|
+
if (!eventHooks)
|
|
109
|
+
continue;
|
|
110
|
+
const before = eventHooks.length;
|
|
111
|
+
settings.hooks[event] = eventHooks.filter((m) => !isClaudetoolsHook(m));
|
|
112
|
+
removed += before - (settings.hooks[event]?.length ?? 0);
|
|
113
|
+
// Remove empty arrays
|
|
114
|
+
if (settings.hooks[event]?.length === 0) {
|
|
115
|
+
delete settings.hooks[event];
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// Remove empty hooks object
|
|
119
|
+
if (Object.keys(settings.hooks).length === 0) {
|
|
120
|
+
delete settings.hooks;
|
|
121
|
+
}
|
|
122
|
+
writeSettings(settings);
|
|
123
|
+
if (removed > 0) {
|
|
124
|
+
console.log(`Removed ${removed} claudetools hook(s) from ${settingsPath()}`);
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
console.log('No claudetools hooks found — nothing to remove.');
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/** Show hook status. */
|
|
131
|
+
async function runHookStatus() {
|
|
132
|
+
const settings = readSettings();
|
|
133
|
+
const path = settingsPath();
|
|
134
|
+
if (!settings.hooks) {
|
|
135
|
+
console.log(`No hooks configured in ${path}`);
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
let ctCount = 0;
|
|
139
|
+
let userCount = 0;
|
|
140
|
+
for (const [event, matchers] of Object.entries(settings.hooks)) {
|
|
141
|
+
for (const matcher of matchers) {
|
|
142
|
+
if (isClaudetoolsHook(matcher)) {
|
|
143
|
+
ctCount++;
|
|
144
|
+
console.log(` [claudetools] ${event} (matcher: ${matcher.matcher})`);
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
userCount++;
|
|
148
|
+
console.log(` [user] ${event} (matcher: ${matcher.matcher})`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
console.log();
|
|
153
|
+
console.log(`Claudetools hooks: ${ctCount}`);
|
|
154
|
+
console.log(`User hooks: ${userCount}`);
|
|
155
|
+
console.log(`Settings: ${path}`);
|
|
156
|
+
}
|
|
157
|
+
export async function handleHookCommand(positionals, _values) {
|
|
158
|
+
const subcommand = positionals[1];
|
|
159
|
+
switch (subcommand) {
|
|
160
|
+
case 'install':
|
|
161
|
+
await executeCommand('Hook install', runHookInstall);
|
|
162
|
+
break;
|
|
163
|
+
case 'uninstall':
|
|
164
|
+
await executeCommand('Hook uninstall', runHookUninstall);
|
|
165
|
+
break;
|
|
166
|
+
case 'status':
|
|
167
|
+
case undefined:
|
|
168
|
+
await executeCommand('Hook status', runHookStatus);
|
|
169
|
+
break;
|
|
170
|
+
default:
|
|
171
|
+
console.log(`
|
|
172
|
+
claudetools hook - Manage Claude Code hook configuration
|
|
173
|
+
|
|
174
|
+
Usage:
|
|
175
|
+
claudetools hook Show hook status
|
|
176
|
+
claudetools hook install Install claudetools hooks
|
|
177
|
+
claudetools hook uninstall Remove claudetools hooks
|
|
178
|
+
claudetools hook status Show hook status
|
|
179
|
+
|
|
180
|
+
The install command adds PreToolUse and PostToolUse hooks to
|
|
181
|
+
~/.claude/settings.json that route through the sync engine.
|
|
182
|
+
Existing user-defined hooks are preserved.
|
|
183
|
+
`);
|
|
184
|
+
if (subcommand) {
|
|
185
|
+
console.error(`Unknown hook command: ${subcommand}`);
|
|
186
|
+
process.exit(1);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=hook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../src/commands/hook.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/commands/keys.ts"],"names":[],"mappings":"AAGA,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;AAEjE,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EAAE,EACrB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,IAAI,CAAC,CAuDf"}
|