ccjk 14.1.1 → 14.1.2
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/chunks/boost.mjs +1 -1
- package/dist/chunks/ccjk-all.mjs +20 -4
- package/dist/chunks/index.mjs +1 -1
- package/dist/chunks/init.mjs +6 -1
- package/dist/chunks/package.mjs +1 -1
- package/dist/chunks/quick-actions.mjs +1 -1
- package/dist/chunks/status.mjs +47 -9
- package/dist/cli.mjs +8 -2
- package/dist/shared/{ccjk.xkKNsC02.mjs → ccjk.D6wx-rxT.mjs} +26 -3
- package/package.json +5 -3
package/dist/chunks/boost.mjs
CHANGED
|
@@ -3,7 +3,7 @@ import { existsSync, readFileSync } from 'node:fs';
|
|
|
3
3
|
import process__default from 'node:process';
|
|
4
4
|
import { SETTINGS_FILE } from './constants.mjs';
|
|
5
5
|
import { j as join } from '../shared/ccjk.bQ7Dh1g4.mjs';
|
|
6
|
-
import { r as runHealthCheck } from '../shared/ccjk.
|
|
6
|
+
import { r as runHealthCheck } from '../shared/ccjk.D6wx-rxT.mjs';
|
|
7
7
|
import '../shared/ccjk.BAGoDD49.mjs';
|
|
8
8
|
import 'node:os';
|
|
9
9
|
import './index2.mjs';
|
package/dist/chunks/ccjk-all.mjs
CHANGED
|
@@ -82,7 +82,11 @@ class CloudSetupOrchestrator {
|
|
|
82
82
|
duration: Date.now() - this.startTime
|
|
83
83
|
};
|
|
84
84
|
}
|
|
85
|
-
const templates = await this.downloadTemplates(recommendations, options)
|
|
85
|
+
const templates = recommendations.source === "cloud" ? await this.downloadTemplates(recommendations, options) : {
|
|
86
|
+
requestId: "local-templates-skipped",
|
|
87
|
+
templates: {},
|
|
88
|
+
notFound: []
|
|
89
|
+
};
|
|
86
90
|
const result = await this.executeInstallation(recommendations, templates, options);
|
|
87
91
|
if (options.submitTelemetry !== false) {
|
|
88
92
|
this.uploadTelemetry(result).catch(() => {
|
|
@@ -194,6 +198,7 @@ class CloudSetupOrchestrator {
|
|
|
194
198
|
const data = response.data;
|
|
195
199
|
const fingerprint = this.generateProjectFingerprint(analysis);
|
|
196
200
|
const recommendations = {
|
|
201
|
+
source: "cloud",
|
|
197
202
|
skills: data.recommendations.filter((r) => r.category === "skill"),
|
|
198
203
|
mcpServices: data.recommendations.filter((r) => r.category === "mcp"),
|
|
199
204
|
agents: data.recommendations.filter((r) => r.category === "agent"),
|
|
@@ -333,6 +338,7 @@ class CloudSetupOrchestrator {
|
|
|
333
338
|
}
|
|
334
339
|
const fingerprint = this.generateProjectFingerprint(analysis);
|
|
335
340
|
return {
|
|
341
|
+
source: "local",
|
|
336
342
|
skills: recommendations.filter((r) => r.category === "skill"),
|
|
337
343
|
mcpServices: recommendations.filter((r) => r.category === "mcp"),
|
|
338
344
|
agents: recommendations.filter((r) => r.category === "agent"),
|
|
@@ -505,8 +511,17 @@ class CloudSetupOrchestrator {
|
|
|
505
511
|
}
|
|
506
512
|
return templates;
|
|
507
513
|
} catch (error) {
|
|
508
|
-
this.logger.
|
|
509
|
-
|
|
514
|
+
this.logger.warn("Failed to download templates, continuing without templates:", error);
|
|
515
|
+
return {
|
|
516
|
+
requestId: "template-download-failed",
|
|
517
|
+
templates: {},
|
|
518
|
+
notFound: [
|
|
519
|
+
...recommendations.skills.map((r) => r.id),
|
|
520
|
+
...recommendations.mcpServices.map((r) => r.id),
|
|
521
|
+
...recommendations.agents.map((r) => r.id),
|
|
522
|
+
...recommendations.hooks.map((r) => r.id)
|
|
523
|
+
]
|
|
524
|
+
};
|
|
510
525
|
}
|
|
511
526
|
}
|
|
512
527
|
/**
|
|
@@ -760,9 +775,10 @@ class CloudSetupOrchestrator {
|
|
|
760
775
|
* Generate cloud insights report
|
|
761
776
|
*/
|
|
762
777
|
async generateReport(result, recommendations, options) {
|
|
778
|
+
const reportExtension = options.reportFormat === "json" ? "json" : options.reportFormat === "html" ? "html" : "md";
|
|
763
779
|
const reportPath = join(
|
|
764
780
|
process.cwd(),
|
|
765
|
-
`ccjk-setup-report-${(/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-")}.${
|
|
781
|
+
`ccjk-setup-report-${(/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-")}.${reportExtension}`
|
|
766
782
|
);
|
|
767
783
|
let content = "";
|
|
768
784
|
if (options.reportFormat === "json") {
|
package/dist/chunks/index.mjs
CHANGED
package/dist/chunks/init.mjs
CHANGED
|
@@ -1520,7 +1520,12 @@ async function init(options = {}) {
|
|
|
1520
1520
|
apiKey: profile.apiKey,
|
|
1521
1521
|
baseUrl: profile.baseUrl,
|
|
1522
1522
|
model: profile.primaryModel,
|
|
1523
|
-
fastModel: profile.defaultHaikuModel
|
|
1523
|
+
fastModel: profile.defaultHaikuModel,
|
|
1524
|
+
authType: profile.authType,
|
|
1525
|
+
primaryModel: profile.primaryModel,
|
|
1526
|
+
defaultHaikuModel: profile.defaultHaikuModel,
|
|
1527
|
+
defaultSonnetModel: profile.defaultSonnetModel,
|
|
1528
|
+
defaultOpusModel: profile.defaultOpusModel
|
|
1524
1529
|
}
|
|
1525
1530
|
], profile.id || profile.name);
|
|
1526
1531
|
} catch (error) {
|
package/dist/chunks/package.mjs
CHANGED
|
@@ -3,7 +3,7 @@ import { homedir } from 'node:os';
|
|
|
3
3
|
import a from './index5.mjs';
|
|
4
4
|
import { MetricsDisplay } from './metrics-display.mjs';
|
|
5
5
|
import { getContextPersistence } from './persistence.mjs';
|
|
6
|
-
import { r as runHealthCheck } from '../shared/ccjk.
|
|
6
|
+
import { r as runHealthCheck } from '../shared/ccjk.D6wx-rxT.mjs';
|
|
7
7
|
import { j as join } from '../shared/ccjk.bQ7Dh1g4.mjs';
|
|
8
8
|
import '../shared/ccjk.BAGoDD49.mjs';
|
|
9
9
|
import 'better-sqlite3';
|
package/dist/chunks/status.mjs
CHANGED
|
@@ -6,7 +6,7 @@ import { g as getRuntimeCapabilityDescriptor } from '../shared/ccjk.BO45TPXJ.mjs
|
|
|
6
6
|
import { s as scanProject, r as resolveCodeType } from './code-type-resolver.mjs';
|
|
7
7
|
import { MetricsDisplay } from './metrics-display.mjs';
|
|
8
8
|
import { getContextPersistence } from './persistence.mjs';
|
|
9
|
-
import { r as runHealthCheck } from '../shared/ccjk.
|
|
9
|
+
import { r as runHealthCheck } from '../shared/ccjk.D6wx-rxT.mjs';
|
|
10
10
|
import { j as join } from '../shared/ccjk.bQ7Dh1g4.mjs';
|
|
11
11
|
import '../shared/ccjk.BAGoDD49.mjs';
|
|
12
12
|
import 'node:child_process';
|
|
@@ -237,9 +237,21 @@ function renderHooksSection(recommended, installed) {
|
|
|
237
237
|
}
|
|
238
238
|
return lines;
|
|
239
239
|
}
|
|
240
|
-
function
|
|
240
|
+
function getRuntimeSectionTitle(codeTool) {
|
|
241
|
+
switch (codeTool) {
|
|
242
|
+
case "myclaude":
|
|
243
|
+
return "myclaude";
|
|
244
|
+
case "codex":
|
|
245
|
+
return "Codex";
|
|
246
|
+
case "claude-code":
|
|
247
|
+
return "Claude Code";
|
|
248
|
+
default:
|
|
249
|
+
return "Claude Runtime";
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
function renderClaudeCodeSection(defaults, codeTool) {
|
|
241
253
|
const lines = [];
|
|
242
|
-
lines.push(heading(
|
|
254
|
+
lines.push(heading(getRuntimeSectionTitle(codeTool)));
|
|
243
255
|
const version = defaults?.claudeCodeVersion;
|
|
244
256
|
lines.push(` ${label("Version:".padEnd(14))} ${version ? val(version) : a.gray("not detected")}`);
|
|
245
257
|
if (defaults?.nativeFeatures) {
|
|
@@ -259,26 +271,44 @@ function renderClaudeCodeSection(defaults) {
|
|
|
259
271
|
}
|
|
260
272
|
try {
|
|
261
273
|
const settingsPath = join(homedir(), ".claude", "settings.json");
|
|
274
|
+
const myclaudePath = join(homedir(), ".claude.json");
|
|
262
275
|
if (existsSync(settingsPath)) {
|
|
263
276
|
const data = JSON.parse(readFileSync(settingsPath, "utf-8"));
|
|
264
277
|
const env = data.env || {};
|
|
265
278
|
const haiku = env.ANTHROPIC_DEFAULT_HAIKU_MODEL;
|
|
266
279
|
const sonnet = env.ANTHROPIC_DEFAULT_SONNET_MODEL;
|
|
267
280
|
const opus = env.ANTHROPIC_DEFAULT_OPUS_MODEL;
|
|
281
|
+
const primary = data.model || env.ANTHROPIC_MODEL;
|
|
268
282
|
const hasAdaptive = Boolean(haiku || sonnet || opus);
|
|
283
|
+
if (existsSync(myclaudePath)) {
|
|
284
|
+
try {
|
|
285
|
+
const myclaudeData = JSON.parse(readFileSync(myclaudePath, "utf-8"));
|
|
286
|
+
const activeId = myclaudeData.myclaudeActiveProviderProfileId;
|
|
287
|
+
const activeProfile = Array.isArray(myclaudeData.myclaudeProviderProfiles) ? myclaudeData.myclaudeProviderProfiles.find((profile) => String(profile?.id) === String(activeId)) : null;
|
|
288
|
+
if (activeId) {
|
|
289
|
+
lines.push(` ${label("Provider:".padEnd(14))} ${val(`myclaude/${activeId}`)}`);
|
|
290
|
+
}
|
|
291
|
+
if (activeProfile?.baseUrl) {
|
|
292
|
+
lines.push(` ${label("API Base:".padEnd(14))} ${val(activeProfile.baseUrl)}`);
|
|
293
|
+
}
|
|
294
|
+
} catch {
|
|
295
|
+
}
|
|
296
|
+
}
|
|
269
297
|
if (data.model && hasAdaptive) {
|
|
270
298
|
lines.push(` ${label("Model:".padEnd(14))} ${a.red(data.model)} ${a.red("(overrides adaptive routing!)")}`);
|
|
271
299
|
lines.push(` ${label("".padEnd(14))} ${a.yellow("Run: ccjk boost --fix-model")}`);
|
|
272
300
|
} else if (hasAdaptive) {
|
|
273
301
|
lines.push(` ${label("Routing:".padEnd(14))} ${a.green("adaptive")}`);
|
|
302
|
+
if (primary)
|
|
303
|
+
lines.push(` ${label(" Primary:".padEnd(14))} ${val(primary)}`);
|
|
274
304
|
if (haiku)
|
|
275
305
|
lines.push(` ${label(" Quick:".padEnd(14))} ${val(haiku)}`);
|
|
276
306
|
if (sonnet)
|
|
277
307
|
lines.push(` ${label(" Standard:".padEnd(14))} ${val(sonnet)}`);
|
|
278
308
|
if (opus)
|
|
279
309
|
lines.push(` ${label(" Complex:".padEnd(14))} ${val(opus)}`);
|
|
280
|
-
} else if (
|
|
281
|
-
lines.push(` ${label("Model:".padEnd(14))} ${val(
|
|
310
|
+
} else if (primary) {
|
|
311
|
+
lines.push(` ${label("Model:".padEnd(14))} ${val(primary)}`);
|
|
282
312
|
}
|
|
283
313
|
}
|
|
284
314
|
} catch {
|
|
@@ -319,6 +349,11 @@ function renderHealthSection(report, compact) {
|
|
|
319
349
|
const icon = STATUS_ICONS[r.status];
|
|
320
350
|
const scoreText = a.gray(`${r.score}/${r.weight}`);
|
|
321
351
|
lines.push(` ${icon} ${r.name.padEnd(18)} ${scoreText.padEnd(10)} ${a.gray(r.message)}`);
|
|
352
|
+
if (r.details?.length) {
|
|
353
|
+
for (const detail of r.details) {
|
|
354
|
+
lines.push(` ${a.gray(detail)}`);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
322
357
|
}
|
|
323
358
|
}
|
|
324
359
|
if (report.recommendations.length > 0) {
|
|
@@ -393,11 +428,11 @@ async function statusCommand(options = {}) {
|
|
|
393
428
|
if (defaults) {
|
|
394
429
|
sections.push(renderMcpSection(defaults.mcpServices, installed.mcpServers));
|
|
395
430
|
sections.push(renderHooksSection(defaults.recommendedHooks, installed.hooks));
|
|
396
|
-
sections.push(renderClaudeCodeSection(defaults));
|
|
431
|
+
sections.push(renderClaudeCodeSection(defaults, codeTool));
|
|
397
432
|
} else {
|
|
398
433
|
sections.push(renderMcpSection([], installed.mcpServers));
|
|
399
434
|
sections.push(renderHooksSection([], installed.hooks));
|
|
400
|
-
sections.push(renderClaudeCodeSection(null));
|
|
435
|
+
sections.push(renderClaudeCodeSection(null, codeTool));
|
|
401
436
|
}
|
|
402
437
|
sections.push(renderHealthSection(health, options.compact || false));
|
|
403
438
|
try {
|
|
@@ -416,9 +451,12 @@ async function statusCommand(options = {}) {
|
|
|
416
451
|
}
|
|
417
452
|
console.log();
|
|
418
453
|
const fixable = health.results.filter((r) => r.status !== "pass" && r.command);
|
|
419
|
-
if (fixable.length > 0 && !options.json) {
|
|
454
|
+
if (fixable.length > 0 && !options.json && options.fix) {
|
|
420
455
|
const { autoFix } = await import('./auto-fixer.mjs');
|
|
421
|
-
await autoFix(fixable
|
|
456
|
+
await autoFix(fixable, {
|
|
457
|
+
autoApprove: options.yes,
|
|
458
|
+
dryRun: options.dryRun
|
|
459
|
+
});
|
|
422
460
|
}
|
|
423
461
|
} catch (error) {
|
|
424
462
|
console.error(a.red("Error running status command:"), error);
|
package/dist/cli.mjs
CHANGED
|
@@ -1724,14 +1724,20 @@ ${ansis.yellow("By Status:")}`);
|
|
|
1724
1724
|
tier: "core",
|
|
1725
1725
|
options: [
|
|
1726
1726
|
{ flags: "--json", description: "Output as JSON" },
|
|
1727
|
-
{ flags: "--compact", description: "Compact output" }
|
|
1727
|
+
{ flags: "--compact", description: "Compact output" },
|
|
1728
|
+
{ flags: "--fix", description: "Run fixable recommendations" },
|
|
1729
|
+
{ flags: "--yes, -y", description: "Auto-confirm fixes" },
|
|
1730
|
+
{ flags: "--dry-run", description: "Preview fix commands without executing" }
|
|
1728
1731
|
],
|
|
1729
1732
|
loader: async () => {
|
|
1730
1733
|
const { statusCommand } = await import('./chunks/status.mjs');
|
|
1731
1734
|
return async (options) => {
|
|
1732
1735
|
await statusCommand({
|
|
1733
1736
|
json: options.json,
|
|
1734
|
-
compact: options.compact
|
|
1737
|
+
compact: options.compact,
|
|
1738
|
+
fix: options.fix,
|
|
1739
|
+
yes: options.yes,
|
|
1740
|
+
dryRun: options.dryRun
|
|
1735
1741
|
});
|
|
1736
1742
|
};
|
|
1737
1743
|
}
|
|
@@ -161,6 +161,27 @@ const mcpCheck = {
|
|
|
161
161
|
}
|
|
162
162
|
};
|
|
163
163
|
|
|
164
|
+
function collectModelDetails(settings) {
|
|
165
|
+
const env = settings?.env || {};
|
|
166
|
+
const details = [];
|
|
167
|
+
const primaryModel = settings?.model && settings.model !== "default" ? settings.model : env.ANTHROPIC_MODEL;
|
|
168
|
+
const haikuModel = env.ANTHROPIC_DEFAULT_HAIKU_MODEL || env.ANTHROPIC_SMALL_FAST_MODEL;
|
|
169
|
+
const sonnetModel = env.ANTHROPIC_DEFAULT_SONNET_MODEL;
|
|
170
|
+
const opusModel = env.ANTHROPIC_DEFAULT_OPUS_MODEL;
|
|
171
|
+
if (primaryModel) {
|
|
172
|
+
details.push(` primary: ${primaryModel}`);
|
|
173
|
+
}
|
|
174
|
+
if (haikuModel) {
|
|
175
|
+
details.push(` haiku: ${haikuModel}`);
|
|
176
|
+
}
|
|
177
|
+
if (sonnetModel) {
|
|
178
|
+
details.push(` sonnet: ${sonnetModel}`);
|
|
179
|
+
}
|
|
180
|
+
if (opusModel) {
|
|
181
|
+
details.push(` opus: ${opusModel}`);
|
|
182
|
+
}
|
|
183
|
+
return details;
|
|
184
|
+
}
|
|
164
185
|
const modelCheck = {
|
|
165
186
|
name: "Default Model",
|
|
166
187
|
weight: 5,
|
|
@@ -177,8 +198,9 @@ const modelCheck = {
|
|
|
177
198
|
};
|
|
178
199
|
}
|
|
179
200
|
const settings = JSON.parse(readFileSync(SETTINGS_FILE, "utf-8"));
|
|
180
|
-
const hasModel = settings.model || settings.defaultModel || settings.preferredModel;
|
|
201
|
+
const hasModel = settings.model || settings.defaultModel || settings.preferredModel || settings.env?.ANTHROPIC_MODEL || settings.env?.ANTHROPIC_DEFAULT_HAIKU_MODEL || settings.env?.ANTHROPIC_SMALL_FAST_MODEL || settings.env?.ANTHROPIC_DEFAULT_SONNET_MODEL || settings.env?.ANTHROPIC_DEFAULT_OPUS_MODEL;
|
|
181
202
|
const hasApiKey = settings.apiKey || settings.env?.ANTHROPIC_API_KEY || process__default.env.ANTHROPIC_API_KEY;
|
|
203
|
+
const details = collectModelDetails(settings);
|
|
182
204
|
if (!hasApiKey) {
|
|
183
205
|
return {
|
|
184
206
|
name: this.name,
|
|
@@ -188,7 +210,7 @@ const modelCheck = {
|
|
|
188
210
|
message: "No API key configured (using default)",
|
|
189
211
|
fix: "Configure API for direct access",
|
|
190
212
|
command: "ccjk menu",
|
|
191
|
-
details: [" Using Claude Code default API"]
|
|
213
|
+
details: details.length > 0 ? details : [" Using Claude Code default API"]
|
|
192
214
|
};
|
|
193
215
|
}
|
|
194
216
|
return {
|
|
@@ -196,7 +218,8 @@ const modelCheck = {
|
|
|
196
218
|
status: "pass",
|
|
197
219
|
score: hasModel ? 100 : 70,
|
|
198
220
|
weight: this.weight,
|
|
199
|
-
message: hasModel ? `Model
|
|
221
|
+
message: hasModel ? `Model configured` : "API configured (default model)",
|
|
222
|
+
details
|
|
200
223
|
};
|
|
201
224
|
} catch {
|
|
202
225
|
return { name: this.name, status: "fail", score: 0, weight: this.weight, message: "Failed to read model config" };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ccjk",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "14.1.
|
|
4
|
+
"version": "14.1.2",
|
|
5
5
|
"packageManager": "pnpm@10.17.1",
|
|
6
6
|
"description": "Production-ready AI dev environment for Claude Code, Codex, and modern coding workflows with 30-second onboarding, persistent memory, Agent Teams, remote control, and capability discovery.",
|
|
7
7
|
"author": {
|
|
@@ -83,10 +83,12 @@
|
|
|
83
83
|
},
|
|
84
84
|
"scripts": {
|
|
85
85
|
"dev": "tsx ./src/cli.ts",
|
|
86
|
-
"build": "
|
|
86
|
+
"build": "pnpm build:release:deps && pnpm build:root",
|
|
87
|
+
"build:root": "unbuild",
|
|
87
88
|
"build:release:deps": "pnpm --filter @ccjk/wire build && pnpm --filter @ccjk/evolution build",
|
|
88
89
|
"start": "node bin/ccjk.mjs",
|
|
89
|
-
"typecheck": "
|
|
90
|
+
"typecheck": "pnpm build:release:deps && pnpm typecheck:root",
|
|
91
|
+
"typecheck:root": "tsc --noEmit",
|
|
90
92
|
"release:verify": "node scripts/release-verify.mjs",
|
|
91
93
|
"release:verify:full": "node scripts/release-verify.mjs --with-tests",
|
|
92
94
|
"prepublishOnly": "node scripts/validate-prepublish.mjs && pnpm contract:check && pnpm build",
|