ccjk 14.1.7 → 14.1.8

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 (68) hide show
  1. package/bin/ccjk.mjs +3 -2
  2. package/bin/ccjk.ts +104 -104
  3. package/dist/chunks/agent.mjs +2 -2
  4. package/dist/chunks/api-cli.mjs +2 -2
  5. package/dist/chunks/api-config-selector.mjs +5 -6
  6. package/dist/chunks/auto-updater.mjs +1 -1
  7. package/dist/chunks/brain-config.mjs +1 -1
  8. package/dist/chunks/brain-status.mjs +13 -7
  9. package/dist/chunks/ccjk-all.mjs +3 -3
  10. package/dist/chunks/ccjk-mcp.mjs +2 -2
  11. package/dist/chunks/ccjk-setup.mjs +1 -1
  12. package/dist/chunks/ccjk-skills.mjs +1 -1
  13. package/dist/chunks/ccr.mjs +11 -12
  14. package/dist/chunks/check-updates.mjs +1 -2
  15. package/dist/chunks/claude-code-incremental-manager.mjs +9 -9
  16. package/dist/chunks/claude-config.mjs +2 -2
  17. package/dist/chunks/code-type-resolver.mjs +2 -4
  18. package/dist/chunks/codex-config-switch.mjs +3 -4
  19. package/dist/chunks/codex-provider-manager.mjs +1 -2
  20. package/dist/chunks/codex.mjs +2 -33
  21. package/dist/chunks/config-switch.mjs +8 -5
  22. package/dist/chunks/config.mjs +382 -19
  23. package/dist/chunks/config2.mjs +3 -3
  24. package/dist/chunks/config3.mjs +1 -1
  25. package/dist/chunks/context.mjs +2 -2
  26. package/dist/chunks/doctor.mjs +4 -5
  27. package/dist/chunks/evolution.mjs +10 -6
  28. package/dist/chunks/features.mjs +13 -14
  29. package/dist/chunks/index10.mjs +4 -4
  30. package/dist/chunks/init.mjs +556 -557
  31. package/dist/chunks/installer.mjs +2 -2
  32. package/dist/chunks/mcp-cli.mjs +6 -7
  33. package/dist/chunks/mcp.mjs +6 -7
  34. package/dist/chunks/memory-check.mjs +2 -2
  35. package/dist/chunks/memory-paths.mjs +1 -1
  36. package/dist/chunks/memory-sync.mjs +2 -2
  37. package/dist/chunks/memory.mjs +7 -7
  38. package/dist/chunks/notification.mjs +1 -1
  39. package/dist/chunks/package.mjs +1 -1
  40. package/dist/chunks/quick-provider.mjs +37 -7
  41. package/dist/chunks/quick-setup.mjs +6 -7
  42. package/dist/chunks/remote.mjs +1 -1
  43. package/dist/chunks/research.mjs +118 -118
  44. package/dist/chunks/simple-config.mjs +4 -4
  45. package/dist/chunks/skill2.mjs +129 -80
  46. package/dist/chunks/skills-sync.mjs +1 -1
  47. package/dist/chunks/slash-commands.mjs +1 -1
  48. package/dist/chunks/uninstall.mjs +1 -1
  49. package/dist/chunks/update.mjs +10 -11
  50. package/dist/chunks/zero-config.mjs +8 -9
  51. package/dist/cli.mjs +1 -1
  52. package/dist/index.d.mts +3 -3
  53. package/dist/index.d.ts +3 -3
  54. package/dist/index.mjs +7 -7
  55. package/dist/shared/{ccjk.QNhw2Y_5.mjs → ccjk.B9OuS4xZ.mjs} +3 -3
  56. package/dist/shared/{ccjk.DqlzNDEQ.mjs → ccjk.BEiR3L4C.mjs} +2 -3
  57. package/dist/shared/{ccjk.4iw1XCF3.mjs → ccjk.BJ3Zpjo5.mjs} +1 -1
  58. package/dist/shared/{ccjk.Nwf9bR70.mjs → ccjk.BzxpiEPF.mjs} +2 -2
  59. package/dist/shared/{ccjk.BI-hdI7P.mjs → ccjk.CbWVbtb9.mjs} +1 -1
  60. package/dist/shared/{ccjk.UhjQ1seV.mjs → ccjk.DMV3x5Sd.mjs} +1 -1
  61. package/dist/shared/{ccjk.DQXk596F.mjs → ccjk.DuzJZlgj.mjs} +107 -103
  62. package/dist/shared/{ccjk.DTdjs-qK.mjs → ccjk.MwtjAULc.mjs} +1 -1
  63. package/dist/shared/{ccjk.DsYaCCx4.mjs → ccjk.i_vn-9C3.mjs} +2 -2
  64. package/dist/shared/{ccjk.kAZkKbGW.mjs → ccjk.tI_s2uSh.mjs} +2 -3
  65. package/package.json +5 -5
  66. package/dist/shared/ccjk.DKXs7Fbm.mjs +0 -361
  67. package/dist/shared/{ccjk.BBizCO6_.mjs → ccjk.DcMvE7lf.mjs} +1 -1
  68. package/dist/shared/{ccjk.Dhu8ia5S.mjs → ccjk.zFGcZT7Y.mjs} +1 -1
@@ -5,7 +5,7 @@ import a from './index5.mjs';
5
5
  import { c as commonjsRequire } from '../shared/ccjk.COweQ1RR.mjs';
6
6
  import require$$0 from 'fs';
7
7
  import { i as inquirer } from './index6.mjs';
8
- import { g as getPluginManager } from '../shared/ccjk.DTdjs-qK.mjs';
8
+ import { g as getPluginManager } from '../shared/ccjk.MwtjAULc.mjs';
9
9
  import { j as join, d as dirname } from '../shared/ccjk.bQ7Dh1g4.mjs';
10
10
  import '../shared/ccjk.BAGoDD49.mjs';
11
11
  import 'node:readline';
@@ -28,7 +28,7 @@ import 'node:stream';
28
28
  import './constants.mjs';
29
29
  import './index2.mjs';
30
30
  import '../shared/ccjk.CfKKcvWy.mjs';
31
- import '../shared/ccjk.DsYaCCx4.mjs';
31
+ import '../shared/ccjk.i_vn-9C3.mjs';
32
32
 
33
33
  var handlebars = {exports: {}};
34
34
 
@@ -677,7 +677,8 @@ function requireHelpers$1 () {
677
677
  if (instance.helpers[helperName]) {
678
678
  instance.hooks[helperName] = instance.helpers[helperName];
679
679
  if (!keepHelper) {
680
- delete instance.helpers[helperName];
680
+ // Using delete is slow
681
+ instance.helpers[helperName] = undefined;
681
682
  }
682
683
  }
683
684
  }
@@ -810,37 +811,6 @@ function requireLogger () {
810
811
 
811
812
  var protoAccess = {};
812
813
 
813
- var createNewLookupObject = {};
814
-
815
- var hasRequiredCreateNewLookupObject;
816
-
817
- function requireCreateNewLookupObject () {
818
- if (hasRequiredCreateNewLookupObject) return createNewLookupObject;
819
- hasRequiredCreateNewLookupObject = 1;
820
-
821
- createNewLookupObject.__esModule = true;
822
- createNewLookupObject.createNewLookupObject = createNewLookupObject$1;
823
-
824
- var _utils = requireUtils();
825
-
826
- /**
827
- * Create a new object with "null"-prototype to avoid truthy results on prototype properties.
828
- * The resulting object can be used with "object[property]" to check if a property exists
829
- * @param {...object} sources a varargs parameter of source objects that will be merged
830
- * @returns {object}
831
- */
832
-
833
- function createNewLookupObject$1() {
834
- for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {
835
- sources[_key] = arguments[_key];
836
- }
837
-
838
- return _utils.extend.apply(undefined, [Object.create(null)].concat(sources));
839
- }
840
-
841
- return createNewLookupObject;
842
- }
843
-
844
814
  var hasRequiredProtoAccess;
845
815
 
846
816
  function requireProtoAccess () {
@@ -855,7 +825,7 @@ function requireProtoAccess () {
855
825
 
856
826
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
857
827
 
858
- var _createNewLookupObject = requireCreateNewLookupObject();
828
+ var _utils = requireUtils();
859
829
 
860
830
  var _logger = requireLogger();
861
831
 
@@ -864,23 +834,28 @@ function requireProtoAccess () {
864
834
  var loggedProperties = Object.create(null);
865
835
 
866
836
  function createProtoAccessControl(runtimeOptions) {
867
- var defaultMethodWhiteList = Object.create(null);
868
- defaultMethodWhiteList['constructor'] = false;
869
- defaultMethodWhiteList['__defineGetter__'] = false;
870
- defaultMethodWhiteList['__defineSetter__'] = false;
871
- defaultMethodWhiteList['__lookupGetter__'] = false;
872
-
873
- var defaultPropertyWhiteList = Object.create(null);
837
+ // Create an object with "null"-prototype to avoid truthy results on
838
+ // prototype properties.
839
+ var propertyWhiteList = Object.create(null);
874
840
  // eslint-disable-next-line no-proto
875
- defaultPropertyWhiteList['__proto__'] = false;
841
+ propertyWhiteList['__proto__'] = false;
842
+ _utils.extend(propertyWhiteList, runtimeOptions.allowedProtoProperties);
843
+
844
+ var methodWhiteList = Object.create(null);
845
+ methodWhiteList['constructor'] = false;
846
+ methodWhiteList['__defineGetter__'] = false;
847
+ methodWhiteList['__defineSetter__'] = false;
848
+ methodWhiteList['__lookupGetter__'] = false;
849
+ methodWhiteList['__lookupSetter__'] = false;
850
+ _utils.extend(methodWhiteList, runtimeOptions.allowedProtoMethods);
876
851
 
877
852
  return {
878
853
  properties: {
879
- whitelist: _createNewLookupObject.createNewLookupObject(defaultPropertyWhiteList, runtimeOptions.allowedProtoProperties),
854
+ whitelist: propertyWhiteList,
880
855
  defaultValue: runtimeOptions.allowProtoPropertiesByDefault
881
856
  },
882
857
  methods: {
883
- whitelist: _createNewLookupObject.createNewLookupObject(defaultMethodWhiteList, runtimeOptions.allowedProtoMethods),
858
+ whitelist: methodWhiteList,
884
859
  defaultValue: runtimeOptions.allowProtoMethodsByDefault
885
860
  }
886
861
  };
@@ -949,7 +924,7 @@ function requireBase$1 () {
949
924
 
950
925
  var _internalProtoAccess = requireProtoAccess();
951
926
 
952
- var VERSION = '4.7.8';
927
+ var VERSION = '4.7.9';
953
928
  base$1.VERSION = VERSION;
954
929
  var COMPILER_REVISION = 8;
955
930
  base$1.COMPILER_REVISION = COMPILER_REVISION;
@@ -1181,16 +1156,14 @@ function requireRuntime () {
1181
1156
  }
1182
1157
  partial = env.VM.resolvePartial.call(this, partial, context, options);
1183
1158
 
1184
- var extendedOptions = Utils.extend({}, options, {
1185
- hooks: this.hooks,
1186
- protoAccessControl: this.protoAccessControl
1187
- });
1159
+ options.hooks = this.hooks;
1160
+ options.protoAccessControl = this.protoAccessControl;
1188
1161
 
1189
- var result = env.VM.invokePartial.call(this, partial, context, extendedOptions);
1162
+ var result = env.VM.invokePartial.call(this, partial, context, options);
1190
1163
 
1191
1164
  if (result == null && env.compile) {
1192
1165
  options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);
1193
- result = options.partials[options.name](context, extendedOptions);
1166
+ result = options.partials[options.name](context, options);
1194
1167
  }
1195
1168
  if (result != null) {
1196
1169
  if (options.indent) {
@@ -1239,7 +1212,7 @@ function requireRuntime () {
1239
1212
  for (var i = 0; i < len; i++) {
1240
1213
  var result = depths[i] && container.lookupProperty(depths[i], name);
1241
1214
  if (result != null) {
1242
- return depths[i][name];
1215
+ return result;
1243
1216
  }
1244
1217
  }
1245
1218
  },
@@ -1321,8 +1294,9 @@ function requireRuntime () {
1321
1294
 
1322
1295
  ret._setup = function (options) {
1323
1296
  if (!options.partial) {
1324
- var mergedHelpers = Utils.extend({}, env.helpers, options.helpers);
1325
- wrapHelpersToPassLookupProperty(mergedHelpers, container);
1297
+ var mergedHelpers = {};
1298
+ addHelpers(mergedHelpers, env.helpers, container);
1299
+ addHelpers(mergedHelpers, options.helpers, container);
1326
1300
  container.helpers = mergedHelpers;
1327
1301
 
1328
1302
  if (templateSpec.usePartial) {
@@ -1388,21 +1362,21 @@ function requireRuntime () {
1388
1362
  function resolvePartial(partial, context, options) {
1389
1363
  if (!partial) {
1390
1364
  if (options.name === '@partial-block') {
1391
- partial = options.data['partial-block'];
1365
+ partial = lookupOwnProperty(options.data, 'partial-block');
1392
1366
  } else {
1393
- partial = options.partials[options.name];
1367
+ partial = lookupOwnProperty(options.partials, options.name);
1394
1368
  }
1395
1369
  } else if (!partial.call && !options.name) {
1396
1370
  // This is a dynamic partial that returned a string
1397
1371
  options.name = partial;
1398
- partial = options.partials[partial];
1372
+ partial = lookupOwnProperty(options.partials, partial);
1399
1373
  }
1400
1374
  return partial;
1401
1375
  }
1402
1376
 
1403
1377
  function invokePartial(partial, context, options) {
1404
1378
  // Use the current closure context to save the partial-block if this partial
1405
- var currentPartialBlock = options.data && options.data['partial-block'];
1379
+ var currentPartialBlock = lookupOwnProperty(options.data, 'partial-block');
1406
1380
  options.partial = true;
1407
1381
  if (options.ids) {
1408
1382
  options.data.contextPath = options.ids[0] || options.data.contextPath;
@@ -1444,6 +1418,12 @@ function requireRuntime () {
1444
1418
  return '';
1445
1419
  }
1446
1420
 
1421
+ function lookupOwnProperty(obj, name) {
1422
+ if (obj && Object.prototype.hasOwnProperty.call(obj, name)) {
1423
+ return obj[name];
1424
+ }
1425
+ }
1426
+
1447
1427
  function initData(context, data) {
1448
1428
  if (!data || !('root' in data)) {
1449
1429
  data = data ? _base.createFrame(data) : {};
@@ -1461,9 +1441,10 @@ function requireRuntime () {
1461
1441
  return prog;
1462
1442
  }
1463
1443
 
1464
- function wrapHelpersToPassLookupProperty(mergedHelpers, container) {
1465
- Object.keys(mergedHelpers).forEach(function (helperName) {
1466
- var helper = mergedHelpers[helperName];
1444
+ function addHelpers(mergedHelpers, helpers, container) {
1445
+ if (!helpers) return;
1446
+ Object.keys(helpers).forEach(function (helperName) {
1447
+ var helper = helpers[helperName];
1467
1448
  mergedHelpers[helperName] = passLookupPropertyOption(helper, container);
1468
1449
  });
1469
1450
  }
@@ -1471,7 +1452,8 @@ function requireRuntime () {
1471
1452
  function passLookupPropertyOption(helper, container) {
1472
1453
  var lookupProperty = container.lookupProperty;
1473
1454
  return _internalWrapHelper.wrapHelper(helper, function (options) {
1474
- return Utils.extend({ lookupProperty: lookupProperty }, options);
1455
+ options.lookupProperty = lookupProperty;
1456
+ return options;
1475
1457
  });
1476
1458
  }
1477
1459
 
@@ -2305,7 +2287,7 @@ function requireParser () {
2305
2287
  return 5;
2306
2288
  }
2307
2289
  };
2308
- lexer.rules = [/^(?:[^\x00]*?(?=(\{\{)))/, /^(?:[^\x00]+)/, /^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/, /^(?:\{\{\{\{(?=[^/]))/, /^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/, /^(?:[^\x00]+?(?=(\{\{\{\{)))/, /^(?:[\s\S]*?--(~)?\}\})/, /^(?:\()/, /^(?:\))/, /^(?:\{\{\{\{)/, /^(?:\}\}\}\})/, /^(?:\{\{(~)?>)/, /^(?:\{\{(~)?#>)/, /^(?:\{\{(~)?#\*?)/, /^(?:\{\{(~)?\/)/, /^(?:\{\{(~)?\^\s*(~)?\}\})/, /^(?:\{\{(~)?\s*else\s*(~)?\}\})/, /^(?:\{\{(~)?\^)/, /^(?:\{\{(~)?\s*else\b)/, /^(?:\{\{(~)?\{)/, /^(?:\{\{(~)?&)/, /^(?:\{\{(~)?!--)/, /^(?:\{\{(~)?![\s\S]*?\}\})/, /^(?:\{\{(~)?\*?)/, /^(?:=)/, /^(?:\.\.)/, /^(?:\.(?=([=~}\s\/.)|])))/, /^(?:[\/.])/, /^(?:\s+)/, /^(?:\}(~)?\}\})/, /^(?:(~)?\}\})/, /^(?:"(\\["]|[^"])*")/, /^(?:'(\\[']|[^'])*')/, /^(?:@)/, /^(?:true(?=([~}\s)])))/, /^(?:false(?=([~}\s)])))/, /^(?:undefined(?=([~}\s)])))/, /^(?:null(?=([~}\s)])))/, /^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/, /^(?:as\s+\|)/, /^(?:\|)/, /^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)|]))))/, /^(?:\[(\\\]|[^\]])*\])/, /^(?:.)/, /^(?:$)/];
2290
+ lexer.rules = [/^(?:[^\x00]*?(?=(\{\{)))/, /^(?:[^\x00]+)/, /^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/, /^(?:\{\{\{\{(?=[^\/]))/, /^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/, /^(?:[^\x00]+?(?=(\{\{\{\{)))/, /^(?:[\s\S]*?--(~)?\}\})/, /^(?:\()/, /^(?:\))/, /^(?:\{\{\{\{)/, /^(?:\}\}\}\})/, /^(?:\{\{(~)?>)/, /^(?:\{\{(~)?#>)/, /^(?:\{\{(~)?#\*?)/, /^(?:\{\{(~)?\/)/, /^(?:\{\{(~)?\^\s*(~)?\}\})/, /^(?:\{\{(~)?\s*else\s*(~)?\}\})/, /^(?:\{\{(~)?\^)/, /^(?:\{\{(~)?\s*else\b)/, /^(?:\{\{(~)?\{)/, /^(?:\{\{(~)?&)/, /^(?:\{\{(~)?!--)/, /^(?:\{\{(~)?![\s\S]*?\}\})/, /^(?:\{\{(~)?\*?)/, /^(?:=)/, /^(?:\.\.)/, /^(?:\.(?=([=~}\s\/.)|])))/, /^(?:[\/.])/, /^(?:\s+)/, /^(?:\}(~)?\}\})/, /^(?:(~)?\}\})/, /^(?:"(\\["]|[^"])*")/, /^(?:'(\\[']|[^'])*')/, /^(?:@)/, /^(?:true(?=([~}\s)])))/, /^(?:false(?=([~}\s)])))/, /^(?:undefined(?=([~}\s)])))/, /^(?:null(?=([~}\s)])))/, /^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/, /^(?:as\s+\|)/, /^(?:\|)/, /^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)|]))))/, /^(?:\[(\\\]|[^\]])*\])/, /^(?:.)/, /^(?:$)/];
2309
2291
  lexer.conditions = { "mu": { "rules": [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44], "inclusive": false }, "emu": { "rules": [2], "inclusive": false }, "com": { "rules": [6], "inclusive": false }, "raw": { "rules": [3, 4, 5], "inclusive": false }, "INITIAL": { "rules": [0, 1, 44], "inclusive": true } };
2310
2292
  return lexer;
2311
2293
  })();
@@ -2970,6 +2952,10 @@ function requireBase () {
2970
2952
 
2971
2953
  var Helpers = _interopRequireWildcard(_helpers);
2972
2954
 
2955
+ var _exception = requireException();
2956
+
2957
+ var _exception2 = _interopRequireDefault(_exception);
2958
+
2973
2959
  var _utils = requireUtils();
2974
2960
 
2975
2961
  base.parser = _parser2['default'];
@@ -2980,6 +2966,9 @@ function requireBase () {
2980
2966
  function parseWithoutProcessing(input, options) {
2981
2967
  // Just return if an already-compiled AST was passed in.
2982
2968
  if (input.type === 'Program') {
2969
+ // When a pre-parsed AST is passed in, validate all node values to prevent
2970
+ // code injection via type-confused literals.
2971
+ validateInputAst(input);
2983
2972
  return input;
2984
2973
  }
2985
2974
 
@@ -3001,6 +2990,58 @@ function requireBase () {
3001
2990
 
3002
2991
  return strip.accept(ast);
3003
2992
  }
2993
+
2994
+ function validateInputAst(ast) {
2995
+ validateAstNode(ast);
2996
+ }
2997
+
2998
+ function validateAstNode(node) {
2999
+ if (node == null) {
3000
+ return;
3001
+ }
3002
+
3003
+ if (Array.isArray(node)) {
3004
+ node.forEach(validateAstNode);
3005
+ return;
3006
+ }
3007
+
3008
+ if (typeof node !== 'object') {
3009
+ return;
3010
+ }
3011
+
3012
+ if (node.type === 'PathExpression') {
3013
+ if (!isValidDepth(node.depth)) {
3014
+ throw new _exception2['default']('Invalid AST: PathExpression.depth must be an integer');
3015
+ }
3016
+ if (!Array.isArray(node.parts)) {
3017
+ throw new _exception2['default']('Invalid AST: PathExpression.parts must be an array');
3018
+ }
3019
+ for (var i = 0; i < node.parts.length; i++) {
3020
+ if (typeof node.parts[i] !== 'string') {
3021
+ throw new _exception2['default']('Invalid AST: PathExpression.parts must only contain strings');
3022
+ }
3023
+ }
3024
+ } else if (node.type === 'NumberLiteral') {
3025
+ if (typeof node.value !== 'number' || !isFinite(node.value)) {
3026
+ throw new _exception2['default']('Invalid AST: NumberLiteral.value must be a number');
3027
+ }
3028
+ } else if (node.type === 'BooleanLiteral') {
3029
+ if (typeof node.value !== 'boolean') {
3030
+ throw new _exception2['default']('Invalid AST: BooleanLiteral.value must be a boolean');
3031
+ }
3032
+ }
3033
+
3034
+ Object.keys(node).forEach(function (propertyName) {
3035
+ if (propertyName === 'loc') {
3036
+ return;
3037
+ }
3038
+ validateAstNode(node[propertyName]);
3039
+ });
3040
+ }
3041
+
3042
+ function isValidDepth(depth) {
3043
+ return typeof depth === 'number' && isFinite(depth) && Math.floor(depth) === depth && depth >= 0;
3044
+ }
3004
3045
 
3005
3046
  return base;
3006
3047
  }
@@ -7163,12 +7204,10 @@ function requireJavascriptCompiler () {
7163
7204
  var decorators = _context.decorators;
7164
7205
 
7165
7206
  for (i = 0, l = programs.length; i < l; i++) {
7166
- if (programs[i]) {
7167
- ret[i] = programs[i];
7168
- if (decorators[i]) {
7169
- ret[i + '_d'] = decorators[i];
7170
- ret.useDecorators = true;
7171
- }
7207
+ ret[i] = programs[i];
7208
+ if (decorators[i]) {
7209
+ ret[i + '_d'] = decorators[i];
7210
+ ret.useDecorators = true;
7172
7211
  }
7173
7212
  }
7174
7213
 
@@ -7494,20 +7533,21 @@ function requireJavascriptCompiler () {
7494
7533
  this.resolvePath('data', parts, 0, true, strict);
7495
7534
  },
7496
7535
 
7497
- resolvePath: function resolvePath(type, parts, i, falsy, strict) {
7536
+ resolvePath: function resolvePath(type, parts, startPartIndex, falsy, strict) {
7498
7537
  // istanbul ignore next
7499
7538
 
7500
7539
  var _this2 = this;
7501
7540
 
7502
7541
  if (this.options.strict || this.options.assumeObjects) {
7503
- this.push(strictLookup(this.options.strict && strict, this, parts, i, type));
7542
+ this.push(strictLookup(this.options.strict && strict, this, parts, startPartIndex, type));
7504
7543
  return;
7505
7544
  }
7506
7545
 
7507
7546
  var len = parts.length;
7508
- for (; i < len; i++) {
7547
+
7548
+ var _loop = function (i) {
7509
7549
  /* eslint-disable no-loop-func */
7510
- this.replaceStack(function (current) {
7550
+ _this2.replaceStack(function (current) {
7511
7551
  var lookup = _this2.nameLookup(current, parts[i], type);
7512
7552
  // We want to ensure that zero and false are handled properly if the context (falsy flag)
7513
7553
  // needs to have the special handling for these values.
@@ -7519,6 +7559,10 @@ function requireJavascriptCompiler () {
7519
7559
  }
7520
7560
  });
7521
7561
  /* eslint-enable no-loop-func */
7562
+ };
7563
+
7564
+ for (var i = startPartIndex; i < len; i++) {
7565
+ _loop(i);
7522
7566
  }
7523
7567
  },
7524
7568
 
@@ -7636,7 +7680,12 @@ function requireJavascriptCompiler () {
7636
7680
  var foundDecorator = this.nameLookup('decorators', name, 'decorator'),
7637
7681
  options = this.setupHelperArgs(name, paramSize);
7638
7682
 
7639
- this.decorators.push(['fn = ', this.decorators.functionCall(foundDecorator, '', ['fn', 'props', 'container', options]), ' || fn;']);
7683
+ // Store the resolved decorator in a variable and verify it is a function before
7684
+ // calling it. Without this, unregistered decorators can cause an unhandled TypeError
7685
+ // (calling undefined), which crashes the process — enabling Denial of Service.
7686
+ this.decorators.push(['var decorator = ', foundDecorator, ';']);
7687
+ this.decorators.push(['if (typeof decorator !== "function") { throw new Error(', this.quotedString('Missing decorator: "' + name + '"'), '); }']);
7688
+ this.decorators.push(['fn = ', this.decorators.functionCall('decorator', '', ['fn', 'props', 'container', options]), ' || fn;']);
7640
7689
  },
7641
7690
 
7642
7691
  // [invokeHelper]
@@ -7819,8 +7868,8 @@ function requireJavascriptCompiler () {
7819
7868
  var existing = this.matchExistingProgram(child);
7820
7869
 
7821
7870
  if (existing == null) {
7822
- this.context.programs.push(''); // Placeholder to prevent name conflicts for nested children
7823
- var index = this.context.programs.length;
7871
+ // Placeholder to prevent name conflicts for nested children
7872
+ var index = this.context.programs.push('') - 1;
7824
7873
  child.index = index;
7825
7874
  child.name = 'program' + index;
7826
7875
  this.context.programs[index] = compiler.compile(child, options, this.context, !this.precompile);
@@ -8140,19 +8189,19 @@ function requireJavascriptCompiler () {
8140
8189
  return !JavaScriptCompiler.RESERVED_WORDS[name] && /^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name);
8141
8190
  };
8142
8191
 
8143
- function strictLookup(requireTerminal, compiler, parts, i, type) {
8192
+ function strictLookup(requireTerminal, compiler, parts, startPartIndex, type) {
8144
8193
  var stack = compiler.popStack(),
8145
8194
  len = parts.length;
8146
8195
  if (requireTerminal) {
8147
8196
  len--;
8148
8197
  }
8149
8198
 
8150
- for (; i < len; i++) {
8199
+ for (var i = startPartIndex; i < len; i++) {
8151
8200
  stack = compiler.nameLookup(stack, parts[i], type);
8152
8201
  }
8153
8202
 
8154
8203
  if (requireTerminal) {
8155
- return [compiler.aliasable('container.strict'), '(', stack, ', ', compiler.quotedString(parts[i]), ', ', JSON.stringify(compiler.source.currentLocation), ' )'];
8204
+ return [compiler.aliasable('container.strict'), '(', stack, ', ', compiler.quotedString(parts[len]), ', ', JSON.stringify(compiler.source.currentLocation), ' )'];
8156
8205
  } else {
8157
8206
  return stack;
8158
8207
  }
@@ -10,7 +10,7 @@ import { writeFileAtomic } from './fs-operations.mjs';
10
10
  import { readFile, stat } from 'node:fs/promises';
11
11
  import { m as matter } from '../shared/ccjk.y-a_1vK4.mjs';
12
12
  import { j as join } from '../shared/ccjk.bQ7Dh1g4.mjs';
13
- import { C as CloudErrorFactory, a as CloudError } from '../shared/ccjk.UhjQ1seV.mjs';
13
+ import { C as CloudErrorFactory, a as CloudError } from '../shared/ccjk.DMV3x5Sd.mjs';
14
14
  import { s as showImpactReminder } from '../shared/ccjk.C1hANZTu.mjs';
15
15
  import '../shared/ccjk.BAGoDD49.mjs';
16
16
  import 'node:readline';
@@ -122,7 +122,7 @@ function getSlashCommands() {
122
122
  descriptionZh: "\u521B\u5EFA\u914D\u7F6E\u5907\u4EFD",
123
123
  category: "system",
124
124
  handler: async () => {
125
- const { backupExistingConfig } = await import('./config.mjs').then(function (n) { return n.H; });
125
+ const { backupExistingConfig } = await import('./config.mjs').then(function (n) { return n.N; });
126
126
  const backupPath = backupExistingConfig();
127
127
  if (backupPath) {
128
128
  console.log(a.green(`\u2705 Backup created: ${backupPath}`));
@@ -616,7 +616,7 @@ async function uninstall(options = {}) {
616
616
  }
617
617
  const uninstaller = new ZcfUninstaller(lang);
618
618
  if (codeType === "codex") {
619
- const { runCodexUninstall } = await import('./codex.mjs').then(function (n) { return n.u; });
619
+ const { runCodexUninstall } = await import('./codex.mjs').then(function (n) { return n.t; });
620
620
  await runCodexUninstall();
621
621
  return;
622
622
  }
@@ -1,17 +1,16 @@
1
1
  import { existsSync } from 'node:fs';
2
2
  import a from './index5.mjs';
3
3
  import { i as inquirer } from './index6.mjs';
4
- import { M as MCP_SERVICE_CONFIGS, g as getMcpServices } from '../shared/ccjk.DKXs7Fbm.mjs';
4
+ import { n as copyConfigFiles, r as readMcpConfig, M as MCP_SERVICE_CONFIGS, g as getMcpServices } from './config.mjs';
5
5
  import { DEFAULT_CODE_TOOL_TYPE, resolveCodeToolType as resolveCodeToolType$1, isCodeToolType } from './constants.mjs';
6
6
  import { i18n } from './index2.mjs';
7
7
  import { displayBanner } from './banner.mjs';
8
8
  import { readZcfConfig, updateZcfConfig } from './ccjk-config.mjs';
9
- import { l as copyConfigFiles, r as readMcpConfig } from './config.mjs';
10
- import { c as runCodexUpdate } from './codex.mjs';
9
+ import { b as runCodexUpdate } from './codex.mjs';
11
10
  import { n as needsMigration, m as migrateSettingsForTokenRetrieval, d as displayMigrationResult, p as promptMigration } from '../shared/ccjk.Hwoicrh8.mjs';
12
- import { u as updatePromptOnly } from '../shared/ccjk.Nwf9bR70.mjs';
11
+ import { u as updatePromptOnly } from '../shared/ccjk.BzxpiEPF.mjs';
13
12
  import { a as handleExitPromptError, h as handleGeneralError } from '../shared/ccjk.DGllfVCZ.mjs';
14
- import { a as installMcpServices } from '../shared/ccjk.kAZkKbGW.mjs';
13
+ import { a as installMcpServices } from '../shared/ccjk.tI_s2uSh.mjs';
15
14
  import { resolveAiOutputLanguage } from './prompts.mjs';
16
15
  import { g as getRuntimeVersion } from '../shared/ccjk.gDEDGD_t.mjs';
17
16
  import { r as resolveClaudeFamilySettingsTarget } from '../shared/ccjk.Di1IYU3u.mjs';
@@ -33,25 +32,25 @@ import 'node:os';
33
32
  import 'node:crypto';
34
33
  import 'buffer';
35
34
  import 'string_decoder';
36
- import 'node:child_process';
37
- import '../shared/ccjk.bQ7Dh1g4.mjs';
38
35
  import 'node:url';
39
- import '../shared/ccjk.BBtCGd_g.mjs';
40
- import './index3.mjs';
36
+ import '../shared/ccjk.RyizuzOI.mjs';
37
+ import 'node:child_process';
41
38
  import './fs-operations.mjs';
42
39
  import 'node:fs/promises';
40
+ import '../shared/ccjk.bQ7Dh1g4.mjs';
43
41
  import './json-config.mjs';
44
- import '../shared/ccjk.RyizuzOI.mjs';
45
42
  import './platform.mjs';
46
43
  import './main.mjs';
47
44
  import 'module';
48
45
  import 'node:stream';
46
+ import '../shared/ccjk.BBtCGd_g.mjs';
47
+ import './index3.mjs';
49
48
  import './index8.mjs';
50
49
  import '../shared/ccjk.DeWpAShp.mjs';
51
50
  import '../shared/ccjk.CxpGa6MC.mjs';
52
51
  import '../shared/ccjk.BFQ7yr5S.mjs';
53
52
  import '../shared/ccjk.DZ2LLOa-.mjs';
54
- import '../shared/ccjk.4iw1XCF3.mjs';
53
+ import '../shared/ccjk.BJ3Zpjo5.mjs';
55
54
 
56
55
  const ccjkVersion = getRuntimeVersion();
57
56
  function resolveCodeToolType(optionValue, savedValue) {
@@ -8,9 +8,9 @@ import { d as dirname } from '../shared/ccjk.bQ7Dh1g4.mjs';
8
8
  import { isCodeToolType, isClaudeFamilyCodeTool, CODEX_CONFIG_FILE, ZCF_CONFIG_FILE } from './constants.mjs';
9
9
  import { i18n } from './index2.mjs';
10
10
  import { readZcfConfig, buildUpdatedTomlConfig, stringifyTomlConfig } from './ccjk-config.mjs';
11
- import { e as ensureClaudeFamilyCoreFeatures } from '../shared/ccjk.DqlzNDEQ.mjs';
11
+ import { e as ensureClaudeFamilyCoreFeatures } from '../shared/ccjk.BEiR3L4C.mjs';
12
12
  import { r as resolveClaudeFamilySettingsTarget, n as normalizeClaudeFamilySettings } from '../shared/ccjk.Di1IYU3u.mjs';
13
- import { i as buildCodexGoalsFeatureConfigContent } from './codex.mjs';
13
+ import { h as buildCodexGoalsFeatureConfigContent } from './codex.mjs';
14
14
  import { a as addNumbersToChoices } from '../shared/ccjk.BFQ7yr5S.mjs';
15
15
  import '../shared/ccjk.BAGoDD49.mjs';
16
16
  import 'node:readline';
@@ -33,22 +33,21 @@ import '../shared/ccjk.BBtCGd_g.mjs';
33
33
  import './index3.mjs';
34
34
  import './json-config.mjs';
35
35
  import '../shared/ccjk.RyizuzOI.mjs';
36
- import '../shared/ccjk.DKXs7Fbm.mjs';
36
+ import './config.mjs';
37
37
  import 'node:child_process';
38
+ import './platform.mjs';
39
+ import './main.mjs';
40
+ import 'module';
41
+ import 'node:stream';
38
42
  import '../shared/ccjk.B8oqkakg.mjs';
39
43
  import '../shared/ccjk.DFRPtmK_.mjs';
40
44
  import './auto-updater.mjs';
41
45
  import './index8.mjs';
42
46
  import '../shared/ccjk.DeWpAShp.mjs';
43
- import './main.mjs';
44
- import 'module';
45
- import 'node:stream';
46
- import './platform.mjs';
47
47
  import '../shared/ccjk.DZ2LLOa-.mjs';
48
48
  import './version-checker.mjs';
49
49
  import '../shared/ccjk.CxpGa6MC.mjs';
50
- import './config.mjs';
51
- import '../shared/ccjk.4iw1XCF3.mjs';
50
+ import '../shared/ccjk.BJ3Zpjo5.mjs';
52
51
  import './prompts.mjs';
53
52
  import '../shared/ccjk.gDEDGD_t.mjs';
54
53
 
package/dist/cli.mjs CHANGED
@@ -2667,7 +2667,7 @@ async function runLazyCli() {
2667
2667
  spinner?.stop();
2668
2668
  await runHealthAlertsCheck();
2669
2669
  await showCommandDiscoveryBanner();
2670
- cli.parse();
2670
+ await cli.parse();
2671
2671
  } catch (error) {
2672
2672
  spinner?.stop();
2673
2673
  throw error;
package/dist/index.d.mts CHANGED
@@ -394,7 +394,7 @@ declare function convertParameterDefault(value: unknown): TemplateParameterValue
394
394
  /**
395
395
  * Convert raw recommendation to typed recommendation
396
396
  */
397
- declare function convertRecommendation(raw: RawRecommendation, preferredLang?: 'en' | 'zh-CN'): Recommendation;
397
+ declare function convertRecommendation(raw: RawRecommendation, _preferredLang?: 'en' | 'zh-CN'): Recommendation;
398
398
  /**
399
399
  * Convert raw template parameter to typed parameter
400
400
  */
@@ -408,7 +408,7 @@ declare function convertTemplateParameter(raw: {
408
408
  /**
409
409
  * Convert raw template to typed template
410
410
  */
411
- declare function convertTemplate(raw: RawTemplate, preferredLang?: 'en' | 'zh-CN'): TemplateResponse;
411
+ declare function convertTemplate(raw: RawTemplate, _preferredLang?: 'en' | 'zh-CN'): TemplateResponse;
412
412
  /**
413
413
  * Convert raw project analysis response to typed response
414
414
  */
@@ -1411,7 +1411,7 @@ declare function isRateLimitError(error: unknown): boolean;
1411
1411
  /**
1412
1412
  * Handle cloud error with logging and user-friendly message
1413
1413
  */
1414
- declare function handleCloudError(error: unknown, context?: string, language?: string): CloudError;
1414
+ declare function handleCloudError(error: unknown, context?: string, _language?: string): CloudError;
1415
1415
  /**
1416
1416
  * Get retry delay for error (exponential backoff)
1417
1417
  */
package/dist/index.d.ts CHANGED
@@ -394,7 +394,7 @@ declare function convertParameterDefault(value: unknown): TemplateParameterValue
394
394
  /**
395
395
  * Convert raw recommendation to typed recommendation
396
396
  */
397
- declare function convertRecommendation(raw: RawRecommendation, preferredLang?: 'en' | 'zh-CN'): Recommendation;
397
+ declare function convertRecommendation(raw: RawRecommendation, _preferredLang?: 'en' | 'zh-CN'): Recommendation;
398
398
  /**
399
399
  * Convert raw template parameter to typed parameter
400
400
  */
@@ -408,7 +408,7 @@ declare function convertTemplateParameter(raw: {
408
408
  /**
409
409
  * Convert raw template to typed template
410
410
  */
411
- declare function convertTemplate(raw: RawTemplate, preferredLang?: 'en' | 'zh-CN'): TemplateResponse;
411
+ declare function convertTemplate(raw: RawTemplate, _preferredLang?: 'en' | 'zh-CN'): TemplateResponse;
412
412
  /**
413
413
  * Convert raw project analysis response to typed response
414
414
  */
@@ -1411,7 +1411,7 @@ declare function isRateLimitError(error: unknown): boolean;
1411
1411
  /**
1412
1412
  * Handle cloud error with logging and user-friendly message
1413
1413
  */
1414
- declare function handleCloudError(error: unknown, context?: string, language?: string): CloudError;
1414
+ declare function handleCloudError(error: unknown, context?: string, _language?: string): CloudError;
1415
1415
  /**
1416
1416
  * Get retry delay for error (exponential backoff)
1417
1417
  */
package/dist/index.mjs CHANGED
@@ -1,10 +1,10 @@
1
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.Cv13QsGp.mjs';
2
- import { a as createCloudClient } from './shared/ccjk.Dhu8ia5S.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.Dhu8ia5S.mjs';
2
+ import { a as createCloudClient } from './shared/ccjk.zFGcZT7Y.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.zFGcZT7Y.mjs';
4
4
  import { T as ToolRegistry } from './shared/ccjk.lG3ccFjm.mjs';
5
5
  export { A as AiderTool, B as BaseCodeTool, C as ClaudeCodeTool, b as ClavueTool, c as ClineTool, d as CodexTool, e as ContinueTool, f as CursorTool, a as getRegistry, g as getRuntimeCapabilityDescriptor } from './shared/ccjk.lG3ccFjm.mjs';
6
6
  import { CLOUD_ENDPOINTS } from './chunks/constants.mjs';
7
- export { a as CloudError, b as CloudErrorCode, C 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.UhjQ1seV.mjs';
7
+ export { a as CloudError, b as CloudErrorCode, C 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.DMV3x5Sd.mjs';
8
8
  import { e as extractString } from './shared/ccjk.C2jHOZVP.mjs';
9
9
  export { a as extractDisplayName, i as i18nHelpers, n as normalizeRecommendation, b as normalizeRecommendations } from './shared/ccjk.C2jHOZVP.mjs';
10
10
  import a from './chunks/index5.mjs';
@@ -15,7 +15,7 @@ import * as os from 'node:os';
15
15
  import { homedir } from 'node:os';
16
16
  import { j as join$1 } from './shared/ccjk.bQ7Dh1g4.mjs';
17
17
  import { b as buildCommand, c as commandExists, a as escapeArgument, e as executeCommand, d as executeCommandParallel, f as executeCommandSequence, g as executeCommandStream, h as getCommandPath, i as getCommandVersion, p as parseVersion } from './shared/ccjk.BnsY5WxD.mjs';
18
- export { H as config } from './chunks/config.mjs';
18
+ export { N as config } from './chunks/config.mjs';
19
19
  import * as path from 'node:path';
20
20
  export { a as loggerUtils } from './shared/ccjk.8oaxX4iR.mjs';
21
21
  export { p as platform } from './chunks/platform.mjs';
@@ -24,8 +24,8 @@ import { pipeline } from 'node:stream/promises';
24
24
  import './chunks/index9.mjs';
25
25
  import 'tinyglobby';
26
26
  import './shared/ccjk.BBtCGd_g.mjs';
27
- import 'node:url';
28
27
  import 'node:crypto';
28
+ import 'node:url';
29
29
  import 'node:util';
30
30
  import './chunks/index2.mjs';
31
31
  import 'node:process';
@@ -184,7 +184,7 @@ function convertParameterDefault(value) {
184
184
  }
185
185
  return null;
186
186
  }
187
- function convertRecommendation(raw, preferredLang = "en") {
187
+ function convertRecommendation(raw, _preferredLang = "en") {
188
188
  return {
189
189
  id: raw.id,
190
190
  name: typeof raw.name === "string" ? { en: raw.name } : raw.name,
@@ -206,7 +206,7 @@ function convertTemplateParameter(raw) {
206
206
  description: typeof raw.description === "string" ? { en: raw.description } : raw.description
207
207
  };
208
208
  }
209
- function convertTemplate(raw, preferredLang = "en") {
209
+ function convertTemplate(raw, _preferredLang = "en") {
210
210
  return {
211
211
  id: raw.id,
212
212
  type: raw.type,