@kaitranntt/ccs 4.4.0 → 5.0.0
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 +14 -7
- package/VERSION +1 -1
- package/config/base-agy.settings.json +10 -0
- package/config/base-codex.settings.json +10 -0
- package/config/base-gemini.settings.json +10 -0
- package/dist/auth/auth-commands.d.ts +52 -0
- package/dist/auth/auth-commands.d.ts.map +1 -0
- package/dist/auth/auth-commands.js +479 -0
- package/dist/auth/auth-commands.js.map +1 -0
- package/dist/auth/profile-detector.d.ts +68 -0
- package/dist/auth/profile-detector.d.ts.map +1 -0
- package/dist/auth/profile-detector.js +209 -0
- package/dist/auth/profile-detector.js.map +1 -0
- package/dist/auth/profile-registry.d.ts +60 -0
- package/dist/auth/profile-registry.d.ts.map +1 -0
- package/dist/auth/profile-registry.js +188 -0
- package/dist/auth/profile-registry.js.map +1 -0
- package/dist/ccs.d.ts +10 -0
- package/dist/ccs.d.ts.map +1 -0
- package/dist/ccs.js +320 -0
- package/dist/ccs.js.map +1 -0
- package/dist/cliproxy/auth-handler.d.ts +93 -0
- package/dist/cliproxy/auth-handler.d.ts.map +1 -0
- package/dist/cliproxy/auth-handler.js +402 -0
- package/dist/cliproxy/auth-handler.js.map +1 -0
- package/dist/cliproxy/base-config-loader.d.ts +42 -0
- package/dist/cliproxy/base-config-loader.d.ts.map +1 -0
- package/dist/cliproxy/base-config-loader.js +123 -0
- package/dist/cliproxy/base-config-loader.js.map +1 -0
- package/dist/cliproxy/binary-manager.d.ts +104 -0
- package/dist/cliproxy/binary-manager.d.ts.map +1 -0
- package/dist/cliproxy/binary-manager.js +567 -0
- package/dist/cliproxy/binary-manager.js.map +1 -0
- package/dist/cliproxy/cliproxy-executor.d.ts +33 -0
- package/dist/cliproxy/cliproxy-executor.d.ts.map +1 -0
- package/dist/cliproxy/cliproxy-executor.js +297 -0
- package/dist/cliproxy/cliproxy-executor.js.map +1 -0
- package/dist/cliproxy/config-generator.d.ts +89 -0
- package/dist/cliproxy/config-generator.d.ts.map +1 -0
- package/dist/cliproxy/config-generator.js +263 -0
- package/dist/cliproxy/config-generator.js.map +1 -0
- package/dist/cliproxy/index.d.ts +13 -0
- package/dist/cliproxy/index.d.ts.map +1 -0
- package/dist/cliproxy/index.js +62 -0
- package/dist/cliproxy/index.js.map +1 -0
- package/dist/cliproxy/platform-detector.d.ts +48 -0
- package/dist/cliproxy/platform-detector.d.ts.map +1 -0
- package/dist/cliproxy/platform-detector.js +118 -0
- package/dist/cliproxy/platform-detector.js.map +1 -0
- package/dist/cliproxy/types.d.ts +169 -0
- package/dist/cliproxy/types.d.ts.map +1 -0
- package/dist/cliproxy/types.js +7 -0
- package/dist/cliproxy/types.js.map +1 -0
- package/dist/commands/doctor-command.d.ts +10 -0
- package/dist/commands/doctor-command.d.ts.map +1 -0
- package/dist/commands/doctor-command.js +44 -0
- package/dist/commands/doctor-command.js.map +1 -0
- package/dist/commands/help-command.d.ts +5 -0
- package/dist/commands/help-command.d.ts.map +1 -0
- package/dist/commands/help-command.js +104 -0
- package/dist/commands/help-command.js.map +1 -0
- package/dist/commands/install-command.d.ts +14 -0
- package/dist/commands/install-command.d.ts.map +1 -0
- package/dist/commands/install-command.js +39 -0
- package/dist/commands/install-command.js.map +1 -0
- package/dist/commands/shell-completion-command.d.ts +10 -0
- package/dist/commands/shell-completion-command.d.ts.map +1 -0
- package/dist/commands/shell-completion-command.js +85 -0
- package/dist/commands/shell-completion-command.js.map +1 -0
- package/dist/commands/sync-command.d.ts +10 -0
- package/dist/commands/sync-command.d.ts.map +1 -0
- package/dist/commands/sync-command.js +59 -0
- package/dist/commands/sync-command.js.map +1 -0
- package/dist/commands/update-command.d.ts +12 -0
- package/dist/commands/update-command.d.ts.map +1 -0
- package/dist/commands/update-command.js +295 -0
- package/dist/commands/update-command.js.map +1 -0
- package/dist/commands/version-command.d.ts +10 -0
- package/dist/commands/version-command.d.ts.map +1 -0
- package/dist/commands/version-command.js +100 -0
- package/dist/commands/version-command.js.map +1 -0
- package/dist/delegation/delegation-handler.d.ts +60 -0
- package/dist/delegation/delegation-handler.d.ts.map +1 -0
- package/dist/delegation/delegation-handler.js +174 -0
- package/dist/delegation/delegation-handler.js.map +1 -0
- package/dist/delegation/headless-executor.d.ts +114 -0
- package/dist/delegation/headless-executor.d.ts.map +1 -0
- package/dist/delegation/headless-executor.js +562 -0
- package/dist/delegation/headless-executor.js.map +1 -0
- package/dist/delegation/result-formatter.d.ts +108 -0
- package/dist/delegation/result-formatter.d.ts.map +1 -0
- package/dist/delegation/result-formatter.js +391 -0
- package/dist/delegation/result-formatter.js.map +1 -0
- package/dist/delegation/session-manager.d.ts +58 -0
- package/dist/delegation/session-manager.d.ts.map +1 -0
- package/dist/delegation/session-manager.js +153 -0
- package/dist/delegation/session-manager.js.map +1 -0
- package/dist/delegation/settings-parser.d.ts +31 -0
- package/dist/delegation/settings-parser.d.ts.map +1 -0
- package/dist/delegation/settings-parser.js +107 -0
- package/dist/delegation/settings-parser.js.map +1 -0
- package/dist/glmt/delta-accumulator.d.ts +210 -0
- package/dist/glmt/delta-accumulator.d.ts.map +1 -0
- package/dist/glmt/delta-accumulator.js +351 -0
- package/dist/glmt/delta-accumulator.js.map +1 -0
- package/dist/glmt/glmt-proxy.d.ts +72 -0
- package/dist/glmt/glmt-proxy.d.ts.map +1 -0
- package/dist/glmt/glmt-proxy.js +427 -0
- package/dist/glmt/glmt-proxy.js.map +1 -0
- package/dist/glmt/glmt-transformer.d.ts +265 -0
- package/dist/glmt/glmt-transformer.d.ts.map +1 -0
- package/dist/glmt/glmt-transformer.js +832 -0
- package/dist/glmt/glmt-transformer.js.map +1 -0
- package/dist/glmt/locale-enforcer.d.ts +38 -0
- package/dist/glmt/locale-enforcer.d.ts.map +1 -0
- package/dist/glmt/locale-enforcer.js +69 -0
- package/dist/glmt/locale-enforcer.js.map +1 -0
- package/dist/glmt/reasoning-enforcer.d.ts +52 -0
- package/dist/glmt/reasoning-enforcer.d.ts.map +1 -0
- package/dist/glmt/reasoning-enforcer.js +151 -0
- package/dist/glmt/reasoning-enforcer.js.map +1 -0
- package/dist/glmt/sse-parser.d.ts +47 -0
- package/dist/glmt/sse-parser.d.ts.map +1 -0
- package/dist/glmt/sse-parser.js +93 -0
- package/dist/glmt/sse-parser.js.map +1 -0
- package/dist/management/doctor.d.ts +104 -0
- package/dist/management/doctor.d.ts.map +1 -0
- package/dist/management/doctor.js +673 -0
- package/dist/management/doctor.js.map +1 -0
- package/dist/management/instance-manager.d.ts +57 -0
- package/dist/management/instance-manager.d.ts.map +1 -0
- package/dist/management/instance-manager.js +195 -0
- package/dist/management/instance-manager.js.map +1 -0
- package/dist/management/recovery-manager.d.ts +39 -0
- package/dist/management/recovery-manager.d.ts.map +1 -0
- package/dist/management/recovery-manager.js +141 -0
- package/dist/management/recovery-manager.js.map +1 -0
- package/dist/management/shared-manager.d.ts +47 -0
- package/dist/management/shared-manager.d.ts.map +1 -0
- package/dist/management/shared-manager.js +388 -0
- package/dist/management/shared-manager.js.map +1 -0
- package/dist/types/cli.d.ts +50 -0
- package/dist/types/cli.d.ts.map +1 -0
- package/dist/types/cli.js +16 -0
- package/dist/types/cli.js.map +1 -0
- package/dist/types/config.d.ts +51 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +26 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/delegation.d.ts +61 -0
- package/dist/types/delegation.d.ts.map +1 -0
- package/dist/types/delegation.js +6 -0
- package/dist/types/delegation.js.map +1 -0
- package/dist/types/glmt.d.ts +95 -0
- package/dist/types/glmt.d.ts.map +1 -0
- package/dist/types/glmt.js +7 -0
- package/dist/types/glmt.js.map +1 -0
- package/dist/types/index.d.ts +13 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +16 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/utils.d.ts +36 -0
- package/dist/types/utils.d.ts.map +1 -0
- package/dist/types/utils.js +22 -0
- package/dist/types/utils.js.map +1 -0
- package/dist/utils/claude-detector.d.ts +14 -0
- package/dist/utils/claude-detector.d.ts.map +1 -0
- package/dist/utils/claude-detector.js +112 -0
- package/dist/utils/claude-detector.js.map +1 -0
- package/dist/utils/claude-dir-installer.d.ts +46 -0
- package/dist/utils/claude-dir-installer.d.ts.map +1 -0
- package/dist/utils/claude-dir-installer.js +289 -0
- package/dist/utils/claude-dir-installer.js.map +1 -0
- package/dist/utils/claude-symlink-manager.d.ts +61 -0
- package/dist/utils/claude-symlink-manager.d.ts.map +1 -0
- package/dist/utils/claude-symlink-manager.js +291 -0
- package/dist/utils/claude-symlink-manager.js.map +1 -0
- package/dist/utils/config-manager.d.ts +32 -0
- package/dist/utils/config-manager.d.ts.map +1 -0
- package/dist/utils/config-manager.js +143 -0
- package/dist/utils/config-manager.js.map +1 -0
- package/dist/utils/delegation-validator.d.ts +39 -0
- package/dist/utils/delegation-validator.d.ts.map +1 -0
- package/dist/utils/delegation-validator.js +161 -0
- package/dist/utils/delegation-validator.js.map +1 -0
- package/dist/utils/error-codes.d.ts +36 -0
- package/dist/utils/error-codes.d.ts.map +1 -0
- package/dist/utils/error-codes.js +63 -0
- package/dist/utils/error-codes.js.map +1 -0
- package/dist/utils/error-manager.d.ts +59 -0
- package/dist/utils/error-manager.d.ts.map +1 -0
- package/dist/utils/error-manager.js +228 -0
- package/dist/utils/error-manager.js.map +1 -0
- package/dist/utils/helpers.d.ts +27 -0
- package/dist/utils/helpers.d.ts.map +1 -0
- package/dist/utils/helpers.js +150 -0
- package/dist/utils/helpers.js.map +1 -0
- package/dist/utils/package-manager-detector.d.ts +14 -0
- package/dist/utils/package-manager-detector.d.ts.map +1 -0
- package/dist/utils/package-manager-detector.js +162 -0
- package/dist/utils/package-manager-detector.js.map +1 -0
- package/dist/utils/progress-indicator.d.ts +52 -0
- package/dist/utils/progress-indicator.d.ts.map +1 -0
- package/dist/utils/progress-indicator.js +102 -0
- package/dist/utils/progress-indicator.js.map +1 -0
- package/dist/utils/prompt.d.ts +29 -0
- package/dist/utils/prompt.d.ts.map +1 -0
- package/dist/utils/prompt.js +116 -0
- package/dist/utils/prompt.js.map +1 -0
- package/dist/utils/shell-completion.d.ts +52 -0
- package/dist/utils/shell-completion.d.ts.map +1 -0
- package/dist/utils/shell-completion.js +231 -0
- package/dist/utils/shell-completion.js.map +1 -0
- package/dist/utils/shell-executor.d.ts +15 -0
- package/dist/utils/shell-executor.d.ts.map +1 -0
- package/dist/utils/shell-executor.js +57 -0
- package/dist/utils/shell-executor.js.map +1 -0
- package/dist/utils/update-checker.d.ts +48 -0
- package/dist/utils/update-checker.d.ts.map +1 -0
- package/dist/utils/update-checker.js +241 -0
- package/dist/utils/update-checker.js.map +1 -0
- package/lib/ccs +21 -1907
- package/lib/ccs.ps1 +26 -1800
- package/lib/error-codes.ps1 +2 -1
- package/lib/prompt.ps1 +2 -2
- package/package.json +31 -11
- package/scripts/add-shebang.js +39 -0
- package/scripts/bump-version.sh +25 -37
- package/scripts/dev-install.sh +32 -11
- package/scripts/postinstall.js +29 -29
- package/bin/auth/auth-commands.js +0 -499
- package/bin/auth/profile-detector.js +0 -204
- package/bin/auth/profile-registry.js +0 -225
- package/bin/ccs.js +0 -1034
- package/bin/delegation/README.md +0 -191
- package/bin/delegation/delegation-handler.js +0 -212
- package/bin/delegation/headless-executor.js +0 -618
- package/bin/delegation/result-formatter.js +0 -485
- package/bin/delegation/session-manager.js +0 -157
- package/bin/delegation/settings-parser.js +0 -109
- package/bin/glmt/delta-accumulator.js +0 -276
- package/bin/glmt/glmt-proxy.js +0 -495
- package/bin/glmt/glmt-transformer.js +0 -999
- package/bin/glmt/locale-enforcer.js +0 -72
- package/bin/glmt/reasoning-enforcer.js +0 -173
- package/bin/glmt/sse-parser.js +0 -96
- package/bin/management/doctor.js +0 -721
- package/bin/management/instance-manager.js +0 -202
- package/bin/management/recovery-manager.js +0 -135
- package/bin/management/shared-manager.js +0 -402
- package/bin/utils/claude-detector.js +0 -73
- package/bin/utils/claude-dir-installer.js +0 -283
- package/bin/utils/claude-symlink-manager.js +0 -289
- package/bin/utils/config-manager.js +0 -103
- package/bin/utils/delegation-validator.js +0 -154
- package/bin/utils/error-codes.js +0 -59
- package/bin/utils/error-manager.js +0 -165
- package/bin/utils/helpers.js +0 -136
- package/bin/utils/progress-indicator.js +0 -111
- package/bin/utils/prompt.js +0 -134
- package/bin/utils/shell-completion.js +0 -256
- package/bin/utils/update-checker.js +0 -243
package/lib/error-codes.ps1
CHANGED
|
@@ -36,7 +36,8 @@ $script:E_INVALID_STATE = "E901"
|
|
|
36
36
|
# Get error documentation URL
|
|
37
37
|
function Get-ErrorDocUrl {
|
|
38
38
|
param([string]$ErrorCode)
|
|
39
|
-
|
|
39
|
+
$LowerCode = $ErrorCode.ToLower()
|
|
40
|
+
return "https://github.com/kaitranntt/ccs/blob/main/docs/errors/README.md#$LowerCode"
|
|
40
41
|
}
|
|
41
42
|
|
|
42
43
|
# Get error category from code
|
package/lib/prompt.ps1
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kaitranntt/ccs",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"description": "Claude Code Switch - Instant profile switching between Claude Sonnet 4.5 and GLM 4.6",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cli",
|
|
@@ -23,11 +23,13 @@
|
|
|
23
23
|
"name": "Tam Nhu Tran (Kai)",
|
|
24
24
|
"email": "kaitranntt@users.noreply.github.com"
|
|
25
25
|
},
|
|
26
|
+
"main": "dist/ccs.js",
|
|
27
|
+
"types": "dist/ccs.d.ts",
|
|
26
28
|
"bin": {
|
|
27
|
-
"ccs": "
|
|
29
|
+
"ccs": "dist/ccs.js"
|
|
28
30
|
},
|
|
29
31
|
"files": [
|
|
30
|
-
"
|
|
32
|
+
"dist/",
|
|
31
33
|
"lib/",
|
|
32
34
|
"scripts/",
|
|
33
35
|
"config/",
|
|
@@ -37,8 +39,10 @@
|
|
|
37
39
|
"LICENSE"
|
|
38
40
|
],
|
|
39
41
|
"engines": {
|
|
40
|
-
"node": ">=14.0.0"
|
|
42
|
+
"node": ">=14.0.0",
|
|
43
|
+
"bun": ">=1.0.0"
|
|
41
44
|
},
|
|
45
|
+
"packageManager": "bun@1.2.21",
|
|
42
46
|
"os": [
|
|
43
47
|
"darwin",
|
|
44
48
|
"linux",
|
|
@@ -46,14 +50,23 @@
|
|
|
46
50
|
],
|
|
47
51
|
"preferGlobal": true,
|
|
48
52
|
"scripts": {
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
+
"build": "tsc && node scripts/add-shebang.js",
|
|
54
|
+
"build:watch": "tsc --watch",
|
|
55
|
+
"prebuild": "rm -rf dist tsconfig.tsbuildinfo",
|
|
56
|
+
"typecheck": "tsc --noEmit",
|
|
57
|
+
"lint": "eslint src/",
|
|
58
|
+
"lint:fix": "eslint src/ --fix",
|
|
59
|
+
"format": "prettier --write src/",
|
|
60
|
+
"format:check": "prettier --check src/",
|
|
61
|
+
"validate": "bun run typecheck && bun run lint && bun run format:check && bun run test",
|
|
62
|
+
"test": "bun run build && bun run test:all",
|
|
63
|
+
"test:all": "bun run test:unit && bun run test:npm",
|
|
64
|
+
"test:unit": "mocha tests/shared/unit/**/*.test.js --timeout 5000",
|
|
65
|
+
"test:npm": "mocha tests/npm/**/*.test.js --timeout 10000",
|
|
53
66
|
"test:native": "bash tests/native/unix/edge-cases.sh",
|
|
54
67
|
"test:edge-cases": "bash tests/edge-cases.sh",
|
|
55
|
-
"prepublishOnly": "node scripts/sync-version.js",
|
|
56
|
-
"prepack": "node scripts/sync-version.js",
|
|
68
|
+
"prepublishOnly": "npm run validate && node scripts/sync-version.js",
|
|
69
|
+
"prepack": "npm run validate && node scripts/sync-version.js",
|
|
57
70
|
"prepare": "node scripts/check-executables.js",
|
|
58
71
|
"postinstall": "node scripts/postinstall.js"
|
|
59
72
|
},
|
|
@@ -62,6 +75,13 @@
|
|
|
62
75
|
"ora": "^9.0.0"
|
|
63
76
|
},
|
|
64
77
|
"devDependencies": {
|
|
65
|
-
"
|
|
78
|
+
"@types/node": "^20.19.25",
|
|
79
|
+
"@typescript-eslint/eslint-plugin": "^8.48.0",
|
|
80
|
+
"@typescript-eslint/parser": "^8.48.0",
|
|
81
|
+
"eslint": "^9.39.1",
|
|
82
|
+
"eslint-config-prettier": "^10.1.8",
|
|
83
|
+
"mocha": "^11.7.5",
|
|
84
|
+
"prettier": "^3.6.2",
|
|
85
|
+
"typescript": "5.3"
|
|
66
86
|
}
|
|
67
87
|
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
const fs = require('fs');
|
|
5
|
+
const path = require('path');
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Add shebang to dist/ccs.js and make executable
|
|
9
|
+
* Run after: tsc
|
|
10
|
+
*/
|
|
11
|
+
function addShebang() {
|
|
12
|
+
const ccsPath = path.join(__dirname, '../dist/ccs.js');
|
|
13
|
+
|
|
14
|
+
if (!fs.existsSync(ccsPath)) {
|
|
15
|
+
console.error('[X] dist/ccs.js not found. Run tsc first.');
|
|
16
|
+
process.exit(1);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
let content = fs.readFileSync(ccsPath, 'utf8');
|
|
20
|
+
|
|
21
|
+
// Add shebang if missing
|
|
22
|
+
if (!content.startsWith('#!/usr/bin/env node')) {
|
|
23
|
+
content = '#!/usr/bin/env node\n' + content;
|
|
24
|
+
fs.writeFileSync(ccsPath, content);
|
|
25
|
+
console.log('[OK] Shebang added to dist/ccs.js');
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// Make executable (Unix-like systems)
|
|
29
|
+
if (process.platform !== 'win32') {
|
|
30
|
+
try {
|
|
31
|
+
fs.chmodSync(ccsPath, 0o755);
|
|
32
|
+
console.log('[OK] dist/ccs.js is now executable');
|
|
33
|
+
} catch (err) {
|
|
34
|
+
console.warn('[!] Could not chmod dist/ccs.js:', err.message);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
addShebang();
|
package/scripts/bump-version.sh
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
# Bump CCS version
|
|
3
3
|
# Usage: ./scripts/bump-version.sh [major|minor|patch]
|
|
4
|
+
#
|
|
5
|
+
# v4.5.0+: Bootstrap architecture - shell scripts delegate to Node.js
|
|
6
|
+
# Version is maintained in: VERSION, package.json, installers/*
|
|
4
7
|
|
|
5
8
|
set -euo pipefail
|
|
6
9
|
|
|
@@ -10,7 +13,7 @@ VERSION_FILE="$CCS_DIR/VERSION"
|
|
|
10
13
|
|
|
11
14
|
# Check VERSION file exists
|
|
12
15
|
if [[ ! -f "$VERSION_FILE" ]]; then
|
|
13
|
-
echo "
|
|
16
|
+
echo "[X] Error: VERSION file not found at $VERSION_FILE"
|
|
14
17
|
exit 1
|
|
15
18
|
fi
|
|
16
19
|
|
|
@@ -20,7 +23,7 @@ echo "Current version: $CURRENT_VERSION"
|
|
|
20
23
|
|
|
21
24
|
# Parse version
|
|
22
25
|
if [[ ! "$CURRENT_VERSION" =~ ^([0-9]+)\.([0-9]+)\.([0-9]+)$ ]]; then
|
|
23
|
-
echo "
|
|
26
|
+
echo "[X] Error: Invalid version format in VERSION file"
|
|
24
27
|
echo "Expected: MAJOR.MINOR.PATCH (e.g., 1.2.3)"
|
|
25
28
|
exit 1
|
|
26
29
|
fi
|
|
@@ -46,7 +49,7 @@ case "$BUMP_TYPE" in
|
|
|
46
49
|
PATCH=$((PATCH + 1))
|
|
47
50
|
;;
|
|
48
51
|
*)
|
|
49
|
-
echo "
|
|
52
|
+
echo "[X] Error: Invalid bump type '$BUMP_TYPE'"
|
|
50
53
|
echo "Usage: $0 [major|minor|patch]"
|
|
51
54
|
exit 1
|
|
52
55
|
;;
|
|
@@ -58,11 +61,12 @@ echo "New version: $NEW_VERSION"
|
|
|
58
61
|
echo ""
|
|
59
62
|
echo "This will update hardcoded versions in:"
|
|
60
63
|
echo " 1. VERSION file"
|
|
61
|
-
echo " 2.
|
|
62
|
-
echo " 3.
|
|
63
|
-
echo " 4.
|
|
64
|
-
echo "
|
|
65
|
-
echo "
|
|
64
|
+
echo " 2. package.json (via sync-version.js)"
|
|
65
|
+
echo " 3. installers/install.sh"
|
|
66
|
+
echo " 4. installers/install.ps1"
|
|
67
|
+
echo ""
|
|
68
|
+
echo "Note: lib/ccs and lib/ccs.ps1 are now bootstraps"
|
|
69
|
+
echo " (delegate to Node.js, no version hardcoded)"
|
|
66
70
|
echo ""
|
|
67
71
|
read -p "Continue? (y/N) " -n 1 -r
|
|
68
72
|
echo
|
|
@@ -74,63 +78,47 @@ fi
|
|
|
74
78
|
|
|
75
79
|
# Update VERSION file
|
|
76
80
|
echo "$NEW_VERSION" > "$VERSION_FILE"
|
|
77
|
-
echo "
|
|
78
|
-
|
|
79
|
-
# Update ccs (bash executable)
|
|
80
|
-
CCS_BASH="$CCS_DIR/lib/ccs"
|
|
81
|
-
if [[ -f "$CCS_BASH" ]]; then
|
|
82
|
-
sed -i.bak "s/^CCS_VERSION=\".*\"/CCS_VERSION=\"$NEW_VERSION\"/" "$CCS_BASH"
|
|
83
|
-
rm -f "$CCS_BASH.bak"
|
|
84
|
-
echo "✓ Updated lib/ccs (bash executable)"
|
|
85
|
-
else
|
|
86
|
-
echo "⚠ lib/ccs not found, skipping"
|
|
87
|
-
fi
|
|
81
|
+
echo "[OK] Updated VERSION file to $NEW_VERSION"
|
|
88
82
|
|
|
89
|
-
#
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
sed -i.bak "s/^\$CcsVersion = \".*\"/\$CcsVersion = \"$NEW_VERSION\"/" "$CCS_PS1"
|
|
93
|
-
rm -f "$CCS_PS1.bak"
|
|
94
|
-
echo "✓ Updated lib/ccs.ps1 (PowerShell executable)"
|
|
95
|
-
else
|
|
96
|
-
echo "⚠ lib/ccs.ps1 not found, skipping"
|
|
97
|
-
fi
|
|
83
|
+
# Note: lib/ccs and lib/ccs.ps1 are now lightweight bootstraps
|
|
84
|
+
# They delegate to Node.js via npx - no version variable needed
|
|
85
|
+
# Version is determined by the npm package at runtime
|
|
98
86
|
|
|
99
87
|
# Update installers/install.sh
|
|
100
88
|
INSTALL_SH="$CCS_DIR/installers/install.sh"
|
|
101
89
|
if [[ -f "$INSTALL_SH" ]]; then
|
|
102
90
|
sed -i.bak "s/^CCS_VERSION=\".*\"/CCS_VERSION=\"$NEW_VERSION\"/" "$INSTALL_SH"
|
|
103
91
|
rm -f "$INSTALL_SH.bak"
|
|
104
|
-
echo "
|
|
92
|
+
echo "[OK] Updated installers/install.sh"
|
|
105
93
|
else
|
|
106
|
-
echo "
|
|
94
|
+
echo "[!] installers/install.sh not found, skipping"
|
|
107
95
|
fi
|
|
108
96
|
|
|
109
97
|
# Update installers/install.ps1
|
|
110
98
|
INSTALL_PS1="$CCS_DIR/installers/install.ps1"
|
|
111
99
|
if [[ -f "$INSTALL_PS1" ]]; then
|
|
112
|
-
sed -i.bak "s
|
|
100
|
+
sed -i.bak "s/^\\\$CcsVersion = \".*\"/\\\$CcsVersion = \"$NEW_VERSION\"/" "$INSTALL_PS1"
|
|
113
101
|
rm -f "$INSTALL_PS1.bak"
|
|
114
|
-
echo "
|
|
102
|
+
echo "[OK] Updated installers/install.ps1"
|
|
115
103
|
else
|
|
116
|
-
echo "
|
|
104
|
+
echo "[!] installers/install.ps1 not found, skipping"
|
|
117
105
|
fi
|
|
118
106
|
|
|
119
107
|
# Sync version to package.json
|
|
120
108
|
echo "Syncing version to package.json..."
|
|
121
109
|
if node "$SCRIPT_DIR/sync-version.js"; then
|
|
122
|
-
echo "
|
|
110
|
+
echo "[OK] Synced version to package.json"
|
|
123
111
|
else
|
|
124
|
-
echo "
|
|
112
|
+
echo "[X] Error: Failed to sync version to package.json"
|
|
125
113
|
exit 1
|
|
126
114
|
fi
|
|
127
115
|
|
|
128
116
|
echo ""
|
|
129
|
-
echo "
|
|
117
|
+
echo "[OK] Version bumped to $NEW_VERSION"
|
|
130
118
|
echo ""
|
|
131
119
|
echo "Next steps:"
|
|
132
120
|
echo " 1. Review changes: git diff"
|
|
133
|
-
echo " 2. Commit: git add VERSION package.json
|
|
121
|
+
echo " 2. Commit: git add VERSION package.json installers/install.sh installers/install.ps1"
|
|
134
122
|
echo " 3. Commit: git commit -m \"chore: bump version to $NEW_VERSION\""
|
|
135
123
|
echo " 4. Tag: git tag v$NEW_VERSION"
|
|
136
124
|
echo " 5. Push: git push origin main && git push origin v$NEW_VERSION"
|
package/scripts/dev-install.sh
CHANGED
|
@@ -1,35 +1,56 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
# Auto-install CCS locally for testing changes
|
|
3
|
+
# Usage: ./scripts/dev-install.sh
|
|
4
|
+
#
|
|
5
|
+
# Options:
|
|
6
|
+
# --skip-validate Skip validation (faster, use when you're sure code is good)
|
|
3
7
|
|
|
4
8
|
set -e
|
|
5
9
|
|
|
6
|
-
|
|
10
|
+
SKIP_VALIDATE=false
|
|
11
|
+
for arg in "$@"; do
|
|
12
|
+
case $arg in
|
|
13
|
+
--skip-validate) SKIP_VALIDATE=true ;;
|
|
14
|
+
esac
|
|
15
|
+
done
|
|
16
|
+
|
|
17
|
+
echo "[i] CCS Dev Install - Starting..."
|
|
7
18
|
|
|
8
19
|
# Get to the right directory
|
|
9
20
|
cd "$(dirname "$0")/.."
|
|
10
21
|
|
|
22
|
+
# Build TypeScript first
|
|
23
|
+
echo "[i] Building TypeScript..."
|
|
24
|
+
bun run build
|
|
25
|
+
|
|
11
26
|
# Pack the npm package
|
|
12
|
-
echo "[
|
|
13
|
-
|
|
27
|
+
echo "[i] Creating package..."
|
|
28
|
+
if [ "$SKIP_VALIDATE" = true ]; then
|
|
29
|
+
# Skip validation, just pack
|
|
30
|
+
bun pm pack --ignore-scripts
|
|
31
|
+
else
|
|
32
|
+
# Full pack with validation (runs prepublishOnly)
|
|
33
|
+
bun pm pack
|
|
34
|
+
fi
|
|
14
35
|
|
|
15
36
|
# Find the tarball
|
|
16
|
-
TARBALL=$(ls -t kaitranntt-ccs-*.tgz | head -1)
|
|
37
|
+
TARBALL=$(ls -t kaitranntt-ccs-*.tgz 2>/dev/null | head -1)
|
|
17
38
|
|
|
18
39
|
if [ -z "$TARBALL" ]; then
|
|
19
|
-
echo "[
|
|
40
|
+
echo "[X] ERROR: No tarball found"
|
|
20
41
|
exit 1
|
|
21
42
|
fi
|
|
22
43
|
|
|
23
|
-
echo "[
|
|
44
|
+
echo "[i] Found tarball: $TARBALL"
|
|
24
45
|
|
|
25
|
-
# Install globally
|
|
26
|
-
echo "[
|
|
46
|
+
# Install globally using npm (handles bin linking correctly)
|
|
47
|
+
echo "[i] Installing globally with npm..."
|
|
27
48
|
npm install -g "$TARBALL"
|
|
28
49
|
|
|
29
50
|
# Clean up
|
|
30
|
-
echo "[
|
|
51
|
+
echo "[i] Cleaning up..."
|
|
31
52
|
rm "$TARBALL"
|
|
32
53
|
|
|
33
|
-
echo "[
|
|
54
|
+
echo "[OK] Complete! CCS is now updated."
|
|
34
55
|
echo ""
|
|
35
|
-
echo "Test with: ccs
|
|
56
|
+
echo "Test with: ccs --version"
|
package/scripts/postinstall.js
CHANGED
|
@@ -12,14 +12,24 @@ const os = require('os');
|
|
|
12
12
|
* Runs when: npm install -g @kaitranntt/ccs
|
|
13
13
|
* Idempotent: Safe to run multiple times (won't overwrite existing configs)
|
|
14
14
|
* Cross-platform: Works on Unix, macOS, Windows
|
|
15
|
+
*
|
|
16
|
+
* Test isolation: Set CCS_HOME env var to redirect all operations to a test directory
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Get the CCS home directory (respects CCS_HOME env var for test isolation)
|
|
21
|
+
* @returns {string} Home directory path
|
|
15
22
|
*/
|
|
23
|
+
function getCcsHome() {
|
|
24
|
+
return process.env.CCS_HOME || os.homedir();
|
|
25
|
+
}
|
|
16
26
|
|
|
17
27
|
/**
|
|
18
28
|
* Validate created configuration files
|
|
19
29
|
* @returns {object} { success: boolean, errors: string[], warnings: string[] }
|
|
20
30
|
*/
|
|
21
31
|
function validateConfiguration() {
|
|
22
|
-
const homedir =
|
|
32
|
+
const homedir = getCcsHome();
|
|
23
33
|
const errors = [];
|
|
24
34
|
const warnings = [];
|
|
25
35
|
|
|
@@ -63,8 +73,8 @@ function validateConfiguration() {
|
|
|
63
73
|
|
|
64
74
|
function createConfigFiles() {
|
|
65
75
|
try {
|
|
66
|
-
// Get user home directory (cross-platform)
|
|
67
|
-
const homedir =
|
|
76
|
+
// Get user home directory (cross-platform, respects CCS_HOME for test isolation)
|
|
77
|
+
const homedir = getCcsHome();
|
|
68
78
|
const ccsDir = path.join(homedir, '.ccs');
|
|
69
79
|
|
|
70
80
|
// Create ~/.ccs/ directory if missing
|
|
@@ -93,7 +103,7 @@ function createConfigFiles() {
|
|
|
93
103
|
// Migrate from v3.1.1 to v3.2.0 (symlink architecture)
|
|
94
104
|
console.log('');
|
|
95
105
|
try {
|
|
96
|
-
const SharedManager = require('../
|
|
106
|
+
const SharedManager = require('../dist/management/shared-manager').default;
|
|
97
107
|
const sharedManager = new SharedManager();
|
|
98
108
|
sharedManager.migrateFromV311();
|
|
99
109
|
sharedManager.ensureSharedDirectories();
|
|
@@ -106,32 +116,13 @@ function createConfigFiles() {
|
|
|
106
116
|
}
|
|
107
117
|
console.log('');
|
|
108
118
|
|
|
109
|
-
//
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
const installer = new ClaudeDirInstaller();
|
|
113
|
-
const packageDir = path.join(__dirname, '..');
|
|
114
|
-
installer.install(packageDir);
|
|
115
|
-
|
|
116
|
-
// Clean up deprecated files (v4.3.2)
|
|
117
|
-
installer.cleanupDeprecated();
|
|
118
|
-
} catch (err) {
|
|
119
|
-
console.warn('[!] Failed to install .claude/ directory:', err.message);
|
|
120
|
-
console.warn(' CCS items may not be available');
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
// Install CCS items to ~/.claude/ (v4.1.0)
|
|
124
|
-
try {
|
|
125
|
-
const ClaudeSymlinkManager = require('../bin/utils/claude-symlink-manager');
|
|
126
|
-
const claudeSymlinkManager = new ClaudeSymlinkManager();
|
|
127
|
-
claudeSymlinkManager.install();
|
|
128
|
-
} catch (err) {
|
|
129
|
-
console.warn('[!] CCS item installation warning:', err.message);
|
|
130
|
-
console.warn(' Run "ccs sync" to retry');
|
|
131
|
-
}
|
|
132
|
-
console.log('');
|
|
119
|
+
// NOTE: .claude/ directory installation moved to "ccs sync" command
|
|
120
|
+
// Users can run "ccs sync" to install CCS commands/skills to ~/.claude/
|
|
121
|
+
// This gives users control over when to modify their Claude configuration
|
|
133
122
|
|
|
134
123
|
// Create config.json if missing
|
|
124
|
+
// NOTE: gemini/codex profiles NOT included - they are added on-demand when user
|
|
125
|
+
// runs `ccs gemini` or `ccs codex` for first time (requires OAuth auth first)
|
|
135
126
|
const configPath = path.join(ccsDir, 'config.json');
|
|
136
127
|
if (!fs.existsSync(configPath)) {
|
|
137
128
|
const config = {
|
|
@@ -156,12 +147,17 @@ function createConfigFiles() {
|
|
|
156
147
|
if (!config.profiles) {
|
|
157
148
|
config.profiles = {};
|
|
158
149
|
}
|
|
150
|
+
let configUpdated = false;
|
|
159
151
|
if (!config.profiles.glmt) {
|
|
160
152
|
config.profiles.glmt = '~/.ccs/glmt.settings.json';
|
|
153
|
+
configUpdated = true;
|
|
154
|
+
}
|
|
155
|
+
// NOTE: gemini/codex profiles added on-demand, not during migration
|
|
156
|
+
if (configUpdated) {
|
|
161
157
|
const tmpPath = `${configPath}.tmp`;
|
|
162
158
|
fs.writeFileSync(tmpPath, JSON.stringify(config, null, 2) + '\n', 'utf8');
|
|
163
159
|
fs.renameSync(tmpPath, configPath);
|
|
164
|
-
console.log('[OK] Updated config with
|
|
160
|
+
console.log('[OK] Updated config with glmt profile');
|
|
165
161
|
} else {
|
|
166
162
|
console.log('[OK] Config exists: ~/.ccs/config.json (preserved)');
|
|
167
163
|
}
|
|
@@ -310,6 +306,10 @@ function createConfigFiles() {
|
|
|
310
306
|
console.log('[OK] Kimi profile exists: ~/.ccs/kimi.settings.json (preserved)');
|
|
311
307
|
}
|
|
312
308
|
|
|
309
|
+
// NOTE: gemini.settings.json and codex.settings.json are NOT created during install
|
|
310
|
+
// They are created on-demand when user runs `ccs gemini` or `ccs codex` for the first time
|
|
311
|
+
// This prevents confusion - users need to run `--auth` first anyway
|
|
312
|
+
|
|
313
313
|
// Migrate existing Kimi configs to remove deprecated model fields (v4.1.2)
|
|
314
314
|
// Kimi API changed - model fields now cause 401 errors
|
|
315
315
|
if (fs.existsSync(kimiSettingsPath)) {
|