ccjk 13.3.23 → 13.4.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 (34) hide show
  1. package/dist/chunks/auto-bootstrap.mjs +2 -2
  2. package/dist/chunks/auto-fix.mjs +52 -1
  3. package/dist/chunks/ccjk-agents.mjs +1 -1
  4. package/dist/chunks/ccjk-all.mjs +5 -5
  5. package/dist/chunks/ccjk-hooks.mjs +4 -3
  6. package/dist/chunks/ccjk-mcp.mjs +1 -1
  7. package/dist/chunks/ccjk-setup.mjs +3 -3
  8. package/dist/chunks/ccjk-skills.mjs +3 -2
  9. package/dist/chunks/ccr.mjs +1 -1
  10. package/dist/chunks/claude-code-config-manager.mjs +76 -25
  11. package/dist/chunks/claude-code-incremental-manager.mjs +7 -4
  12. package/dist/chunks/config2.mjs +33 -16
  13. package/dist/chunks/constants.mjs +2 -2
  14. package/dist/chunks/doctor.mjs +1 -1
  15. package/dist/chunks/init.mjs +2 -2
  16. package/dist/chunks/mcp.mjs +2 -2
  17. package/dist/chunks/menu-hierarchical.mjs +1 -1
  18. package/dist/chunks/notification.mjs +5 -5
  19. package/dist/chunks/onboarding-wizard.mjs +1 -1
  20. package/dist/chunks/package.mjs +1 -1
  21. package/dist/chunks/plugin.mjs +2 -2
  22. package/dist/chunks/quick-provider.mjs +6 -1
  23. package/dist/chunks/remote.mjs +2 -2
  24. package/dist/chunks/skills-sync.mjs +3 -3
  25. package/dist/chunks/slash-commands.mjs +1 -1
  26. package/dist/chunks/status.mjs +26 -0
  27. package/dist/index.d.mts +174 -59
  28. package/dist/index.d.ts +174 -59
  29. package/dist/index.mjs +9 -345
  30. package/dist/shared/{ccjk.eIn-g1yI.mjs → ccjk.BBizCO6_.mjs} +3 -2
  31. package/dist/shared/{ccjk.CLUL0pAV.mjs → ccjk.BNVSnyu0.mjs} +4 -3
  32. package/dist/shared/{ccjk.BtB1e5jm.mjs → ccjk.D0g2ABGg.mjs} +3 -3
  33. package/dist/shared/{ccjk.DRfdq6yl.mjs → ccjk.DypYla6I.mjs} +2 -1
  34. package/package.json +1 -1
package/dist/index.mjs CHANGED
@@ -1,6 +1,7 @@
1
- export { P as ProjectAnalyzer, T as TemplatesClient, d as analyzeDependencies, a as analyzeProject, h as batchAnalyze, b as createTemplatesClient, e as detectProject, f as detectProjectType, g as getTemplatesClient } from './shared/ccjk.DRfdq6yl.mjs';
2
- import { a as createCloudClient } from './shared/ccjk.CLUL0pAV.mjs';
3
- export { C as CachedCloudClient, b as CloudCache, d as CloudClient, F as FallbackCloudClient, R as RetryableCloudClient, T as TelemetryReporter, c as createCompleteCloudClient, g as getTelemetry, i as initializeTelemetry, r as retryUtils, s as stopTelemetry, t as telemetryUtils, e as trackEvent, w as withRetry } from './shared/ccjk.CLUL0pAV.mjs';
1
+ export { P as ProjectAnalyzer, T as TemplatesClient, d as analyzeDependencies, a as analyzeProject, h as batchAnalyze, b as createTemplatesClient, e as detectProject, f as detectProjectType, g as getTemplatesClient } from './shared/ccjk.DypYla6I.mjs';
2
+ import { a as createCloudClient } from './shared/ccjk.BNVSnyu0.mjs';
3
+ export { C as CachedCloudClient, b as CloudCache, d as CloudClient, F as FallbackCloudClient, R as RetryableCloudClient, T as TelemetryReporter, c as createCompleteCloudClient, g as getTelemetry, i as initializeTelemetry, r as retryUtils, s as stopTelemetry, t as telemetryUtils, e as trackEvent, w as withRetry } from './shared/ccjk.BNVSnyu0.mjs';
4
+ import { CLOUD_ENDPOINTS } from './chunks/constants.mjs';
4
5
  export { C as CloudError, a as CloudErrorCode, b as CloudErrorFactory, f as formatErrorForLogging, g as getRetryDelay, h as handleCloudError, i as isAuthError, c as isRateLimitError, d as isRetryableError, e as isRetryableErrorCode } from './shared/ccjk.D8ZLYSZZ.mjs';
5
6
  import { e as extractString } from './shared/ccjk.C2jHOZVP.mjs';
6
7
  export { a as extractDisplayName, i as i18nHelpers, n as normalizeRecommendation, b as normalizeRecommendations } from './shared/ccjk.C2jHOZVP.mjs';
@@ -13,7 +14,7 @@ import { promisify } from 'node:util';
13
14
  import a from './chunks/index2.mjs';
14
15
  import { g as getRuntimeVersion } from './shared/ccjk.gDEDGD_t.mjs';
15
16
  import { j as join$1 } from './shared/ccjk.bQ7Dh1g4.mjs';
16
- export { k as config } from './chunks/config2.mjs';
17
+ export { j as config } from './chunks/config2.mjs';
17
18
  export { a as loggerUtils } from './shared/ccjk.BJMRY2Ra.mjs';
18
19
  export { p as platform } from './chunks/platform.mjs';
19
20
  import { Transform } from 'node:stream';
@@ -38,7 +39,6 @@ import 'fs';
38
39
  import 'child_process';
39
40
  import 'buffer';
40
41
  import 'string_decoder';
41
- import './chunks/constants.mjs';
42
42
  import './chunks/claude-config.mjs';
43
43
  import './chunks/json-config.mjs';
44
44
  import './chunks/fs-operations.mjs';
@@ -47,342 +47,6 @@ import './shared/ccjk.DScm_NnL.mjs';
47
47
  import './chunks/main.mjs';
48
48
  import 'module';
49
49
 
50
- async function getCloudRecommendedHooks(projectInfo, options = {}) {
51
- const { includeCommunity = true, includePremium = false, limit = 10 } = options;
52
- try {
53
- const recommendations = await fetchCloudRecommendations(projectInfo, {
54
- includeCommunity,
55
- includePremium,
56
- limit
57
- });
58
- return recommendations;
59
- } catch (error) {
60
- console.error("Failed to fetch cloud recommendations:", error);
61
- return [];
62
- }
63
- }
64
- async function fetchCloudRecommendations(projectInfo, options) {
65
- const recommendations = [];
66
- const baseRecommendations = getBaseRecommendations(projectInfo);
67
- recommendations.push(...baseRecommendations);
68
- if (projectInfo.frameworks?.length > 0) {
69
- const frameworkRecs = getFrameworkRecommendations(projectInfo);
70
- recommendations.push(...frameworkRecs);
71
- }
72
- if (projectInfo.configFiles?.length > 0) {
73
- const toolRecs = getToolRecommendations(projectInfo);
74
- recommendations.push(...toolRecs);
75
- }
76
- let filtered = recommendations;
77
- if (!options.includeCommunity) {
78
- filtered = filtered.filter((r) => r.metadata?.tags?.includes("official"));
79
- }
80
- if (!options.includePremium) {
81
- filtered = filtered.filter((r) => !r.metadata?.tags?.includes("premium"));
82
- }
83
- if (options.limit > 0) {
84
- filtered = filtered.slice(0, options.limit);
85
- }
86
- filtered.sort((a, b) => (b.priority || 0) - (a.priority || 0));
87
- return filtered;
88
- }
89
- function getBaseRecommendations(projectInfo) {
90
- const recommendations = [];
91
- const projectType = projectInfo.projectType.toLowerCase();
92
- if (projectType.includes("typescript") || projectType.includes("javascript")) {
93
- recommendations.push(
94
- {
95
- name: "cloud-pre-commit-security",
96
- description: "Advanced security scanning (Cloud)",
97
- type: "pre-commit",
98
- category: "pre-commit",
99
- projectTypes: ["typescript", "javascript"],
100
- trigger: {
101
- matcher: "git:pre-commit"
102
- },
103
- action: {
104
- command: "ccjk-cloud",
105
- args: ["scan", "security", "--staged"],
106
- timeout: 6e4
107
- },
108
- enabled: true,
109
- priority: 200,
110
- metadata: {
111
- tags: ["official", "security", "cloud"],
112
- version: "1.0.0"
113
- }
114
- },
115
- {
116
- name: "cloud-dependency-check",
117
- description: "Check for vulnerable dependencies",
118
- type: "pre-commit",
119
- category: "pre-commit",
120
- projectTypes: ["typescript", "javascript"],
121
- trigger: {
122
- matcher: "git:pre-commit",
123
- condition: "package-lock.json || yarn.lock || pnpm-lock.yaml"
124
- },
125
- action: {
126
- command: "ccjk-cloud",
127
- args: ["audit", "dependencies"],
128
- timeout: 3e4
129
- },
130
- enabled: true,
131
- priority: 190,
132
- metadata: {
133
- tags: ["official", "security", "cloud"],
134
- version: "1.0.0"
135
- }
136
- }
137
- );
138
- }
139
- if (projectType.includes("python")) {
140
- recommendations.push(
141
- {
142
- name: "cloud-python-security",
143
- description: "Python security analysis",
144
- type: "pre-commit",
145
- category: "pre-commit",
146
- projectTypes: ["python"],
147
- trigger: {
148
- matcher: "git:pre-commit"
149
- },
150
- action: {
151
- command: "ccjk-cloud",
152
- args: ["scan", "python-security"],
153
- timeout: 45e3
154
- },
155
- enabled: true,
156
- priority: 200,
157
- metadata: {
158
- tags: ["official", "security", "cloud"],
159
- version: "1.0.0"
160
- }
161
- }
162
- );
163
- }
164
- if (projectType.includes("rust")) {
165
- recommendations.push(
166
- {
167
- name: "cloud-rust-audit",
168
- description: "Audit Rust dependencies for vulnerabilities",
169
- type: "pre-commit",
170
- category: "pre-commit",
171
- projectTypes: ["rust"],
172
- trigger: {
173
- matcher: "git:pre-commit",
174
- condition: "Cargo.lock"
175
- },
176
- action: {
177
- command: "ccjk-cloud",
178
- args: ["audit", "cargo"],
179
- timeout: 3e4
180
- },
181
- enabled: true,
182
- priority: 200,
183
- metadata: {
184
- tags: ["official", "security", "cloud"],
185
- version: "1.0.0"
186
- }
187
- }
188
- );
189
- }
190
- return recommendations;
191
- }
192
- function getFrameworkRecommendations(projectInfo) {
193
- const recommendations = [];
194
- for (const framework of projectInfo.frameworks) {
195
- const frameworkName = framework.name.toLowerCase();
196
- if (frameworkName.includes("react")) {
197
- recommendations.push(
198
- {
199
- name: "cloud-react-performance",
200
- description: "Analyze React bundle performance",
201
- type: "post-build",
202
- category: "lifecycle",
203
- projectTypes: ["typescript", "javascript"],
204
- trigger: {
205
- matcher: "command:*build*"
206
- },
207
- action: {
208
- command: "ccjk-cloud",
209
- args: ["analyze", "react-bundle"],
210
- timeout: 3e4
211
- },
212
- enabled: true,
213
- priority: 150,
214
- metadata: {
215
- tags: ["official", "react", "performance", "cloud"],
216
- version: "1.0.0"
217
- }
218
- }
219
- );
220
- }
221
- if (frameworkName.includes("vue")) {
222
- recommendations.push(
223
- {
224
- name: "cloud-vue-analysis",
225
- description: "Vue specific code analysis",
226
- type: "pre-commit",
227
- category: "pre-commit",
228
- projectTypes: ["typescript", "javascript"],
229
- trigger: {
230
- matcher: "git:pre-commit"
231
- },
232
- action: {
233
- command: "ccjk-cloud",
234
- args: ["analyze", "vue"],
235
- timeout: 2e4
236
- },
237
- enabled: true,
238
- priority: 150,
239
- metadata: {
240
- tags: ["official", "vue", "cloud"],
241
- version: "1.0.0"
242
- }
243
- }
244
- );
245
- }
246
- if (frameworkName.includes("django")) {
247
- recommendations.push(
248
- {
249
- name: "cloud-django-checks",
250
- description: "Run Django system checks",
251
- type: "pre-commit",
252
- category: "pre-commit",
253
- projectTypes: ["python"],
254
- trigger: {
255
- matcher: "git:pre-commit",
256
- condition: "*.py"
257
- },
258
- action: {
259
- command: "ccjk-cloud",
260
- args: ["django", "checks"],
261
- timeout: 15e3
262
- },
263
- enabled: true,
264
- priority: 150,
265
- metadata: {
266
- tags: ["official", "django", "cloud"],
267
- version: "1.0.0"
268
- }
269
- }
270
- );
271
- }
272
- }
273
- return recommendations;
274
- }
275
- function getToolRecommendations(projectInfo) {
276
- const recommendations = [];
277
- const configFiles = projectInfo.configFiles || [];
278
- if (configFiles.some((f) => f.includes("eslint"))) {
279
- recommendations.push({
280
- name: "cloud-eslint-advanced",
281
- description: "Advanced ESLint analysis with custom rules",
282
- type: "pre-commit",
283
- category: "pre-commit",
284
- projectTypes: ["typescript", "javascript"],
285
- trigger: {
286
- matcher: "git:pre-commit"
287
- },
288
- action: {
289
- command: "ccjk-cloud",
290
- args: ["lint", "eslint", "--advanced"],
291
- timeout: 25e3
292
- },
293
- enabled: true,
294
- priority: 140,
295
- metadata: {
296
- tags: ["official", "eslint", "cloud"],
297
- version: "1.0.0"
298
- }
299
- });
300
- }
301
- if (configFiles.some((f) => f.includes("jest") || f.includes("vitest") || f.includes("mocha"))) {
302
- recommendations.push({
303
- name: "cloud-test-intelligence",
304
- description: "Smart test execution based on changes",
305
- type: "pre-commit",
306
- category: "pre-commit",
307
- projectTypes: ["typescript", "javascript"],
308
- trigger: {
309
- matcher: "git:pre-commit"
310
- },
311
- action: {
312
- command: "ccjk-cloud",
313
- args: ["test", "intelligent"],
314
- timeout: 12e4
315
- },
316
- enabled: true,
317
- priority: 160,
318
- metadata: {
319
- tags: ["official", "testing", "cloud", "intelligent"],
320
- version: "1.0.0"
321
- }
322
- });
323
- }
324
- return recommendations;
325
- }
326
- async function submitHookAnalytics(hookName, projectInfo, result) {
327
- try {
328
- console.log(`Analytics: Hook ${hookName} ${result} for ${projectInfo.projectType} project`);
329
- } catch (_error) {
330
- }
331
- }
332
- async function getCommunityHooks(limit = 10, category) {
333
- const communityHooks = [
334
- {
335
- name: "community-commit-emoji",
336
- description: "Add emoji to commit messages based on changes",
337
- type: "post-commit",
338
- category: "lifecycle",
339
- projectTypes: ["typescript", "javascript", "python"],
340
- trigger: {
341
- matcher: "git:post-commit"
342
- },
343
- action: {
344
- command: "ccjk-community",
345
- args: ["commit-emoji"],
346
- timeout: 5e3
347
- },
348
- enabled: true,
349
- priority: 100,
350
- metadata: {
351
- tags: ["community", "git", "fun"],
352
- author: "ccjk-user-123",
353
- version: "1.0.0"
354
- }
355
- },
356
- {
357
- name: "community-code-poetry",
358
- description: "Generate poetry from your code",
359
- type: "post-commit",
360
- category: "lifecycle",
361
- projectTypes: ["typescript", "javascript", "python"],
362
- trigger: {
363
- matcher: "git:post-commit"
364
- },
365
- action: {
366
- command: "ccjk-community",
367
- args: ["code-poetry"],
368
- timeout: 1e4
369
- },
370
- enabled: false,
371
- priority: 50,
372
- metadata: {
373
- tags: ["community", "fun", "ai"],
374
- author: "poet-coder",
375
- version: "1.0.0"
376
- }
377
- }
378
- ];
379
- let filtered = communityHooks;
380
- if (category) {
381
- filtered = filtered.filter((h) => h.category === category);
382
- }
383
- return filtered.slice(0, limit);
384
- }
385
-
386
50
  async function getCloudRecommendations(analysis) {
387
51
  try {
388
52
  const client = createCloudClient();
@@ -659,7 +323,7 @@ function isTemplateParameterValue(value) {
659
323
  return false;
660
324
  }
661
325
 
662
- const API_BASE_URL$2 = "https://api.claudehome.cn/api/v1";
326
+ const API_BASE_URL$2 = `${CLOUD_ENDPOINTS.MAIN.BASE_URL}${CLOUD_ENDPOINTS.MAIN.API_VERSION}`;
663
327
  var RatingsApiErrorCode = /* @__PURE__ */ ((RatingsApiErrorCode2) => {
664
328
  RatingsApiErrorCode2["DUPLICATE_RATING"] = "DUPLICATE_RATING";
665
329
  RatingsApiErrorCode2["INVALID_RATING_VALUE"] = "INVALID_RATING_VALUE";
@@ -846,7 +510,7 @@ const ratingsApi = {
846
510
  isSkillNotFoundError
847
511
  };
848
512
 
849
- const API_BASE_URL$1 = "https://api.claudehome.cn/api/v1";
513
+ const API_BASE_URL$1 = `${CLOUD_ENDPOINTS.MAIN.BASE_URL}${CLOUD_ENDPOINTS.MAIN.API_VERSION}`;
850
514
  const DEFAULT_CACHE_TTL = 5 * 60 * 1e3;
851
515
  class SkillsMarketplaceApiError extends Error {
852
516
  /** HTTP status code */
@@ -1066,7 +730,7 @@ const skillsMarketplaceApi = {
1066
730
  createAbortController
1067
731
  };
1068
732
 
1069
- const API_BASE_URL = "https://api.claudehome.cn/api/v1";
733
+ const API_BASE_URL = `${CLOUD_ENDPOINTS.MAIN.BASE_URL}${CLOUD_ENDPOINTS.MAIN.API_VERSION}`;
1070
734
  function buildUrl(endpoint, params) {
1071
735
  const url = new URL(`${API_BASE_URL}${endpoint}`);
1072
736
  if (params) {
@@ -4941,4 +4605,4 @@ function assert(condition, message) {
4941
4605
  }
4942
4606
  }
4943
4607
 
4944
- export { AiderTool, BaseCodeTool, BaseError, ClaudeCodeTool, ClineTool, CodexTool, ConfigManager, ConfigValidator, ConfigurationError, ContinueTool, CursorTool, InternalError, Logger, Mutex, NotFoundError, RatingsApiError, RatingsApiErrorCode, Semaphore, TimeoutError, ToolFactory, ToolRegistry, UnauthorizedError, ValidationError, index$6 as array, assert, assertDefined, index$5 as async, batchProcessFiles, camelCase, canInstallMore, capitalize, chunk, index$4 as command, commandExists, convertBatchTemplateResponse, convertConfig, convertParameterDefault, convertProjectAnalysisResponse, convertRecommendation, convertTemplate, convertTemplateParameter, copyFile, countLines, createCloudClient, createConfigManager, createLogger, createRating, createTool, createValidator, debounce, deepClone, deepMerge, deleteDir, deleteFile, difference, ensureDir, index$3 as error, executeCommand, executeCommandStream, exists, extractString, flatten, flatten$1 as flattenArray, formatError, index$2 as fs, generateCompactWelcome, generateRecommendations, generateWelcome, get, getArchitecture, getCacheDir, getCapabilitiesByType, getCapability, getCloudMcpRecommendations, getCloudRecommendations, getCloudRecommendedHooks, getCloudSkillRecommendations, getCommandPath, getCommandVersion, getCommunityHooks, getConfigDir, getDataDir, getDisabledSkills, getEnabledSkills, getErrorMessage, getFileInfo, getFileSize, getHomeDir, getPlatform, getPlatformInfo, getQuotaUsagePercentage, getRecommendations, getRegistry, getSkillRatings, getTempDir, getUserQuota, getUserSkills, has, installSkill, intersection, isArray, isBoolean, isDefined, isDirectory, isDuplicateRatingError, isEmail, isFile, isLargeFile, isLinux, isMacOS, isNumber, isObject, isRecommendationConfig, isSkillInstalled, isSkillNotFoundError, isString, isTelemetryEventData, isTemplateParameterValue, isURL, isUnauthorizedError, isUnix, isWindows, kebabCase, listDirs, listFiles, logger, moveFile, index$1 as object, omit, parallelLimit, partition, pascalCase, pick, processLargeFile, processLineByLine, ratingsApi, readFile, readJSON, retry, scanCapabilities, sequence, set, shuffle, skillsMarketplaceApi, sleep, slugify, snakeCase, sortByLastUsed, sortByUsage, streamJSON, streamWriteJSON, index as string, submitHookAnalytics, template, throttle, timeout, truncate, tryCatch, tryCatchAsync, unflatten, uninstallSkill, union, unique, updateSkill, userSkillsApi, validateBatchTemplateRequest, validateProjectAnalysisRequest, validateUsageReport, validation, validators, waitFor, wrapError, writeFile, writeJSON };
4608
+ export { AiderTool, BaseCodeTool, BaseError, ClaudeCodeTool, ClineTool, CodexTool, ConfigManager, ConfigValidator, ConfigurationError, ContinueTool, CursorTool, InternalError, Logger, Mutex, NotFoundError, RatingsApiError, RatingsApiErrorCode, Semaphore, TimeoutError, ToolFactory, ToolRegistry, UnauthorizedError, ValidationError, index$6 as array, assert, assertDefined, index$5 as async, batchProcessFiles, camelCase, canInstallMore, capitalize, chunk, index$4 as command, commandExists, convertBatchTemplateResponse, convertConfig, convertParameterDefault, convertProjectAnalysisResponse, convertRecommendation, convertTemplate, convertTemplateParameter, copyFile, countLines, createCloudClient, createConfigManager, createLogger, createRating, createTool, createValidator, debounce, deepClone, deepMerge, deleteDir, deleteFile, difference, ensureDir, index$3 as error, executeCommand, executeCommandStream, exists, extractString, flatten, flatten$1 as flattenArray, formatError, index$2 as fs, generateCompactWelcome, generateRecommendations, generateWelcome, get, getArchitecture, getCacheDir, getCapabilitiesByType, getCapability, getCloudMcpRecommendations, getCloudRecommendations, getCloudSkillRecommendations, getCommandPath, getCommandVersion, getConfigDir, getDataDir, getDisabledSkills, getEnabledSkills, getErrorMessage, getFileInfo, getFileSize, getHomeDir, getPlatform, getPlatformInfo, getQuotaUsagePercentage, getRecommendations, getRegistry, getSkillRatings, getTempDir, getUserQuota, getUserSkills, has, installSkill, intersection, isArray, isBoolean, isDefined, isDirectory, isDuplicateRatingError, isEmail, isFile, isLargeFile, isLinux, isMacOS, isNumber, isObject, isRecommendationConfig, isSkillInstalled, isSkillNotFoundError, isString, isTelemetryEventData, isTemplateParameterValue, isURL, isUnauthorizedError, isUnix, isWindows, kebabCase, listDirs, listFiles, logger, moveFile, index$1 as object, omit, parallelLimit, partition, pascalCase, pick, processLargeFile, processLineByLine, ratingsApi, readFile, readJSON, retry, scanCapabilities, sequence, set, shuffle, skillsMarketplaceApi, sleep, slugify, snakeCase, sortByLastUsed, sortByUsage, streamJSON, streamWriteJSON, index as string, template, throttle, timeout, truncate, tryCatch, tryCatchAsync, unflatten, uninstallSkill, union, unique, updateSkill, userSkillsApi, validateBatchTemplateRequest, validateProjectAnalysisRequest, validateUsageReport, validation, validators, waitFor, wrapError, writeFile, writeJSON };
@@ -1,9 +1,10 @@
1
1
  import { existsSync, readFileSync, mkdirSync, unlinkSync } from 'node:fs';
2
2
  import os__default, { homedir } from 'node:os';
3
- import { c as createDefaultGateway } from './ccjk.BtB1e5jm.mjs';
3
+ import { c as createDefaultGateway } from './ccjk.D0g2ABGg.mjs';
4
4
  import { writeFileAtomic } from '../chunks/fs-operations.mjs';
5
5
  import { Buffer } from 'node:buffer';
6
6
  import crypto from 'node:crypto';
7
+ import { CLOUD_ENDPOINTS } from '../chunks/constants.mjs';
7
8
  import { j as join } from './ccjk.bQ7Dh1g4.mjs';
8
9
 
9
10
  function validateBindRequest(request) {
@@ -237,7 +238,7 @@ function maskToken(token) {
237
238
  return `${prefix}***...***${suffix}`;
238
239
  }
239
240
 
240
- const CLOUD_API_BASE_URL = "https://api.claudehome.cn";
241
+ const CLOUD_API_BASE_URL = CLOUD_ENDPOINTS.MAIN.BASE_URL;
241
242
  const POLL_TIMEOUT = 6e4;
242
243
  const TOKEN_FILE_PATH = join(homedir(), ".ccjk", "cloud-token.json");
243
244
  class CCJKCloudClient {
@@ -1,7 +1,8 @@
1
- import { c as consola, o as ofetch } from './ccjk.DRfdq6yl.mjs';
1
+ import { c as consola, o as ofetch } from './ccjk.DypYla6I.mjs';
2
2
  import fs__default, { readFileSync } from 'node:fs';
3
3
  import path__default, { dirname, join } from 'node:path';
4
4
  import { fileURLToPath } from 'node:url';
5
+ import { CLOUD_ENDPOINTS } from '../chunks/constants.mjs';
5
6
  import { randomUUID } from 'node:crypto';
6
7
 
7
8
  const defaults = Object.freeze({
@@ -924,7 +925,7 @@ try {
924
925
  } catch {
925
926
  }
926
927
  const API_PREFIX = "/api/v1";
927
- const HEALTH_PATH = "/health";
928
+ const HEALTH_PATH = `${API_PREFIX}/health`;
928
929
  class CloudClient {
929
930
  fetch;
930
931
  config;
@@ -1168,7 +1169,7 @@ class CloudClient {
1168
1169
  }
1169
1170
  function createCloudClient(config) {
1170
1171
  return new CloudClient({
1171
- baseURL: "https://api.claudehome.cn",
1172
+ baseURL: CLOUD_ENDPOINTS.MAIN.BASE_URL,
1172
1173
  timeout: 1e4,
1173
1174
  version: CCJK_VERSION,
1174
1175
  enableCache: true,
@@ -44,13 +44,13 @@ const ROUTE_MAP = {
44
44
  },
45
45
  // Notification endpoints (remote API)
46
46
  "notifications.bind": {
47
- v1: "/bind/use"
47
+ v1: "/api/v1/bind/use"
48
48
  },
49
49
  "notifications.send": {
50
- v1: "/notify"
50
+ v1: "/api/v1/notify"
51
51
  },
52
52
  "notifications.poll": {
53
- v1: "/reply/poll"
53
+ v1: "/api/v1/reply/poll"
54
54
  }
55
55
  };
56
56
  class CloudApiGateway {
@@ -2,6 +2,7 @@ import { promises, existsSync } from 'node:fs';
2
2
  import posix from '../chunks/index8.mjs';
3
3
  import { glob } from 'tinyglobby';
4
4
  import { p as parse } from './ccjk.BBtCGd_g.mjs';
5
+ import { CLOUD_ENDPOINTS } from '../chunks/constants.mjs';
5
6
 
6
7
  const LogLevels = {
7
8
  fatal: 0,
@@ -3667,7 +3668,7 @@ class TemplatesClient {
3667
3668
  language;
3668
3669
  logger = consola.withTag("templates-client");
3669
3670
  constructor(config = {}) {
3670
- this.baseURL = config.baseURL || "https://api.claudehome.cn";
3671
+ this.baseURL = config.baseURL || CLOUD_ENDPOINTS.MAIN.BASE_URL;
3671
3672
  this.language = config.language || "en";
3672
3673
  this.fetch = ofetch.create({
3673
3674
  baseURL: this.baseURL,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ccjk",
3
3
  "type": "module",
4
- "version": "13.3.23",
4
+ "version": "13.4.0",
5
5
  "packageManager": "pnpm@10.17.1",
6
6
  "description": "Turn Claude Code into a production-ready AI dev environment with one-command setup, persistent memory, MCP automation, cloud sync, and zero-config browser workflows.",
7
7
  "author": {