jinzd-ai-cli 0.4.21 → 0.4.22

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.
@@ -7,7 +7,7 @@ import {
7
7
  ProviderNotFoundError,
8
8
  RateLimitError,
9
9
  schemaToJsonSchema
10
- } from "./chunk-2JOMWVTE.js";
10
+ } from "./chunk-A534NEBA.js";
11
11
  import {
12
12
  APP_NAME,
13
13
  CONFIG_DIR_NAME,
@@ -20,7 +20,7 @@ import {
20
20
  MCP_TOOL_PREFIX,
21
21
  PLUGINS_DIR_NAME,
22
22
  VERSION
23
- } from "./chunk-AR656G5C.js";
23
+ } from "./chunk-FAE7VQHT.js";
24
24
 
25
25
  // src/config/config-manager.ts
26
26
  import { readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
@@ -6,7 +6,7 @@ import {
6
6
  SUBAGENT_DEFAULT_MAX_ROUNDS,
7
7
  SUBAGENT_MAX_ROUNDS_LIMIT,
8
8
  runTestsTool
9
- } from "./chunk-AR656G5C.js";
9
+ } from "./chunk-FAE7VQHT.js";
10
10
 
11
11
  // src/tools/builtin/bash.ts
12
12
  import { execSync } from "child_process";
@@ -8,7 +8,7 @@ import { platform } from "os";
8
8
  import chalk from "chalk";
9
9
 
10
10
  // src/core/constants.ts
11
- var VERSION = "0.4.21";
11
+ var VERSION = "0.4.22";
12
12
  var APP_NAME = "ai-cli";
13
13
  var CONFIG_DIR_NAME = ".aicli";
14
14
  var CONFIG_FILE_NAME = "config.json";
@@ -6,7 +6,7 @@ import { platform } from "os";
6
6
  import chalk from "chalk";
7
7
 
8
8
  // src/core/constants.ts
9
- var VERSION = "0.4.21";
9
+ var VERSION = "0.4.22";
10
10
  var APP_NAME = "ai-cli";
11
11
  var CONFIG_DIR_NAME = ".aicli";
12
12
  var CONFIG_FILE_NAME = "config.json";
@@ -387,7 +387,7 @@ ${content}`);
387
387
  }
388
388
  }
389
389
  async function runTaskMode(config, providers, configManager, topic) {
390
- const { TaskOrchestrator } = await import("./task-orchestrator-UZQRB7AO.js");
390
+ const { TaskOrchestrator } = await import("./task-orchestrator-SG2KFZJJ.js");
391
391
  const orchestrator = new TaskOrchestrator(config, providers, configManager);
392
392
  let interrupted = false;
393
393
  const onSigint = () => {
package/dist/index.js CHANGED
@@ -23,7 +23,7 @@ import {
23
23
  saveDevState,
24
24
  sessionHasMeaningfulContent,
25
25
  setupProxy
26
- } from "./chunk-7T2W4LN3.js";
26
+ } from "./chunk-37SPMWVR.js";
27
27
  import {
28
28
  ToolRegistry,
29
29
  askUserContext,
@@ -38,7 +38,7 @@ import {
38
38
  theme,
39
39
  truncateOutput,
40
40
  undoStack
41
- } from "./chunk-2JOMWVTE.js";
41
+ } from "./chunk-A534NEBA.js";
42
42
  import {
43
43
  AGENTIC_BEHAVIOR_GUIDELINE,
44
44
  AUTHOR,
@@ -59,7 +59,7 @@ import {
59
59
  SKILLS_DIR_NAME,
60
60
  VERSION,
61
61
  buildUserIdentityPrompt
62
- } from "./chunk-AR656G5C.js";
62
+ } from "./chunk-FAE7VQHT.js";
63
63
 
64
64
  // src/index.ts
65
65
  import { program } from "commander";
@@ -1944,7 +1944,7 @@ ${hint}` : "")
1944
1944
  usage: "/test [command|filter]",
1945
1945
  async execute(args, ctx) {
1946
1946
  try {
1947
- const { executeTests } = await import("./run-tests-ZTVEN2O7.js");
1947
+ const { executeTests } = await import("./run-tests-H543F3AX.js");
1948
1948
  const argStr = args.join(" ").trim();
1949
1949
  let testArgs = {};
1950
1950
  if (argStr) {
@@ -5691,7 +5691,7 @@ program.command("web").description("Start Web UI server with browser-based chat
5691
5691
  console.error("Error: Invalid port number. Must be between 1 and 65535.");
5692
5692
  process.exit(1);
5693
5693
  }
5694
- const { startWebServer } = await import("./server-IDPMZAUF.js");
5694
+ const { startWebServer } = await import("./server-WCTRTNNN.js");
5695
5695
  await startWebServer({ port, host: options.host });
5696
5696
  });
5697
5697
  program.command("user [action] [username]").description("Manage Web UI users (list | create <name> | delete <name> | reset-password <name> | migrate <name>)").action(async (action, username) => {
@@ -5924,7 +5924,7 @@ program.command("hub [topic]").description("Start multi-agent hub (discuss / bra
5924
5924
  }),
5925
5925
  config.get("customProviders")
5926
5926
  );
5927
- const { startHub } = await import("./hub-CNSFX47B.js");
5927
+ const { startHub } = await import("./hub-DGUTSTL5.js");
5928
5928
  await startHub(
5929
5929
  {
5930
5930
  topic: topic ?? "",
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  executeTests,
3
3
  runTestsTool
4
- } from "./chunk-6CJX3RST.js";
4
+ } from "./chunk-HZL57QTJ.js";
5
5
  export {
6
6
  executeTests,
7
7
  runTestsTool
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  executeTests,
4
4
  runTestsTool
5
- } from "./chunk-AR656G5C.js";
5
+ } from "./chunk-FAE7VQHT.js";
6
6
  export {
7
7
  executeTests,
8
8
  runTestsTool
@@ -18,7 +18,7 @@ import {
18
18
  renderDiff,
19
19
  runHook,
20
20
  setupProxy
21
- } from "./chunk-7T2W4LN3.js";
21
+ } from "./chunk-37SPMWVR.js";
22
22
  import {
23
23
  AuthManager
24
24
  } from "./chunk-BYNY5JPB.js";
@@ -32,7 +32,7 @@ import {
32
32
  spawnAgentContext,
33
33
  truncateOutput,
34
34
  undoStack
35
- } from "./chunk-2JOMWVTE.js";
35
+ } from "./chunk-A534NEBA.js";
36
36
  import {
37
37
  AGENTIC_BEHAVIOR_GUIDELINE,
38
38
  AUTHOR,
@@ -50,7 +50,7 @@ import {
50
50
  SKILLS_DIR_NAME,
51
51
  VERSION,
52
52
  buildUserIdentityPrompt
53
- } from "./chunk-AR656G5C.js";
53
+ } from "./chunk-FAE7VQHT.js";
54
54
 
55
55
  // src/web/server.ts
56
56
  import express from "express";
@@ -1498,7 +1498,7 @@ ${undoResults.map((r) => ` \u2022 ${r}`).join("\n")}` });
1498
1498
  case "test": {
1499
1499
  this.send({ type: "info", message: "\u{1F9EA} Running tests..." });
1500
1500
  try {
1501
- const { executeTests } = await import("./run-tests-ZTVEN2O7.js");
1501
+ const { executeTests } = await import("./run-tests-H543F3AX.js");
1502
1502
  const argStr = args.join(" ").trim();
1503
1503
  let testArgs = {};
1504
1504
  if (argStr) {
@@ -4,10 +4,10 @@ import {
4
4
  getDangerLevel,
5
5
  googleSearchContext,
6
6
  truncateOutput
7
- } from "./chunk-2JOMWVTE.js";
7
+ } from "./chunk-A534NEBA.js";
8
8
  import {
9
9
  SUBAGENT_ALLOWED_TOOLS
10
- } from "./chunk-AR656G5C.js";
10
+ } from "./chunk-FAE7VQHT.js";
11
11
 
12
12
  // src/hub/task-orchestrator.ts
13
13
  import { createInterface } from "readline";
@@ -1930,6 +1930,49 @@ function handleLogout() {
1930
1930
  if (ws) ws.close();
1931
1931
  }
1932
1932
 
1933
+ // ── Sidebar resize (drag to adjust width) ────────────────────────────
1934
+
1935
+ {
1936
+ const resizeHandle = document.getElementById('sidebar-resize');
1937
+ const MIN_WIDTH = 160;
1938
+ const MAX_WIDTH = 600;
1939
+ const STORAGE_KEY = 'aicli-sidebar-width';
1940
+
1941
+ // Restore saved width
1942
+ const savedWidth = parseInt(localStorage.getItem(STORAGE_KEY), 10);
1943
+ if (savedWidth && savedWidth >= MIN_WIDTH && savedWidth <= MAX_WIDTH) {
1944
+ sidebar.style.width = savedWidth + 'px';
1945
+ }
1946
+
1947
+ let isResizing = false;
1948
+
1949
+ resizeHandle.addEventListener('mousedown', (e) => {
1950
+ if (window.innerWidth <= 768) return; // Disabled on mobile
1951
+ e.preventDefault();
1952
+ isResizing = true;
1953
+ sidebar.classList.add('no-transition');
1954
+ resizeHandle.classList.add('resizing');
1955
+ document.body.style.cursor = 'col-resize';
1956
+ document.body.style.userSelect = 'none';
1957
+ });
1958
+
1959
+ document.addEventListener('mousemove', (e) => {
1960
+ if (!isResizing) return;
1961
+ const newWidth = Math.min(MAX_WIDTH, Math.max(MIN_WIDTH, e.clientX));
1962
+ sidebar.style.width = newWidth + 'px';
1963
+ });
1964
+
1965
+ document.addEventListener('mouseup', () => {
1966
+ if (!isResizing) return;
1967
+ isResizing = false;
1968
+ sidebar.classList.remove('no-transition');
1969
+ resizeHandle.classList.remove('resizing');
1970
+ document.body.style.cursor = '';
1971
+ document.body.style.userSelect = '';
1972
+ localStorage.setItem(STORAGE_KEY, parseInt(sidebar.style.width, 10));
1973
+ });
1974
+ }
1975
+
1933
1976
  // ── Enable Auth (register first user from Web UI) ────────────────────
1934
1977
 
1935
1978
  async function checkAuthStatus() {
@@ -147,6 +147,8 @@
147
147
  </div>
148
148
  </div>
149
149
  </aside>
150
+ <!-- Sidebar resize handle -->
151
+ <div id="sidebar-resize" class="sidebar-resize-handle" title="Drag to resize sidebar"></div>
150
152
  <!-- Sidebar backdrop (mobile overlay) -->
151
153
  <div id="sidebar-backdrop" class="sidebar-backdrop hidden" onclick="closeSidebar()"></div>
152
154
 
@@ -274,11 +274,37 @@
274
274
  color: oklch(var(--p));
275
275
  }
276
276
 
277
+ /* ── Sidebar resize handle ─────────────────────────── */
278
+ .sidebar-resize-handle {
279
+ width: 4px;
280
+ cursor: col-resize;
281
+ flex-shrink: 0;
282
+ background: transparent;
283
+ transition: background 0.15s;
284
+ position: relative;
285
+ z-index: 5;
286
+ }
287
+ .sidebar-resize-handle::after {
288
+ content: '';
289
+ position: absolute;
290
+ top: 0;
291
+ left: -3px;
292
+ right: -3px;
293
+ bottom: 0;
294
+ }
295
+ .sidebar-resize-handle:hover,
296
+ .sidebar-resize-handle.resizing {
297
+ background: oklch(var(--p) / 0.4);
298
+ }
299
+
277
300
  /* ── Sidebar ───────────────────────────────────────── */
278
301
  .sidebar {
279
302
  width: 18rem;
280
303
  transition: width 0.2s ease;
281
304
  }
305
+ .sidebar.no-transition {
306
+ transition: none;
307
+ }
282
308
  .sidebar .session-item {
283
309
  padding: 0.5rem 0.6rem;
284
310
  border-radius: 0.375rem;
@@ -612,6 +638,7 @@ button, a, .session-item, .file-tree-row, .template-item, .tool-item, .mcp-serve
612
638
  /* ── Responsive: Tablet ────────────────────────────── */
613
639
  @media (max-width: 768px) {
614
640
  .sidebar-toggle-btn { display: flex; }
641
+ .sidebar-resize-handle { display: none; }
615
642
  .sidebar {
616
643
  width: 0;
617
644
  padding: 0;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jinzd-ai-cli",
3
- "version": "0.4.21",
3
+ "version": "0.4.22",
4
4
  "description": "Cross-platform REPL-style AI CLI with multi-provider support",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",