ccjk 14.1.10 → 14.2.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 (119) hide show
  1. package/dist/chunks/agent-teams.mjs +1 -1
  2. package/dist/chunks/api-cli.mjs +1 -1
  3. package/dist/chunks/api-config-selector.mjs +3 -3
  4. package/dist/chunks/ccjk-all.mjs +1 -1
  5. package/dist/chunks/ccjk-mcp.mjs +1 -1
  6. package/dist/chunks/ccjk-setup.mjs +1 -1
  7. package/dist/chunks/ccr.mjs +8 -8
  8. package/dist/chunks/check-updates.mjs +1 -1
  9. package/dist/chunks/claude-code-incremental-manager.mjs +3 -3
  10. package/dist/chunks/claude-config.mjs +1 -1
  11. package/dist/chunks/codex-config-switch.mjs +1 -1
  12. package/dist/chunks/codex-provider-manager.mjs +1 -1
  13. package/dist/chunks/config-switch.mjs +1 -1
  14. package/dist/chunks/config.mjs +19 -3
  15. package/dist/chunks/config2.mjs +1 -1
  16. package/dist/chunks/config3.mjs +1 -1
  17. package/dist/chunks/doctor.mjs +175 -6
  18. package/dist/chunks/features.mjs +3 -3
  19. package/dist/chunks/index10.mjs +19 -5
  20. package/dist/chunks/init.mjs +5 -5
  21. package/dist/chunks/mcp-cli.mjs +3 -3
  22. package/dist/chunks/mcp.mjs +3 -3
  23. package/dist/chunks/package.mjs +1 -1
  24. package/dist/chunks/quick-provider.mjs +1 -1
  25. package/dist/chunks/quick-setup.mjs +5 -5
  26. package/dist/chunks/simple-config.mjs +1 -1
  27. package/dist/chunks/smart-guide.mjs +1 -1
  28. package/dist/chunks/update.mjs +6 -6
  29. package/dist/chunks/zero-config.mjs +7 -4
  30. package/dist/cli.mjs +0 -0
  31. package/dist/index.d.mts +3 -0
  32. package/dist/index.d.ts +3 -0
  33. package/dist/index.mjs +1 -1
  34. package/dist/shared/{ccjk.BJ3Zpjo5.mjs → ccjk.BCzOWT1L.mjs} +3 -2
  35. package/dist/shared/{ccjk.B8oqkakg.mjs → ccjk.BLsIiTqO.mjs} +1 -1
  36. package/dist/shared/{ccjk.Hwoicrh8.mjs → ccjk.BXv8aYs1.mjs} +1 -1
  37. package/dist/shared/{ccjk.B9OuS4xZ.mjs → ccjk.CfKJnpbB.mjs} +1 -1
  38. package/dist/shared/{ccjk.BzxpiEPF.mjs → ccjk.Cgv_cFVX.mjs} +2 -2
  39. package/dist/shared/{ccjk.Di1IYU3u.mjs → ccjk.DDL-4C-k.mjs} +47 -10
  40. package/dist/shared/{ccjk.BEiR3L4C.mjs → ccjk.DOw7Fawt.mjs} +3 -3
  41. package/dist/shared/{ccjk.tI_s2uSh.mjs → ccjk.f3TBLJSt.mjs} +1 -1
  42. package/dist/templates/agents/README.md +78 -0
  43. package/dist/templates/common/error-prevention.md +267 -0
  44. package/dist/templates/common/karpathy-baseline.md +83 -0
  45. package/dist/templates/common/output-styles/zh-CN/carmack-mode.md +381 -0
  46. package/dist/templates/common/output-styles/zh-CN/dhh-mode.md +265 -0
  47. package/dist/templates/common/output-styles/zh-CN/evan-you-mode.md +539 -0
  48. package/dist/templates/common/output-styles/zh-CN/jobs-mode.md +369 -0
  49. package/dist/templates/common/output-styles/zh-CN/linus-mode.md +135 -0
  50. package/dist/templates/common/output-styles/zh-CN/uncle-bob-mode.md +221 -0
  51. package/dist/templates/common/workflow/continuousDelivery/en/continuous-delivery.md +628 -0
  52. package/dist/templates/common/workflow/continuousDelivery/zh-CN/continuous-delivery.md +628 -0
  53. package/dist/templates/common/workflow/essential/en/agents/ccjk-config-agent.md +187 -0
  54. package/dist/templates/common/workflow/essential/en/agents/ccjk-mcp-agent.md +191 -0
  55. package/dist/templates/common/workflow/essential/en/agents/ccjk-skill-agent.md +249 -0
  56. package/dist/templates/common/workflow/essential/en/agents/ccjk-workflow-agent.md +277 -0
  57. package/dist/templates/common/workflow/essential/en/agents/get-current-datetime.md +29 -0
  58. package/dist/templates/common/workflow/essential/en/agents/init-architect.md +115 -0
  59. package/dist/templates/common/workflow/essential/en/agents/ui-ux-designer.md +91 -0
  60. package/dist/templates/common/workflow/essential/en/feat.md +92 -0
  61. package/dist/templates/common/workflow/essential/en/goal.md +147 -0
  62. package/dist/templates/common/workflow/essential/en/init-project.md +53 -0
  63. package/dist/templates/common/workflow/essential/zh-CN/agents/get-current-datetime.md +29 -0
  64. package/dist/templates/common/workflow/essential/zh-CN/agents/init-architect.md +115 -0
  65. package/dist/templates/common/workflow/essential/zh-CN/agents/ui-ux-designer.md +91 -0
  66. package/dist/templates/common/workflow/essential/zh-CN/feat.md +315 -0
  67. package/dist/templates/common/workflow/essential/zh-CN/goal.md +146 -0
  68. package/dist/templates/common/workflow/essential/zh-CN/init-project.md +53 -0
  69. package/dist/templates/common/workflow/git/en/git-cleanBranches.md +102 -0
  70. package/dist/templates/common/workflow/git/en/git-commit.md +205 -0
  71. package/dist/templates/common/workflow/git/en/git-rollback.md +90 -0
  72. package/dist/templates/common/workflow/git/en/git-worktree.md +276 -0
  73. package/dist/templates/common/workflow/git/zh-CN/git-cleanBranches.md +102 -0
  74. package/dist/templates/common/workflow/git/zh-CN/git-commit.md +205 -0
  75. package/dist/templates/common/workflow/git/zh-CN/git-rollback.md +90 -0
  76. package/dist/templates/common/workflow/git/zh-CN/git-worktree.md +276 -0
  77. package/dist/templates/common/workflow/interview/en/interview.md +67 -0
  78. package/dist/templates/common/workflow/interview/zh-CN/interview.md +67 -0
  79. package/dist/templates/common/workflow/linearMethod/en/linear-method.md +651 -0
  80. package/dist/templates/common/workflow/linearMethod/zh-CN/linear-method.md +752 -0
  81. package/dist/templates/common/workflow/refactoringMaster/en/refactoring-master.md +516 -0
  82. package/dist/templates/common/workflow/refactoringMaster/zh-CN/refactoring-master.md +812 -0
  83. package/dist/templates/common/workflow/sixStep/en/workflow.md +83 -0
  84. package/dist/templates/common/workflow/sixStep/zh-CN/workflow.md +359 -0
  85. package/dist/templates/common/workflow/specFirstTDD/en/spec-first-tdd.md +364 -0
  86. package/dist/templates/common/workflow/specFirstTDD/zh-CN/spec-first-tdd.md +366 -0
  87. package/dist/templates/hooks/README.md +212 -0
  88. package/dist/templates/hooks/git-workflow-hooks.md +551 -0
  89. package/dist/templates/hooks/post-test-coverage.md +434 -0
  90. package/dist/templates/hooks/pre-commit-black.md +274 -0
  91. package/dist/templates/hooks/pre-commit-eslint.md +153 -0
  92. package/dist/templates/hooks/pre-commit-gofmt.md +284 -0
  93. package/dist/templates/hooks/pre-commit-prettier.md +212 -0
  94. package/dist/templates/hooks/pre-commit-type-check.md +377 -0
  95. package/dist/templates/skills/ccjk-init.md +154 -0
  96. package/dist/templates/skills/ccjk-mcp-setup.md +205 -0
  97. package/dist/templates/skills/ccjk-troubleshoot.md +228 -0
  98. package/dist/templates/skills/django-patterns.md +1016 -0
  99. package/dist/templates/skills/git-workflow.md +748 -0
  100. package/dist/templates/skills/go-idioms.md +963 -0
  101. package/dist/templates/skills/nextjs-optimization.md +694 -0
  102. package/dist/templates/skills/python-pep8.md +852 -0
  103. package/dist/templates/skills/react-patterns.md +686 -0
  104. package/dist/templates/skills/rust-patterns.md +1057 -0
  105. package/dist/templates/skills/security-best-practices.md +1413 -0
  106. package/dist/templates/skills/testing-best-practices.md +1315 -0
  107. package/dist/templates/skills/ts-best-practices.md +354 -0
  108. package/package.json +40 -43
  109. package/templates/common/karpathy-baseline.md +83 -0
  110. package/templates/common/output-styles/zh-CN/carmack-mode.md +14 -0
  111. package/templates/common/output-styles/zh-CN/dhh-mode.md +14 -0
  112. package/templates/common/output-styles/zh-CN/evan-you-mode.md +14 -0
  113. package/templates/common/output-styles/zh-CN/jobs-mode.md +14 -0
  114. package/templates/common/output-styles/zh-CN/linus-mode.md +14 -0
  115. package/templates/common/output-styles/zh-CN/uncle-bob-mode.md +14 -0
  116. package/templates/common/workflow/linearMethod/zh-CN/linear-method.md +2 -0
  117. package/templates/common/workflow/refactoringMaster/zh-CN/refactoring-master.md +2 -0
  118. package/templates/common/workflow/sixStep/zh-CN/workflow.md +2 -0
  119. package/templates/common/workflow/specFirstTDD/zh-CN/spec-first-tdd.md +2 -0
@@ -1,7 +1,7 @@
1
1
  import { existsSync, readFileSync } from 'node:fs';
2
2
  import a from './index5.mjs';
3
3
  import { ensureI18nInitialized, i18n } from './index2.mjs';
4
- import { n as normalizeClaudeFamilySettings, r as resolveClaudeFamilySettingsTarget } from '../shared/ccjk.Di1IYU3u.mjs';
4
+ import { n as normalizeClaudeFamilySettings, r as resolveClaudeFamilySettingsTarget } from '../shared/ccjk.DDL-4C-k.mjs';
5
5
  import { writeJsonConfig } from './json-config.mjs';
6
6
  import '../shared/ccjk.BAGoDD49.mjs';
7
7
  import 'node:process';
@@ -31,7 +31,7 @@ import './index3.mjs';
31
31
  import './fs-operations.mjs';
32
32
  import 'node:fs/promises';
33
33
  import './json-config.mjs';
34
- import '../shared/ccjk.Di1IYU3u.mjs';
34
+ import '../shared/ccjk.DDL-4C-k.mjs';
35
35
  import './platform.mjs';
36
36
  import './main.mjs';
37
37
  import 'module';
@@ -31,13 +31,13 @@ import 'node:fs/promises';
31
31
  import './json-config.mjs';
32
32
  import '../shared/ccjk.RyizuzOI.mjs';
33
33
  import 'node:child_process';
34
- import '../shared/ccjk.Di1IYU3u.mjs';
34
+ import '../shared/ccjk.DDL-4C-k.mjs';
35
35
  import './platform.mjs';
36
36
  import './main.mjs';
37
37
  import 'module';
38
38
  import 'node:stream';
39
- import '../shared/ccjk.BzxpiEPF.mjs';
40
- import '../shared/ccjk.BJ3Zpjo5.mjs';
39
+ import '../shared/ccjk.Cgv_cFVX.mjs';
40
+ import '../shared/ccjk.BCzOWT1L.mjs';
41
41
  import '../shared/ccjk.BFQ7yr5S.mjs';
42
42
  import '../shared/ccjk.DZ2LLOa-.mjs';
43
43
  import '../shared/ccjk.DeWpAShp.mjs';
@@ -43,7 +43,7 @@ import './index3.mjs';
43
43
  import './fs-operations.mjs';
44
44
  import 'node:fs/promises';
45
45
  import './json-config.mjs';
46
- import '../shared/ccjk.Di1IYU3u.mjs';
46
+ import '../shared/ccjk.DDL-4C-k.mjs';
47
47
  import './platform.mjs';
48
48
  import './main.mjs';
49
49
  import 'module';
@@ -34,7 +34,7 @@ import './index3.mjs';
34
34
  import './fs-operations.mjs';
35
35
  import 'node:fs/promises';
36
36
  import './json-config.mjs';
37
- import '../shared/ccjk.Di1IYU3u.mjs';
37
+ import '../shared/ccjk.DDL-4C-k.mjs';
38
38
  import './main.mjs';
39
39
  import 'module';
40
40
  import 'node:stream';
@@ -40,7 +40,7 @@ import './index3.mjs';
40
40
  import './fs-operations.mjs';
41
41
  import 'node:fs/promises';
42
42
  import './json-config.mjs';
43
- import '../shared/ccjk.Di1IYU3u.mjs';
43
+ import '../shared/ccjk.DDL-4C-k.mjs';
44
44
  import './platform.mjs';
45
45
  import './main.mjs';
46
46
  import 'module';
@@ -34,7 +34,7 @@ import './json-config.mjs';
34
34
  import '../shared/ccjk.RyizuzOI.mjs';
35
35
  import './config.mjs';
36
36
  import 'node:child_process';
37
- import '../shared/ccjk.Di1IYU3u.mjs';
37
+ import '../shared/ccjk.DDL-4C-k.mjs';
38
38
  import './platform.mjs';
39
39
  import './main.mjs';
40
40
  import 'module';
@@ -48,8 +48,8 @@ import './prompts.mjs';
48
48
  import '../shared/ccjk.DZ2LLOa-.mjs';
49
49
  import './code-type-resolver.mjs';
50
50
  import './features.mjs';
51
- import '../shared/ccjk.BzxpiEPF.mjs';
52
- import '../shared/ccjk.BJ3Zpjo5.mjs';
51
+ import '../shared/ccjk.Cgv_cFVX.mjs';
52
+ import '../shared/ccjk.BCzOWT1L.mjs';
53
53
  import '../shared/ccjk.CbWVbtb9.mjs';
54
54
  import './simple-config.mjs';
55
55
  import '../shared/ccjk.DbigonEQ.mjs';
@@ -62,9 +62,9 @@ import './config2.mjs';
62
62
  import '../shared/ccjk.DFRPtmK_.mjs';
63
63
  import './auto-updater.mjs';
64
64
  import './version-checker.mjs';
65
- import '../shared/ccjk.Hwoicrh8.mjs';
65
+ import '../shared/ccjk.BXv8aYs1.mjs';
66
66
  import './installer.mjs';
67
- import '../shared/ccjk.B8oqkakg.mjs';
67
+ import '../shared/ccjk.BLsIiTqO.mjs';
68
68
  import '../shared/ccjk.B2U7DsPy.mjs';
69
69
  import '../shared/ccjk.Bq8TqZG_.mjs';
70
70
  import './commands.mjs';
@@ -73,10 +73,10 @@ import './config-switch.mjs';
73
73
  import './doctor.mjs';
74
74
  import './api-providers.mjs';
75
75
  import '../shared/ccjk.DsZsc4LR.mjs';
76
- import '../shared/ccjk.BEiR3L4C.mjs';
76
+ import '../shared/ccjk.DOw7Fawt.mjs';
77
77
  import '../shared/ccjk.J8YiPsOw.mjs';
78
- import '../shared/ccjk.B9OuS4xZ.mjs';
79
- import '../shared/ccjk.tI_s2uSh.mjs';
78
+ import '../shared/ccjk.CfKJnpbB.mjs';
79
+ import '../shared/ccjk.f3TBLJSt.mjs';
80
80
  import './notification.mjs';
81
81
  import '../shared/ccjk.DcMvE7lf.mjs';
82
82
  import '../shared/ccjk.D0g2ABGg.mjs';
@@ -42,7 +42,7 @@ import '../shared/ccjk.DZ2LLOa-.mjs';
42
42
  import './version-checker.mjs';
43
43
  import '../shared/ccjk.CxpGa6MC.mjs';
44
44
  import './config.mjs';
45
- import '../shared/ccjk.Di1IYU3u.mjs';
45
+ import '../shared/ccjk.DDL-4C-k.mjs';
46
46
  import '../shared/ccjk.BFQ7yr5S.mjs';
47
47
  import './prompts.mjs';
48
48
  import '../shared/ccjk.gDEDGD_t.mjs';
@@ -6,7 +6,7 @@ import { C as ClaudeCodeConfigManager } from './config.mjs';
6
6
  import { r as resolveClaudeFamilyModelSlots } from '../shared/ccjk.B2U7DsPy.mjs';
7
7
  import { a as addNumbersToChoices } from '../shared/ccjk.BFQ7yr5S.mjs';
8
8
  import { p as promptBoolean } from '../shared/ccjk.DZ2LLOa-.mjs';
9
- import { v as validateApiKey } from '../shared/ccjk.BzxpiEPF.mjs';
9
+ import { v as validateApiKey } from '../shared/ccjk.Cgv_cFVX.mjs';
10
10
  import '../shared/ccjk.BAGoDD49.mjs';
11
11
  import 'node:readline';
12
12
  import 'stream';
@@ -34,13 +34,13 @@ import 'node:fs/promises';
34
34
  import './json-config.mjs';
35
35
  import '../shared/ccjk.RyizuzOI.mjs';
36
36
  import 'node:child_process';
37
- import '../shared/ccjk.Di1IYU3u.mjs';
37
+ import '../shared/ccjk.DDL-4C-k.mjs';
38
38
  import './platform.mjs';
39
39
  import './main.mjs';
40
40
  import 'module';
41
41
  import 'node:stream';
42
42
  import '../shared/ccjk.DeWpAShp.mjs';
43
- import '../shared/ccjk.BJ3Zpjo5.mjs';
43
+ import '../shared/ccjk.BCzOWT1L.mjs';
44
44
 
45
45
  function getAuthTypeLabel(authType) {
46
46
  ensureI18nInitialized();
@@ -1,5 +1,5 @@
1
1
  import { SETTINGS_FILE } from './constants.mjs';
2
- import { n as normalizeClaudeFamilySettings } from '../shared/ccjk.Di1IYU3u.mjs';
2
+ import { n as normalizeClaudeFamilySettings } from '../shared/ccjk.DDL-4C-k.mjs';
3
3
  import { exists, ensureDir } from './fs-operations.mjs';
4
4
  import { readJsonConfig, writeJsonConfig } from './json-config.mjs';
5
5
  import { x as deepMerge } from './config.mjs';
@@ -40,7 +40,7 @@ import 'node:stream';
40
40
  import './ccjk-config.mjs';
41
41
  import './index3.mjs';
42
42
  import './config.mjs';
43
- import '../shared/ccjk.Di1IYU3u.mjs';
43
+ import '../shared/ccjk.DDL-4C-k.mjs';
44
44
  import './platform.mjs';
45
45
  import './prompts.mjs';
46
46
  import '../shared/ccjk.gDEDGD_t.mjs';
@@ -37,7 +37,7 @@ import './fs-operations.mjs';
37
37
  import 'node:fs/promises';
38
38
  import './json-config.mjs';
39
39
  import './config.mjs';
40
- import '../shared/ccjk.Di1IYU3u.mjs';
40
+ import '../shared/ccjk.DDL-4C-k.mjs';
41
41
  import './platform.mjs';
42
42
  import '../shared/ccjk.BFQ7yr5S.mjs';
43
43
  import './prompts.mjs';
@@ -33,7 +33,7 @@ import 'node:fs/promises';
33
33
  import './json-config.mjs';
34
34
  import '../shared/ccjk.RyizuzOI.mjs';
35
35
  import 'node:child_process';
36
- import '../shared/ccjk.Di1IYU3u.mjs';
36
+ import '../shared/ccjk.DDL-4C-k.mjs';
37
37
  import './platform.mjs';
38
38
  import './main.mjs';
39
39
  import 'module';
@@ -2,13 +2,13 @@ import { fileURLToPath } from 'node:url';
2
2
  import a from './index5.mjs';
3
3
  import { d as dayjs } from '../shared/ccjk.RyizuzOI.mjs';
4
4
  import { i as inquirer } from './index6.mjs';
5
+ import { chmodSync, readFileSync } from 'node:fs';
5
6
  import { ZCF_CONFIG_FILE, ZCF_CONFIG_DIR, CLAUDE_VSC_CONFIG_FILE, CLAVUE_CONFIG_FILE, CLAVUE_CREDENTIALS_FILE, CLAVUE_SETTINGS_FILE, AI_OUTPUT_LANGUAGES, SETTINGS_FILE } from './constants.mjs';
6
7
  import { ensureI18nInitialized, i18n } from './index2.mjs';
7
- import { chmodSync } from 'node:fs';
8
8
  import { execSync } from 'node:child_process';
9
9
  import process__default from 'node:process';
10
10
  import { readDefaultTomlConfig, createDefaultTomlConfig, writeTomlConfig } from './ccjk-config.mjs';
11
- import { r as resolveClaudeFamilySettingsTarget, n as normalizeClaudeFamilySettings } from '../shared/ccjk.Di1IYU3u.mjs';
11
+ import { r as resolveClaudeFamilySettingsTarget, n as normalizeClaudeFamilySettings, a as applyTrustedOperatorPermissions } from '../shared/ccjk.DDL-4C-k.mjs';
12
12
  import { ensureDir, exists, copyFile, copyDir, writeFileAtomic } from './fs-operations.mjs';
13
13
  import { readJsonConfig, writeJsonConfig, backupJsonConfig } from './json-config.mjs';
14
14
  import { j as join, d as dirname } from '../shared/ccjk.bQ7Dh1g4.mjs';
@@ -1946,6 +1946,7 @@ function syncMcpPermissions(codeTool) {
1946
1946
  ...settings.permissions || {},
1947
1947
  allow: [...nonManagedPerms, ...mcpPerms]
1948
1948
  };
1949
+ applyTrustedOperatorPermissions(settings);
1949
1950
  normalizeClaudeFamilySettings(settings);
1950
1951
  writeJsonConfig(settingsPath, settings);
1951
1952
  }
@@ -2420,8 +2421,23 @@ function applyAiLanguageDirective(aiOutputLang, codeTool) {
2420
2421
  } else {
2421
2422
  directive = `Always respond in ${aiOutputLang}`;
2422
2423
  }
2424
+ let baseline = "";
2425
+ try {
2426
+ const currentFilePath = fileURLToPath(import.meta.url);
2427
+ const distDir = dirname(dirname(currentFilePath));
2428
+ const rootDir = dirname(distDir);
2429
+ const baselinePath = join(rootDir, "templates", "common", "karpathy-baseline.md");
2430
+ if (exists(baselinePath)) {
2431
+ baseline = readFileSync(baselinePath, "utf-8").trim();
2432
+ }
2433
+ } catch {
2434
+ }
2423
2435
  const frontmatter = target.codeTool === "clavue" ? "" : "---\nscope: user\n---\n\n";
2424
- writeFileAtomic(instructionsFile, `${frontmatter}${directive}`);
2436
+ const body = baseline ? `${directive}
2437
+
2438
+ ${baseline}
2439
+ ` : directive;
2440
+ writeFileAtomic(instructionsFile, `${frontmatter}${body}`);
2425
2441
  }
2426
2442
  function switchToOfficialLogin(codeTool) {
2427
2443
  try {
@@ -8,7 +8,7 @@ import { d as dayjs } from '../shared/ccjk.RyizuzOI.mjs';
8
8
  import { i as inquirer } from './index6.mjs';
9
9
  import { ensureI18nInitialized, i18n } from './index2.mjs';
10
10
  import { y as clearLegacyTopLevelRuntimeSettings, z as setPrimaryApiKey, A as addCompletedOnboarding, b as backupExistingConfig } from './config.mjs';
11
- import { r as resolveClaudeFamilySettingsTarget, n as normalizeClaudeFamilySettings } from '../shared/ccjk.Di1IYU3u.mjs';
11
+ import { r as resolveClaudeFamilySettingsTarget, n as normalizeClaudeFamilySettings } from '../shared/ccjk.DDL-4C-k.mjs';
12
12
  import { readJsonConfig, writeJsonConfig } from './json-config.mjs';
13
13
  import { p as promptBoolean } from '../shared/ccjk.DZ2LLOa-.mjs';
14
14
  import { j as join } from '../shared/ccjk.bQ7Dh1g4.mjs';
@@ -4,7 +4,7 @@ import a from './index5.mjs';
4
4
  import { i as inquirer } from './index6.mjs';
5
5
  import { getApiProviderPresets } from './api-providers.mjs';
6
6
  import { i18n } from './index2.mjs';
7
- import { r as resolveClaudeFamilySettingsTarget, n as normalizeClaudeFamilySettings } from '../shared/ccjk.Di1IYU3u.mjs';
7
+ import { r as resolveClaudeFamilySettingsTarget, n as normalizeClaudeFamilySettings } from '../shared/ccjk.DDL-4C-k.mjs';
8
8
  import { b as backupExistingConfig } from './config.mjs';
9
9
  import '../shared/ccjk.BAGoDD49.mjs';
10
10
  import 'node:readline';
@@ -7,12 +7,12 @@ import { SETTINGS_FILE, CLAUDE_DIR, CODEX_DIR, CODEX_CONFIG_FILE, getCodeToolRun
7
7
  import { i18n } from './index2.mjs';
8
8
  import { g as getPermissionManager } from '../shared/ccjk.DsZsc4LR.mjs';
9
9
  import { i as isCcrInstalled } from '../shared/ccjk.DFRPtmK_.mjs';
10
- import { i as inspectClaudeFamilyCoreFeatures } from '../shared/ccjk.BEiR3L4C.mjs';
10
+ import { i as inspectClaudeFamilyCoreFeatures } from '../shared/ccjk.DOw7Fawt.mjs';
11
11
  import { r as readCodexConfig, g as readCodexGoalsFeatureEnabled } from './codex.mjs';
12
12
  import { b as backupExistingConfig, n as copyConfigFiles } from './config.mjs';
13
13
  import { c as commandExists } from './platform.mjs';
14
14
  import { P as ProviderHealthMonitor } from '../shared/ccjk.J8YiPsOw.mjs';
15
- import { r as resolveClaudeFamilySettingsTarget } from '../shared/ccjk.Di1IYU3u.mjs';
15
+ import { r as resolveClaudeFamilySettingsTarget } from '../shared/ccjk.DDL-4C-k.mjs';
16
16
  import { platform, userInfo, homedir } from 'node:os';
17
17
  import ora from './index8.mjs';
18
18
  import { exec as q } from './main.mjs';
@@ -42,11 +42,11 @@ import './version-checker.mjs';
42
42
  import '../shared/ccjk.CxpGa6MC.mjs';
43
43
  import 'module';
44
44
  import 'node:stream';
45
- import '../shared/ccjk.B8oqkakg.mjs';
45
+ import '../shared/ccjk.BLsIiTqO.mjs';
46
46
  import 'node:fs/promises';
47
47
  import './json-config.mjs';
48
48
  import '../shared/ccjk.RyizuzOI.mjs';
49
- import '../shared/ccjk.BJ3Zpjo5.mjs';
49
+ import '../shared/ccjk.BCzOWT1L.mjs';
50
50
  import './ccjk-config.mjs';
51
51
  import '../shared/ccjk.BBtCGd_g.mjs';
52
52
  import './index3.mjs';
@@ -622,6 +622,26 @@ async function checkSettings(codeType) {
622
622
  if (settings.plansDirectory === null) {
623
623
  issues.push("plansDirectory should not be null");
624
624
  }
625
+ const env = settings.env || {};
626
+ const hasAnthropicModelVars = Boolean(
627
+ env.ANTHROPIC_MODEL || env.ANTHROPIC_DEFAULT_OPUS_MODEL || env.ANTHROPIC_DEFAULT_SONNET_MODEL || env.ANTHROPIC_DEFAULT_HAIKU_MODEL
628
+ );
629
+ if (settings.model && hasAnthropicModelVars) {
630
+ issues.push(`settings.model="${settings.model}" overrides ANTHROPIC_* env vars (custom model selection broken)`);
631
+ }
632
+ const sonnet = env.ANTHROPIC_DEFAULT_SONNET_MODEL;
633
+ if (typeof sonnet === "string" && /opus/i.test(sonnet)) {
634
+ issues.push(`ANTHROPIC_DEFAULT_SONNET_MODEL="${sonnet}" looks like an Opus model (slot misrouted)`);
635
+ }
636
+ const preToolUse = settings.hooks?.PreToolUse;
637
+ if (Array.isArray(preToolUse)) {
638
+ const hasGatekeeper = preToolUse.some(
639
+ (h) => h?.matcher === "mcp__.*" && Array.isArray(h?.hooks) && h.hooks.some((c) => typeof c?.command === "string" && c.command.includes("mcp-gatekeeper"))
640
+ );
641
+ if (hasGatekeeper) {
642
+ issues.push("mcp-gatekeeper PreToolUse hook is enabled (forks bash+node per MCP call; disabled by default)");
643
+ }
644
+ }
625
645
  if (issues.length > 0) {
626
646
  return {
627
647
  name: "settings.json",
@@ -717,6 +737,50 @@ async function checkCcr() {
717
737
  fix: "Run: npx ccjk zero-config dev"
718
738
  };
719
739
  }
740
+ async function checkDisciplineBaseline(codeType) {
741
+ const target = resolveClaudeFamilySettingsTarget(codeType);
742
+ const memoryFile = target.instructionsFile;
743
+ if (!existsSync(memoryFile)) {
744
+ return {
745
+ name: "Discipline Baseline",
746
+ status: "warning",
747
+ message: "No memory file found",
748
+ fix: "Run: npx ccjk init"
749
+ };
750
+ }
751
+ const { readFileSync } = await import('node:fs');
752
+ const text = readFileSync(memoryFile, "utf-8");
753
+ const required = [
754
+ "# Coding Discipline Baseline",
755
+ "Think before coding",
756
+ "Simplicity first",
757
+ "Surgical changes",
758
+ "Goal-driven execution"
759
+ ];
760
+ const missing = required.filter((m) => !text.includes(m));
761
+ if (missing.length === 0) {
762
+ return {
763
+ name: "Discipline Baseline",
764
+ status: "ok",
765
+ message: "All 4 principles present"
766
+ };
767
+ }
768
+ if (missing.length === required.length) {
769
+ return {
770
+ name: "Discipline Baseline",
771
+ status: "warning",
772
+ message: "Baseline not installed (memory file exists but has no discipline section)",
773
+ fix: "Run: npx ccjk init"
774
+ };
775
+ }
776
+ return {
777
+ name: "Discipline Baseline",
778
+ status: "error",
779
+ message: `Baseline partially missing: ${missing.length}/${required.length} markers absent`,
780
+ fix: "Run: npx ccjk init (will rewrite CLAUDE.md with full baseline)",
781
+ details: missing
782
+ };
783
+ }
720
784
  async function checkOutputStyles(codeType) {
721
785
  const target = resolveClaudeFamilySettingsTarget(codeType);
722
786
  const stylesDir = join(target.configDir, "output-styles");
@@ -794,6 +858,62 @@ async function checkCodexToml() {
794
858
  message: "Valid configuration"
795
859
  };
796
860
  }
861
+ async function checkCodexFieldValues() {
862
+ if (!existsSync(CODEX_CONFIG_FILE)) {
863
+ return { name: "Codex Field Values", status: "ok", message: "Skipped (no config)" };
864
+ }
865
+ const { readFileSync } = await import('node:fs');
866
+ const text = readFileSync(CODEX_CONFIG_FILE, "utf-8");
867
+ const issues = [];
868
+ const validEffort = /* @__PURE__ */ new Set(["minimal", "low", "medium", "high"]);
869
+ const validTier = /* @__PURE__ */ new Set(["default", "flex", "priority"]);
870
+ const effortMatch = text.match(/^model_reasoning_effort\s*=\s*"([^"]+)"/m);
871
+ if (effortMatch && !validEffort.has(effortMatch[1])) {
872
+ issues.push(`model_reasoning_effort="${effortMatch[1]}" (valid: ${[...validEffort].join("/")})`);
873
+ }
874
+ const tierMatch = text.match(/^service_tier\s*=\s*"([^"]+)"/m);
875
+ if (tierMatch && !validTier.has(tierMatch[1])) {
876
+ issues.push(`service_tier="${tierMatch[1]}" (valid: ${[...validTier].join("/")})`);
877
+ }
878
+ if (issues.length === 0) {
879
+ return { name: "Codex Field Values", status: "ok", message: "All fields valid" };
880
+ }
881
+ return {
882
+ name: "Codex Field Values",
883
+ status: "warning",
884
+ message: `${issues.length} non-standard value(s) \u2014 Codex silently uses defaults`,
885
+ fix: "Edit ~/.codex/config.toml",
886
+ details: issues
887
+ };
888
+ }
889
+ async function checkCodexTrustedProjects() {
890
+ if (!existsSync(CODEX_CONFIG_FILE)) {
891
+ return { name: "Codex Trusted Projects", status: "ok", message: "Skipped (no config)" };
892
+ }
893
+ const { readFileSync } = await import('node:fs');
894
+ const text = readFileSync(CODEX_CONFIG_FILE, "utf-8");
895
+ const trusted = [];
896
+ const re = /\[projects\."([^"]+)"\]/g;
897
+ let m;
898
+ while ((m = re.exec(text)) !== null) {
899
+ trusted.push(m[1]);
900
+ }
901
+ const stale = trusted.filter((p) => !existsSync(p));
902
+ if (stale.length === 0) {
903
+ return {
904
+ name: "Codex Trusted Projects",
905
+ status: "ok",
906
+ message: `${trusted.length} entries, all paths exist`
907
+ };
908
+ }
909
+ return {
910
+ name: "Codex Trusted Projects",
911
+ status: "warning",
912
+ message: `${stale.length} of ${trusted.length} trusted paths no longer exist on disk`,
913
+ fix: "Edit ~/.codex/config.toml to remove dead entries",
914
+ details: stale.slice(0, 10)
915
+ };
916
+ }
797
917
  async function checkCodexMcp() {
798
918
  const config = readCodexConfig();
799
919
  const count = config?.mcpServices.length || 0;
@@ -843,6 +963,50 @@ async function checkClavueNativeGoals() {
843
963
  fix: "Run: npm install -g clavue"
844
964
  };
845
965
  }
966
+ async function checkCcjkProfiles() {
967
+ const { homedir } = await import('node:os');
968
+ const ccjkConfigPath = join(homedir(), ".ccjk", "config.toml");
969
+ if (!existsSync(ccjkConfigPath)) {
970
+ return { name: "CCJK Profiles", status: "ok", message: "Skipped (no config)" };
971
+ }
972
+ const { readFileSync } = await import('node:fs');
973
+ const text = readFileSync(ccjkConfigPath, "utf-8");
974
+ const suspicious = [];
975
+ const sectionRe = /^\[claudeCode\.profiles\.([^\]]+)\]$([\s\S]*?)(?=^\[|\z)/gm;
976
+ let m;
977
+ while ((m = sectionRe.exec(text)) !== null) {
978
+ const name = m[1];
979
+ const body = m[2];
980
+ const apiKey = body.match(/apiKey\s*=\s*"([^"]*)"/)?.[1] ?? "";
981
+ const baseUrl = body.match(/baseUrl\s*=\s*"([^"]*)"/)?.[1] ?? "";
982
+ const reasons = [];
983
+ if (/^\d+$/.test(name)) {
984
+ reasons.push("numeric-only name");
985
+ }
986
+ if (apiKey && apiKey.length < 10) {
987
+ reasons.push(`apiKey too short (${apiKey.length} chars)`);
988
+ }
989
+ if (baseUrl && !/^https?:\/\/[^\s/]+\.[^\s/]/.test(baseUrl)) {
990
+ reasons.push(`baseUrl looks invalid: ${baseUrl}`);
991
+ }
992
+ if (apiKey.startsWith("sk-ant-test-") || /test-?\d+/i.test(apiKey)) {
993
+ reasons.push("apiKey looks like a test placeholder");
994
+ }
995
+ if (reasons.length > 0) {
996
+ suspicious.push(`${name}: ${reasons.join("; ")}`);
997
+ }
998
+ }
999
+ if (suspicious.length === 0) {
1000
+ return { name: "CCJK Profiles", status: "ok", message: "No junk profiles detected" };
1001
+ }
1002
+ return {
1003
+ name: "CCJK Profiles",
1004
+ status: "warning",
1005
+ message: `${suspicious.length} suspicious profile(s) in ~/.ccjk/config.toml`,
1006
+ fix: "Use ccjk menu to remove or rename them",
1007
+ details: suspicious
1008
+ };
1009
+ }
846
1010
  async function checkCodexProviders() {
847
1011
  const config = readCodexConfig();
848
1012
  if (!config) {
@@ -1017,18 +1181,23 @@ async function doctor(options = {}) {
1017
1181
  checkCodexCli,
1018
1182
  checkCodexDir,
1019
1183
  checkCodexToml,
1184
+ checkCodexFieldValues,
1185
+ checkCodexTrustedProjects,
1020
1186
  checkCodexMcp,
1021
- checkCodexNativeGoals
1187
+ checkCodexNativeGoals,
1188
+ checkCcjkProfiles
1022
1189
  ] : [
1023
1190
  () => checkClaudeCode(options.codeType),
1024
1191
  () => checkClaudeDir(options.codeType),
1025
1192
  () => checkSettings(options.codeType),
1193
+ () => checkDisciplineBaseline(options.codeType),
1026
1194
  () => checkWorkflows(options.codeType),
1027
1195
  () => checkMcp(options.codeType),
1028
1196
  () => checkPermissionRules(options.codeType),
1029
1197
  checkCcr,
1030
1198
  () => checkOutputStyles(options.codeType),
1031
- ...options.codeType === "clavue" ? [checkClavueNativeGoals] : []
1199
+ ...options.codeType === "clavue" ? [checkClavueNativeGoals] : [],
1200
+ checkCcjkProfiles
1032
1201
  ];
1033
1202
  if (options.checkProviders) {
1034
1203
  checks.push(options.codeType === "codex" ? checkCodexProviders : () => checkProviders(options.codeType));
@@ -7,9 +7,9 @@ import { a as getExistingModelConfig, c as getExistingCustomModelConfig, u as up
7
7
  import { SUPPORTED_LANGS, LANG_LABELS } from './constants.mjs';
8
8
  import { ensureI18nInitialized, i18n, changeLanguage } from './index2.mjs';
9
9
  import { readZcfConfig, updateZcfConfig } from './ccjk-config.mjs';
10
- import { m as modifyApiConfigPartially, v as validateApiKey, f as formatApiKeyDisplay } from '../shared/ccjk.BzxpiEPF.mjs';
10
+ import { m as modifyApiConfigPartially, v as validateApiKey, f as formatApiKeyDisplay } from '../shared/ccjk.Cgv_cFVX.mjs';
11
11
  import { s as selectMcpServices } from '../shared/ccjk.CbWVbtb9.mjs';
12
- import { c as configureOutputStyle } from '../shared/ccjk.BJ3Zpjo5.mjs';
12
+ import { c as configureOutputStyle } from '../shared/ccjk.BCzOWT1L.mjs';
13
13
  import { i as isWindows } from './platform.mjs';
14
14
  import { a as addNumbersToChoices } from '../shared/ccjk.BFQ7yr5S.mjs';
15
15
  import { openSettingsJson, importRecommendedPermissions, importRecommendedEnv } from './simple-config.mjs';
@@ -32,7 +32,7 @@ import 'string_decoder';
32
32
  import 'node:url';
33
33
  import '../shared/ccjk.RyizuzOI.mjs';
34
34
  import 'node:child_process';
35
- import '../shared/ccjk.Di1IYU3u.mjs';
35
+ import '../shared/ccjk.DDL-4C-k.mjs';
36
36
  import './fs-operations.mjs';
37
37
  import 'node:fs/promises';
38
38
  import './json-config.mjs';
@@ -3,7 +3,7 @@ import { i as inquirer } from './index6.mjs';
3
3
  import { CLOUD_ENDPOINTS, CCJK_CONFIG_DIR, SUPPORTED_LANGS, LANG_LABELS, CODE_TOOL_BANNERS, isCodeToolType, DEFAULT_CODE_TOOL_TYPE } from './constants.mjs';
4
4
  import { ensureI18nInitialized, i18n, resolveSupportedLanguage, changeLanguage } from './index2.mjs';
5
5
  import { displayBannerWithInfo } from './banner.mjs';
6
- import { readZcfConfig, updateZcfConfig } from './ccjk-config.mjs';
6
+ import { readZcfConfig, updateZcfConfig, readDefaultTomlConfig } from './ccjk-config.mjs';
7
7
  import { L as buildMyclaudeProviderPresentation } from './config.mjs';
8
8
  import { b as runCodexUpdate, j as runCodexUninstall, k as configureCodexAiMemoryFeature, m as configureCodexDefaultModelFeature, n as configureCodexMcp, o as configureCodexApi, p as configureCodexPresetFeature, q as runCodexWorkflowImportWithLanguageSelection, i as runCodexFullInit } from './codex.mjs';
9
9
  import { S as STARTUP_CODE_TOOL_CHOICES, a as resolveStartupCodeType } from './code-type-resolver.mjs';
@@ -28,7 +28,7 @@ import { configSwitchCommand } from './config-switch.mjs';
28
28
  import process__default from 'node:process';
29
29
  import { readFile, writeFileAtomic, ensureDir, exists, readJsonFile } from './fs-operations.mjs';
30
30
  import { workspaceDiagnostics, doctor } from './doctor.mjs';
31
- import { a as mcpList, c as mcpUninstall, m as mcpInstall, d as mcpTrending, b as mcpSearch } from '../shared/ccjk.B9OuS4xZ.mjs';
31
+ import { a as mcpList, c as mcpUninstall, m as mcpInstall, d as mcpTrending, b as mcpSearch } from '../shared/ccjk.CfKJnpbB.mjs';
32
32
  import { notificationCommand } from './notification.mjs';
33
33
  import { g as getRuntimeVersion } from '../shared/ccjk.gDEDGD_t.mjs';
34
34
  import { uninstall } from './uninstall.mjs';
@@ -4462,8 +4462,8 @@ function getMenuShellConfig(codeTool) {
4462
4462
  return {
4463
4463
  allowMore: true,
4464
4464
  footerCommands: [],
4465
- menuTitle: i18n.t("menu:menu.title", "CCJK Main Menu"),
4466
- showHero: false
4465
+ menuTitle: getToolModeMenuTitle(codeTool),
4466
+ showHero: true
4467
4467
  };
4468
4468
  }
4469
4469
  async function showProgressiveMenu(codeTool, runtimeSyncResult) {
@@ -4482,6 +4482,10 @@ async function showProgressiveMenu(codeTool, runtimeSyncResult) {
4482
4482
  }
4483
4483
  ];
4484
4484
  const allowedCommands2 = ["0", "q", "m", "s"];
4485
+ const tomlCfg = readDefaultTomlConfig();
4486
+ const profile = tomlCfg?.claudeCode?.currentProfile;
4487
+ console.log(renderToolModeHero(codeTool, 76, profile ? { profileLabel: profile } : void 0));
4488
+ console.log("");
4485
4489
  const menuOutput2 = renderMenu(
4486
4490
  "menu:oneClick.title",
4487
4491
  visibleItems2,
@@ -4556,7 +4560,17 @@ async function showProgressiveMenu(codeTool, runtimeSyncResult) {
4556
4560
  const menuShell = getMenuShellConfig(codeTool);
4557
4561
  const allowedCommands = ["0", "q", ...menuShell.allowMore ? ["m"] : [], ...menuShell.footerCommands.map((command) => command.key)];
4558
4562
  if (menuShell.showHero) {
4559
- console.log(renderToolModeHero(codeTool, 76, codeTool === "clavue" ? buildMyclaudeRuntimeSummary(runtimeSyncResult) : void 0));
4563
+ let runtimeSummary;
4564
+ if (codeTool === "clavue") {
4565
+ runtimeSummary = buildMyclaudeRuntimeSummary(runtimeSyncResult);
4566
+ } else {
4567
+ const tomlCfg = readDefaultTomlConfig();
4568
+ const profile = tomlCfg?.claudeCode?.currentProfile;
4569
+ if (profile) {
4570
+ runtimeSummary = { profileLabel: profile };
4571
+ }
4572
+ }
4573
+ console.log(renderToolModeHero(codeTool, 76, runtimeSummary));
4560
4574
  console.log("");
4561
4575
  }
4562
4576
  const menuOutput = renderMenu(
@@ -13,22 +13,22 @@ import { i as runCodexFullInit } from './codex.mjs';
13
13
  import { p as parseOrchestrationLevel, a as resolveStartupCodeType, r as resolveCodeType, w as writeOrchestrationPolicy } from './code-type-resolver.mjs';
14
14
  import { exec } from 'node:child_process';
15
15
  import { promisify } from 'node:util';
16
- import { n as normalizeClaudeFamilySettings, r as resolveClaudeFamilySettingsTarget } from '../shared/ccjk.Di1IYU3u.mjs';
16
+ import { n as normalizeClaudeFamilySettings, r as resolveClaudeFamilySettingsTarget } from '../shared/ccjk.DDL-4C-k.mjs';
17
17
  import { exists } from './fs-operations.mjs';
18
18
  import { readJsonConfig, writeJsonConfig } from './json-config.mjs';
19
19
  import { i as isWindows, w as wrapCommandWithSudo, b as isTermux } from './platform.mjs';
20
- import { n as needsMigration, m as migrateSettingsForTokenRetrieval, d as displayMigrationResult, p as promptMigration } from '../shared/ccjk.Hwoicrh8.mjs';
21
- import { m as modifyApiConfigPartially, c as configureApiCompletely, f as formatApiKeyDisplay } from '../shared/ccjk.BzxpiEPF.mjs';
20
+ import { n as needsMigration, m as migrateSettingsForTokenRetrieval, d as displayMigrationResult, p as promptMigration } from '../shared/ccjk.BXv8aYs1.mjs';
21
+ import { m as modifyApiConfigPartially, c as configureApiCompletely, f as formatApiKeyDisplay } from '../shared/ccjk.Cgv_cFVX.mjs';
22
22
  import { a as handleExitPromptError, h as handleGeneralError } from '../shared/ccjk.DGllfVCZ.mjs';
23
23
  import { getInstallationStatus, installMyclaude, installClaudeCode } from './installer.mjs';
24
24
  import { s as selectMcpServices } from '../shared/ccjk.CbWVbtb9.mjs';
25
- import { c as configureOutputStyle } from '../shared/ccjk.BJ3Zpjo5.mjs';
25
+ import { c as configureOutputStyle } from '../shared/ccjk.BCzOWT1L.mjs';
26
26
  import { a as addNumbersToChoices } from '../shared/ccjk.BFQ7yr5S.mjs';
27
27
  import { resolveAiOutputLanguage } from './prompts.mjs';
28
28
  import { g as getRuntimeVersion } from '../shared/ccjk.gDEDGD_t.mjs';
29
29
  import { p as promptBoolean } from '../shared/ccjk.DZ2LLOa-.mjs';
30
30
  import { checkClaudeCodeVersionAndPrompt } from './version-checker.mjs';
31
- import { W as WORKFLOW_CONFIG_BASE, s as selectAndInstallWorkflows } from '../shared/ccjk.B8oqkakg.mjs';
31
+ import { W as WORKFLOW_CONFIG_BASE, s as selectAndInstallWorkflows } from '../shared/ccjk.BLsIiTqO.mjs';
32
32
  import { r as resolveClaudeFamilyModelSlots } from '../shared/ccjk.B2U7DsPy.mjs';
33
33
  import { c as checkSuperpowersInstalled, i as installSuperpowers } from '../shared/ccjk.Bq8TqZG_.mjs';
34
34
 
@@ -1,7 +1,7 @@
1
1
  import a from './index5.mjs';
2
2
  import { g as getMcpServices, r as readMcpConfig } from './config.mjs';
3
3
  import { i18n } from './index2.mjs';
4
- import { i as installMcpService, u as uninstallMcpService } from '../shared/ccjk.tI_s2uSh.mjs';
4
+ import { i as installMcpService, u as uninstallMcpService } from '../shared/ccjk.f3TBLJSt.mjs';
5
5
  import '../shared/ccjk.BAGoDD49.mjs';
6
6
  import 'node:url';
7
7
  import '../shared/ccjk.RyizuzOI.mjs';
@@ -21,9 +21,9 @@ import 'node:os';
21
21
  import 'node:crypto';
22
22
  import 'buffer';
23
23
  import 'string_decoder';
24
+ import 'node:fs';
24
25
  import './constants.mjs';
25
26
  import '../shared/ccjk.bQ7Dh1g4.mjs';
26
- import 'node:fs';
27
27
  import 'node:child_process';
28
28
  import './ccjk-config.mjs';
29
29
  import '../shared/ccjk.BBtCGd_g.mjs';
@@ -31,7 +31,7 @@ import './index3.mjs';
31
31
  import './fs-operations.mjs';
32
32
  import 'node:fs/promises';
33
33
  import './json-config.mjs';
34
- import '../shared/ccjk.Di1IYU3u.mjs';
34
+ import '../shared/ccjk.DDL-4C-k.mjs';
35
35
  import './platform.mjs';
36
36
  import './main.mjs';
37
37
  import 'module';