ccjk 12.0.0 → 12.0.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/agent-teams.mjs +17 -18
- package/dist/chunks/agent.mjs +105 -102
- package/dist/chunks/agents.mjs +87 -77
- package/dist/chunks/api-cli.mjs +41 -27
- package/dist/chunks/api-providers.mjs +2 -4
- package/dist/chunks/api.mjs +22 -11
- package/dist/chunks/auto-bootstrap.mjs +3 -5
- package/dist/chunks/auto-init.mjs +3 -4
- package/dist/chunks/auto-updater.mjs +103 -91
- package/dist/chunks/banner.mjs +41 -42
- package/dist/chunks/boost.mjs +30 -31
- package/dist/chunks/ccjk-agents.mjs +6 -9
- package/dist/chunks/ccjk-all.mjs +703 -85
- package/dist/chunks/ccjk-config.mjs +6 -6
- package/dist/chunks/ccjk-hooks.mjs +20 -9
- package/dist/chunks/ccjk-mcp.mjs +64 -52
- package/dist/chunks/ccjk-setup.mjs +35 -25
- package/dist/chunks/ccjk-skills.mjs +51 -41
- package/dist/chunks/ccr.mjs +42 -32
- package/dist/chunks/ccu.mjs +16 -12
- package/dist/chunks/check-updates.mjs +30 -19
- package/dist/chunks/claude-code-config-manager.mjs +25 -10
- package/dist/chunks/claude-code-incremental-manager.mjs +65 -51
- package/dist/chunks/claude-config.mjs +2 -2
- package/dist/chunks/claude-wrapper.mjs +9 -6
- package/dist/chunks/cleanup-migration.mjs +1 -1
- package/dist/chunks/cli-hook.mjs +10 -3
- package/dist/chunks/cloud-sync.mjs +1 -1
- package/dist/chunks/codex-config-switch.mjs +58 -45
- package/dist/chunks/codex-provider-manager.mjs +29 -16
- package/dist/chunks/codex-uninstaller.mjs +5 -6
- package/dist/chunks/codex.mjs +89 -89
- package/dist/chunks/commands.mjs +28 -29
- package/dist/chunks/commands2.mjs +4 -3
- package/dist/chunks/commit.mjs +42 -23
- package/dist/chunks/completion.mjs +46 -47
- package/dist/chunks/config-consolidator.mjs +12 -13
- package/dist/chunks/config-switch.mjs +66 -53
- package/dist/chunks/config.mjs +10 -10
- package/dist/chunks/config2.mjs +53 -42
- package/dist/chunks/config3.mjs +107 -93
- package/dist/chunks/constants.mjs +2 -4
- package/dist/chunks/context-loader.mjs +5 -4
- package/dist/chunks/context.mjs +77 -76
- package/dist/chunks/convoy-manager.mjs +4 -4
- package/dist/chunks/dashboard.mjs +28 -29
- package/dist/chunks/doctor.mjs +68 -54
- package/dist/chunks/evolution.mjs +37 -38
- package/dist/chunks/features.mjs +103 -92
- package/dist/chunks/fs-operations.mjs +1 -1
- package/dist/chunks/health-alerts.mjs +1 -1
- package/dist/chunks/health-check.mjs +1 -1
- package/dist/chunks/help.mjs +117 -116
- package/dist/chunks/hook-installer.mjs +3 -2
- package/dist/chunks/index.mjs +20 -6
- package/dist/chunks/index10.mjs +1171 -0
- package/dist/chunks/index11.mjs +1008 -0
- package/dist/chunks/index12.mjs +193 -0
- package/dist/chunks/index13.mjs +218 -0
- package/dist/chunks/index14.mjs +663 -0
- package/dist/chunks/index2.mjs +19 -10
- package/dist/chunks/index3.mjs +19079 -164
- package/dist/chunks/index4.mjs +8 -1171
- package/dist/chunks/index5.mjs +7479 -884
- package/dist/chunks/index6.mjs +160 -184
- package/dist/chunks/index7.mjs +3573 -653
- package/dist/chunks/index8.mjs +19 -0
- package/dist/chunks/index9.mjs +616 -0
- package/dist/chunks/init.mjs +173 -173
- package/dist/chunks/installer.mjs +92 -82
- package/dist/chunks/installer2.mjs +3 -2
- package/dist/chunks/interview.mjs +118 -107
- package/dist/chunks/json-config.mjs +3 -2
- package/dist/chunks/linux.mjs +3863 -0
- package/dist/chunks/macos.mjs +69 -0
- package/dist/chunks/main.mjs +635 -0
- package/dist/chunks/marketplace.mjs +69 -66
- package/dist/chunks/mcp-cli.mjs +61 -48
- package/dist/chunks/mcp.mjs +140 -127
- package/dist/chunks/menu.mjs +85 -85
- package/dist/chunks/metrics-display.mjs +41 -40
- package/dist/chunks/migrator.mjs +4 -5
- package/dist/chunks/monitor.mjs +95 -95
- package/dist/chunks/notification.mjs +151 -141
- package/dist/chunks/onboarding.mjs +26 -15
- package/dist/chunks/package.mjs +1 -1
- package/dist/chunks/paradigm.mjs +24 -23
- package/dist/chunks/permission-manager.mjs +10 -11
- package/dist/chunks/permissions.mjs +72 -57
- package/dist/chunks/persistence-manager.mjs +97 -84
- package/dist/chunks/persistence.mjs +1 -1
- package/dist/chunks/platform.mjs +29 -29
- package/dist/chunks/plugin.mjs +104 -105
- package/dist/chunks/prompts.mjs +36 -25
- package/dist/chunks/providers.mjs +68 -69
- package/dist/chunks/quick-actions.mjs +71 -72
- package/dist/chunks/quick-provider.mjs +56 -40
- package/dist/chunks/quick-setup.mjs +71 -60
- package/dist/chunks/remote.mjs +21 -12
- package/dist/chunks/session.mjs +116 -103
- package/dist/chunks/sessions.mjs +29 -28
- package/dist/chunks/silent-updater.mjs +8 -10
- package/dist/chunks/simple-config.mjs +13 -10
- package/dist/chunks/skill.mjs +8560 -103
- package/dist/chunks/skills-sync.mjs +5212 -79
- package/dist/chunks/skills.mjs +105 -94
- package/dist/chunks/slash-commands.mjs +36 -37
- package/dist/chunks/smart-defaults.mjs +7 -3
- package/dist/chunks/smart-guide.mjs +1 -1
- package/dist/chunks/startup.mjs +2 -4
- package/dist/chunks/stats.mjs +41 -42
- package/dist/chunks/status.mjs +49 -50
- package/dist/chunks/team.mjs +24 -12
- package/dist/chunks/thinking.mjs +74 -63
- package/dist/chunks/trace.mjs +20 -19
- package/dist/chunks/uninstall.mjs +69 -56
- package/dist/chunks/update.mjs +39 -28
- package/dist/chunks/upgrade-manager.mjs +24 -18
- package/dist/chunks/version-checker.mjs +45 -41
- package/dist/chunks/vim.mjs +81 -69
- package/dist/chunks/windows.mjs +14 -0
- package/dist/chunks/workflows.mjs +15 -15
- package/dist/chunks/wsl.mjs +129 -0
- package/dist/chunks/zero-config.mjs +45 -34
- package/dist/cli.mjs +20 -20
- package/dist/index.mjs +41 -31
- package/dist/shared/ccjk.BAGoDD49.mjs +36 -0
- package/dist/shared/ccjk.BBtCGd_g.mjs +899 -0
- package/dist/shared/{ccjk.CGcy7cNM.mjs → ccjk.BDKUdmLk.mjs} +1 -1
- package/dist/shared/{ccjk.DtMBiwVG.mjs → ccjk.BFxsJM0k.mjs} +1 -1
- package/dist/shared/{ccjk.j4uut26D.mjs → ccjk.BIxuVL3_.mjs} +5 -5
- package/dist/shared/ccjk.BRZ9ww8S.mjs +142 -0
- package/dist/shared/{ccjk.CN0edl87.mjs → ccjk.BSYWk9ML.mjs} +1 -1
- package/dist/shared/{ccjk.Dk1HDseQ.mjs → ccjk.BnpWvs9V.mjs} +75 -75
- package/dist/shared/ccjk.BoApaI4j.mjs +28 -0
- package/dist/shared/{ccjk.DKojSRzw.mjs → ccjk.BrPUmTqm.mjs} +1 -1
- package/dist/shared/{ccjk.C10pepYx.mjs → ccjk.BxSmJ8B7.mjs} +1 -1
- package/dist/shared/ccjk.Bx_rmYfN.mjs +69 -0
- package/dist/shared/ccjk.COweQ1RR.mjs +5 -0
- package/dist/shared/{ccjk.BN90X6oc.mjs → ccjk.CePkJq2S.mjs} +17 -17
- package/dist/shared/{ccjk.Bvoex4TZ.mjs → ccjk.CfKKcvWy.mjs} +1 -1
- package/dist/shared/ccjk.Cjgrln_h.mjs +297 -0
- package/dist/shared/ccjk.CxpGa6MC.mjs +2724 -0
- package/dist/shared/{ccjk.DfwJOEok.mjs → ccjk.D5MFQT7w.mjs} +1 -1
- package/dist/shared/{ccjk.cChAaGgT.mjs → ccjk.DG_o24cZ.mjs} +6 -6
- package/dist/shared/{ccjk.bhFAMRyc.mjs → ccjk.DLLw-h4Y.mjs} +32 -32
- package/dist/shared/ccjk.DOwtZMk8.mjs +4019 -0
- package/dist/shared/{ccjk.BsXQugfY.mjs → ccjk.DTdjs-qK.mjs} +13 -13
- package/dist/shared/{ccjk.Bdhyg3X-.mjs → ccjk.DsYaCCx4.mjs} +1 -1
- package/dist/shared/ccjk.KfSWcGlE.mjs +38 -0
- package/dist/shared/ccjk.RyizuzOI.mjs +21 -0
- package/dist/shared/{ccjk.h7_W-wTs.mjs → ccjk.SPoXMvZD.mjs} +1 -1
- package/dist/shared/ccjk.T_cX87dY.mjs +15 -0
- package/dist/shared/{ccjk.CrB6OYHv.mjs → ccjk._dESH4Rk.mjs} +2 -2
- package/dist/shared/ccjk.bQ7Dh1g4.mjs +249 -0
- package/dist/shared/{ccjk.CBhIZiPz.mjs → ccjk.hoqrwWdN.mjs} +1 -1
- package/dist/shared/{ccjk.BNwRnWYx.mjs → ccjk.s7OCVzdd.mjs} +1230 -33
- package/dist/shared/{ccjk.BOIUTf5z.mjs → ccjk.waa2ikKJ.mjs} +8 -9
- package/package.json +31 -30
- package/dist/shared/ccjk.DHbrGcgg.mjs +0 -13
- package/dist/shared/ccjk.DntgA8fQ.mjs +0 -42
package/dist/chunks/ccjk-all.mjs
CHANGED
|
@@ -1,39 +1,657 @@
|
|
|
1
|
-
import
|
|
2
|
-
import consola from '
|
|
3
|
-
import
|
|
1
|
+
import a from './index2.mjs';
|
|
2
|
+
import { c as consola, o as ofetch, a as analyzeProject } from '../shared/ccjk.s7OCVzdd.mjs';
|
|
3
|
+
import fs__default, { readFileSync, promises } from 'node:fs';
|
|
4
4
|
import path__default, { dirname, join } from 'node:path';
|
|
5
|
-
import { hash } from 'ohash';
|
|
6
5
|
import { fileURLToPath } from 'node:url';
|
|
7
|
-
import { ofetch } from 'ofetch';
|
|
8
6
|
import { randomUUID, createHash } from 'node:crypto';
|
|
9
|
-
import { i18n, ensureI18nInitialized } from './
|
|
10
|
-
import { a as analyzeProject } from '../shared/ccjk.BNwRnWYx.mjs';
|
|
7
|
+
import { i18n, ensureI18nInitialized } from './index5.mjs';
|
|
11
8
|
import { ccjkAgents } from './ccjk-agents.mjs';
|
|
12
9
|
import { ccjkHooks } from './ccjk-hooks.mjs';
|
|
13
10
|
import { ccjkMcp } from './ccjk-mcp.mjs';
|
|
14
11
|
import { ccjkSkills } from './ccjk-skills.mjs';
|
|
15
12
|
import { a as extractString } from '../shared/ccjk.AqnXPAzw.mjs';
|
|
16
|
-
import '
|
|
17
|
-
import '
|
|
18
|
-
import '
|
|
19
|
-
import 'pathe';
|
|
13
|
+
import '../shared/ccjk.BAGoDD49.mjs';
|
|
14
|
+
import './index8.mjs';
|
|
15
|
+
import '../shared/ccjk.bQ7Dh1g4.mjs';
|
|
20
16
|
import 'tinyglobby';
|
|
21
|
-
import '
|
|
17
|
+
import '../shared/ccjk.BBtCGd_g.mjs';
|
|
18
|
+
import 'node:process';
|
|
22
19
|
import './constants.mjs';
|
|
23
20
|
import 'node:os';
|
|
24
|
-
import '../shared/ccjk.
|
|
21
|
+
import '../shared/ccjk.CfKKcvWy.mjs';
|
|
25
22
|
import 'node:perf_hooks';
|
|
26
|
-
import '
|
|
27
|
-
import 'node:
|
|
23
|
+
import './index3.mjs';
|
|
24
|
+
import 'node:readline';
|
|
25
|
+
import 'stream';
|
|
26
|
+
import 'node:tty';
|
|
27
|
+
import 'node:async_hooks';
|
|
28
|
+
import '../shared/ccjk.Cjgrln_h.mjs';
|
|
28
29
|
import 'node:util';
|
|
30
|
+
import 'tty';
|
|
31
|
+
import 'fs';
|
|
32
|
+
import 'child_process';
|
|
33
|
+
import 'buffer';
|
|
34
|
+
import 'string_decoder';
|
|
35
|
+
import 'node:child_process';
|
|
29
36
|
import './claude-config.mjs';
|
|
30
37
|
import './json-config.mjs';
|
|
31
|
-
import '
|
|
38
|
+
import '../shared/ccjk.RyizuzOI.mjs';
|
|
32
39
|
import './fs-operations.mjs';
|
|
33
40
|
import 'node:fs/promises';
|
|
34
41
|
import './platform.mjs';
|
|
35
|
-
import '
|
|
36
|
-
import '
|
|
42
|
+
import './main.mjs';
|
|
43
|
+
import 'module';
|
|
44
|
+
import 'node:stream';
|
|
45
|
+
import '../shared/ccjk.DsYaCCx4.mjs';
|
|
46
|
+
|
|
47
|
+
const defaults = Object.freeze({
|
|
48
|
+
ignoreUnknown: false,
|
|
49
|
+
respectType: false,
|
|
50
|
+
respectFunctionNames: false,
|
|
51
|
+
respectFunctionProperties: false,
|
|
52
|
+
unorderedObjects: true,
|
|
53
|
+
unorderedArrays: false,
|
|
54
|
+
unorderedSets: false,
|
|
55
|
+
excludeKeys: void 0,
|
|
56
|
+
excludeValues: void 0,
|
|
57
|
+
replacer: void 0
|
|
58
|
+
});
|
|
59
|
+
function objectHash(object, options) {
|
|
60
|
+
if (options) {
|
|
61
|
+
options = { ...defaults, ...options };
|
|
62
|
+
} else {
|
|
63
|
+
options = defaults;
|
|
64
|
+
}
|
|
65
|
+
const hasher = createHasher(options);
|
|
66
|
+
hasher.dispatch(object);
|
|
67
|
+
return hasher.toString();
|
|
68
|
+
}
|
|
69
|
+
const defaultPrototypesKeys = Object.freeze([
|
|
70
|
+
"prototype",
|
|
71
|
+
"__proto__",
|
|
72
|
+
"constructor"
|
|
73
|
+
]);
|
|
74
|
+
function createHasher(options) {
|
|
75
|
+
let buff = "";
|
|
76
|
+
let context = /* @__PURE__ */ new Map();
|
|
77
|
+
const write = (str) => {
|
|
78
|
+
buff += str;
|
|
79
|
+
};
|
|
80
|
+
return {
|
|
81
|
+
toString() {
|
|
82
|
+
return buff;
|
|
83
|
+
},
|
|
84
|
+
getContext() {
|
|
85
|
+
return context;
|
|
86
|
+
},
|
|
87
|
+
dispatch(value) {
|
|
88
|
+
if (options.replacer) {
|
|
89
|
+
value = options.replacer(value);
|
|
90
|
+
}
|
|
91
|
+
const type = value === null ? "null" : typeof value;
|
|
92
|
+
return this[type](value);
|
|
93
|
+
},
|
|
94
|
+
object(object) {
|
|
95
|
+
if (object && typeof object.toJSON === "function") {
|
|
96
|
+
return this.object(object.toJSON());
|
|
97
|
+
}
|
|
98
|
+
const objString = Object.prototype.toString.call(object);
|
|
99
|
+
let objType = "";
|
|
100
|
+
const objectLength = objString.length;
|
|
101
|
+
if (objectLength < 10) {
|
|
102
|
+
objType = "unknown:[" + objString + "]";
|
|
103
|
+
} else {
|
|
104
|
+
objType = objString.slice(8, objectLength - 1);
|
|
105
|
+
}
|
|
106
|
+
objType = objType.toLowerCase();
|
|
107
|
+
let objectNumber = null;
|
|
108
|
+
if ((objectNumber = context.get(object)) === void 0) {
|
|
109
|
+
context.set(object, context.size);
|
|
110
|
+
} else {
|
|
111
|
+
return this.dispatch("[CIRCULAR:" + objectNumber + "]");
|
|
112
|
+
}
|
|
113
|
+
if (typeof Buffer !== "undefined" && Buffer.isBuffer && Buffer.isBuffer(object)) {
|
|
114
|
+
write("buffer:");
|
|
115
|
+
return write(object.toString("utf8"));
|
|
116
|
+
}
|
|
117
|
+
if (objType !== "object" && objType !== "function" && objType !== "asyncfunction") {
|
|
118
|
+
if (this[objType]) {
|
|
119
|
+
this[objType](object);
|
|
120
|
+
} else if (!options.ignoreUnknown) {
|
|
121
|
+
this.unkown(object, objType);
|
|
122
|
+
}
|
|
123
|
+
} else {
|
|
124
|
+
let keys = Object.keys(object);
|
|
125
|
+
if (options.unorderedObjects) {
|
|
126
|
+
keys = keys.sort();
|
|
127
|
+
}
|
|
128
|
+
let extraKeys = [];
|
|
129
|
+
if (options.respectType !== false && !isNativeFunction(object)) {
|
|
130
|
+
extraKeys = defaultPrototypesKeys;
|
|
131
|
+
}
|
|
132
|
+
if (options.excludeKeys) {
|
|
133
|
+
keys = keys.filter((key) => {
|
|
134
|
+
return !options.excludeKeys(key);
|
|
135
|
+
});
|
|
136
|
+
extraKeys = extraKeys.filter((key) => {
|
|
137
|
+
return !options.excludeKeys(key);
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
write("object:" + (keys.length + extraKeys.length) + ":");
|
|
141
|
+
const dispatchForKey = (key) => {
|
|
142
|
+
this.dispatch(key);
|
|
143
|
+
write(":");
|
|
144
|
+
if (!options.excludeValues) {
|
|
145
|
+
this.dispatch(object[key]);
|
|
146
|
+
}
|
|
147
|
+
write(",");
|
|
148
|
+
};
|
|
149
|
+
for (const key of keys) {
|
|
150
|
+
dispatchForKey(key);
|
|
151
|
+
}
|
|
152
|
+
for (const key of extraKeys) {
|
|
153
|
+
dispatchForKey(key);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
array(arr, unordered) {
|
|
158
|
+
unordered = unordered === void 0 ? options.unorderedArrays !== false : unordered;
|
|
159
|
+
write("array:" + arr.length + ":");
|
|
160
|
+
if (!unordered || arr.length <= 1) {
|
|
161
|
+
for (const entry of arr) {
|
|
162
|
+
this.dispatch(entry);
|
|
163
|
+
}
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
const contextAdditions = /* @__PURE__ */ new Map();
|
|
167
|
+
const entries = arr.map((entry) => {
|
|
168
|
+
const hasher = createHasher(options);
|
|
169
|
+
hasher.dispatch(entry);
|
|
170
|
+
for (const [key, value] of hasher.getContext()) {
|
|
171
|
+
contextAdditions.set(key, value);
|
|
172
|
+
}
|
|
173
|
+
return hasher.toString();
|
|
174
|
+
});
|
|
175
|
+
context = contextAdditions;
|
|
176
|
+
entries.sort();
|
|
177
|
+
return this.array(entries, false);
|
|
178
|
+
},
|
|
179
|
+
date(date) {
|
|
180
|
+
return write("date:" + date.toJSON());
|
|
181
|
+
},
|
|
182
|
+
symbol(sym) {
|
|
183
|
+
return write("symbol:" + sym.toString());
|
|
184
|
+
},
|
|
185
|
+
unkown(value, type) {
|
|
186
|
+
write(type);
|
|
187
|
+
if (!value) {
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
write(":");
|
|
191
|
+
if (value && typeof value.entries === "function") {
|
|
192
|
+
return this.array(
|
|
193
|
+
Array.from(value.entries()),
|
|
194
|
+
true
|
|
195
|
+
/* ordered */
|
|
196
|
+
);
|
|
197
|
+
}
|
|
198
|
+
},
|
|
199
|
+
error(err) {
|
|
200
|
+
return write("error:" + err.toString());
|
|
201
|
+
},
|
|
202
|
+
boolean(bool) {
|
|
203
|
+
return write("bool:" + bool);
|
|
204
|
+
},
|
|
205
|
+
string(string) {
|
|
206
|
+
write("string:" + string.length + ":");
|
|
207
|
+
write(string);
|
|
208
|
+
},
|
|
209
|
+
function(fn) {
|
|
210
|
+
write("fn:");
|
|
211
|
+
if (isNativeFunction(fn)) {
|
|
212
|
+
this.dispatch("[native]");
|
|
213
|
+
} else {
|
|
214
|
+
this.dispatch(fn.toString());
|
|
215
|
+
}
|
|
216
|
+
if (options.respectFunctionNames !== false) {
|
|
217
|
+
this.dispatch("function-name:" + String(fn.name));
|
|
218
|
+
}
|
|
219
|
+
if (options.respectFunctionProperties) {
|
|
220
|
+
this.object(fn);
|
|
221
|
+
}
|
|
222
|
+
},
|
|
223
|
+
number(number) {
|
|
224
|
+
return write("number:" + number);
|
|
225
|
+
},
|
|
226
|
+
xml(xml) {
|
|
227
|
+
return write("xml:" + xml.toString());
|
|
228
|
+
},
|
|
229
|
+
null() {
|
|
230
|
+
return write("Null");
|
|
231
|
+
},
|
|
232
|
+
undefined() {
|
|
233
|
+
return write("Undefined");
|
|
234
|
+
},
|
|
235
|
+
regexp(regex) {
|
|
236
|
+
return write("regex:" + regex.toString());
|
|
237
|
+
},
|
|
238
|
+
uint8array(arr) {
|
|
239
|
+
write("uint8array:");
|
|
240
|
+
return this.dispatch(Array.prototype.slice.call(arr));
|
|
241
|
+
},
|
|
242
|
+
uint8clampedarray(arr) {
|
|
243
|
+
write("uint8clampedarray:");
|
|
244
|
+
return this.dispatch(Array.prototype.slice.call(arr));
|
|
245
|
+
},
|
|
246
|
+
int8array(arr) {
|
|
247
|
+
write("int8array:");
|
|
248
|
+
return this.dispatch(Array.prototype.slice.call(arr));
|
|
249
|
+
},
|
|
250
|
+
uint16array(arr) {
|
|
251
|
+
write("uint16array:");
|
|
252
|
+
return this.dispatch(Array.prototype.slice.call(arr));
|
|
253
|
+
},
|
|
254
|
+
int16array(arr) {
|
|
255
|
+
write("int16array:");
|
|
256
|
+
return this.dispatch(Array.prototype.slice.call(arr));
|
|
257
|
+
},
|
|
258
|
+
uint32array(arr) {
|
|
259
|
+
write("uint32array:");
|
|
260
|
+
return this.dispatch(Array.prototype.slice.call(arr));
|
|
261
|
+
},
|
|
262
|
+
int32array(arr) {
|
|
263
|
+
write("int32array:");
|
|
264
|
+
return this.dispatch(Array.prototype.slice.call(arr));
|
|
265
|
+
},
|
|
266
|
+
float32array(arr) {
|
|
267
|
+
write("float32array:");
|
|
268
|
+
return this.dispatch(Array.prototype.slice.call(arr));
|
|
269
|
+
},
|
|
270
|
+
float64array(arr) {
|
|
271
|
+
write("float64array:");
|
|
272
|
+
return this.dispatch(Array.prototype.slice.call(arr));
|
|
273
|
+
},
|
|
274
|
+
arraybuffer(arr) {
|
|
275
|
+
write("arraybuffer:");
|
|
276
|
+
return this.dispatch(new Uint8Array(arr));
|
|
277
|
+
},
|
|
278
|
+
url(url) {
|
|
279
|
+
return write("url:" + url.toString());
|
|
280
|
+
},
|
|
281
|
+
map(map) {
|
|
282
|
+
write("map:");
|
|
283
|
+
const arr = [...map];
|
|
284
|
+
return this.array(arr, options.unorderedSets !== false);
|
|
285
|
+
},
|
|
286
|
+
set(set) {
|
|
287
|
+
write("set:");
|
|
288
|
+
const arr = [...set];
|
|
289
|
+
return this.array(arr, options.unorderedSets !== false);
|
|
290
|
+
},
|
|
291
|
+
file(file) {
|
|
292
|
+
write("file:");
|
|
293
|
+
return this.dispatch([file.name, file.size, file.type, file.lastModfied]);
|
|
294
|
+
},
|
|
295
|
+
blob() {
|
|
296
|
+
if (options.ignoreUnknown) {
|
|
297
|
+
return write("[blob]");
|
|
298
|
+
}
|
|
299
|
+
throw new Error(
|
|
300
|
+
'Hashing Blob objects is currently not supported\nUse "options.replacer" or "options.ignoreUnknown"\n'
|
|
301
|
+
);
|
|
302
|
+
},
|
|
303
|
+
domwindow() {
|
|
304
|
+
return write("domwindow");
|
|
305
|
+
},
|
|
306
|
+
bigint(number) {
|
|
307
|
+
return write("bigint:" + number.toString());
|
|
308
|
+
},
|
|
309
|
+
/* Node.js standard native objects */
|
|
310
|
+
process() {
|
|
311
|
+
return write("process");
|
|
312
|
+
},
|
|
313
|
+
timer() {
|
|
314
|
+
return write("timer");
|
|
315
|
+
},
|
|
316
|
+
pipe() {
|
|
317
|
+
return write("pipe");
|
|
318
|
+
},
|
|
319
|
+
tcp() {
|
|
320
|
+
return write("tcp");
|
|
321
|
+
},
|
|
322
|
+
udp() {
|
|
323
|
+
return write("udp");
|
|
324
|
+
},
|
|
325
|
+
tty() {
|
|
326
|
+
return write("tty");
|
|
327
|
+
},
|
|
328
|
+
statwatcher() {
|
|
329
|
+
return write("statwatcher");
|
|
330
|
+
},
|
|
331
|
+
securecontext() {
|
|
332
|
+
return write("securecontext");
|
|
333
|
+
},
|
|
334
|
+
connection() {
|
|
335
|
+
return write("connection");
|
|
336
|
+
},
|
|
337
|
+
zlib() {
|
|
338
|
+
return write("zlib");
|
|
339
|
+
},
|
|
340
|
+
context() {
|
|
341
|
+
return write("context");
|
|
342
|
+
},
|
|
343
|
+
nodescript() {
|
|
344
|
+
return write("nodescript");
|
|
345
|
+
},
|
|
346
|
+
httpparser() {
|
|
347
|
+
return write("httpparser");
|
|
348
|
+
},
|
|
349
|
+
dataview() {
|
|
350
|
+
return write("dataview");
|
|
351
|
+
},
|
|
352
|
+
signal() {
|
|
353
|
+
return write("signal");
|
|
354
|
+
},
|
|
355
|
+
fsevent() {
|
|
356
|
+
return write("fsevent");
|
|
357
|
+
},
|
|
358
|
+
tlswrap() {
|
|
359
|
+
return write("tlswrap");
|
|
360
|
+
}
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
const nativeFunc = "[native code] }";
|
|
364
|
+
const nativeFuncLength = nativeFunc.length;
|
|
365
|
+
function isNativeFunction(f) {
|
|
366
|
+
if (typeof f !== "function") {
|
|
367
|
+
return false;
|
|
368
|
+
}
|
|
369
|
+
return Function.prototype.toString.call(f).slice(-nativeFuncLength) === nativeFunc;
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
class WordArray {
|
|
373
|
+
words;
|
|
374
|
+
sigBytes;
|
|
375
|
+
constructor(words, sigBytes) {
|
|
376
|
+
words = this.words = words || [];
|
|
377
|
+
this.sigBytes = sigBytes === void 0 ? words.length * 4 : sigBytes;
|
|
378
|
+
}
|
|
379
|
+
toString(encoder) {
|
|
380
|
+
return (encoder || Hex).stringify(this);
|
|
381
|
+
}
|
|
382
|
+
concat(wordArray) {
|
|
383
|
+
this.clamp();
|
|
384
|
+
if (this.sigBytes % 4) {
|
|
385
|
+
for (let i = 0; i < wordArray.sigBytes; i++) {
|
|
386
|
+
const thatByte = wordArray.words[i >>> 2] >>> 24 - i % 4 * 8 & 255;
|
|
387
|
+
this.words[this.sigBytes + i >>> 2] |= thatByte << 24 - (this.sigBytes + i) % 4 * 8;
|
|
388
|
+
}
|
|
389
|
+
} else {
|
|
390
|
+
for (let j = 0; j < wordArray.sigBytes; j += 4) {
|
|
391
|
+
this.words[this.sigBytes + j >>> 2] = wordArray.words[j >>> 2];
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
this.sigBytes += wordArray.sigBytes;
|
|
395
|
+
return this;
|
|
396
|
+
}
|
|
397
|
+
clamp() {
|
|
398
|
+
this.words[this.sigBytes >>> 2] &= 4294967295 << 32 - this.sigBytes % 4 * 8;
|
|
399
|
+
this.words.length = Math.ceil(this.sigBytes / 4);
|
|
400
|
+
}
|
|
401
|
+
clone() {
|
|
402
|
+
return new WordArray([...this.words]);
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
const Hex = {
|
|
406
|
+
stringify(wordArray) {
|
|
407
|
+
const hexChars = [];
|
|
408
|
+
for (let i = 0; i < wordArray.sigBytes; i++) {
|
|
409
|
+
const bite = wordArray.words[i >>> 2] >>> 24 - i % 4 * 8 & 255;
|
|
410
|
+
hexChars.push((bite >>> 4).toString(16), (bite & 15).toString(16));
|
|
411
|
+
}
|
|
412
|
+
return hexChars.join("");
|
|
413
|
+
}
|
|
414
|
+
};
|
|
415
|
+
const Base64 = {
|
|
416
|
+
stringify(wordArray) {
|
|
417
|
+
const keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
|
418
|
+
const base64Chars = [];
|
|
419
|
+
for (let i = 0; i < wordArray.sigBytes; i += 3) {
|
|
420
|
+
const byte1 = wordArray.words[i >>> 2] >>> 24 - i % 4 * 8 & 255;
|
|
421
|
+
const byte2 = wordArray.words[i + 1 >>> 2] >>> 24 - (i + 1) % 4 * 8 & 255;
|
|
422
|
+
const byte3 = wordArray.words[i + 2 >>> 2] >>> 24 - (i + 2) % 4 * 8 & 255;
|
|
423
|
+
const triplet = byte1 << 16 | byte2 << 8 | byte3;
|
|
424
|
+
for (let j = 0; j < 4 && i * 8 + j * 6 < wordArray.sigBytes * 8; j++) {
|
|
425
|
+
base64Chars.push(keyStr.charAt(triplet >>> 6 * (3 - j) & 63));
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
return base64Chars.join("");
|
|
429
|
+
}
|
|
430
|
+
};
|
|
431
|
+
const Latin1 = {
|
|
432
|
+
parse(latin1Str) {
|
|
433
|
+
const latin1StrLength = latin1Str.length;
|
|
434
|
+
const words = [];
|
|
435
|
+
for (let i = 0; i < latin1StrLength; i++) {
|
|
436
|
+
words[i >>> 2] |= (latin1Str.charCodeAt(i) & 255) << 24 - i % 4 * 8;
|
|
437
|
+
}
|
|
438
|
+
return new WordArray(words, latin1StrLength);
|
|
439
|
+
}
|
|
440
|
+
};
|
|
441
|
+
const Utf8 = {
|
|
442
|
+
parse(utf8Str) {
|
|
443
|
+
return Latin1.parse(unescape(encodeURIComponent(utf8Str)));
|
|
444
|
+
}
|
|
445
|
+
};
|
|
446
|
+
class BufferedBlockAlgorithm {
|
|
447
|
+
_data = new WordArray();
|
|
448
|
+
_nDataBytes = 0;
|
|
449
|
+
_minBufferSize = 0;
|
|
450
|
+
blockSize = 512 / 32;
|
|
451
|
+
reset() {
|
|
452
|
+
this._data = new WordArray();
|
|
453
|
+
this._nDataBytes = 0;
|
|
454
|
+
}
|
|
455
|
+
_append(data) {
|
|
456
|
+
if (typeof data === "string") {
|
|
457
|
+
data = Utf8.parse(data);
|
|
458
|
+
}
|
|
459
|
+
this._data.concat(data);
|
|
460
|
+
this._nDataBytes += data.sigBytes;
|
|
461
|
+
}
|
|
462
|
+
_doProcessBlock(_dataWords, _offset) {
|
|
463
|
+
}
|
|
464
|
+
_process(doFlush) {
|
|
465
|
+
let processedWords;
|
|
466
|
+
let nBlocksReady = this._data.sigBytes / (this.blockSize * 4);
|
|
467
|
+
if (doFlush) {
|
|
468
|
+
nBlocksReady = Math.ceil(nBlocksReady);
|
|
469
|
+
} else {
|
|
470
|
+
nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);
|
|
471
|
+
}
|
|
472
|
+
const nWordsReady = nBlocksReady * this.blockSize;
|
|
473
|
+
const nBytesReady = Math.min(nWordsReady * 4, this._data.sigBytes);
|
|
474
|
+
if (nWordsReady) {
|
|
475
|
+
for (let offset = 0; offset < nWordsReady; offset += this.blockSize) {
|
|
476
|
+
this._doProcessBlock(this._data.words, offset);
|
|
477
|
+
}
|
|
478
|
+
processedWords = this._data.words.splice(0, nWordsReady);
|
|
479
|
+
this._data.sigBytes -= nBytesReady;
|
|
480
|
+
}
|
|
481
|
+
return new WordArray(processedWords, nBytesReady);
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
class Hasher extends BufferedBlockAlgorithm {
|
|
485
|
+
update(messageUpdate) {
|
|
486
|
+
this._append(messageUpdate);
|
|
487
|
+
this._process();
|
|
488
|
+
return this;
|
|
489
|
+
}
|
|
490
|
+
finalize(messageUpdate) {
|
|
491
|
+
if (messageUpdate) {
|
|
492
|
+
this._append(messageUpdate);
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
const H = [
|
|
498
|
+
1779033703,
|
|
499
|
+
-1150833019,
|
|
500
|
+
1013904242,
|
|
501
|
+
-1521486534,
|
|
502
|
+
1359893119,
|
|
503
|
+
-1694144372,
|
|
504
|
+
528734635,
|
|
505
|
+
1541459225
|
|
506
|
+
];
|
|
507
|
+
const K = [
|
|
508
|
+
1116352408,
|
|
509
|
+
1899447441,
|
|
510
|
+
-1245643825,
|
|
511
|
+
-373957723,
|
|
512
|
+
961987163,
|
|
513
|
+
1508970993,
|
|
514
|
+
-1841331548,
|
|
515
|
+
-1424204075,
|
|
516
|
+
-670586216,
|
|
517
|
+
310598401,
|
|
518
|
+
607225278,
|
|
519
|
+
1426881987,
|
|
520
|
+
1925078388,
|
|
521
|
+
-2132889090,
|
|
522
|
+
-1680079193,
|
|
523
|
+
-1046744716,
|
|
524
|
+
-459576895,
|
|
525
|
+
-272742522,
|
|
526
|
+
264347078,
|
|
527
|
+
604807628,
|
|
528
|
+
770255983,
|
|
529
|
+
1249150122,
|
|
530
|
+
1555081692,
|
|
531
|
+
1996064986,
|
|
532
|
+
-1740746414,
|
|
533
|
+
-1473132947,
|
|
534
|
+
-1341970488,
|
|
535
|
+
-1084653625,
|
|
536
|
+
-958395405,
|
|
537
|
+
-710438585,
|
|
538
|
+
113926993,
|
|
539
|
+
338241895,
|
|
540
|
+
666307205,
|
|
541
|
+
773529912,
|
|
542
|
+
1294757372,
|
|
543
|
+
1396182291,
|
|
544
|
+
1695183700,
|
|
545
|
+
1986661051,
|
|
546
|
+
-2117940946,
|
|
547
|
+
-1838011259,
|
|
548
|
+
-1564481375,
|
|
549
|
+
-1474664885,
|
|
550
|
+
-1035236496,
|
|
551
|
+
-949202525,
|
|
552
|
+
-778901479,
|
|
553
|
+
-694614492,
|
|
554
|
+
-200395387,
|
|
555
|
+
275423344,
|
|
556
|
+
430227734,
|
|
557
|
+
506948616,
|
|
558
|
+
659060556,
|
|
559
|
+
883997877,
|
|
560
|
+
958139571,
|
|
561
|
+
1322822218,
|
|
562
|
+
1537002063,
|
|
563
|
+
1747873779,
|
|
564
|
+
1955562222,
|
|
565
|
+
2024104815,
|
|
566
|
+
-2067236844,
|
|
567
|
+
-1933114872,
|
|
568
|
+
-1866530822,
|
|
569
|
+
-1538233109,
|
|
570
|
+
-1090935817,
|
|
571
|
+
-965641998
|
|
572
|
+
];
|
|
573
|
+
const W = [];
|
|
574
|
+
class SHA256 extends Hasher {
|
|
575
|
+
_hash = new WordArray([...H]);
|
|
576
|
+
/**
|
|
577
|
+
* Resets the internal state of the hash object to initial values.
|
|
578
|
+
*/
|
|
579
|
+
reset() {
|
|
580
|
+
super.reset();
|
|
581
|
+
this._hash = new WordArray([...H]);
|
|
582
|
+
}
|
|
583
|
+
_doProcessBlock(M, offset) {
|
|
584
|
+
const H2 = this._hash.words;
|
|
585
|
+
let a = H2[0];
|
|
586
|
+
let b = H2[1];
|
|
587
|
+
let c = H2[2];
|
|
588
|
+
let d = H2[3];
|
|
589
|
+
let e = H2[4];
|
|
590
|
+
let f = H2[5];
|
|
591
|
+
let g = H2[6];
|
|
592
|
+
let h = H2[7];
|
|
593
|
+
for (let i = 0; i < 64; i++) {
|
|
594
|
+
if (i < 16) {
|
|
595
|
+
W[i] = M[offset + i] | 0;
|
|
596
|
+
} else {
|
|
597
|
+
const gamma0x = W[i - 15];
|
|
598
|
+
const gamma0 = (gamma0x << 25 | gamma0x >>> 7) ^ (gamma0x << 14 | gamma0x >>> 18) ^ gamma0x >>> 3;
|
|
599
|
+
const gamma1x = W[i - 2];
|
|
600
|
+
const gamma1 = (gamma1x << 15 | gamma1x >>> 17) ^ (gamma1x << 13 | gamma1x >>> 19) ^ gamma1x >>> 10;
|
|
601
|
+
W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];
|
|
602
|
+
}
|
|
603
|
+
const ch = e & f ^ ~e & g;
|
|
604
|
+
const maj = a & b ^ a & c ^ b & c;
|
|
605
|
+
const sigma0 = (a << 30 | a >>> 2) ^ (a << 19 | a >>> 13) ^ (a << 10 | a >>> 22);
|
|
606
|
+
const sigma1 = (e << 26 | e >>> 6) ^ (e << 21 | e >>> 11) ^ (e << 7 | e >>> 25);
|
|
607
|
+
const t1 = h + sigma1 + ch + K[i] + W[i];
|
|
608
|
+
const t2 = sigma0 + maj;
|
|
609
|
+
h = g;
|
|
610
|
+
g = f;
|
|
611
|
+
f = e;
|
|
612
|
+
e = d + t1 | 0;
|
|
613
|
+
d = c;
|
|
614
|
+
c = b;
|
|
615
|
+
b = a;
|
|
616
|
+
a = t1 + t2 | 0;
|
|
617
|
+
}
|
|
618
|
+
H2[0] = H2[0] + a | 0;
|
|
619
|
+
H2[1] = H2[1] + b | 0;
|
|
620
|
+
H2[2] = H2[2] + c | 0;
|
|
621
|
+
H2[3] = H2[3] + d | 0;
|
|
622
|
+
H2[4] = H2[4] + e | 0;
|
|
623
|
+
H2[5] = H2[5] + f | 0;
|
|
624
|
+
H2[6] = H2[6] + g | 0;
|
|
625
|
+
H2[7] = H2[7] + h | 0;
|
|
626
|
+
}
|
|
627
|
+
/**
|
|
628
|
+
* Finishes the hash calculation and returns the hash as a WordArray.
|
|
629
|
+
*
|
|
630
|
+
* @param {string} messageUpdate - Additional message content to include in the hash.
|
|
631
|
+
* @returns {WordArray} The finalised hash as a WordArray.
|
|
632
|
+
*/
|
|
633
|
+
finalize(messageUpdate) {
|
|
634
|
+
super.finalize(messageUpdate);
|
|
635
|
+
const nBitsTotal = this._nDataBytes * 8;
|
|
636
|
+
const nBitsLeft = this._data.sigBytes * 8;
|
|
637
|
+
this._data.words[nBitsLeft >>> 5] |= 128 << 24 - nBitsLeft % 32;
|
|
638
|
+
this._data.words[(nBitsLeft + 64 >>> 9 << 4) + 14] = Math.floor(
|
|
639
|
+
nBitsTotal / 4294967296
|
|
640
|
+
);
|
|
641
|
+
this._data.words[(nBitsLeft + 64 >>> 9 << 4) + 15] = nBitsTotal;
|
|
642
|
+
this._data.sigBytes = this._data.words.length * 4;
|
|
643
|
+
this._process();
|
|
644
|
+
return this._hash;
|
|
645
|
+
}
|
|
646
|
+
}
|
|
647
|
+
function sha256base64(message) {
|
|
648
|
+
return new SHA256().finalize(message).toString(Base64);
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
function hash(object, options = {}) {
|
|
652
|
+
const hashed = typeof object === "string" ? object : objectHash(object, options);
|
|
653
|
+
return sha256base64(hashed).slice(0, 10);
|
|
654
|
+
}
|
|
37
655
|
|
|
38
656
|
class CloudCache {
|
|
39
657
|
memoryCache;
|
|
@@ -53,8 +671,8 @@ class CloudCache {
|
|
|
53
671
|
*/
|
|
54
672
|
ensureCacheDir() {
|
|
55
673
|
try {
|
|
56
|
-
if (!
|
|
57
|
-
|
|
674
|
+
if (!fs__default.existsSync(this.cacheDir)) {
|
|
675
|
+
fs__default.mkdirSync(this.cacheDir, { recursive: true });
|
|
58
676
|
consola.debug("Created cache directory:", this.cacheDir);
|
|
59
677
|
}
|
|
60
678
|
} catch (error) {
|
|
@@ -68,8 +686,8 @@ class CloudCache {
|
|
|
68
686
|
loadCacheFromDisk() {
|
|
69
687
|
try {
|
|
70
688
|
const cacheFile = path__default.join(this.cacheDir, "cache.json");
|
|
71
|
-
if (
|
|
72
|
-
const data =
|
|
689
|
+
if (fs__default.existsSync(cacheFile)) {
|
|
690
|
+
const data = fs__default.readFileSync(cacheFile, "utf-8");
|
|
73
691
|
const entries = JSON.parse(data);
|
|
74
692
|
const now = Date.now();
|
|
75
693
|
for (const [key, entry] of Object.entries(entries)) {
|
|
@@ -90,7 +708,7 @@ class CloudCache {
|
|
|
90
708
|
try {
|
|
91
709
|
const cacheFile = path__default.join(this.cacheDir, "cache.json");
|
|
92
710
|
const entries = Object.fromEntries(this.memoryCache);
|
|
93
|
-
|
|
711
|
+
fs__default.writeFileSync(cacheFile, JSON.stringify(entries, null, 2));
|
|
94
712
|
} catch (error) {
|
|
95
713
|
consola.warn("Failed to save cache to disk:", error);
|
|
96
714
|
}
|
|
@@ -1177,7 +1795,7 @@ class CloudSetupOrchestrator {
|
|
|
1177
1795
|
*/
|
|
1178
1796
|
async analyzeProject(options) {
|
|
1179
1797
|
if (options.interactive !== false) {
|
|
1180
|
-
console.log(
|
|
1798
|
+
console.log(a.bold(`
|
|
1181
1799
|
${i18n.t("cloud-setup:analyzingProject")}`));
|
|
1182
1800
|
}
|
|
1183
1801
|
const analysis = await analyzeProject(options.targetDir || process.cwd(), {
|
|
@@ -1211,12 +1829,12 @@ class CloudSetupOrchestrator {
|
|
|
1211
1829
|
* Display project information
|
|
1212
1830
|
*/
|
|
1213
1831
|
displayProjectInfo(analysis) {
|
|
1214
|
-
console.log(` ${
|
|
1832
|
+
console.log(` ${a.dim(i18n.t("cloud-setup:projectType"))}: ${analysis.projectType}`);
|
|
1215
1833
|
if (analysis.frameworks.length > 0) {
|
|
1216
|
-
console.log(` ${
|
|
1834
|
+
console.log(` ${a.dim(i18n.t("cloud-setup:frameworks"))}: ${analysis.frameworks.map((f) => f.name).join(", ")}`);
|
|
1217
1835
|
}
|
|
1218
1836
|
if (analysis.languages.length > 0) {
|
|
1219
|
-
console.log(` ${
|
|
1837
|
+
console.log(` ${a.dim(i18n.t("cloud-setup:languages"))}: ${analysis.languages.map((l) => l.language).join(", ")}`);
|
|
1220
1838
|
}
|
|
1221
1839
|
}
|
|
1222
1840
|
/**
|
|
@@ -1228,7 +1846,7 @@ class CloudSetupOrchestrator {
|
|
|
1228
1846
|
}
|
|
1229
1847
|
if (options.interactive !== false) {
|
|
1230
1848
|
console.log(`
|
|
1231
|
-
${
|
|
1849
|
+
${a.bold(i18n.t("cloud-setup:gettingRecommendations"))}`);
|
|
1232
1850
|
}
|
|
1233
1851
|
const request = {
|
|
1234
1852
|
projectRoot: options.targetDir || process.cwd(),
|
|
@@ -1441,63 +2059,63 @@ class CloudSetupOrchestrator {
|
|
|
1441
2059
|
if (options.interactive === false)
|
|
1442
2060
|
return;
|
|
1443
2061
|
console.log(`
|
|
1444
|
-
${
|
|
2062
|
+
${a.bold(i18n.t("cloud-setup:cloudRecommendations"))} ${a.dim(`(${i18n.t("cloud-setup:confidence")} ${recommendations.confidence}%)`)}`);
|
|
1445
2063
|
console.log("");
|
|
1446
2064
|
if (recommendations.skills.length > 0) {
|
|
1447
|
-
console.log(` ${
|
|
2065
|
+
console.log(` ${a.bold(i18n.t("cloud-setup:skills"))} (${recommendations.skills.length}):`);
|
|
1448
2066
|
for (const skill of recommendations.skills) {
|
|
1449
2067
|
const confidence = options.showConfidence ? ` [${Math.round(skill.relevanceScore * 100)}%]` : "";
|
|
1450
2068
|
const skillName = extractString(skill.name, skill.id, i18n.language);
|
|
1451
2069
|
const skillDesc = extractString(skill.description, "", i18n.language);
|
|
1452
2070
|
const reason = options.showRecommendationReason && skillDesc ? ` - ${skillDesc}` : "";
|
|
1453
|
-
console.log(` ${
|
|
2071
|
+
console.log(` ${a.green("\u2713")} ${skillName}${a.dim(confidence)}${a.dim(reason)}`);
|
|
1454
2072
|
}
|
|
1455
2073
|
}
|
|
1456
2074
|
if (recommendations.mcpServices.length > 0) {
|
|
1457
2075
|
console.log(`
|
|
1458
|
-
${
|
|
2076
|
+
${a.bold(i18n.t("cloud-setup:mcpServices"))} (${recommendations.mcpServices.length}):`);
|
|
1459
2077
|
for (const service of recommendations.mcpServices) {
|
|
1460
2078
|
const confidence = options.showConfidence ? ` [${Math.round(service.relevanceScore * 100)}%]` : "";
|
|
1461
2079
|
const serviceName = extractString(service.name, service.id, i18n.language);
|
|
1462
2080
|
const serviceDesc = extractString(service.description, "", i18n.language);
|
|
1463
2081
|
const reason = options.showRecommendationReason && serviceDesc ? ` - ${serviceDesc}` : "";
|
|
1464
|
-
console.log(` ${
|
|
2082
|
+
console.log(` ${a.green("\u2713")} ${serviceName}${a.dim(confidence)}${a.dim(reason)}`);
|
|
1465
2083
|
}
|
|
1466
2084
|
}
|
|
1467
2085
|
if (recommendations.agents.length > 0) {
|
|
1468
2086
|
console.log(`
|
|
1469
|
-
${
|
|
2087
|
+
${a.bold(i18n.t("cloud-setup:agents"))} (${recommendations.agents.length}):`);
|
|
1470
2088
|
for (const agent of recommendations.agents) {
|
|
1471
2089
|
const confidence = options.showConfidence ? ` [${Math.round(agent.relevanceScore * 100)}%]` : "";
|
|
1472
2090
|
const agentName = extractString(agent.name, agent.id, i18n.language);
|
|
1473
2091
|
const agentDesc = extractString(agent.description, "", i18n.language);
|
|
1474
2092
|
const reason = options.showRecommendationReason && agentDesc ? ` - ${agentDesc}` : "";
|
|
1475
|
-
console.log(` ${
|
|
2093
|
+
console.log(` ${a.green("\u2713")} ${agentName}${a.dim(confidence)}${a.dim(reason)}`);
|
|
1476
2094
|
}
|
|
1477
2095
|
}
|
|
1478
2096
|
if (recommendations.hooks.length > 0) {
|
|
1479
2097
|
console.log(`
|
|
1480
|
-
${
|
|
2098
|
+
${a.bold(i18n.t("cloud-setup:hooks"))} (${recommendations.hooks.length}):`);
|
|
1481
2099
|
for (const hook of recommendations.hooks) {
|
|
1482
2100
|
const confidence = options.showConfidence ? ` [${Math.round(hook.relevanceScore * 100)}%]` : "";
|
|
1483
2101
|
const hookName = extractString(hook.name, hook.id, i18n.language);
|
|
1484
2102
|
const hookDesc = extractString(hook.description, "", i18n.language);
|
|
1485
2103
|
const reason = options.showRecommendationReason && hookDesc ? ` - ${hookDesc}` : "";
|
|
1486
|
-
console.log(` ${
|
|
2104
|
+
console.log(` ${a.green("\u2713")} ${hookName}${a.dim(confidence)}${a.dim(reason)}`);
|
|
1487
2105
|
}
|
|
1488
2106
|
}
|
|
1489
2107
|
if (recommendations.insights?.insights && recommendations.insights.insights.length > 0) {
|
|
1490
2108
|
console.log(`
|
|
1491
|
-
${
|
|
2109
|
+
${a.bold(i18n.t("cloud-setup:insights"))}:`);
|
|
1492
2110
|
for (const insight of recommendations.insights.insights) {
|
|
1493
|
-
console.log(` ${
|
|
2111
|
+
console.log(` ${a.cyan("\u{1F4A1}")} ${insight}`);
|
|
1494
2112
|
}
|
|
1495
2113
|
}
|
|
1496
2114
|
if (recommendations.insights?.productivityImprovements && recommendations.insights.productivityImprovements.length > 0) {
|
|
1497
2115
|
console.log(`
|
|
1498
|
-
${
|
|
2116
|
+
${a.bold(i18n.t("cloud-setup:productivityImprovements"))}:`);
|
|
1499
2117
|
for (const improvement of recommendations.insights.productivityImprovements) {
|
|
1500
|
-
console.log(` ${
|
|
2118
|
+
console.log(` ${a.green("\u2191")} ${improvement.resource}: +${improvement.improvement}% ${improvement.reason}`);
|
|
1501
2119
|
}
|
|
1502
2120
|
}
|
|
1503
2121
|
}
|
|
@@ -1510,11 +2128,11 @@ class CloudSetupOrchestrator {
|
|
|
1510
2128
|
const totalResources = recommendations.skills.length + recommendations.mcpServices.length + recommendations.agents.length + recommendations.hooks.length;
|
|
1511
2129
|
if (totalResources === 0) {
|
|
1512
2130
|
console.log(`
|
|
1513
|
-
${
|
|
2131
|
+
${a.yellow(i18n.t("cloud-setup:noRecommendations"))}`);
|
|
1514
2132
|
return false;
|
|
1515
2133
|
}
|
|
1516
2134
|
try {
|
|
1517
|
-
const inquirerModule = await import('
|
|
2135
|
+
const inquirerModule = await import('./index3.mjs').then(function (n) { return n.c; });
|
|
1518
2136
|
const inquirer = inquirerModule.default || inquirerModule;
|
|
1519
2137
|
const { confirm } = await inquirer.prompt([
|
|
1520
2138
|
{
|
|
@@ -1536,7 +2154,7 @@ class CloudSetupOrchestrator {
|
|
|
1536
2154
|
async downloadTemplates(recommendations, options) {
|
|
1537
2155
|
if (options.interactive !== false) {
|
|
1538
2156
|
console.log(`
|
|
1539
|
-
${
|
|
2157
|
+
${a.bold(i18n.t("cloud-setup:downloadingTemplates"))}`);
|
|
1540
2158
|
}
|
|
1541
2159
|
const allRecommendations = [
|
|
1542
2160
|
...recommendations.skills,
|
|
@@ -1551,7 +2169,7 @@ class CloudSetupOrchestrator {
|
|
|
1551
2169
|
language: options.lang
|
|
1552
2170
|
});
|
|
1553
2171
|
if (options.interactive !== false) {
|
|
1554
|
-
console.log(` ${
|
|
2172
|
+
console.log(` ${a.green("\u2713")} ${i18n.t("cloud-setup:templatesDownloaded", { count: Object.keys(response.templates).length })}`);
|
|
1555
2173
|
}
|
|
1556
2174
|
return response;
|
|
1557
2175
|
} catch (error) {
|
|
@@ -1565,7 +2183,7 @@ class CloudSetupOrchestrator {
|
|
|
1565
2183
|
async executeInstallation(recommendations, templates, options) {
|
|
1566
2184
|
if (options.interactive !== false) {
|
|
1567
2185
|
console.log(`
|
|
1568
|
-
${
|
|
2186
|
+
${a.bold(i18n.t("cloud-setup:installingResources"))}`);
|
|
1569
2187
|
}
|
|
1570
2188
|
const result = {
|
|
1571
2189
|
success: true,
|
|
@@ -1616,7 +2234,7 @@ class CloudSetupOrchestrator {
|
|
|
1616
2234
|
await ccjkSkills(skillsOptions);
|
|
1617
2235
|
result.installed.skills = skillIds;
|
|
1618
2236
|
if (options.interactive !== false) {
|
|
1619
|
-
console.log(` ${
|
|
2237
|
+
console.log(` ${a.green("\u2713")} ${skills.length}/${skills.length} (${((Date.now() - this.startTime) / 1e3).toFixed(1)}s)`);
|
|
1620
2238
|
}
|
|
1621
2239
|
} catch (error) {
|
|
1622
2240
|
this.logger.error("Skills installation failed:", error);
|
|
@@ -1642,7 +2260,7 @@ class CloudSetupOrchestrator {
|
|
|
1642
2260
|
await ccjkMcp(mcpOptions);
|
|
1643
2261
|
result.installed.mcpServices = services.map((s) => s.id);
|
|
1644
2262
|
if (options.interactive !== false) {
|
|
1645
|
-
console.log(` ${
|
|
2263
|
+
console.log(` ${a.green("\u2713")} ${services.length}/${services.length} (${((Date.now() - this.startTime) / 1e3).toFixed(1)}s)`);
|
|
1646
2264
|
}
|
|
1647
2265
|
} catch (error) {
|
|
1648
2266
|
this.logger.error("MCP services installation failed:", error);
|
|
@@ -1667,7 +2285,7 @@ class CloudSetupOrchestrator {
|
|
|
1667
2285
|
await ccjkAgents(agentOptions);
|
|
1668
2286
|
result.installed.agents = agents.map((a) => a.id);
|
|
1669
2287
|
if (options.interactive !== false) {
|
|
1670
|
-
console.log(` ${
|
|
2288
|
+
console.log(` ${a.green("\u2713")} ${agents.length}/${agents.length} (${((Date.now() - this.startTime) / 1e3).toFixed(1)}s)`);
|
|
1671
2289
|
}
|
|
1672
2290
|
} catch (error) {
|
|
1673
2291
|
this.logger.error("Agents installation failed:", error);
|
|
@@ -1691,7 +2309,7 @@ class CloudSetupOrchestrator {
|
|
|
1691
2309
|
await ccjkHooks(hookOptions);
|
|
1692
2310
|
result.installed.hooks = hooks.map((h) => h.id);
|
|
1693
2311
|
if (options.interactive !== false) {
|
|
1694
|
-
console.log(` ${
|
|
2312
|
+
console.log(` ${a.green("\u2713")} ${hooks.length}/${hooks.length} (${((Date.now() - this.startTime) / 1e3).toFixed(1)}s)`);
|
|
1695
2313
|
}
|
|
1696
2314
|
} catch (error) {
|
|
1697
2315
|
this.logger.error("Hooks installation failed:", error);
|
|
@@ -1703,26 +2321,26 @@ class CloudSetupOrchestrator {
|
|
|
1703
2321
|
*/
|
|
1704
2322
|
displaySummary(result, options) {
|
|
1705
2323
|
console.log("");
|
|
1706
|
-
console.log(
|
|
2324
|
+
console.log(a.green(` ${i18n.t("cloud-setup:setupComplete")}`));
|
|
1707
2325
|
const totalInstalled = result.installed.skills.length + result.installed.mcpServices.length + result.installed.agents.length + result.installed.hooks.length;
|
|
1708
2326
|
console.log(` ${i18n.t("cloud-setup:installedResources", { count: totalInstalled, duration: (result.duration / 1e3).toFixed(1) })}`);
|
|
1709
2327
|
if (result.insights) {
|
|
1710
2328
|
console.log(`
|
|
1711
|
-
${
|
|
2329
|
+
${a.bold(i18n.t("cloud-setup:cloudFeedback"))}`);
|
|
1712
2330
|
for (const insight of result.insights.insights) {
|
|
1713
|
-
console.log(` ${
|
|
2331
|
+
console.log(` ${a.cyan("\u2022")} ${insight}`);
|
|
1714
2332
|
}
|
|
1715
2333
|
}
|
|
1716
2334
|
console.log(`
|
|
1717
|
-
${
|
|
1718
|
-
console.log(` ${
|
|
2335
|
+
${a.bold(i18n.t("cloud-setup:nextSteps"))}`);
|
|
2336
|
+
console.log(` ${a.dim("\u2022")} ${i18n.t("cloud-setup:startCoding")}`);
|
|
1719
2337
|
if (options.showRecommendationReason) {
|
|
1720
|
-
console.log(` ${
|
|
2338
|
+
console.log(` ${a.dim("\u2022")} ${i18n.t("cloud-setup:viewRecommendations")}`);
|
|
1721
2339
|
}
|
|
1722
|
-
console.log(` ${
|
|
2340
|
+
console.log(` ${a.dim("\u2022")} ${i18n.t("cloud-setup:customizeSetup")}`);
|
|
1723
2341
|
if (result.reportPath) {
|
|
1724
2342
|
console.log(`
|
|
1725
|
-
${
|
|
2343
|
+
${a.dim(i18n.t("cloud-setup:reportGenerated", { path: result.reportPath }))}`);
|
|
1726
2344
|
}
|
|
1727
2345
|
}
|
|
1728
2346
|
/**
|
|
@@ -1860,7 +2478,7 @@ class CloudSetupOrchestrator {
|
|
|
1860
2478
|
return await this.executeCloudSetup(options);
|
|
1861
2479
|
} catch (error) {
|
|
1862
2480
|
if (error.code === "ENOTFOUND" || error.code === "ECONNREFUSED") {
|
|
1863
|
-
console.warn(
|
|
2481
|
+
console.warn(a.yellow(`
|
|
1864
2482
|
${i18n.t("cloud-setup:cloudUnavailable")}`));
|
|
1865
2483
|
console.warn(` ${i18n.t("cloud-setup:fallingBackToLocal")}`);
|
|
1866
2484
|
options.useCloud = false;
|
|
@@ -1929,11 +2547,11 @@ async function ccjkAll(options = {}) {
|
|
|
1929
2547
|
}));
|
|
1930
2548
|
} else if (!options.quiet) {
|
|
1931
2549
|
console.error(`
|
|
1932
|
-
${
|
|
1933
|
-
console.error(` ${
|
|
2550
|
+
${a.red("\u2717")} ${isZh ? "\u8BBE\u7F6E\u5931\u8D25" : "Setup failed"}`);
|
|
2551
|
+
console.error(` ${a.red(error.message)}`);
|
|
1934
2552
|
if (error.code === "ENOTFOUND") {
|
|
1935
2553
|
console.error(`
|
|
1936
|
-
${
|
|
2554
|
+
${a.yellow("\u2139")} ${isZh ? "\u4E91\u670D\u52A1\u548C\u672C\u5730\u670D\u52A1\u90FD\u4E0D\u53EF\u7528" : "Both cloud and local services are unavailable"}`);
|
|
1937
2555
|
console.error(` ${isZh ? "\u8BF7\u68C0\u67E5\u7F51\u7EDC\u8FDE\u63A5\u6216\u7A0D\u540E\u518D\u8BD5" : "Please check your network connection or try again later"}`);
|
|
1938
2556
|
}
|
|
1939
2557
|
}
|
|
@@ -1942,15 +2560,15 @@ async function ccjkAll(options = {}) {
|
|
|
1942
2560
|
}
|
|
1943
2561
|
function displayHeader() {
|
|
1944
2562
|
console.log("");
|
|
1945
|
-
console.log(
|
|
1946
|
-
console.log(
|
|
1947
|
-
console.log(
|
|
2563
|
+
console.log(a.bold.cyan("\u2501".repeat(60)));
|
|
2564
|
+
console.log(a.bold.cyan(` ${i18n.t("ccjk-all:title")}`));
|
|
2565
|
+
console.log(a.bold.cyan("\u2501".repeat(60)));
|
|
1948
2566
|
console.log("");
|
|
1949
2567
|
}
|
|
1950
2568
|
async function checkCloudAvailability(options) {
|
|
1951
2569
|
const logger = consola.withTag("cloud-check");
|
|
1952
2570
|
i18n.language === "zh-CN";
|
|
1953
|
-
console.log(` ${
|
|
2571
|
+
console.log(` ${a.bold(i18n.t("ccjk-all:connectingToCloud"))}`);
|
|
1954
2572
|
try {
|
|
1955
2573
|
const client = createCompleteCloudClient({
|
|
1956
2574
|
baseURL: options.cloudEndpoint || "https://api.ccjk.cloud"
|
|
@@ -1958,49 +2576,49 @@ async function checkCloudAvailability(options) {
|
|
|
1958
2576
|
const startTime = Date.now();
|
|
1959
2577
|
const health = await client.healthCheck();
|
|
1960
2578
|
const latency = Date.now() - startTime;
|
|
1961
|
-
console.log(` ${
|
|
1962
|
-
console.log(` ${
|
|
2579
|
+
console.log(` ${a.green("\u2713")} ${i18n.t("ccjk-all:connected")} ${a.dim(`(${i18n.t("ccjk-all:latency")} ${latency}ms)`)}`);
|
|
2580
|
+
console.log(` ${a.green("\u2713")} ${i18n.t("ccjk-all:cloudVersion")} ${a.dim(health.version || "unknown")}`);
|
|
1963
2581
|
} catch (error) {
|
|
1964
2582
|
logger.warn("Cloud service unavailable:", error);
|
|
1965
|
-
console.log(` ${
|
|
1966
|
-
console.log(` ${
|
|
2583
|
+
console.log(` ${a.yellow("\u26A0")} ${i18n.t("ccjk-all:cloudUnavailable")}`);
|
|
2584
|
+
console.log(` ${a.dim(i18n.t("ccjk-all:usingLocalMode"))}`);
|
|
1967
2585
|
options.useCloud = false;
|
|
1968
2586
|
}
|
|
1969
2587
|
}
|
|
1970
2588
|
function displayCompletion(result) {
|
|
1971
2589
|
console.log("");
|
|
1972
|
-
console.log(
|
|
2590
|
+
console.log(a.green(` ${i18n.t("ccjk-all:setupComplete")}`));
|
|
1973
2591
|
const totalInstalled = result.installed.skills.length + result.installed.mcpServices.length + result.installed.agents.length + result.installed.hooks.length;
|
|
1974
2592
|
console.log(` ${i18n.t("ccjk-all:installedCount", { count: totalInstalled, duration: (result.duration / 1e3).toFixed(1) })}`);
|
|
1975
2593
|
if (result.insights?.insights && result.insights.insights.length > 0) {
|
|
1976
2594
|
console.log(`
|
|
1977
|
-
${
|
|
2595
|
+
${a.bold(i18n.t("ccjk-all:cloudFeedback"))}`);
|
|
1978
2596
|
for (const insight of result.insights.insights) {
|
|
1979
|
-
console.log(` ${
|
|
2597
|
+
console.log(` ${a.cyan("\u2022")} ${insight}`);
|
|
1980
2598
|
}
|
|
1981
2599
|
}
|
|
1982
2600
|
console.log(`
|
|
1983
|
-
${
|
|
1984
|
-
console.log(` ${
|
|
1985
|
-
console.log(` ${
|
|
1986
|
-
console.log(` ${
|
|
2601
|
+
${a.bold(i18n.t("ccjk-all:nextSteps"))}`);
|
|
2602
|
+
console.log(` ${a.dim("\u2022")} ${i18n.t("ccjk-all:startCoding")}`);
|
|
2603
|
+
console.log(` ${a.dim("\u2022")} ${i18n.t("ccjk-all:viewRecommendations")}`);
|
|
2604
|
+
console.log(` ${a.dim("\u2022")} ${i18n.t("ccjk-all:customizeSetup")}`);
|
|
1987
2605
|
if (result.reportPath) {
|
|
1988
2606
|
console.log(`
|
|
1989
|
-
${
|
|
2607
|
+
${a.dim(i18n.t("ccjk-all:reportGenerated", { path: result.reportPath }))}`);
|
|
1990
2608
|
}
|
|
1991
2609
|
console.log("");
|
|
1992
2610
|
}
|
|
1993
2611
|
function displayHelp() {
|
|
1994
2612
|
i18n.language === "zh-CN";
|
|
1995
2613
|
console.log("");
|
|
1996
|
-
console.log(
|
|
1997
|
-
console.log(
|
|
1998
|
-
console.log(
|
|
2614
|
+
console.log(a.bold.cyan("\u2501".repeat(60)));
|
|
2615
|
+
console.log(a.bold.cyan(` ${i18n.t("ccjk-all:helpTitle")}`));
|
|
2616
|
+
console.log(a.bold.cyan("\u2501".repeat(60)));
|
|
1999
2617
|
console.log("");
|
|
2000
|
-
console.log(
|
|
2618
|
+
console.log(a.bold(i18n.t("ccjk-all:usage")));
|
|
2001
2619
|
console.log(" ccjk ccjk:all [options]");
|
|
2002
2620
|
console.log("");
|
|
2003
|
-
console.log(
|
|
2621
|
+
console.log(a.bold(i18n.t("ccjk-all:options")));
|
|
2004
2622
|
console.log(" --strategy <type> Cloud strategy (cloud-smart, cloud-conservative, local-fallback)");
|
|
2005
2623
|
console.log(" --use-cloud <bool> Use cloud recommendations (default: true)");
|
|
2006
2624
|
console.log(" --cloud-endpoint <url> Cloud API endpoint");
|
|
@@ -2023,7 +2641,7 @@ function displayHelp() {
|
|
|
2023
2641
|
console.log(" --help Show help");
|
|
2024
2642
|
console.log(" --version Show version");
|
|
2025
2643
|
console.log("");
|
|
2026
|
-
console.log(
|
|
2644
|
+
console.log(a.bold(i18n.t("ccjk-all:examples")));
|
|
2027
2645
|
console.log(" ccjk ccjk:all # Interactive cloud-powered setup");
|
|
2028
2646
|
console.log(" ccjk ccjk:all --strategy cloud-smart # Use cloud-smart strategy");
|
|
2029
2647
|
console.log(" ccjk ccjk:all --use-cloud false # Local mode only");
|
|
@@ -2031,7 +2649,7 @@ function displayHelp() {
|
|
|
2031
2649
|
console.log(" ccjk ccjk:all --generate-report # Generate detailed report");
|
|
2032
2650
|
console.log(" ccjk ccjk:all --dry-run # Preview without installing");
|
|
2033
2651
|
console.log("");
|
|
2034
|
-
console.log(
|
|
2652
|
+
console.log(a.bold(i18n.t("ccjk-all:strategies")));
|
|
2035
2653
|
console.log(" cloud-smart Use cloud with intelligent fallback");
|
|
2036
2654
|
console.log(" cloud-conservative Prefer cloud but strict about errors");
|
|
2037
2655
|
console.log(" local-fallback Use local recommendations only");
|