jinzd-ai-cli 0.1.94 → 0.1.95

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.
@@ -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.1.94";
11
+ var VERSION = "0.1.95";
12
12
  var APP_NAME = "ai-cli";
13
13
  var CONFIG_DIR_NAME = ".aicli";
14
14
  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-PYJJOWBD.js";
19
+ } from "./chunk-KKNZPNLC.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-A56ZRY2B.js";
38
+ } from "./chunk-R2NPYF4C.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-PYJJOWBD.js";
58
+ } from "./chunk-KKNZPNLC.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-56DD3KFS.js");
1907
+ const { executeTests } = await import("./run-tests-LYE22U6B.js");
1908
1908
  const argStr = args.join(" ").trim();
1909
1909
  let testArgs = {};
1910
1910
  if (argStr) {
@@ -5292,7 +5292,7 @@ program.command("web").description("Start Web UI server with browser-based chat
5292
5292
  console.error("Error: Invalid port number. Must be between 1 and 65535.");
5293
5293
  process.exit(1);
5294
5294
  }
5295
- const { startWebServer } = await import("./server-4YKTZGGC.js");
5295
+ const { startWebServer } = await import("./server-YI4KLT7T.js");
5296
5296
  await startWebServer({ port, host: options.host });
5297
5297
  });
5298
5298
  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-PYJJOWBD.js";
5
+ } from "./chunk-KKNZPNLC.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-A56ZRY2B.js";
26
+ } from "./chunk-R2NPYF4C.js";
27
27
  import {
28
28
  AGENTIC_BEHAVIOR_GUIDELINE,
29
29
  CONTEXT_FILE_CANDIDATES,
@@ -35,7 +35,7 @@ import {
35
35
  PLAN_MODE_SYSTEM_ADDON,
36
36
  SKILLS_DIR_NAME,
37
37
  VERSION
38
- } from "./chunk-PYJJOWBD.js";
38
+ } from "./chunk-KKNZPNLC.js";
39
39
 
40
40
  // src/web/server.ts
41
41
  import express from "express";
Binary file
Binary file
@@ -0,0 +1,22 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
2
+ <rect width="512" height="512" rx="96" fill="#1d232a"/>
3
+ <g transform="translate(256,240)">
4
+ <!-- Head -->
5
+ <rect x="-120" y="-100" width="240" height="180" rx="32" fill="#6419e6"/>
6
+ <!-- Eyes -->
7
+ <circle cx="-50" cy="-20" r="28" fill="#fff"/>
8
+ <circle cx="50" cy="-20" r="28" fill="#fff"/>
9
+ <circle cx="-50" cy="-20" r="14" fill="#1d232a"/>
10
+ <circle cx="50" cy="-20" r="14" fill="#1d232a"/>
11
+ <!-- Mouth -->
12
+ <rect x="-40" y="30" width="80" height="12" rx="6" fill="#fff" opacity="0.8"/>
13
+ <!-- Antenna -->
14
+ <line x1="0" y1="-100" x2="0" y2="-140" stroke="#6419e6" stroke-width="8" stroke-linecap="round"/>
15
+ <circle cx="0" cy="-148" r="12" fill="#a855f7"/>
16
+ <!-- Ears -->
17
+ <rect x="-140" y="-60" width="24" height="60" rx="12" fill="#a855f7"/>
18
+ <rect x="116" y="-60" width="24" height="60" rx="12" fill="#a855f7"/>
19
+ </g>
20
+ <!-- Text -->
21
+ <text x="256" y="420" text-anchor="middle" fill="#fff" font-family="system-ui,sans-serif" font-weight="700" font-size="72">ai-cli</text>
22
+ </svg>
@@ -4,6 +4,14 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>ai-cli Web UI</title>
7
+ <!-- PWA -->
8
+ <link rel="manifest" href="manifest.json">
9
+ <meta name="theme-color" content="#6419e6">
10
+ <meta name="apple-mobile-web-app-capable" content="yes">
11
+ <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
12
+ <link rel="apple-touch-icon" href="icon-192.png">
13
+ <link rel="icon" type="image/svg+xml" href="icon.svg">
14
+ <link rel="icon" type="image/png" sizes="192x192" href="icon-192.png">
7
15
  <!-- Tailwind CSS + DaisyUI (CDN) -->
8
16
  <link href="https://cdn.jsdelivr.net/npm/daisyui@4.12.23/dist/full.min.css" rel="stylesheet">
9
17
  <script src="https://cdn.tailwindcss.com"></script>
@@ -187,5 +195,10 @@
187
195
  </dialog>
188
196
 
189
197
  <script src="app.js"></script>
198
+ <script>
199
+ if ('serviceWorker' in navigator) {
200
+ navigator.serviceWorker.register('sw.js').catch(() => {});
201
+ }
202
+ </script>
190
203
  </body>
191
204
  </html>
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "ai-cli Web UI",
3
+ "short_name": "ai-cli",
4
+ "description": "Cross-platform AI chat assistant with agentic tool calling",
5
+ "start_url": "/",
6
+ "display": "standalone",
7
+ "background_color": "#1d232a",
8
+ "theme_color": "#6419e6",
9
+ "orientation": "any",
10
+ "icons": [
11
+ { "src": "icon-192.png", "sizes": "192x192", "type": "image/png" },
12
+ { "src": "icon-512.png", "sizes": "512x512", "type": "image/png" },
13
+ { "src": "icon.svg", "sizes": "any", "type": "image/svg+xml" }
14
+ ]
15
+ }
@@ -0,0 +1,83 @@
1
+ /**
2
+ * ai-cli PWA Service Worker
3
+ * Caches app shell (HTML/CSS/JS/icons) for fast startup.
4
+ * API calls and WebSocket are always network-first.
5
+ */
6
+
7
+ const CACHE_NAME = 'aicli-v1';
8
+
9
+ // App shell — files needed for offline-capable startup
10
+ const APP_SHELL = [
11
+ '/',
12
+ '/index.html',
13
+ '/style.css',
14
+ '/app.js',
15
+ '/manifest.json',
16
+ '/icon.svg',
17
+ '/icon-192.png',
18
+ '/icon-512.png',
19
+ ];
20
+
21
+ // CDN resources to cache on first use
22
+ const CDN_CACHE = [
23
+ 'cdn.jsdelivr.net',
24
+ 'cdn.tailwindcss.com',
25
+ ];
26
+
27
+ self.addEventListener('install', (event) => {
28
+ event.waitUntil(
29
+ caches.open(CACHE_NAME)
30
+ .then(cache => cache.addAll(APP_SHELL))
31
+ .then(() => self.skipWaiting())
32
+ );
33
+ });
34
+
35
+ self.addEventListener('activate', (event) => {
36
+ event.waitUntil(
37
+ caches.keys().then(keys =>
38
+ Promise.all(keys
39
+ .filter(k => k !== CACHE_NAME)
40
+ .map(k => caches.delete(k))
41
+ )
42
+ ).then(() => self.clients.claim())
43
+ );
44
+ });
45
+
46
+ self.addEventListener('fetch', (event) => {
47
+ const url = new URL(event.request.url);
48
+
49
+ // Never cache API calls or WebSocket upgrades
50
+ if (url.pathname.startsWith('/api/') || event.request.headers.get('upgrade') === 'websocket') {
51
+ return;
52
+ }
53
+
54
+ // CDN resources: cache-first (they're versioned by URL)
55
+ if (CDN_CACHE.some(host => url.hostname.includes(host))) {
56
+ event.respondWith(
57
+ caches.match(event.request).then(cached => {
58
+ if (cached) return cached;
59
+ return fetch(event.request).then(response => {
60
+ if (response.ok) {
61
+ const clone = response.clone();
62
+ caches.open(CACHE_NAME).then(cache => cache.put(event.request, clone));
63
+ }
64
+ return response;
65
+ });
66
+ })
67
+ );
68
+ return;
69
+ }
70
+
71
+ // App shell: network-first with cache fallback (always get latest from server)
72
+ event.respondWith(
73
+ fetch(event.request)
74
+ .then(response => {
75
+ if (response.ok) {
76
+ const clone = response.clone();
77
+ caches.open(CACHE_NAME).then(cache => cache.put(event.request, clone));
78
+ }
79
+ return response;
80
+ })
81
+ .catch(() => caches.match(event.request))
82
+ );
83
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jinzd-ai-cli",
3
- "version": "0.1.94",
3
+ "version": "0.1.95",
4
4
  "description": "Cross-platform REPL-style AI CLI with multi-provider support",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",