coder-link 0.0.9

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.
Files changed (88) hide show
  1. package/README.md +200 -0
  2. package/dist/cli.d.ts +3 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +684 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/index.d.ts +12 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +12 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/lib/amp-manager.d.ts +24 -0
  11. package/dist/lib/amp-manager.d.ts.map +1 -0
  12. package/dist/lib/amp-manager.js +46 -0
  13. package/dist/lib/amp-manager.js.map +1 -0
  14. package/dist/lib/claude-code-manager.d.ts +55 -0
  15. package/dist/lib/claude-code-manager.d.ts.map +1 -0
  16. package/dist/lib/claude-code-manager.js +408 -0
  17. package/dist/lib/claude-code-manager.js.map +1 -0
  18. package/dist/lib/crush-manager.d.ts +31 -0
  19. package/dist/lib/crush-manager.d.ts.map +1 -0
  20. package/dist/lib/crush-manager.js +262 -0
  21. package/dist/lib/crush-manager.js.map +1 -0
  22. package/dist/lib/factory-droid-manager.d.ts +36 -0
  23. package/dist/lib/factory-droid-manager.d.ts.map +1 -0
  24. package/dist/lib/factory-droid-manager.js +387 -0
  25. package/dist/lib/factory-droid-manager.js.map +1 -0
  26. package/dist/lib/kimi-manager.d.ts +34 -0
  27. package/dist/lib/kimi-manager.d.ts.map +1 -0
  28. package/dist/lib/kimi-manager.js +316 -0
  29. package/dist/lib/kimi-manager.js.map +1 -0
  30. package/dist/lib/opencode-manager.d.ts +31 -0
  31. package/dist/lib/opencode-manager.d.ts.map +1 -0
  32. package/dist/lib/opencode-manager.js +315 -0
  33. package/dist/lib/opencode-manager.js.map +1 -0
  34. package/dist/lib/pi-manager.d.ts +30 -0
  35. package/dist/lib/pi-manager.d.ts.map +1 -0
  36. package/dist/lib/pi-manager.js +196 -0
  37. package/dist/lib/pi-manager.js.map +1 -0
  38. package/dist/lib/tool-manager.d.ts +51 -0
  39. package/dist/lib/tool-manager.d.ts.map +1 -0
  40. package/dist/lib/tool-manager.js +113 -0
  41. package/dist/lib/tool-manager.js.map +1 -0
  42. package/dist/locales/en_US.json +49 -0
  43. package/dist/locales/zh_CN.json +49 -0
  44. package/dist/mcp-services.d.ts +3 -0
  45. package/dist/mcp-services.d.ts.map +1 -0
  46. package/dist/mcp-services.js +26 -0
  47. package/dist/mcp-services.js.map +1 -0
  48. package/dist/menu.d.ts +2 -0
  49. package/dist/menu.d.ts.map +1 -0
  50. package/dist/menu.js +1226 -0
  51. package/dist/menu.js.map +1 -0
  52. package/dist/utils/api-test.d.ts +32 -0
  53. package/dist/utils/api-test.d.ts.map +1 -0
  54. package/dist/utils/api-test.js +163 -0
  55. package/dist/utils/api-test.js.map +1 -0
  56. package/dist/utils/brand.d.ts +39 -0
  57. package/dist/utils/brand.d.ts.map +1 -0
  58. package/dist/utils/brand.js +195 -0
  59. package/dist/utils/brand.js.map +1 -0
  60. package/dist/utils/config.d.ts +100 -0
  61. package/dist/utils/config.d.ts.map +1 -0
  62. package/dist/utils/config.js +483 -0
  63. package/dist/utils/config.js.map +1 -0
  64. package/dist/utils/exec.d.ts +5 -0
  65. package/dist/utils/exec.d.ts.map +1 -0
  66. package/dist/utils/exec.js +145 -0
  67. package/dist/utils/exec.js.map +1 -0
  68. package/dist/utils/i18n.d.ts +56 -0
  69. package/dist/utils/i18n.d.ts.map +1 -0
  70. package/dist/utils/i18n.js +42 -0
  71. package/dist/utils/i18n.js.map +1 -0
  72. package/dist/utils/keyboard.d.ts +32 -0
  73. package/dist/utils/keyboard.d.ts.map +1 -0
  74. package/dist/utils/keyboard.js +109 -0
  75. package/dist/utils/keyboard.js.map +1 -0
  76. package/dist/utils/logger.d.ts +14 -0
  77. package/dist/utils/logger.d.ts.map +1 -0
  78. package/dist/utils/logger.js +55 -0
  79. package/dist/utils/logger.js.map +1 -0
  80. package/dist/utils/output.d.ts +58 -0
  81. package/dist/utils/output.d.ts.map +1 -0
  82. package/dist/utils/output.js +93 -0
  83. package/dist/utils/output.js.map +1 -0
  84. package/dist/wizard.d.ts +2 -0
  85. package/dist/wizard.d.ts.map +1 -0
  86. package/dist/wizard.js +114 -0
  87. package/dist/wizard.js.map +1 -0
  88. package/package.json +65 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wizard.d.ts","sourceRoot":"","sources":["../src/wizard.ts"],"names":[],"mappings":"AAQA,wBAAsB,SAAS,kBAoH9B"}
package/dist/wizard.js ADDED
@@ -0,0 +1,114 @@
1
+ import inquirer from 'inquirer';
2
+ import { configManager } from './utils/config.js';
3
+ import { i18n } from './utils/i18n.js';
4
+ import { toolManager } from './lib/tool-manager.js';
5
+ import { logger } from './utils/logger.js';
6
+ import { BUILTIN_MCP_SERVICES } from './mcp-services.js';
7
+ export async function runWizard() {
8
+ console.log(`\n${i18n.t('wizard.welcome')}\n`);
9
+ // Language selection
10
+ const { lang } = await inquirer.prompt([
11
+ {
12
+ type: 'list',
13
+ name: 'lang',
14
+ message: i18n.t('wizard.select_language'),
15
+ choices: [
16
+ { name: '简体中文', value: 'zh_CN' },
17
+ { name: 'English', value: 'en_US' }
18
+ ],
19
+ default: configManager.getLang()
20
+ }
21
+ ]);
22
+ configManager.setLang(lang);
23
+ i18n.setLang(lang);
24
+ // Plan selection
25
+ const { plan } = await inquirer.prompt([
26
+ {
27
+ type: 'list',
28
+ name: 'plan',
29
+ message: i18n.t('wizard.select_plan'),
30
+ choices: [
31
+ { name: 'GLM Coding Plan (Global)', value: 'glm_coding_plan_global' },
32
+ { name: 'GLM Coding Plan (China)', value: 'glm_coding_plan_china' },
33
+ { name: 'Kimi', value: 'kimi' },
34
+ { name: 'OpenRouter', value: 'openrouter' },
35
+ { name: 'NVIDIA', value: 'nvidia' }
36
+ ]
37
+ }
38
+ ]);
39
+ // API key input
40
+ const { apiKey } = await inquirer.prompt([
41
+ {
42
+ type: 'password',
43
+ name: 'apiKey',
44
+ message: i18n.t('wizard.enter_api_key'),
45
+ validate: (input) => input.trim().length > 0 || i18n.t('cli.error_general', { error: 'API key cannot be empty' })
46
+ }
47
+ ]);
48
+ const trimmed = apiKey.trim();
49
+ if (!trimmed) {
50
+ throw new Error('API key cannot be empty');
51
+ }
52
+ configManager.setAuth(plan, trimmed);
53
+ // Tool selection
54
+ const tools = toolManager.getSupportedTools();
55
+ const { selectedTools } = await inquirer.prompt([
56
+ {
57
+ type: 'checkbox',
58
+ name: 'selectedTools',
59
+ message: i18n.t('wizard.select_tools'),
60
+ choices: tools.map(tool => ({ name: tool, value: tool }))
61
+ }
62
+ ]);
63
+ // Load config into selected tools
64
+ console.log(`\n${i18n.t('wizard.loading_plan')}`);
65
+ for (const tool of selectedTools) {
66
+ try {
67
+ await toolManager.loadConfig(tool, plan, apiKey.trim());
68
+ console.log(` ✓ ${tool}`);
69
+ }
70
+ catch (error) {
71
+ logger.logError('wizard.loadConfig', error);
72
+ console.log(` ✗ ${tool}: ${error instanceof Error ? error.message : String(error)}`);
73
+ }
74
+ }
75
+ // MCP management
76
+ const { manageMCP } = await inquirer.prompt([
77
+ {
78
+ type: 'confirm',
79
+ name: 'manageMCP',
80
+ message: i18n.t('wizard.manage_mcp'),
81
+ default: false
82
+ }
83
+ ]);
84
+ if (manageMCP) {
85
+ console.log(`\n${i18n.t('mcp.list_header')}`);
86
+ for (const service of BUILTIN_MCP_SERVICES) {
87
+ const installed = await toolManager.isMCPInstalled('kimi', service.id);
88
+ console.log(` ${installed ? '✓' : ' '} ${service.id}: ${service.name}`);
89
+ }
90
+ const { installMCPs } = await inquirer.prompt([
91
+ {
92
+ type: 'checkbox',
93
+ name: 'installMCPs',
94
+ message: 'Select MCP services to install:',
95
+ choices: BUILTIN_MCP_SERVICES.map(s => ({ name: `${s.name} (${s.id})`, value: s.id }))
96
+ }
97
+ ]);
98
+ for (const mcpId of installMCPs) {
99
+ const mcp = BUILTIN_MCP_SERVICES.find(s => s.id === mcpId);
100
+ try {
101
+ await toolManager.installMCP('kimi', mcp, apiKey.trim(), plan);
102
+ console.log(` ✓ ${mcpId} installed`);
103
+ }
104
+ catch (error) {
105
+ logger.logError('wizard.installMCP', error);
106
+ console.log(` ✗ ${mcpId}: ${error instanceof Error ? error.message : String(error)}`);
107
+ }
108
+ }
109
+ }
110
+ console.log(`\n${i18n.t('wizard.complete')}\n`);
111
+ const auth = configManager.getAuth();
112
+ console.log(i18n.t('doctor.config_path', { path: auth.plan ? configManager.configPath : 'N/A' }));
113
+ }
114
+ //# sourceMappingURL=wizard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wizard.js","sourceRoot":"","sources":["../src/wizard.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,65 @@
1
+ {
2
+ "name": "coder-link",
3
+ "version": "0.0.9",
4
+ "description": "Coder Link: connect coding tools to any model/provider",
5
+ "main": "dist/index.js",
6
+ "bin": {
7
+ "coder-link": "dist/cli.js"
8
+ },
9
+ "type": "module",
10
+ "files": [
11
+ "dist",
12
+ "README.md"
13
+ ],
14
+ "engines": {
15
+ "node": ">=18.0.0"
16
+ },
17
+ "publishConfig": {
18
+ "access": "public"
19
+ },
20
+ "scripts": {
21
+ "build": "tsc && bun scripts/copy-locales.mjs",
22
+ "dev": "tsx watch src/cli.ts",
23
+ "start": "node dist/cli.js",
24
+ "clean": "bun scripts/clean.mjs",
25
+ "prepublishOnly": "bun run clean && bun run build",
26
+ "test": "echo \"Error: no test specified\" && exit 1",
27
+ "lint": "eslint .",
28
+ "lint:fix": "eslint . --fix"
29
+ },
30
+ "repository": {
31
+ "type": "git",
32
+ "url": "https://github.com/HenkDz/coder-link.git"
33
+ },
34
+ "keywords": [
35
+ "cli",
36
+ "coding",
37
+ "helper",
38
+ "tools",
39
+ "kimi",
40
+ "glm"
41
+ ],
42
+ "author": "henkey",
43
+ "license": "MIT",
44
+ "dependencies": {
45
+ "@iarna/toml": "^2.2.5",
46
+ "chalk": "^5.3.0",
47
+ "commander": "^12.1.0",
48
+ "inquirer": "^9.2.12",
49
+ "js-yaml": "^4.1.0",
50
+ "ora": "^8.0.1",
51
+ "terminal-link": "^5.0.0"
52
+ },
53
+ "devDependencies": {
54
+ "@eslint/js": "^9.39.1",
55
+ "@types/inquirer": "^9.0.7",
56
+ "@types/js-yaml": "^4.0.9",
57
+ "@types/node": "^24.10.1",
58
+ "eslint": "^9.39.1",
59
+ "globals": "^16.5.0",
60
+ "nodemon": "^3.1.11",
61
+ "tsx": "^4.20.6",
62
+ "typescript": "^5.9.3",
63
+ "typescript-eslint": "^8.46.4"
64
+ }
65
+ }