chatlab-cli 0.23.1 → 0.24.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.
Files changed (80) hide show
  1. package/dist/{chunk-643S2N2U.mjs → chunk-36W2HWQN.mjs} +2 -2
  2. package/dist/{chunk-AHQQQ5HZ.mjs → chunk-A6JCL4PT.mjs} +26 -14
  3. package/dist/chunk-A6JCL4PT.mjs.map +1 -0
  4. package/dist/{chunk-WTQ7LAZR.mjs → chunk-KCBIBRHL.mjs} +2 -2
  5. package/dist/{chunk-L37WJ33K.mjs → chunk-NE4A6PND.mjs} +1905 -1914
  6. package/dist/chunk-NE4A6PND.mjs.map +1 -0
  7. package/dist/{chunk-3MX7VF2B.mjs → chunk-RLCFXTTS.mjs} +2 -2
  8. package/dist/{chunk-G7Q7EQ3V.mjs → chunk-XJJXSOLO.mjs} +6199 -6988
  9. package/dist/chunk-XJJXSOLO.mjs.map +1 -0
  10. package/dist/cli.mjs +2 -2
  11. package/dist/{http-JDORENHT.mjs → http-OPQ352FZ.mjs} +6 -14
  12. package/dist/{import-LCBSBLYF.mjs → import-GZMDLK2E.mjs} +4 -4
  13. package/dist/index.mjs +8 -8
  14. package/dist/{mcp-AR7HBIK4.mjs → mcp-SHZ2CVXY.mjs} +3 -3
  15. package/dist/{service-WCGGRZTA.mjs → service-KZTHBDQ5.mjs} +3 -1
  16. package/dist/service-KZTHBDQ5.mjs.map +1 -0
  17. package/dist/{stream-import-QM5R5FDG.mjs → stream-import-RDDB3N7B.mjs} +3 -3
  18. package/dist-web/assets/{DebugToolsPanel-Yzfz2ntn.css → DebugToolsPanel-DaSNc1o-.css} +1 -1
  19. package/dist-web/assets/DebugToolsPanel.vue_vue_type_script_setup_true_lang-_gbTn1ha.js +161 -0
  20. package/dist-web/assets/{EChartWordcloud-Cenbzcyj.js → EChartWordcloud-VpNJDurs.js} +1 -1
  21. package/dist-web/assets/{MessageExportModal-DMHA4X0b.js → MessageExportModal-n4JgNg_F.js} +1 -1
  22. package/dist-web/assets/electron-BIWBW8k_.js +1 -0
  23. package/dist-web/assets/electron-Bt9dK4Sr.js +1 -0
  24. package/dist-web/assets/fetch-BOevuRK_.js +1 -0
  25. package/dist-web/assets/fetch-BhsrPRzn.js +3 -0
  26. package/dist-web/assets/fetch-ChECfwh7.js +1 -0
  27. package/dist-web/assets/fetch-ClDGP9DK.js +1 -0
  28. package/dist-web/assets/{fetch-CvfdN4gM.js → fetch-CnyupWWc.js} +1 -1
  29. package/dist-web/assets/fetch-CvaXKzA-.js +1 -0
  30. package/dist-web/assets/fetch-D1_jL6PO.js +1 -0
  31. package/dist-web/assets/fetch-DFWZ48Xw.js +1 -0
  32. package/dist-web/assets/fetch-DKD1bKt2.js +1 -0
  33. package/dist-web/assets/fetch-DwPB8NOH.js +1 -0
  34. package/dist-web/assets/index-BN79SJSr.js +173 -0
  35. package/dist-web/assets/index-BVQsKKwg.js +1 -0
  36. package/dist-web/assets/{index-C2439065.js → index-Bzg8BftZ.js} +6 -6
  37. package/dist-web/assets/{index-DC0LjKV6.js → index-C-5bP7_E.js} +2 -2
  38. package/dist-web/assets/index-C3A_Rjh-.css +1 -0
  39. package/dist-web/assets/{index-BUfibEyG.css → index-CGNgUIT-.css} +1 -1
  40. package/dist-web/assets/index-D6ga3hbF.js +163 -0
  41. package/dist-web/assets/index-ESCx9pRR.js +8 -0
  42. package/dist-web/assets/index-JbR9Q-bb.css +1 -0
  43. package/dist-web/assets/vendor-nuxt-ui-BLMzqeB8.js +15 -0
  44. package/dist-web/assets/{vendor-reka-ui-BrTYuIfH.js → vendor-reka-ui-CnB0mMNX.js} +1 -1
  45. package/dist-web/assets/web-DtlveK3q.js +1 -0
  46. package/dist-web/index.html +4 -4
  47. package/package.json +2 -1
  48. package/dist/chunk-AHQQQ5HZ.mjs.map +0 -1
  49. package/dist/chunk-G7Q7EQ3V.mjs.map +0 -1
  50. package/dist/chunk-L37WJ33K.mjs.map +0 -1
  51. package/dist/service-WCGGRZTA.mjs.map +0 -1
  52. package/dist/src-EGXULYFQ.mjs +0 -340
  53. package/dist/stream-import-QM5R5FDG.mjs.map +0 -1
  54. package/dist-web/assets/DebugToolsPanel.vue_vue_type_script_setup_true_lang-DXxg55kL.js +0 -161
  55. package/dist-web/assets/electron-DPsrYwTt.js +0 -1
  56. package/dist-web/assets/electron-DfpXsXsS.js +0 -1
  57. package/dist-web/assets/electron-DpE69lO4.js +0 -1
  58. package/dist-web/assets/electron-HoVzpIVc.js +0 -1
  59. package/dist-web/assets/electron-SyPZX9OU.js +0 -1
  60. package/dist-web/assets/fetch-B7OBmANJ.js +0 -1
  61. package/dist-web/assets/fetch-BikSxuED.js +0 -3
  62. package/dist-web/assets/fetch-BwMZFwbF.js +0 -1
  63. package/dist-web/assets/fetch-BxE8RQYE.js +0 -1
  64. package/dist-web/assets/fetch-LBHcBBkv.js +0 -1
  65. package/dist-web/assets/http-C741fIwb.js +0 -1
  66. package/dist-web/assets/index-CD5Fz-JY.js +0 -7
  67. package/dist-web/assets/index-Dl-X-izi.css +0 -1
  68. package/dist-web/assets/index-DywUneNT.css +0 -1
  69. package/dist-web/assets/index-JvmxkAGk.js +0 -173
  70. package/dist-web/assets/index-vEVpfw-R.js +0 -163
  71. package/dist-web/assets/sse-CACcGGWv.js +0 -2
  72. package/dist-web/assets/vendor-nuxt-ui-3XQAyMd0.js +0 -15
  73. package/dist-web/assets/web-Bm94rL5B.js +0 -1
  74. /package/dist/{chunk-643S2N2U.mjs.map → chunk-36W2HWQN.mjs.map} +0 -0
  75. /package/dist/{chunk-WTQ7LAZR.mjs.map → chunk-KCBIBRHL.mjs.map} +0 -0
  76. /package/dist/{chunk-3MX7VF2B.mjs.map → chunk-RLCFXTTS.mjs.map} +0 -0
  77. /package/dist/{http-JDORENHT.mjs.map → http-OPQ352FZ.mjs.map} +0 -0
  78. /package/dist/{import-LCBSBLYF.mjs.map → import-GZMDLK2E.mjs.map} +0 -0
  79. /package/dist/{mcp-AR7HBIK4.mjs.map → mcp-SHZ2CVXY.mjs.map} +0 -0
  80. /package/dist/{src-EGXULYFQ.mjs.map → stream-import-RDDB3N7B.mjs.map} +0 -0
package/dist/cli.mjs CHANGED
@@ -6,9 +6,9 @@ const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __pathDirname(__filename);
7
7
  import {
8
8
  run
9
- } from "./chunk-AHQQQ5HZ.mjs";
9
+ } from "./chunk-A6JCL4PT.mjs";
10
10
  import "./chunk-5ADKYYNA.mjs";
11
- import "./chunk-G7Q7EQ3V.mjs";
11
+ import "./chunk-XJJXSOLO.mjs";
12
12
  import "./chunk-FJ35V3TE.mjs";
13
13
  import "./chunk-VSOWNKPA.mjs";
14
14
  export {
@@ -6,29 +6,21 @@ const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __pathDirname(__filename);
7
7
  import {
8
8
  createServer,
9
- registerAiRoutes,
10
- registerNlpRoutes,
11
- registerSessionRoutes,
12
- registerSystemRoutes,
13
9
  registerWebRoutes,
14
10
  startHttpServer,
15
11
  stopHttpServer
16
- } from "./chunk-L37WJ33K.mjs";
17
- import "./chunk-3MX7VF2B.mjs";
18
- import "./chunk-643S2N2U.mjs";
19
- import "./chunk-WTQ7LAZR.mjs";
12
+ } from "./chunk-NE4A6PND.mjs";
13
+ import "./chunk-RLCFXTTS.mjs";
14
+ import "./chunk-36W2HWQN.mjs";
15
+ import "./chunk-KCBIBRHL.mjs";
20
16
  import "./chunk-5ADKYYNA.mjs";
21
- import "./chunk-G7Q7EQ3V.mjs";
17
+ import "./chunk-XJJXSOLO.mjs";
22
18
  import "./chunk-FJ35V3TE.mjs";
23
19
  import "./chunk-VSOWNKPA.mjs";
24
20
  export {
25
21
  createServer,
26
- registerAiRoutes,
27
- registerNlpRoutes,
28
- registerSessionRoutes,
29
- registerSystemRoutes,
30
22
  registerWebRoutes,
31
23
  startHttpServer,
32
24
  stopHttpServer
33
25
  };
34
- //# sourceMappingURL=http-JDORENHT.mjs.map
26
+ //# sourceMappingURL=http-OPQ352FZ.mjs.map
@@ -8,13 +8,13 @@ import {
8
8
  detectFormat as detectFormat2,
9
9
  importData,
10
10
  parseFile
11
- } from "./chunk-3MX7VF2B.mjs";
11
+ } from "./chunk-RLCFXTTS.mjs";
12
12
  import {
13
13
  analyzeIncrementalImport,
14
14
  analyzeNewImport,
15
15
  incrementalImport,
16
16
  streamImport
17
- } from "./chunk-643S2N2U.mjs";
17
+ } from "./chunk-36W2HWQN.mjs";
18
18
  import {
19
19
  detectAllFormats,
20
20
  detectFormat,
@@ -22,7 +22,7 @@ import {
22
22
  getFormatFeatureById,
23
23
  getSupportedFormats,
24
24
  scanMultiChatFile
25
- } from "./chunk-G7Q7EQ3V.mjs";
25
+ } from "./chunk-XJJXSOLO.mjs";
26
26
  import "./chunk-VSOWNKPA.mjs";
27
27
  export {
28
28
  analyzeIncrementalImport,
@@ -39,4 +39,4 @@ export {
39
39
  scanMultiChatFile,
40
40
  streamImport
41
41
  };
42
- //# sourceMappingURL=import-LCBSBLYF.mjs.map
42
+ //# sourceMappingURL=import-GZMDLK2E.mjs.map
package/dist/index.mjs CHANGED
@@ -4,18 +4,18 @@ import { fileURLToPath as __fileURLToPath } from 'url';
4
4
  const require = __createRequire(import.meta.url);
5
5
  const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __pathDirname(__filename);
7
+ import {
8
+ run
9
+ } from "./chunk-A6JCL4PT.mjs";
7
10
  import {
8
11
  startHttpServer,
9
12
  stopHttpServer
10
- } from "./chunk-L37WJ33K.mjs";
11
- import {
12
- run
13
- } from "./chunk-AHQQQ5HZ.mjs";
14
- import "./chunk-3MX7VF2B.mjs";
15
- import "./chunk-643S2N2U.mjs";
16
- import "./chunk-WTQ7LAZR.mjs";
13
+ } from "./chunk-NE4A6PND.mjs";
14
+ import "./chunk-RLCFXTTS.mjs";
15
+ import "./chunk-36W2HWQN.mjs";
16
+ import "./chunk-KCBIBRHL.mjs";
17
17
  import "./chunk-5ADKYYNA.mjs";
18
- import "./chunk-G7Q7EQ3V.mjs";
18
+ import "./chunk-XJJXSOLO.mjs";
19
19
  import "./chunk-FJ35V3TE.mjs";
20
20
  import "./chunk-VSOWNKPA.mjs";
21
21
  export {
@@ -7,7 +7,7 @@ const __dirname = __pathDirname(__filename);
7
7
  import {
8
8
  CoreDataProvider,
9
9
  MCP_TOOL_REGISTRY
10
- } from "./chunk-WTQ7LAZR.mjs";
10
+ } from "./chunk-KCBIBRHL.mjs";
11
11
  import {
12
12
  getVersion
13
13
  } from "./chunk-5ADKYYNA.mjs";
@@ -20,7 +20,7 @@ import {
20
20
  hasPendingElectronDataWarning,
21
21
  loadConfig,
22
22
  verifyCliDataPath
23
- } from "./chunk-G7Q7EQ3V.mjs";
23
+ } from "./chunk-XJJXSOLO.mjs";
24
24
  import {
25
25
  resolveCliPath
26
26
  } from "./chunk-FJ35V3TE.mjs";
@@ -405,4 +405,4 @@ async function startCliMcpServer() {
405
405
  export {
406
406
  startCliMcpServer
407
407
  };
408
- //# sourceMappingURL=mcp-AR7HBIK4.mjs.map
408
+ //# sourceMappingURL=mcp-SHZ2CVXY.mjs.map
@@ -46,6 +46,7 @@ function buildPlist(options) {
46
46
  const args = ["start", "--no-open", "--port", String(port), "--host", host];
47
47
  if (options.token) args.push("--token", options.token);
48
48
  if (options.headless) args.push("--headless");
49
+ if (options.requireAuth) args.push("--require-auth");
49
50
  const programArgs = [process.execPath, cliEntry, ...args].map((a) => ` <string>${a}</string>`).join("\n");
50
51
  fs.mkdirSync(path.join(SYSTEM_DIR, "logs"), { recursive: true });
51
52
  return `<?xml version="1.0" encoding="UTF-8"?>
@@ -149,6 +150,7 @@ function buildUnit(options) {
149
150
  const args = ["start", "--no-open", "--port", String(port), "--host", host];
150
151
  if (options.token) args.push("--token", options.token);
151
152
  if (options.headless) args.push("--headless");
153
+ if (options.requireAuth) args.push("--require-auth");
152
154
  const execStart = [process.execPath, cliEntry, ...args].map(escapeSystemdArg).join(" ");
153
155
  return `[Unit]
154
156
  Description=ChatLab daemon
@@ -255,4 +257,4 @@ export {
255
257
  serviceInstall,
256
258
  serviceUninstall
257
259
  };
258
- //# sourceMappingURL=service-WCGGRZTA.mjs.map
260
+ //# sourceMappingURL=service-KZTHBDQ5.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/daemon/service.ts"],"sourcesContent":["/**\n * System service management — register ChatLab as a launchd (macOS) or\n * systemd --user (Linux) service for auto-start on login and crash recovery.\n *\n * macOS : ~/Library/LaunchAgents/fun.chatlab.daemon.plist\n * Linux : ~/.config/systemd/user/chatlab.service\n * Meta : ~/.chatlab/daemon.json { port, host, installedAt }\n */\n\nimport * as fs from 'fs'\nimport * as path from 'path'\nimport * as os from 'os'\nimport { execSync } from 'child_process'\nimport { resolveCliPath } from '../paths'\n\nconst SERVICE_LABEL = 'fun.chatlab.daemon'\nconst PLIST_PATH = path.join(os.homedir(), 'Library', 'LaunchAgents', `${SERVICE_LABEL}.plist`)\nconst SYSTEMD_DIR = path.join(os.homedir(), '.config', 'systemd', 'user')\nconst SYSTEMD_SERVICE = path.join(SYSTEMD_DIR, 'chatlab.service')\nconst SYSTEM_DIR = path.join(os.homedir(), '.chatlab')\nconst LOG_FILE = path.join(SYSTEM_DIR, 'logs', 'daemon.log')\nconst META_FILE = path.join(SYSTEM_DIR, 'daemon.json')\n\ninterface DaemonMeta {\n port: number\n host: string\n installedAt: string\n}\n\nfunction writeMeta(meta: DaemonMeta): void {\n fs.mkdirSync(SYSTEM_DIR, { recursive: true })\n fs.writeFileSync(META_FILE, JSON.stringify(meta, null, 2))\n}\n\nfunction readMeta(): DaemonMeta | null {\n try {\n if (!fs.existsSync(META_FILE)) return null\n return JSON.parse(fs.readFileSync(META_FILE, 'utf-8')) as DaemonMeta\n } catch {\n return null\n }\n}\n\nfunction removeMeta(): void {\n try {\n fs.unlinkSync(META_FILE)\n } catch {\n // already removed, ignore\n }\n}\n\n// ── Public types ──────────────────────────────────────────────────────\n\nexport interface ServiceInstallOptions {\n port?: number\n host?: string\n token?: string\n headless?: boolean\n requireAuth?: boolean\n}\n\nexport interface ServiceStatus {\n installed: boolean\n running: boolean\n port?: number\n host?: string\n}\n\n// ── macOS (launchd) ───────────────────────────────────────────────────\n\nfunction buildPlist(options: ServiceInstallOptions): string {\n const port = options.port ?? 3110\n const host = options.host ?? '127.0.0.1'\n const cliEntry = resolveCliPath('bin/chatlab.mjs')\n const args = ['start', '--no-open', '--port', String(port), '--host', host]\n if (options.token) args.push('--token', options.token)\n if (options.headless) args.push('--headless')\n if (options.requireAuth) args.push('--require-auth')\n\n const programArgs = [process.execPath, cliEntry, ...args].map((a) => ` <string>${a}</string>`).join('\\n')\n\n fs.mkdirSync(path.join(SYSTEM_DIR, 'logs'), { recursive: true })\n\n return `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n <key>Label</key>\n <string>${SERVICE_LABEL}</string>\n <key>ProgramArguments</key>\n <array>\n${programArgs}\n </array>\n <key>RunAtLoad</key>\n <true/>\n <key>KeepAlive</key>\n <true/>\n <key>StandardOutPath</key>\n <string>${LOG_FILE}</string>\n <key>StandardErrorPath</key>\n <string>${LOG_FILE}</string>\n</dict>\n</plist>\n`\n}\n\nfunction getUid(): string {\n return execSync('id -u', { encoding: 'utf-8' }).trim()\n}\n\nfunction launchctlLoad(plistPath: string): void {\n try {\n execSync(`launchctl bootstrap gui/${getUid()} \"${plistPath}\"`, { stdio: 'pipe' })\n } catch {\n try {\n execSync(`launchctl load \"${plistPath}\"`, { stdio: 'pipe' })\n } catch (err) {\n throw new Error(`launchctl load failed: ${err instanceof Error ? err.message : err}`)\n }\n }\n}\n\nfunction launchctlUnload(plistPath: string): void {\n try {\n execSync(`launchctl bootout gui/${getUid()}/${SERVICE_LABEL}`, { stdio: 'pipe' })\n } catch {\n try {\n execSync(`launchctl unload \"${plistPath}\"`, { stdio: 'pipe' })\n } catch {\n // already unloaded, ignore\n }\n }\n}\n\nfunction installMacos(options: ServiceInstallOptions): void {\n fs.mkdirSync(path.dirname(PLIST_PATH), { recursive: true })\n\n if (fs.existsSync(PLIST_PATH)) {\n launchctlUnload(PLIST_PATH)\n }\n\n fs.writeFileSync(PLIST_PATH, buildPlist(options))\n launchctlLoad(PLIST_PATH)\n\n const port = options.port ?? 3110\n const host = options.host ?? '127.0.0.1'\n writeMeta({ port, host, installedAt: new Date().toISOString() })\n\n console.log(`\\nChatLab is now running as a system service`)\n console.log(` API: http://${host}:${port}`)\n console.log(` Logs: ${LOG_FILE}`)\n console.log(` Service: ${SERVICE_LABEL} (launchd)`)\n console.log(`\\nAuto-starts on login. Use \\`chatlab stop\\` to remove.\\n`)\n}\n\nfunction uninstallMacos(): void {\n if (!fs.existsSync(PLIST_PATH)) {\n console.log('No system service found.')\n removeMeta()\n return\n }\n launchctlUnload(PLIST_PATH)\n fs.unlinkSync(PLIST_PATH)\n removeMeta()\n console.log(`ChatLab system service removed.`)\n}\n\nfunction statusMacos(): ServiceStatus {\n if (!fs.existsSync(PLIST_PATH)) return { installed: false, running: false }\n let running = false\n try {\n const out = execSync(`launchctl list | grep ${SERVICE_LABEL}`, {\n encoding: 'utf-8',\n stdio: 'pipe',\n }).trim()\n // launchctl list: PID Status Label — PID is '-' when not running\n running = out.length > 0 && !out.startsWith('-')\n } catch {\n running = false\n }\n const meta = readMeta()\n return { installed: true, running, port: meta?.port, host: meta?.host }\n}\n\n// ── Linux (systemd --user) ────────────────────────────────────────────\n\nfunction escapeSystemdArg(arg: string): string {\n return '\"' + arg.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"') + '\"'\n}\n\nfunction buildUnit(options: ServiceInstallOptions): string {\n const port = options.port ?? 3110\n const host = options.host ?? '127.0.0.1'\n const cliEntry = resolveCliPath('bin/chatlab.mjs')\n const args = ['start', '--no-open', '--port', String(port), '--host', host]\n if (options.token) args.push('--token', options.token)\n if (options.headless) args.push('--headless')\n if (options.requireAuth) args.push('--require-auth')\n const execStart = [process.execPath, cliEntry, ...args].map(escapeSystemdArg).join(' ')\n\n return `[Unit]\nDescription=ChatLab daemon\nAfter=network.target\n\n[Service]\nExecStart=${execStart}\nRestart=always\nRestartSec=5\nStandardOutput=append:${LOG_FILE}\nStandardError=append:${LOG_FILE}\n\n[Install]\nWantedBy=default.target\n`\n}\n\nfunction installLinux(options: ServiceInstallOptions): void {\n fs.mkdirSync(SYSTEMD_DIR, { recursive: true })\n fs.mkdirSync(path.join(SYSTEM_DIR, 'logs'), { recursive: true })\n\n fs.writeFileSync(SYSTEMD_SERVICE, buildUnit(options))\n\n try {\n execSync('systemctl --user daemon-reload', { stdio: 'pipe' })\n execSync('systemctl --user enable --now chatlab.service', { stdio: 'pipe' })\n } catch (err) {\n throw new Error(`systemctl failed: ${err instanceof Error ? err.message : err}`)\n }\n\n const port = options.port ?? 3110\n const host = options.host ?? '127.0.0.1'\n writeMeta({ port, host, installedAt: new Date().toISOString() })\n\n console.log(`\\nChatLab is now running as a system service`)\n console.log(` API: http://${host}:${port}`)\n console.log(` Logs: ${LOG_FILE}`)\n console.log(` Unit: ${SYSTEMD_SERVICE} (systemd)`)\n console.log(`\\nAuto-starts on login. Use \\`chatlab stop\\` to remove.\\n`)\n}\n\nfunction uninstallLinux(): void {\n if (!fs.existsSync(SYSTEMD_SERVICE)) {\n console.log('No system service found.')\n removeMeta()\n return\n }\n try {\n execSync('systemctl --user disable --now chatlab.service', { stdio: 'pipe' })\n } catch {\n // already stopped\n }\n try {\n execSync('systemctl --user daemon-reload', { stdio: 'pipe' })\n } catch {\n // ignore\n }\n fs.unlinkSync(SYSTEMD_SERVICE)\n removeMeta()\n console.log(`ChatLab system service removed.`)\n}\n\nfunction statusLinux(): ServiceStatus {\n if (!fs.existsSync(SYSTEMD_SERVICE)) return { installed: false, running: false }\n let running = false\n try {\n execSync('systemctl --user is-active --quiet chatlab.service', { stdio: 'pipe' })\n running = true\n } catch {\n running = false\n }\n const meta = readMeta()\n return { installed: true, running, port: meta?.port, host: meta?.host }\n}\n\n// ── Public API ────────────────────────────────────────────────────────\n\nexport function serviceInstall(options: ServiceInstallOptions): void {\n switch (process.platform) {\n case 'darwin':\n return installMacos(options)\n case 'linux':\n return installLinux(options)\n default:\n console.error('Windows is not yet supported for daemon mode.')\n console.error('Please use `chatlab start` to run in the foreground instead.')\n process.exit(1)\n }\n}\n\nexport function serviceUninstall(): void {\n switch (process.platform) {\n case 'darwin':\n return uninstallMacos()\n case 'linux':\n return uninstallLinux()\n default:\n console.error('Windows is not yet supported for daemon mode.')\n process.exit(1)\n }\n}\n\nexport function getServiceStatus(): ServiceStatus {\n switch (process.platform) {\n case 'darwin':\n return statusMacos()\n case 'linux':\n return statusLinux()\n default:\n return { installed: false, running: false }\n }\n}\n"],"mappings":"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","names":[]}
@@ -9,7 +9,7 @@ import {
9
9
  analyzeNewImport,
10
10
  incrementalImport,
11
11
  streamImport
12
- } from "./chunk-643S2N2U.mjs";
12
+ } from "./chunk-36W2HWQN.mjs";
13
13
  import {
14
14
  detectAllFormats,
15
15
  detectFormat,
@@ -17,7 +17,7 @@ import {
17
17
  getFormatFeatureById,
18
18
  getSupportedFormats,
19
19
  scanMultiChatFile
20
- } from "./chunk-G7Q7EQ3V.mjs";
20
+ } from "./chunk-XJJXSOLO.mjs";
21
21
  import "./chunk-VSOWNKPA.mjs";
22
22
  export {
23
23
  analyzeIncrementalImport,
@@ -31,4 +31,4 @@ export {
31
31
  scanMultiChatFile,
32
32
  streamImport
33
33
  };
34
- //# sourceMappingURL=stream-import-QM5R5FDG.mjs.map
34
+ //# sourceMappingURL=stream-import-RDDB3N7B.mjs.map
@@ -1 +1 @@
1
- .writing-vertical[data-v-19a25590]{writing-mode:vertical-rl;text-orientation:mixed}.data-flow-bg[data-v-19a25590]{background:repeating-linear-gradient(0deg,transparent,transparent 20px,currentColor 20px,currentColor 21px);animation:dataFlow-19a25590 20s linear infinite}@keyframes dataFlow-19a25590{0%{transform:translateY(0)}to{transform:translateY(-100px)}}.mention-menu-enter-active[data-v-0262c6da],.mention-menu-leave-active[data-v-0262c6da]{transition:opacity .16s ease,transform .16s ease}.mention-menu-enter-from[data-v-0262c6da],.mention-menu-leave-to[data-v-0262c6da]{transform:translateY(8px);opacity:0}.slash-menu-enter-active[data-v-0853b251],.slash-menu-leave-active[data-v-0853b251]{transition:opacity .16s ease,transform .16s ease}.slash-menu-enter-from[data-v-0853b251],.slash-menu-leave-to[data-v-0853b251]{transform:translateY(8px);opacity:0}.custom-scrollbar[data-v-94ffe515]::-webkit-scrollbar{width:4px}.custom-scrollbar[data-v-94ffe515]::-webkit-scrollbar-track{background:transparent}.custom-scrollbar[data-v-94ffe515]::-webkit-scrollbar-thumb{border-radius:4px;background-color:#9ca3af4d}.dark .custom-scrollbar[data-v-94ffe515]::-webkit-scrollbar-thumb{background-color:#9ca3af26}.slide-fade-enter-active[data-v-e4cffe12],.slide-fade-leave-active[data-v-e4cffe12]{transition:all .3s ease-out}.slide-fade-enter-from[data-v-e4cffe12],.slide-fade-leave-to[data-v-e4cffe12]{transform:translate(20px);opacity:0}.slide-up-enter-active[data-v-e4cffe12],.slide-up-leave-active[data-v-e4cffe12]{transition:all .3s ease-out}.slide-up-enter-from[data-v-e4cffe12],.slide-up-leave-to[data-v-e4cffe12]{transform:translateY(10px);opacity:0}.fade-up-enter-active[data-v-e4cffe12],.fade-up-leave-active[data-v-e4cffe12]{transition:opacity .2s ease-out}.fade-up-enter-from[data-v-e4cffe12],.fade-up-leave-to[data-v-e4cffe12]{opacity:0}.fade-enter-active[data-v-0df46b7b],.fade-leave-active[data-v-0df46b7b]{transition:opacity .15s ease}.fade-enter-from[data-v-0df46b7b],.fade-leave-to[data-v-0df46b7b]{opacity:0}.fade-enter-active[data-v-d712cb76],.fade-leave-active[data-v-d712cb76]{transition:opacity .15s ease}.fade-enter-from[data-v-d712cb76],.fade-leave-to[data-v-d712cb76]{opacity:0}.titlebar-drag-cover[data-v-b3e18446]{position:absolute;left:0;right:0;z-index:30;top:calc(-1 * var(--titlebar-area-height));height:calc(var(--titlebar-area-height) + 1rem);-webkit-app-region:drag}.header-actions[data-v-b3e18446]{-webkit-app-region:drag}.header-actions[data-v-b3e18446] button,.header-actions[data-v-b3e18446] button *,.header-actions[data-v-b3e18446] a,.header-actions[data-v-b3e18446] a *,.header-actions[data-v-b3e18446] [role=button],.header-actions[data-v-b3e18446] [role=button] *{-webkit-app-region:no-drag}
1
+ .writing-vertical[data-v-19a25590]{writing-mode:vertical-rl;text-orientation:mixed}.data-flow-bg[data-v-19a25590]{background:repeating-linear-gradient(0deg,transparent,transparent 20px,currentColor 20px,currentColor 21px);animation:dataFlow-19a25590 20s linear infinite}@keyframes dataFlow-19a25590{0%{transform:translateY(0)}to{transform:translateY(-100px)}}.mention-menu-enter-active[data-v-0262c6da],.mention-menu-leave-active[data-v-0262c6da]{transition:opacity .16s ease,transform .16s ease}.mention-menu-enter-from[data-v-0262c6da],.mention-menu-leave-to[data-v-0262c6da]{transform:translateY(8px);opacity:0}.slash-menu-enter-active[data-v-0853b251],.slash-menu-leave-active[data-v-0853b251]{transition:opacity .16s ease,transform .16s ease}.slash-menu-enter-from[data-v-0853b251],.slash-menu-leave-to[data-v-0853b251]{transform:translateY(8px);opacity:0}.custom-scrollbar[data-v-94ffe515]::-webkit-scrollbar{width:4px}.custom-scrollbar[data-v-94ffe515]::-webkit-scrollbar-track{background:transparent}.custom-scrollbar[data-v-94ffe515]::-webkit-scrollbar-thumb{border-radius:4px;background-color:#9ca3af4d}.dark .custom-scrollbar[data-v-94ffe515]::-webkit-scrollbar-thumb{background-color:#9ca3af26}.slide-fade-enter-active[data-v-d3aed757],.slide-fade-leave-active[data-v-d3aed757]{transition:all .3s ease-out}.slide-fade-enter-from[data-v-d3aed757],.slide-fade-leave-to[data-v-d3aed757]{transform:translate(20px);opacity:0}.slide-up-enter-active[data-v-d3aed757],.slide-up-leave-active[data-v-d3aed757]{transition:all .3s ease-out}.slide-up-enter-from[data-v-d3aed757],.slide-up-leave-to[data-v-d3aed757]{transform:translateY(10px);opacity:0}.fade-up-enter-active[data-v-d3aed757],.fade-up-leave-active[data-v-d3aed757]{transition:opacity .2s ease-out}.fade-up-enter-from[data-v-d3aed757],.fade-up-leave-to[data-v-d3aed757]{opacity:0}.fade-enter-active[data-v-0df46b7b],.fade-leave-active[data-v-0df46b7b]{transition:opacity .15s ease}.fade-enter-from[data-v-0df46b7b],.fade-leave-to[data-v-0df46b7b]{opacity:0}.fade-enter-active[data-v-d712cb76],.fade-leave-active[data-v-d712cb76]{transition:opacity .15s ease}.fade-enter-from[data-v-d712cb76],.fade-leave-to[data-v-d712cb76]{opacity:0}.titlebar-drag-cover[data-v-b3e18446]{position:absolute;left:0;right:0;z-index:30;top:calc(-1 * var(--titlebar-area-height));height:calc(var(--titlebar-area-height) + 1rem);-webkit-app-region:drag}.header-actions[data-v-b3e18446]{-webkit-app-region:drag}.header-actions[data-v-b3e18446] button,.header-actions[data-v-b3e18446] button *,.header-actions[data-v-b3e18446] a,.header-actions[data-v-b3e18446] a *,.header-actions[data-v-b3e18446] [role=button],.header-actions[data-v-b3e18446] [role=button] *{-webkit-app-region:no-drag}