jinzd-ai-cli 0.1.77 → 0.1.78

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.
@@ -14,7 +14,7 @@ import { platform } from "os";
14
14
  import chalk from "chalk";
15
15
 
16
16
  // src/core/constants.ts
17
- var VERSION = "0.1.77";
17
+ var VERSION = "0.1.78";
18
18
  var APP_NAME = "ai-cli";
19
19
  var CONFIG_DIR_NAME = ".aicli";
20
20
  var CONFIG_FILE_NAME = "config.json";
@@ -16,7 +16,7 @@ import {
16
16
  SUBAGENT_MAX_ROUNDS_LIMIT,
17
17
  VERSION,
18
18
  runTestsTool
19
- } from "./chunk-MSQW4A3S.js";
19
+ } from "./chunk-2FJISNUB.js";
20
20
 
21
21
  // src/config/config-manager.ts
22
22
  import { readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
package/dist/index.js CHANGED
@@ -35,7 +35,7 @@ import {
35
35
  theme,
36
36
  truncateOutput,
37
37
  undoStack
38
- } from "./chunk-LKYVW34F.js";
38
+ } from "./chunk-NJTTV277.js";
39
39
  import {
40
40
  AGENTIC_BEHAVIOR_GUIDELINE,
41
41
  AUTHOR,
@@ -55,7 +55,7 @@ import {
55
55
  REPO_URL,
56
56
  SKILLS_DIR_NAME,
57
57
  VERSION
58
- } from "./chunk-MSQW4A3S.js";
58
+ } from "./chunk-2FJISNUB.js";
59
59
 
60
60
  // src/index.ts
61
61
  import { program } from "commander";
@@ -1904,7 +1904,7 @@ ${hint}` : "")
1904
1904
  description: "Run project tests and show structured report",
1905
1905
  usage: "/test [command|filter]",
1906
1906
  async execute(args, _ctx) {
1907
- const { executeTests } = await import("./run-tests-S3XK43NB.js");
1907
+ const { executeTests } = await import("./run-tests-KFMWOLRG.js");
1908
1908
  const argStr = args.join(" ").trim();
1909
1909
  let testArgs = {};
1910
1910
  if (argStr) {
@@ -5291,7 +5291,7 @@ program.command("web").description("Start Web UI server with browser-based chat
5291
5291
  console.error("Error: Invalid port number. Must be between 1 and 65535.");
5292
5292
  process.exit(1);
5293
5293
  }
5294
- const { startWebServer } = await import("./server-WO2OXHJ6.js");
5294
+ const { startWebServer } = await import("./server-4HRRB4UM.js");
5295
5295
  await startWebServer({ port, host: options.host });
5296
5296
  });
5297
5297
  program.command("sessions").description("List recent conversation sessions").action(async () => {
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  executeTests,
4
4
  runTestsTool
5
- } from "./chunk-MSQW4A3S.js";
5
+ } from "./chunk-2FJISNUB.js";
6
6
  export {
7
7
  executeTests,
8
8
  runTestsTool
@@ -23,7 +23,7 @@ import {
23
23
  setupProxy,
24
24
  spawnAgentContext,
25
25
  truncateOutput
26
- } from "./chunk-LKYVW34F.js";
26
+ } from "./chunk-NJTTV277.js";
27
27
  import {
28
28
  AGENTIC_BEHAVIOR_GUIDELINE,
29
29
  CONTEXT_FILE_CANDIDATES,
@@ -36,7 +36,7 @@ import {
36
36
  SKILLS_DIR_NAME,
37
37
  VERSION,
38
38
  __require
39
- } from "./chunk-MSQW4A3S.js";
39
+ } from "./chunk-2FJISNUB.js";
40
40
 
41
41
  // src/web/server.ts
42
42
  import express from "express";
@@ -601,19 +601,36 @@ function renderSessionList(sessions) {
601
601
  const date = new Date(s.updated);
602
602
  const timeStr = date.toLocaleDateString() + ' ' + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });
603
603
  return `<div class="session-item ${s.isCurrent ? 'active' : ''}" data-session-id="${s.id}" title="${escapeHtml(title)}">
604
- <div class="session-title">${escapeHtml(title)}</div>
604
+ <div class="flex items-center gap-1">
605
+ <div class="session-title flex-1">${escapeHtml(title)}</div>
606
+ <button class="session-delete-btn opacity-0 hover:opacity-100 text-error text-xs px-1 flex-shrink-0" data-delete-id="${s.id}" title="Delete session">&times;</button>
607
+ </div>
605
608
  <div class="session-meta">${s.messageCount} msgs · ${timeStr}</div>
606
609
  </div>`;
607
610
  }).join('');
608
611
 
609
612
  // Click to load session
610
613
  sessionListEl.querySelectorAll('.session-item').forEach(el => {
611
- el.addEventListener('click', () => {
614
+ el.addEventListener('click', (e) => {
615
+ // Don't load if clicking the delete button
616
+ if (e.target.closest('.session-delete-btn')) return;
612
617
  const id = el.dataset.sessionId;
613
618
  if (!id) return;
614
619
  send({ type: 'command', name: 'session', args: ['load', id] });
615
620
  });
616
621
  });
622
+
623
+ // Click to delete session
624
+ sessionListEl.querySelectorAll('.session-delete-btn').forEach(btn => {
625
+ btn.addEventListener('click', (e) => {
626
+ e.stopPropagation();
627
+ const id = btn.dataset.deleteId;
628
+ if (!id) return;
629
+ if (confirm('Delete this session?')) {
630
+ send({ type: 'command', name: 'session', args: ['delete', id] });
631
+ }
632
+ });
633
+ });
617
634
  }
618
635
 
619
636
  function renderSessionMessages(messages) {
@@ -50,9 +50,9 @@
50
50
 
51
51
  <!-- Sidebar -->
52
52
  <aside id="sidebar" class="sidebar bg-base-200 border-r border-base-content/10 flex flex-col w-64 flex-shrink-0 overflow-hidden transition-all duration-200">
53
- <div class="p-3 border-b border-base-content/10 flex items-center justify-between">
54
- <span class="font-semibold text-sm">Sessions</span>
55
- <button id="btn-new-session" class="btn btn-xs btn-primary btn-outline" title="New session">+ New</button>
53
+ <div class="p-3 border-b border-base-content/10 flex items-center justify-between h-12">
54
+ <span class="font-semibold text-sm leading-none">Sessions</span>
55
+ <button id="btn-new-session" class="btn btn-xs btn-primary btn-outline leading-none" title="New session">+ New</button>
56
56
  </div>
57
57
  <div id="session-list" class="flex-1 overflow-y-auto p-2 flex flex-col gap-1 text-sm">
58
58
  <div class="text-xs opacity-40 text-center py-4">No sessions yet</div>
@@ -264,6 +264,12 @@
264
264
  font-size: 0.7rem;
265
265
  opacity: 0.5;
266
266
  }
267
+ .sidebar .session-item:hover .session-delete-btn {
268
+ opacity: 0.5;
269
+ }
270
+ .sidebar .session-item:hover .session-delete-btn:hover {
271
+ opacity: 1;
272
+ }
267
273
 
268
274
  /* ── Image upload preview ──────────────────────────── */
269
275
  #image-preview {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jinzd-ai-cli",
3
- "version": "0.1.77",
3
+ "version": "0.1.78",
4
4
  "description": "Cross-platform REPL-style AI CLI with multi-provider support",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",