coder-link 0.0.9 → 0.1.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.
Files changed (91) hide show
  1. package/README.md +31 -13
  2. package/dist/cli.js +214 -76
  3. package/dist/cli.js.map +1 -1
  4. package/dist/lib/claude-code-manager.d.ts +8 -1
  5. package/dist/lib/claude-code-manager.d.ts.map +1 -1
  6. package/dist/lib/claude-code-manager.js +84 -118
  7. package/dist/lib/claude-code-manager.js.map +1 -1
  8. package/dist/lib/codex-manager.d.ts +34 -0
  9. package/dist/lib/codex-manager.d.ts.map +1 -0
  10. package/dist/lib/codex-manager.js +223 -0
  11. package/dist/lib/codex-manager.js.map +1 -0
  12. package/dist/lib/config-io.d.ts +5 -0
  13. package/dist/lib/config-io.d.ts.map +1 -0
  14. package/dist/lib/config-io.js +50 -0
  15. package/dist/lib/config-io.js.map +1 -0
  16. package/dist/lib/crush-manager.d.ts +1 -2
  17. package/dist/lib/crush-manager.d.ts.map +1 -1
  18. package/dist/lib/crush-manager.js +20 -58
  19. package/dist/lib/crush-manager.js.map +1 -1
  20. package/dist/lib/factory-droid-manager.d.ts +8 -2
  21. package/dist/lib/factory-droid-manager.d.ts.map +1 -1
  22. package/dist/lib/factory-droid-manager.js +193 -260
  23. package/dist/lib/factory-droid-manager.js.map +1 -1
  24. package/dist/lib/kimi-manager.d.ts.map +1 -1
  25. package/dist/lib/kimi-manager.js +19 -30
  26. package/dist/lib/kimi-manager.js.map +1 -1
  27. package/dist/lib/opencode-manager.d.ts +1 -1
  28. package/dist/lib/opencode-manager.d.ts.map +1 -1
  29. package/dist/lib/opencode-manager.js +187 -63
  30. package/dist/lib/opencode-manager.js.map +1 -1
  31. package/dist/lib/pi-manager.d.ts +0 -1
  32. package/dist/lib/pi-manager.d.ts.map +1 -1
  33. package/dist/lib/pi-manager.js +18 -41
  34. package/dist/lib/pi-manager.js.map +1 -1
  35. package/dist/lib/provider-registry.d.ts +200 -0
  36. package/dist/lib/provider-registry.d.ts.map +1 -0
  37. package/dist/lib/provider-registry.js +581 -0
  38. package/dist/lib/provider-registry.js.map +1 -0
  39. package/dist/lib/tool-manager.d.ts +42 -3
  40. package/dist/lib/tool-manager.d.ts.map +1 -1
  41. package/dist/lib/tool-manager.js +155 -34
  42. package/dist/lib/tool-manager.js.map +1 -1
  43. package/dist/mcp-services.d.ts.map +1 -1
  44. package/dist/mcp-services.js +57 -3
  45. package/dist/mcp-services.js.map +1 -1
  46. package/dist/{menu.d.ts → menu/main-menu.d.ts} +1 -1
  47. package/dist/menu/main-menu.d.ts.map +1 -0
  48. package/dist/menu/main-menu.js +90 -0
  49. package/dist/menu/main-menu.js.map +1 -0
  50. package/dist/menu/mcp-menu.d.ts +2 -0
  51. package/dist/menu/mcp-menu.d.ts.map +1 -0
  52. package/dist/menu/mcp-menu.js +136 -0
  53. package/dist/menu/mcp-menu.js.map +1 -0
  54. package/dist/menu/provider-menu.d.ts +4 -0
  55. package/dist/menu/provider-menu.d.ts.map +1 -0
  56. package/dist/menu/provider-menu.js +623 -0
  57. package/dist/menu/provider-menu.js.map +1 -0
  58. package/dist/menu/shared.d.ts +17 -0
  59. package/dist/menu/shared.d.ts.map +1 -0
  60. package/dist/menu/shared.js +255 -0
  61. package/dist/menu/shared.js.map +1 -0
  62. package/dist/menu/system-menu.d.ts +3 -0
  63. package/dist/menu/system-menu.d.ts.map +1 -0
  64. package/dist/menu/system-menu.js +111 -0
  65. package/dist/menu/system-menu.js.map +1 -0
  66. package/dist/menu/tool-menu.d.ts +3 -0
  67. package/dist/menu/tool-menu.d.ts.map +1 -0
  68. package/dist/menu/tool-menu.js +619 -0
  69. package/dist/menu/tool-menu.js.map +1 -0
  70. package/dist/utils/api-test.d.ts +6 -0
  71. package/dist/utils/api-test.d.ts.map +1 -1
  72. package/dist/utils/api-test.js +66 -0
  73. package/dist/utils/api-test.js.map +1 -1
  74. package/dist/utils/brand.d.ts.map +1 -1
  75. package/dist/utils/brand.js +14 -0
  76. package/dist/utils/brand.js.map +1 -1
  77. package/dist/utils/config.d.ts +29 -4
  78. package/dist/utils/config.d.ts.map +1 -1
  79. package/dist/utils/config.js +194 -68
  80. package/dist/utils/config.js.map +1 -1
  81. package/dist/utils/providers.d.ts +32 -0
  82. package/dist/utils/providers.d.ts.map +1 -0
  83. package/dist/utils/providers.js +63 -0
  84. package/dist/utils/providers.js.map +1 -0
  85. package/dist/wizard.d.ts.map +1 -1
  86. package/dist/wizard.js +123 -35
  87. package/dist/wizard.js.map +1 -1
  88. package/package.json +1 -1
  89. package/dist/menu.d.ts.map +0 -1
  90. package/dist/menu.js +0 -1226
  91. package/dist/menu.js.map +0 -1
@@ -1,7 +1,9 @@
1
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
2
- import { dirname, join } from 'path';
1
+ import { existsSync } from 'fs';
2
+ import { join } from 'path';
3
3
  import { homedir } from 'os';
4
4
  import { logger } from '../utils/logger.js';
5
+ import { readJsonConfig, writeJsonConfig } from './config-io.js';
6
+ import { detectPlanFromUrl, getBaseUrl, getDefaultModel, } from './provider-registry.js';
5
7
  const PI_PROVIDER_ID = 'moonshot';
6
8
  export class PiManager {
7
9
  static instance = null;
@@ -16,35 +18,11 @@ export class PiManager {
16
18
  }
17
19
  return PiManager.instance;
18
20
  }
19
- ensureDir() {
20
- const dir = dirname(this.configPath);
21
- if (!existsSync(dir)) {
22
- mkdirSync(dir, { recursive: true });
23
- }
24
- }
25
21
  readConfig() {
26
- try {
27
- if (!existsSync(this.configPath))
28
- return {};
29
- const text = readFileSync(this.configPath, 'utf-8');
30
- if (!text.trim())
31
- return {};
32
- return JSON.parse(text);
33
- }
34
- catch (error) {
35
- logger.logError('PiManager.readConfig', error);
36
- throw new Error(`Failed to parse Pi models config at ${this.configPath}`);
37
- }
22
+ return readJsonConfig(this.configPath, 'PiManager');
38
23
  }
39
24
  writeConfig(config) {
40
- try {
41
- this.ensureDir();
42
- writeFileSync(this.configPath, JSON.stringify(config, null, 2), 'utf-8');
43
- }
44
- catch (error) {
45
- logger.logError('PiManager.writeConfig', error);
46
- throw new Error(`Failed to write Pi models config at ${this.configPath}`);
47
- }
25
+ writeJsonConfig(this.configPath, config, 'PiManager', 2);
48
26
  }
49
27
  async detectCurrentConfig() {
50
28
  try {
@@ -61,16 +39,8 @@ export class PiManager {
61
39
  model = models[0].id;
62
40
  }
63
41
  if (typeof apiKey === 'string' && apiKey.trim()) {
64
- // Detect plan from base_url
65
- let plan = 'kimi';
66
- if (typeof baseUrl === 'string') {
67
- if (baseUrl.includes('openrouter.ai')) {
68
- plan = 'openrouter';
69
- }
70
- else if (baseUrl.includes('nvidia.com')) {
71
- plan = 'nvidia';
72
- }
73
- }
42
+ // Detect plan from base_url using centralized detection
43
+ const plan = detectPlanFromUrl(baseUrl) || 'kimi';
74
44
  return { plan, apiKey: apiKey.trim(), model };
75
45
  }
76
46
  return { plan: null, apiKey: null };
@@ -81,11 +51,14 @@ export class PiManager {
81
51
  }
82
52
  }
83
53
  async loadConfig(plan, apiKey, options) {
84
- if (!apiKey || !apiKey.trim()) {
54
+ // LM Studio doesn't require an API key
55
+ const planKey = plan;
56
+ const isLMStudio = planKey === 'lmstudio';
57
+ if (!isLMStudio && (!apiKey || !apiKey.trim())) {
85
58
  throw new Error('API key cannot be empty');
86
59
  }
87
- const baseUrl = options?.baseUrl?.trim() || 'https://api.moonshot.ai/v1';
88
- const modelId = options?.model?.trim() || 'moonshot-ai/kimi-k2.5';
60
+ const baseUrl = options?.baseUrl?.trim() || getBaseUrl(planKey, 'openai');
61
+ const modelId = options?.model?.trim() || getDefaultModel(planKey);
89
62
  const source = (options?.source || '').toString().trim().toLowerCase();
90
63
  // Pi supported APIs: openai-completions/openai-responses/anthropic-messages/google-generative-ai.
91
64
  // Despite the name, `openai-completions` maps to OpenAI *Chat Completions* (POST /chat/completions).
@@ -97,6 +70,10 @@ export class PiManager {
97
70
  return 'Kimi K2.5 (NVIDIA)';
98
71
  if (source === 'openrouter')
99
72
  return 'Kimi K2.5 (OpenRouter)';
73
+ if (source === 'alibaba')
74
+ return 'Qwen3 Coder Plus (Alibaba)';
75
+ if (source === 'alibaba-api-sg')
76
+ return 'Qwen3 Max (Alibaba API)';
100
77
  if (source === 'glm-global')
101
78
  return 'GLM (Global)';
102
79
  if (source === 'glm-china')
@@ -1 +1 @@
1
- {"version":3,"file":"pi-manager.js","sourceRoot":"","sources":["../../src/lib/pi-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pi-manager.js","sourceRoot":"","sources":["../../src/lib/pi-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,200 @@
1
+ /**
2
+ * Centralized Provider Configuration Registry
3
+ *
4
+ * This module serves as the single source of truth for all provider-related
5
+ * configurations including base URLs, default models, display names, and
6
+ * detection patterns.
7
+ *
8
+ * Benefits:
9
+ * - Eliminates duplication across manager files
10
+ * - Makes adding new providers easier (add once, works everywhere)
11
+ * - Ensures consistency across all tools
12
+ * - Simplifies maintenance and updates
13
+ */
14
+ import type { Plan } from '../utils/config.js';
15
+ export type Protocol = 'openai' | 'anthropic';
16
+ export interface ProviderUrlConfig {
17
+ /** OpenAI-compatible base URL (for /v1/chat/completions) */
18
+ openai: string;
19
+ /** Anthropic-compatible base URL (for /v1/messages) - undefined if not supported */
20
+ anthropic?: string;
21
+ }
22
+ export interface ConfigurableDefaults {
23
+ /** Default port(s) for local servers */
24
+ defaultPorts?: number[];
25
+ /** Whether baseUrl can be configured by user */
26
+ allowCustomBaseUrl?: boolean;
27
+ }
28
+ export interface ProviderConfig {
29
+ /** Unique plan identifier */
30
+ id: Plan;
31
+ /** Human-readable display name */
32
+ displayName: string;
33
+ /** Short name for config keys (no spaces, URL-safe) */
34
+ shortName: string;
35
+ /** Base URLs for each protocol */
36
+ urls: ProviderUrlConfig;
37
+ /** Default model ID */
38
+ defaultModel: string;
39
+ /** Common models for this provider */
40
+ commonModels: string[];
41
+ /** URL patterns for detecting this provider from a base URL */
42
+ detectionPatterns: string[];
43
+ /** Whether this provider supports extended thinking/reasoning */
44
+ supportsThinking: boolean;
45
+ /** Max context size for this provider */
46
+ maxContextSize: number;
47
+ /** Max output tokens for this provider */
48
+ maxOutputTokens: number;
49
+ /**
50
+ * Configurable defaults for local providers
51
+ * Allows users to override default ports or base URLs without editing code
52
+ */
53
+ configurableDefaults?: ConfigurableDefaults;
54
+ /** Whether this provider requires healthcheck on startup (typically local providers) */
55
+ requiresHealthCheck?: boolean;
56
+ }
57
+ export declare const PROVIDER_CONFIGS: Record<Plan, ProviderConfig>;
58
+ /**
59
+ * Get the provider configuration for a given plan
60
+ */
61
+ export declare function getProviderConfig(plan: Plan): ProviderConfig;
62
+ /**
63
+ * Get the base URL for a specific plan and protocol
64
+ */
65
+ export declare function getBaseUrl(plan: Plan, protocol: Protocol): string;
66
+ /**
67
+ * Check if a provider supports a specific protocol
68
+ */
69
+ export declare function supportsProtocol(plan: Plan, protocol: Protocol): boolean;
70
+ /**
71
+ * Detect the plan from a base URL
72
+ */
73
+ export declare function detectPlanFromUrl(baseUrl: string): Plan | null;
74
+ /**
75
+ * Get the default model for a plan
76
+ */
77
+ export declare function getDefaultModel(plan: Plan): string;
78
+ /**
79
+ * Get max output tokens for a model (handles special cases like qwen3-max)
80
+ */
81
+ export declare function getMaxOutputTokens(plan: Plan, model?: string): number;
82
+ /**
83
+ * Get max context size for a plan
84
+ */
85
+ export declare function getMaxContextSize(plan: Plan): number;
86
+ /**
87
+ * Check if a provider requires healthcheck on startup
88
+ */
89
+ export declare function requiresHealthCheck(plan: Plan): boolean;
90
+ /**
91
+ * Get configurable defaults for a provider
92
+ */
93
+ export declare function getConfigurableDefaults(plan: Plan): ConfigurableDefaults | undefined;
94
+ /**
95
+ * Resolve provider base URL for a specific protocol.
96
+ * This is a generic, protocol-agnostic function that handles URL normalization
97
+ * for all providers without requiring separate cases for each protocol extension.
98
+ *
99
+ * @param plan - The provider plan
100
+ * @param protocol - The target protocol ('openai' or 'anthropic')
101
+ * @param options - Optional base URL overrides
102
+ * @returns The resolved and normalized base URL
103
+ */
104
+ export declare function resolveProviderBaseUrl(plan: Plan, protocol: Protocol, options?: {
105
+ baseUrl?: string;
106
+ anthropicBaseUrl?: string;
107
+ }): string;
108
+ /**
109
+ * Resolve the effective base URL, handling user overrides and URL normalization
110
+ * @deprecated Use resolveProviderBaseUrl instead for better protocol-agnostic handling
111
+ */
112
+ export declare function resolveBaseUrl(plan: Plan, protocol: Protocol, options?: {
113
+ baseUrl?: string;
114
+ anthropicBaseUrl?: string;
115
+ }): string;
116
+ /**
117
+ * Normalize LM Studio URL for a specific protocol (protocol-agnostic)
118
+ * This is a dedicated function to handle LM Studio's URL conventions.
119
+ */
120
+ export declare function normalizeLMStudioUrl(url: string, protocol: Protocol): string;
121
+ /**
122
+ * Get all provider plans as an array
123
+ */
124
+ export declare function getAllPlans(): Plan[];
125
+ /**
126
+ * Get provider display name
127
+ */
128
+ export declare function getProviderDisplayName(plan: Plan): string;
129
+ /**
130
+ * Get provider short name (for config keys)
131
+ */
132
+ export declare function getProviderShortName(plan: Plan): string;
133
+ /**
134
+ * Check if a provider supports extended thinking
135
+ */
136
+ export declare function supportsThinking(plan: Plan, source?: string): boolean;
137
+ /**
138
+ * Check if LM Studio server is reachable
139
+ * Returns the actual base URL that responded, or null if unreachable
140
+ */
141
+ export declare function checkLMStudioHealth(baseUrl?: string, options?: {
142
+ timeoutMs?: number;
143
+ signal?: AbortSignal;
144
+ }): Promise<{
145
+ reachable: boolean;
146
+ url?: string;
147
+ version?: string;
148
+ }>;
149
+ /**
150
+ * Fetch the currently loaded model from LM Studio
151
+ * Returns the model ID if available, null otherwise
152
+ */
153
+ export declare function fetchLMStudioModel(baseUrl?: string, options?: {
154
+ timeoutMs?: number;
155
+ signal?: AbortSignal;
156
+ port?: number;
157
+ }): Promise<string | null>;
158
+ /**
159
+ * Check if LM Studio is running and has a model loaded
160
+ * Now includes health check and uses refactored URL building
161
+ */
162
+ export declare function checkLMStudioStatus(baseUrl?: string, options?: {
163
+ timeoutMs?: number;
164
+ port?: number;
165
+ }): Promise<{
166
+ running: boolean;
167
+ reachable: boolean;
168
+ modelLoaded: boolean;
169
+ modelId?: string;
170
+ actualUrl?: string;
171
+ version?: string;
172
+ }>;
173
+ /**
174
+ * Get the effective base URL for LM Studio, considering custom port configuration
175
+ */
176
+ export declare function getLMStudioBaseUrl(options?: {
177
+ port?: number;
178
+ baseUrl?: string;
179
+ }): string;
180
+ /**
181
+ * Get default LM Studio ports from configuration
182
+ */
183
+ export declare function getLMStudioDefaultPorts(): number[];
184
+ export interface ProviderHealthCheckResult {
185
+ reachable: boolean;
186
+ url?: string;
187
+ error?: string;
188
+ /** Provider-specific metadata */
189
+ metadata?: Record<string, unknown>;
190
+ }
191
+ /**
192
+ * Perform health check for any provider that requires it.
193
+ * This is a generic function that can be extended for other local providers.
194
+ */
195
+ export declare function checkProviderHealth(plan: Plan, options?: {
196
+ baseUrl?: string;
197
+ timeoutMs?: number;
198
+ signal?: AbortSignal;
199
+ }): Promise<ProviderHealthCheckResult>;
200
+ //# sourceMappingURL=provider-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-registry.d.ts","sourceRoot":"","sources":["../../src/lib/provider-registry.ts"],"names":[],"mappings":"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"}