cckit 0.1.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.
package/dist/index.js ADDED
@@ -0,0 +1,176 @@
1
+ #!/usr/bin/env node
2
+ import yargs from 'yargs';
3
+ import { hideBin } from 'yargs/helpers';
4
+ import chalk from 'chalk';
5
+ import { execSync } from 'child_process';
6
+ import { createInterface } from 'readline';
7
+ import { ConfigManager } from './config.js';
8
+ import { Commands } from './commands.js';
9
+ import { initI18n, getCurrentLocale } from './i18n.js';
10
+ import { i18n } from './i18n.js';
11
+ function checkClaudeCodeInstallation() {
12
+ try {
13
+ const version = execSync('claude --version', { stdio: 'pipe', timeout: 5000 }).toString().trim();
14
+ console.log(`${chalk.green('✓')} ${chalk.green('Claude Code is installed:')} ${i18n.claude_code.installed_with_version(version)}`);
15
+ }
16
+ catch (e) {
17
+ if (e.code === 'ENOENT' || e.killed) {
18
+ console.log(chalk.yellow(i18n.claude_code.not_installed()));
19
+ console.log(i18n.claude_code.install_prompt());
20
+ const readline = createInterface({
21
+ input: process.stdin,
22
+ output: process.stdout,
23
+ });
24
+ readline.question('', (answer) => {
25
+ readline.close();
26
+ if (answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes') {
27
+ console.log(chalk.yellow(i18n.claude_code.installing()));
28
+ try {
29
+ execSync('npm install -g @anthropic-ai/claude-code --registry=https://registry.npmmirror.com', {
30
+ stdio: 'inherit',
31
+ });
32
+ console.log(`${chalk.green(i18n.claude_code.install_success())} ${chalk.dim(i18n.claude_code.restart_terminal_note())}`);
33
+ }
34
+ catch (error) {
35
+ console.log(chalk.red(i18n.claude_code.install_failed()));
36
+ console.log(i18n.claude_code.npm_requirements());
37
+ process.exit(1);
38
+ }
39
+ }
40
+ else {
41
+ console.log(chalk.yellow(i18n.claude_code.skip_install_warning()));
42
+ }
43
+ });
44
+ }
45
+ }
46
+ }
47
+ async function main() {
48
+ initI18n(getCurrentLocale());
49
+ checkClaudeCodeInstallation();
50
+ const configManager = new ConfigManager();
51
+ configManager.initialize();
52
+ const commands = new Commands(configManager);
53
+ yargs(hideBin(process.argv))
54
+ .command('list', 'List all available model providers', {}, () => {
55
+ try {
56
+ commands.list();
57
+ }
58
+ catch (error) {
59
+ console.error(chalk.red(`Error: ${error.message}`));
60
+ process.exit(1);
61
+ }
62
+ })
63
+ .command('switch <provider>', 'Switch to a specific model provider', (yargs) => yargs.positional('provider', { describe: 'The model provider to switch to', type: 'string' }), (argv) => {
64
+ try {
65
+ commands.switch(argv.provider);
66
+ }
67
+ catch (error) {
68
+ console.error(chalk.red(`Error: ${error.message}`));
69
+ process.exit(1);
70
+ }
71
+ })
72
+ .command('current', 'Show current active provider', {}, () => {
73
+ try {
74
+ commands.current();
75
+ }
76
+ catch (error) {
77
+ console.error(chalk.red(`Error: ${error.message}`));
78
+ process.exit(1);
79
+ }
80
+ })
81
+ .command('configure <provider>', 'Configure a provider', (yargs) => yargs
82
+ .positional('provider', { describe: 'The provider to configure', type: 'string' })
83
+ .option('api-key', { describe: 'API key for the provider', type: 'string' })
84
+ .option('base-url', { describe: 'Base URL for the provider', type: 'string' })
85
+ .option('model', { describe: 'Model name (can be used multiple times)', type: 'array' }), (argv) => {
86
+ try {
87
+ const models = argv.model ? (Array.isArray(argv.model) ? argv.model : [argv.model]) : undefined;
88
+ commands.configure(argv.provider, argv['api-key'], argv['base-url'], models);
89
+ }
90
+ catch (error) {
91
+ console.error(chalk.red(`Error: ${error.message}`));
92
+ process.exit(1);
93
+ }
94
+ })
95
+ .command('show <provider>', 'Show provider configuration', (yargs) => yargs.positional('provider', { describe: 'The provider to show', type: 'string' }), (argv) => {
96
+ try {
97
+ commands.show(argv.provider);
98
+ }
99
+ catch (error) {
100
+ console.error(chalk.red(`Error: ${error.message}`));
101
+ process.exit(1);
102
+ }
103
+ })
104
+ .command('test <provider>', 'Test provider connection', (yargs) => yargs.positional('provider', { describe: 'The provider to test', type: 'string' }), async (argv) => {
105
+ try {
106
+ await commands.test(argv.provider);
107
+ }
108
+ catch (error) {
109
+ console.error(chalk.red(`Error: ${error.message}`));
110
+ process.exit(1);
111
+ }
112
+ })
113
+ .command('models <provider>', 'List models for a provider', (yargs) => yargs.positional('provider', { describe: 'The provider to show models for', type: 'string' }), (argv) => {
114
+ try {
115
+ commands.models(argv.provider);
116
+ }
117
+ catch (error) {
118
+ console.error(chalk.red(`Error: ${error.message}`));
119
+ process.exit(1);
120
+ }
121
+ })
122
+ .command('set-model <provider> <model>', 'Set active model for a provider', (yargs) => yargs
123
+ .positional('provider', { describe: 'The provider name or id', type: 'string' })
124
+ .positional('model', { describe: 'The model name to set as active', type: 'string' }), (argv) => {
125
+ try {
126
+ commands.setModel(argv.provider, argv.model);
127
+ }
128
+ catch (error) {
129
+ console.error(chalk.red(`Error: ${error.message}`));
130
+ process.exit(1);
131
+ }
132
+ })
133
+ .command('export', 'Export configuration', (yargs) => yargs.option('output', { describe: 'Output file path (optional, defaults to stdout)', type: 'string' }), (argv) => {
134
+ try {
135
+ commands.export(argv.output);
136
+ }
137
+ catch (error) {
138
+ console.error(chalk.red(`Error: ${error.message}`));
139
+ process.exit(1);
140
+ }
141
+ })
142
+ .command('import <file>', 'Import configuration', (yargs) => yargs.positional('file', { describe: 'Input file path', type: 'string' }), (argv) => {
143
+ try {
144
+ commands.import(argv.file);
145
+ }
146
+ catch (error) {
147
+ console.error(chalk.red(`Error: ${error.message}`));
148
+ process.exit(1);
149
+ }
150
+ })
151
+ .command('reset', 'Reset to default Claude configuration', {}, () => {
152
+ try {
153
+ commands.reset();
154
+ }
155
+ catch (error) {
156
+ console.error(chalk.red(`Error: ${error.message}`));
157
+ process.exit(1);
158
+ }
159
+ })
160
+ .help()
161
+ .alias('help', 'h')
162
+ .version('0.1.1')
163
+ .alias('version', 'v')
164
+ .demandCommand()
165
+ .strict()
166
+ .parseAsync()
167
+ .catch((err) => {
168
+ console.error(chalk.red(`Error: ${err.message}`));
169
+ process.exit(1);
170
+ });
171
+ }
172
+ main().catch((error) => {
173
+ console.error(chalk.red(`Fatal error: ${error.message}`));
174
+ process.exit(1);
175
+ });
176
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { ModelProvider, ProviderConfig, ProviderTestResult } from './types.js';
2
+ export declare const PROVIDER_CONFIGS: Record<string, ProviderConfig>;
3
+ export declare function findProviderConfig(providerType: string): ProviderConfig | undefined;
4
+ export declare function testProvider(provider: ModelProvider): Promise<ProviderTestResult>;
5
+ //# sourceMappingURL=providers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE/E,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAqD3D,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAEnF;AAgED,wBAAsB,YAAY,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAmBvF"}
@@ -0,0 +1,131 @@
1
+ import axios from 'axios';
2
+ export const PROVIDER_CONFIGS = {
3
+ zhipu: {
4
+ provider_type: 'zhipu',
5
+ display_name: '智谱LLM (Zhipu)',
6
+ default_model: 'GLM-4.6',
7
+ base_url: 'https://open.bigmodel.cn/api/anthropic',
8
+ auth_header_name: 'Authorization',
9
+ auth_prefix: 'Bearer ',
10
+ endpoint: '/v1/messages',
11
+ capabilities: ['Chat', 'Code Generation', 'Chinese Support', 'Multi-modal'],
12
+ },
13
+ minimax: {
14
+ provider_type: 'minimax',
15
+ display_name: 'MiniMax',
16
+ default_model: 'MiniMax-M2',
17
+ base_url: 'https://api.minimaxi.com/anthropic',
18
+ auth_header_name: 'Authorization',
19
+ auth_prefix: 'Bearer ',
20
+ endpoint: '/v1/messages',
21
+ capabilities: ['Chat', 'Code Generation', 'Multi-language', 'Voice Synthesis'],
22
+ },
23
+ kimi: {
24
+ provider_type: 'kimi',
25
+ display_name: 'Kimi (Moonshot)',
26
+ default_model: 'kimi-for-coding',
27
+ base_url: 'https://api.kimi.com/coding/',
28
+ auth_header_name: 'Authorization',
29
+ auth_prefix: 'Bearer ',
30
+ endpoint: '/v1/messages',
31
+ capabilities: ['Chat', 'Long Context', 'Code Generation', 'Document Processing'],
32
+ },
33
+ claude: {
34
+ provider_type: 'claude',
35
+ display_name: 'Claude (Official)',
36
+ default_model: 'claude-3-5-sonnet-20241022',
37
+ base_url: 'https://api.anthropic.com',
38
+ auth_header_name: 'x-api-key',
39
+ auth_prefix: '',
40
+ endpoint: '/v1/messages',
41
+ api_version_header: ['anthropic-version', '2023-06-01'],
42
+ capabilities: ['Chat', 'Code Generation', 'Analysis', 'Multimodal', 'Reasoning'],
43
+ },
44
+ zenmux: {
45
+ provider_type: 'zenmux',
46
+ display_name: 'ZenMux.ai',
47
+ default_model: 'claude-3-5-sonnet-20241022',
48
+ base_url: 'https://zenmux.ai/api/anthropic',
49
+ auth_header_name: 'Authorization',
50
+ auth_prefix: 'Bearer ',
51
+ endpoint: '/v1/messages',
52
+ api_version_header: ['anthropic-version', '2023-06-01'],
53
+ capabilities: ['Model Gateway', 'Multi-provider', 'Claude Compatible', 'Load Balancing'],
54
+ },
55
+ };
56
+ export function findProviderConfig(providerType) {
57
+ return PROVIDER_CONFIGS[providerType];
58
+ }
59
+ async function testProviderGeneric(provider, config) {
60
+ const startTime = Date.now();
61
+ const modelName = provider.current_model || provider.models[0] || config.default_model;
62
+ const baseUrl = provider.base_url || config.base_url;
63
+ const url = `${baseUrl}${config.endpoint}`;
64
+ const headers = {
65
+ 'Content-Type': 'application/json',
66
+ };
67
+ if (config.auth_prefix) {
68
+ headers[config.auth_header_name] = `${config.auth_prefix}${provider.api_key}`;
69
+ }
70
+ else {
71
+ headers[config.auth_header_name] = provider.api_key;
72
+ }
73
+ if (config.api_version_header) {
74
+ headers[config.api_version_header[0]] = config.api_version_header[1];
75
+ }
76
+ const payload = {
77
+ model: modelName,
78
+ max_tokens: 100,
79
+ messages: [
80
+ {
81
+ role: 'user',
82
+ content: 'Test message',
83
+ },
84
+ ],
85
+ };
86
+ try {
87
+ const response = await axios.post(url, payload, {
88
+ headers,
89
+ timeout: 10000,
90
+ });
91
+ const responseTime = Date.now() - startTime;
92
+ return {
93
+ success: true,
94
+ message: `Successfully connected to ${provider.name}`,
95
+ model_info: {
96
+ model_name: modelName,
97
+ provider_name: provider.name,
98
+ capabilities: config.capabilities,
99
+ },
100
+ response_time_ms: responseTime,
101
+ };
102
+ }
103
+ catch (error) {
104
+ const responseTime = Date.now() - startTime;
105
+ const errorMessage = error.response?.data?.message || error.message || 'Unknown error';
106
+ return {
107
+ success: false,
108
+ message: `Failed to connect to ${provider.name}: ${errorMessage}`,
109
+ response_time_ms: responseTime,
110
+ };
111
+ }
112
+ }
113
+ export async function testProvider(provider) {
114
+ if (!provider.api_key) {
115
+ return {
116
+ success: false,
117
+ message: 'Provider is not configured with an API key',
118
+ response_time_ms: 0,
119
+ };
120
+ }
121
+ const config = findProviderConfig(provider.provider_type);
122
+ if (!config) {
123
+ return {
124
+ success: false,
125
+ message: `Unsupported provider type: ${provider.provider_type}`,
126
+ response_time_ms: 0,
127
+ };
128
+ }
129
+ return testProviderGeneric(provider, config);
130
+ }
131
+ //# sourceMappingURL=providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.js","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ export interface ModelProvider {
2
+ id: string;
3
+ name: string;
4
+ provider_type: 'zhipu' | 'minimax' | 'kimi' | 'claude' | 'zenmux';
5
+ api_key: string;
6
+ base_url?: string;
7
+ models: string[];
8
+ current_model?: string;
9
+ created_at: string;
10
+ updated_at: string;
11
+ }
12
+ export interface CCKitConfig {
13
+ providers: ModelProvider[];
14
+ current_provider_id?: string;
15
+ version: string;
16
+ created_at: string;
17
+ updated_at: string;
18
+ }
19
+ export interface ProviderTestResult {
20
+ success: boolean;
21
+ message: string;
22
+ model_info?: ModelInfo;
23
+ response_time_ms: number;
24
+ }
25
+ export interface ModelInfo {
26
+ model_name: string;
27
+ provider_name: string;
28
+ capabilities: string[];
29
+ }
30
+ export interface ProviderConfig {
31
+ provider_type: string;
32
+ display_name: string;
33
+ default_model: string;
34
+ base_url?: string;
35
+ auth_header_name: string;
36
+ auth_prefix: string;
37
+ endpoint: string;
38
+ api_version_header?: [string, string];
39
+ capabilities: string[];
40
+ }
41
+ export interface ClaudeSettings {
42
+ env: {
43
+ [key: string]: string;
44
+ };
45
+ [key: string]: any;
46
+ }
47
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAClE,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE;QACH,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;KACvB,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,62 @@
1
+ {
2
+ "name": "cckit",
3
+ "version": "0.1.1",
4
+ "description": "Code Kit for Claude Model Switching - Support 智谱LLM, MiniMax, Kimi, ZenMux.ai",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "bin": {
9
+ "cckit": "dist/index.js"
10
+ },
11
+ "files": [
12
+ "dist",
13
+ "README.md",
14
+ "LICENSE"
15
+ ],
16
+ "scripts": {
17
+ "build": "tsc",
18
+ "dev": "ts-node src/index.ts",
19
+ "test": "echo \"Error: no test specified\" && exit 1",
20
+ "prepublishOnly": "npm run build",
21
+ "prepare": "npm run build"
22
+ },
23
+ "keywords": [
24
+ "claude",
25
+ "ai",
26
+ "model-switching",
27
+ "llm",
28
+ "zhipu",
29
+ "minimax",
30
+ "kimi",
31
+ "zenmux",
32
+ "anthropic",
33
+ "cli",
34
+ "tool"
35
+ ],
36
+ "author": "Claude Code Kit",
37
+ "repository": {
38
+ "type": "git",
39
+ "url": "https://github.com/your-username/cckit.git"
40
+ },
41
+ "bugs": {
42
+ "url": "https://github.com/your-username/cckit/issues"
43
+ },
44
+ "homepage": "https://github.com/your-username/cckit#readme",
45
+ "license": "MIT",
46
+ "engines": {
47
+ "node": ">=18.0.0"
48
+ },
49
+ "devDependencies": {
50
+ "@types/node": "^24.10.1",
51
+ "@types/yargs": "^17.0.35",
52
+ "ts-node": "^10.9.2",
53
+ "typescript": "^5.9.3"
54
+ },
55
+ "dependencies": {
56
+ "axios": "^1.13.2",
57
+ "chalk": "^5.6.2",
58
+ "dotenv": "^17.2.3",
59
+ "uuid": "^13.0.0",
60
+ "yargs": "^17.7.2"
61
+ }
62
+ }