zen-code 2.0.0 → 2.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.
package/dist/zen-code.mjs CHANGED
@@ -1,3 +1,3 @@
1
- import "./MultiSelect-CZS5qXWj.mjs";
1
+ import "./use-input-CQELhJxU.mjs";
2
2
  import "chalk";
3
- import "./app-BYHr8LGb.mjs";
3
+ import "./app-DSomQ6O6.mjs";
package/dist/zen-init.mjs CHANGED
@@ -1,11 +1,13 @@
1
- import { u as A, r as i, j as e, B as o, T as r, S as U, M as T, a as B, b as O, d as R, g as K, c as v, i as M, e as L } from "./MultiSelect-CZS5qXWj.mjs";
1
+ import { a as t, j as e, B as o, T as r, r as U } from "./use-input-CQELhJxU.mjs";
2
2
  import "chalk";
3
- const N = ({ onNext: l, onExit: t }) => {
3
+ import { u as A, S as O, M as T, a as B, b as R, g as K } from "./MultiSelect-DPUY1M3X.mjs";
4
+ import { d as M, u as v, i as L } from "./index-B5v_6qaq.mjs";
5
+ const N = ({ onNext: l, onExit: i }) => {
4
6
  A((c, d) => {
5
- d.return ? l() : d.ctrl && c === "c" && t();
7
+ d.return ? l() : d.ctrl && c === "c" && i();
6
8
  });
7
- const [j, p] = i.useState(0);
8
- return i.useEffect(() => {
9
+ const [j, p] = t.useState(0);
10
+ return t.useEffect(() => {
9
11
  const u = setInterval(() => {
10
12
  p((m) => (m + 1) % 92);
11
13
  }, 40);
@@ -23,7 +25,7 @@ const N = ({ onNext: l, onExit: t }) => {
23
25
  ███╔╝ ██╔══╝ ██║╚██╗██║
24
26
  ███████╗███████╗██║ ╚████║
25
27
  ╚══════╝╚══════╝╚═╝ ╚═══╝`.split(`
26
- `).map((c) => /* @__PURE__ */ e.jsx(U, { interval: 40, text: c, globalIndex: j }, c)) }),
28
+ `).map((c) => /* @__PURE__ */ e.jsx(O, { interval: 40, text: c, globalIndex: j }, c)) }),
27
29
  /* @__PURE__ */ e.jsxs(o, { flexDirection: "column", justifyContent: "center", flexGrow: 1, children: [
28
30
  /* @__PURE__ */ e.jsx(o, { marginBottom: 1, children: /* @__PURE__ */ e.jsxs(r, { color: "yellow", bold: !0, children: [
29
31
  " ",
@@ -102,8 +104,8 @@ const N = ({ onNext: l, onExit: t }) => {
102
104
  }, k = [
103
105
  { label: "OpenAI (GPT-4, o1 等)", value: "openai" },
104
106
  { label: "Anthropic (Claude)", value: "anthropic" }
105
- ], V = ({ provider: l, onSelect: t, onNext: j, onExit: p }) => {
106
- const c = i.useMemo(() => l ? [l] : [], [l]);
107
+ ], V = ({ provider: l, onSelect: i, onNext: j, onExit: p }) => {
108
+ const c = t.useMemo(() => l ? [l] : [], [l]);
107
109
  return /* @__PURE__ */ e.jsxs(o, { flexDirection: "column", flexGrow: 1, justifyContent: "center", paddingX: 2, children: [
108
110
  /* @__PURE__ */ e.jsxs(o, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 1, marginBottom: 1, children: [
109
111
  /* @__PURE__ */ e.jsxs(o, { flexDirection: "row", justifyContent: "space-between", borderBottom: !1, children: [
@@ -126,7 +128,7 @@ const N = ({ onNext: l, onExit: t }) => {
126
128
  options: k,
127
129
  values: c,
128
130
  onChange: (d) => {
129
- d.length > 0 && t(d[0]);
131
+ d.length > 0 && i(d[0]);
130
132
  },
131
133
  onSubmit: j,
132
134
  singleSelect: !0,
@@ -155,7 +157,7 @@ const N = ({ onNext: l, onExit: t }) => {
155
157
  anthropic: "https://console.anthropic.com/settings/keys"
156
158
  }, X = ({
157
159
  provider: l,
158
- apiKey: t,
160
+ apiKey: i,
159
161
  baseUrl: j,
160
162
  onApiKeyChange: p,
161
163
  onBaseUrlChange: c,
@@ -164,7 +166,7 @@ const N = ({ onNext: l, onExit: t }) => {
164
166
  onExit: I,
165
167
  error: u
166
168
  }) => {
167
- const [m, g] = i.useState("apiKey"), [b, y] = i.useState(t), [x, f] = i.useState(j), D = w[l], n = (a) => {
169
+ const [m, g] = t.useState("apiKey"), [b, y] = t.useState(i), [x, f] = t.useState(j), D = w[l], n = (a) => {
168
170
  y(a), p(a);
169
171
  }, s = (a) => {
170
172
  f(a), c(a);
@@ -239,7 +241,7 @@ const N = ({ onNext: l, onExit: t }) => {
239
241
  ] });
240
242
  }, Y = ({
241
243
  provider: l,
242
- models: t,
244
+ models: i,
243
245
  selectedModel: j,
244
246
  onSelect: p,
245
247
  onRefresh: c,
@@ -249,10 +251,10 @@ const N = ({ onNext: l, onExit: t }) => {
249
251
  isLoading: u,
250
252
  error: m
251
253
  }) => {
252
- const g = t.map((x) => ({
254
+ const g = i.map((x) => ({
253
255
  label: x.name,
254
256
  value: x.id
255
- })), b = j ? [j] : [], y = i.useCallback(
257
+ })), b = j ? [j] : [], y = t.useCallback(
256
258
  (x) => {
257
259
  x.length > 0 && (p(x[0]), d());
258
260
  },
@@ -271,13 +273,13 @@ const N = ({ onNext: l, onExit: t }) => {
271
273
  /* @__PURE__ */ e.jsx(r, { color: "blue", children: "提供商 ::" }),
272
274
  /* @__PURE__ */ e.jsx(r, { color: "white", children: l.toUpperCase() })
273
275
  ] }),
274
- u && t.length === 0 && /* @__PURE__ */ e.jsx(o, { marginBottom: 1, children: /* @__PURE__ */ e.jsxs(r, { children: [
275
- /* @__PURE__ */ e.jsx(O, { type: "dots" }),
276
+ u && i.length === 0 && /* @__PURE__ */ e.jsx(o, { marginBottom: 1, children: /* @__PURE__ */ e.jsxs(r, { children: [
277
+ /* @__PURE__ */ e.jsx(R, { type: "dots" }),
276
278
  " 检测可用模型中..."
277
279
  ] }) }),
278
- !u && t.length === 0 && /* @__PURE__ */ e.jsx(o, { marginBottom: 1, children: /* @__PURE__ */ e.jsx(r, { color: "yellow", children: "未找到可用模型,请按 R 刷新" }) }),
279
- !u && t.length > 0 && /* @__PURE__ */ e.jsx(o, { marginBottom: 1, children: /* @__PURE__ */ e.jsx(r, { color: "gray", children: "选择您偏好的模型:" }) }),
280
- !u && t.length > 0 && /* @__PURE__ */ e.jsx(
280
+ !u && i.length === 0 && /* @__PURE__ */ e.jsx(o, { marginBottom: 1, children: /* @__PURE__ */ e.jsx(r, { color: "yellow", children: "未找到可用模型,请按 R 刷新" }) }),
281
+ !u && i.length > 0 && /* @__PURE__ */ e.jsx(o, { marginBottom: 1, children: /* @__PURE__ */ e.jsx(r, { color: "gray", children: "选择您偏好的模型:" }) }),
282
+ !u && i.length > 0 && /* @__PURE__ */ e.jsx(
281
283
  T,
282
284
  {
283
285
  options: g,
@@ -311,7 +313,7 @@ const N = ({ onNext: l, onExit: t }) => {
311
313
  }, F = {
312
314
  openai: "OpenAI",
313
315
  anthropic: "Anthropic"
314
- }, H = ({ provider: l, model: t, onExit: j }) => (A((p, c) => {
316
+ }, H = ({ provider: l, model: i, onExit: j }) => (A((p, c) => {
315
317
  (p || c.return) && j();
316
318
  }), /* @__PURE__ */ e.jsx(o, { flexDirection: "column", flexGrow: 1, justifyContent: "center", paddingX: 2, children: /* @__PURE__ */ e.jsxs(o, { flexDirection: "column", borderStyle: "round", borderColor: "green", paddingX: 1, marginBottom: 1, children: [
317
319
  /* @__PURE__ */ e.jsxs(o, { flexDirection: "row", justifyContent: "space-between", borderBottom: !1, children: [
@@ -330,11 +332,11 @@ const N = ({ onNext: l, onExit: t }) => {
330
332
  ] }),
331
333
  /* @__PURE__ */ e.jsxs(o, { children: [
332
334
  /* @__PURE__ */ e.jsx(r, { color: "blue", children: "模型 ::" }),
333
- /* @__PURE__ */ e.jsx(r, { color: "white", children: t })
335
+ /* @__PURE__ */ e.jsx(r, { color: "white", children: i })
334
336
  ] }),
335
337
  /* @__PURE__ */ e.jsxs(o, { children: [
336
338
  /* @__PURE__ */ e.jsx(r, { color: "blue", children: "配置路径 ::" }),
337
- /* @__PURE__ */ e.jsx(r, { color: "gray", children: R })
339
+ /* @__PURE__ */ e.jsx(r, { color: "gray", children: M })
338
340
  ] })
339
341
  ] }),
340
342
  /* @__PURE__ */ e.jsxs(o, { marginBottom: 1, flexDirection: "column", gap: 0, children: [
@@ -364,8 +366,8 @@ const N = ({ onNext: l, onExit: t }) => {
364
366
  isLoading: !1,
365
367
  error: null
366
368
  }, W = () => {
367
- const [l, t] = i.useState(z), [j, p] = i.useState([]), c = i.useCallback(() => {
368
- t((n) => {
369
+ const [l, i] = t.useState(z), [j, p] = t.useState([]), c = t.useCallback(() => {
370
+ i((n) => {
369
371
  if (n.step === "model" && !n.selectedModel)
370
372
  return { ...n, error: "请选择一个模型" };
371
373
  if (n.step === "apiAndBaseUrl") {
@@ -376,30 +378,30 @@ const N = ({ onNext: l, onExit: t }) => {
376
378
  const s = ["welcome", "provider", "apiAndBaseUrl", "model", "complete"], h = s.indexOf(n.step);
377
379
  return h < s.length - 1 ? { ...n, step: s[h + 1], error: null } : n;
378
380
  });
379
- }, []), d = i.useCallback(() => {
380
- t((n) => {
381
+ }, []), d = t.useCallback(() => {
382
+ i((n) => {
381
383
  const s = ["welcome", "provider", "apiAndBaseUrl", "model", "complete"], h = s.indexOf(n.step);
382
384
  return h > 0 ? { ...n, step: s[h - 1], error: null } : n;
383
385
  });
384
- }, []), C = i.useCallback((n) => {
385
- process.env.MODEL_PROVIDER = n, t((s) => ({
386
+ }, []), C = t.useCallback((n) => {
387
+ process.env.MODEL_PROVIDER = n, i((s) => ({
386
388
  ...s,
387
389
  provider: n,
388
390
  baseUrl: w[n],
389
391
  apiKey: "",
390
392
  selectedModel: ""
391
393
  }));
392
- }, []), I = i.useCallback((n) => {
393
- t((s) => ({ ...s, apiKey: n, error: null }));
394
- }, []), u = i.useCallback((n) => {
395
- t((s) => ({ ...s, baseUrl: n, error: null }));
396
- }, []), m = i.useCallback((n) => {
397
- t((s) => ({ ...s, selectedModel: n, error: null }));
398
- }, []), g = i.useCallback((n) => {
399
- t((s) => ({ ...s, error: n }));
400
- }, []), b = i.useCallback((n) => {
401
- t((s) => ({ ...s, isLoading: n }));
402
- }, []), y = i.useCallback(async (n, s) => {
394
+ }, []), I = t.useCallback((n) => {
395
+ i((s) => ({ ...s, apiKey: n, error: null }));
396
+ }, []), u = t.useCallback((n) => {
397
+ i((s) => ({ ...s, baseUrl: n, error: null }));
398
+ }, []), m = t.useCallback((n) => {
399
+ i((s) => ({ ...s, selectedModel: n, error: null }));
400
+ }, []), g = t.useCallback((n) => {
401
+ i((s) => ({ ...s, error: n }));
402
+ }, []), b = t.useCallback((n) => {
403
+ i((s) => ({ ...s, isLoading: n }));
404
+ }, []), y = t.useCallback(async (n, s) => {
403
405
  b(!0), g(null);
404
406
  try {
405
407
  const h = process.env.MODEL_PROVIDER, E = process.env.OPENAI_API_KEY, a = process.env.ANTHROPIC_API_KEY;
@@ -411,7 +413,7 @@ const N = ({ onNext: l, onExit: t }) => {
411
413
  } finally {
412
414
  b(!1);
413
415
  }
414
- }, []), x = i.useCallback(async () => {
416
+ }, []), x = t.useCallback(async () => {
415
417
  if (!l.provider || !l.apiKey || !l.selectedModel)
416
418
  return g("配置不完整"), !1;
417
419
  b(!0), g(null);
@@ -426,10 +428,10 @@ const N = ({ onNext: l, onExit: t }) => {
426
428
  } finally {
427
429
  b(!1);
428
430
  }
429
- }, [l]), f = i.useCallback(() => {
431
+ }, [l]), f = t.useCallback(() => {
430
432
  process.exit(0);
431
433
  }, []);
432
- i.useEffect(() => {
434
+ t.useEffect(() => {
433
435
  l.step === "model" && l.provider && l.apiKey && y(l.provider, l.apiKey);
434
436
  }, [l.step, l.provider, l.apiKey, y]), A((n, s) => {
435
437
  s.ctrl && n === "c" ? process.exit(0) : s.escape && d();
@@ -490,6 +492,6 @@ const N = ({ onNext: l, onExit: t }) => {
490
492
  return /* @__PURE__ */ e.jsx(o, { flexDirection: "column", height: "100%", width: "100%", children: D() });
491
493
  };
492
494
  async function $() {
493
- await M(), L(/* @__PURE__ */ e.jsx(W, {}));
495
+ await L(), U(/* @__PURE__ */ e.jsx(W, {}));
494
496
  }
495
497
  $();
@@ -0,0 +1,13 @@
1
+ import { r as a, j as n, a as c, u as f, T as x } from "./use-input-CQELhJxU.mjs";
2
+ a(/* @__PURE__ */ n.jsx(l, {}));
3
+ function l() {
4
+ const [r, u] = c.useState(`Press any key...
5
+ `);
6
+ return f((i, o, p) => {
7
+ const t = ["\x1B[2J\x1B[H", "input:", JSON.stringify(i), "", "key:"], e = Object.entries(o).filter(([, s]) => s === !0);
8
+ for (const [s] of e)
9
+ t.push(` ${s}: true`);
10
+ e.length === 0 && t.push(" (no true values)"), t.push(JSON.stringify(p, null, 2)), u(t.join(`
11
+ `));
12
+ }), /* @__PURE__ */ n.jsx(x, { children: r });
13
+ }
package/package.json CHANGED
@@ -1,12 +1,11 @@
1
1
  {
2
2
  "name": "zen-code",
3
- "version": "2.0.0",
3
+ "version": "2.2.0",
4
4
  "description": "",
5
- "main": "cli.js",
6
- "bin": "cli.js",
5
+ "main": "./dist/cli.mjs",
6
+ "bin": "./dist/cli.mjs",
7
7
  "files": [
8
- "dist",
9
- "cli.js"
8
+ "dist"
10
9
  ],
11
10
  "keywords": [],
12
11
  "author": "KonghaYao",
@@ -30,6 +29,7 @@
30
29
  "node-sqlite3-wasm": "^0.8.52",
31
30
  "openai": "^6.15.0",
32
31
  "path-exists": "^5.0.0",
32
+ "string-width": "^8.1.0",
33
33
  "tempy": "^3.1.0",
34
34
  "xdg-basedir": "^5.1.0",
35
35
  "yaml": "^2.8.2",
@@ -50,7 +50,6 @@
50
50
  "diff-match-patch": "^1.0.5",
51
51
  "ink": "^6.6.0",
52
52
  "ink-markdown": "^1.0.4",
53
- "ink-select-input": "^6.2.0",
54
53
  "ink-spinner": "^5.0.0",
55
54
  "ink-syntax-highlight": "^2.0.2",
56
55
  "ink-text-input": "^6.0.0",
package/cli.js DELETED
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env node
2
- const args = process.argv.slice(2);
3
-
4
- if (args[0] === 'init') {
5
- import('./dist/zen-init.mjs');
6
- } else {
7
- import('./dist/zen-code.mjs');
8
- }