jinzd-ai-cli 0.4.242 → 0.4.243

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 (31) hide show
  1. package/dist/{batch-D3UHL432.js → batch-CUVZUPRK.js} +2 -2
  2. package/dist/{chunk-Y4CMNXZH.js → chunk-66CE3E6X.js} +1 -1
  3. package/dist/{chunk-LHINXQZF.js → chunk-DJGCG7SF.js} +1 -1
  4. package/dist/{chunk-J363BGOH.js → chunk-EMFCHE2B.js} +1 -1
  5. package/dist/{chunk-MKLPAQT6.js → chunk-GEWPLNKA.js} +1 -1
  6. package/dist/{chunk-PSP6UIKL.js → chunk-H3ARWBYR.js} +2 -2
  7. package/dist/{chunk-FRNWQIG6.js → chunk-HNJX3N2V.js} +3 -3
  8. package/dist/{chunk-FEMPCNX3.js → chunk-KILKF2VN.js} +28 -12
  9. package/dist/{chunk-6ZWNXHNH.js → chunk-L5IRDRWG.js} +1 -1
  10. package/dist/{chunk-MC2ZNPBC.js → chunk-PLEXBFCR.js} +1 -1
  11. package/dist/{chunk-UWV2NBCO.js → chunk-PNNZRJ67.js} +107 -2
  12. package/dist/{chunk-OO2PHOXD.js → chunk-QNK7GUUB.js} +3 -3
  13. package/dist/{chunk-D27TMEOV.js → chunk-TY4FSEZS.js} +107 -2
  14. package/dist/{chunk-WMAXYDCB.js → chunk-X73Y4JZI.js} +1 -1
  15. package/dist/{ci-WSED3Z6V.js → ci-3O3JR6FX.js} +4 -4
  16. package/dist/{ci-format-6AYL2X2J.js → ci-format-KGWF6KOU.js} +2 -2
  17. package/dist/{constants-FJ3L5GYO.js → constants-NMFRZ5LW.js} +1 -1
  18. package/dist/{doctor-cli-HCP56MKH.js → doctor-cli-4QUHTJZ4.js} +4 -4
  19. package/dist/electron-server.js +94 -78
  20. package/dist/{hub-K5MYSVEF.js → hub-2GXFPWOR.js} +1 -1
  21. package/dist/index.js +91 -25
  22. package/dist/{persistent-memory-EYAKL2XA.js → persistent-memory-VFBRMKGG.js} +12 -2
  23. package/dist/{persistent-memory-HWFNDQFQ.js → persistent-memory-ZCQKLIC5.js} +12 -2
  24. package/dist/{pr-OICMUN6R.js → pr-GIDFO4KP.js} +4 -4
  25. package/dist/{run-tests-DSEW5HED.js → run-tests-BMH6QJN2.js} +2 -2
  26. package/dist/{run-tests-B3FSE5NV.js → run-tests-WCZBWQFS.js} +2 -2
  27. package/dist/{server-2FS65CQZ.js → server-A5NGGDMP.js} +11 -11
  28. package/dist/{server-EDCGPEGC.js → server-FEFIFJDA.js} +5 -5
  29. package/dist/{task-orchestrator-WCZYV3TE.js → task-orchestrator-J2H6OV6R.js} +5 -5
  30. package/dist/{usage-WVUYNLOD.js → usage-7WJC234G.js} +2 -2
  31. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -17,7 +17,7 @@ import {
17
17
  scanProject,
18
18
  sessionHasMeaningfulContent,
19
19
  setupProxy
20
- } from "./chunk-PSP6UIKL.js";
20
+ } from "./chunk-H3ARWBYR.js";
21
21
  import {
22
22
  computeCost,
23
23
  formatCost,
@@ -50,9 +50,10 @@ import {
50
50
  spawnAgentContext,
51
51
  theme,
52
52
  undoStack
53
- } from "./chunk-FEMPCNX3.js";
53
+ } from "./chunk-KILKF2VN.js";
54
54
  import {
55
55
  addMemoryEntry,
56
+ backupMemoryStore,
56
57
  clearMemoryEntries,
57
58
  countPendingMemories,
58
59
  deleteMemoryEntry,
@@ -62,6 +63,7 @@ import {
62
63
  findSimilarMemory,
63
64
  formatMemoryForPrompt,
64
65
  isMemoryExpired,
66
+ isMemoryStale,
65
67
  listMemoryEntries,
66
68
  listOrphanedProjectMemories,
67
69
  loadMemoryEntries,
@@ -69,9 +71,12 @@ import {
69
71
  memoryStorePath,
70
72
  parseWritableScope,
71
73
  rebindMemoryProject,
74
+ restoreMemoryEntries,
75
+ searchPersistentMemories,
76
+ touchMemoryReferences,
72
77
  updateMemoryApproval,
73
78
  updateMemoryEntry
74
- } from "./chunk-D27TMEOV.js";
79
+ } from "./chunk-TY4FSEZS.js";
75
80
  import "./chunk-K3CF65QH.js";
76
81
  import "./chunk-UUSRWSSX.js";
77
82
  import "./chunk-CKH4KQ4E.js";
@@ -85,13 +90,13 @@ import {
85
90
  formatDoctorReport,
86
91
  loadContextFiles,
87
92
  writeCrashLog
88
- } from "./chunk-FRNWQIG6.js";
93
+ } from "./chunk-HNJX3N2V.js";
89
94
  import {
90
95
  ProviderRegistry
91
96
  } from "./chunk-QYQI7ZWK.js";
92
97
  import {
93
98
  ConfigManager
94
- } from "./chunk-WMAXYDCB.js";
99
+ } from "./chunk-X73Y4JZI.js";
95
100
  import {
96
101
  describePlugin,
97
102
  getActivePluginAssets,
@@ -108,7 +113,7 @@ import {
108
113
  trustHook,
109
114
  trustPlugin,
110
115
  untrustHook
111
- } from "./chunk-J363BGOH.js";
116
+ } from "./chunk-EMFCHE2B.js";
112
117
  import {
113
118
  CONTENT_ONLY_STREAM_REMINDER,
114
119
  TEE_FINAL_USER_NUDGE,
@@ -141,7 +146,7 @@ import {
141
146
  import {
142
147
  fileCheckpoints
143
148
  } from "./chunk-4BKXL7SM.js";
144
- import "./chunk-6ZWNXHNH.js";
149
+ import "./chunk-L5IRDRWG.js";
145
150
  import {
146
151
  AGENTIC_BEHAVIOR_GUIDELINE,
147
152
  AUTHOR,
@@ -160,7 +165,7 @@ import {
160
165
  SKILLS_DIR_NAME,
161
166
  VERSION,
162
167
  buildUserIdentityPrompt
163
- } from "./chunk-Y4CMNXZH.js";
168
+ } from "./chunk-66CE3E6X.js";
164
169
  import {
165
170
  buildChatIndex,
166
171
  clearChatIndex,
@@ -1382,7 +1387,7 @@ No tools match "${filter}".
1382
1387
  const { join: join6 } = await import("path");
1383
1388
  const { existsSync: existsSync5 } = await import("fs");
1384
1389
  const { getGitRoot: getGitRoot2 } = await import("./git-context-EXOEHQSF.js");
1385
- const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-FJ3L5GYO.js");
1390
+ const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-NMFRZ5LW.js");
1386
1391
  const { approveProject, hashMcpFile } = await import("./project-trust-NKYHL3VZ.js");
1387
1392
  const cwd = process.cwd();
1388
1393
  const projectRoot = getGitRoot2(cwd) ?? cwd;
@@ -2361,7 +2366,7 @@ function createReviewCommands() {
2361
2366
  usage: "/test [command|filter]",
2362
2367
  async execute(args, ctx) {
2363
2368
  try {
2364
- const { executeTests } = await import("./run-tests-DSEW5HED.js");
2369
+ const { executeTests } = await import("./run-tests-BMH6QJN2.js");
2365
2370
  const argStr = args.join(" ").trim();
2366
2371
  let testArgs = {};
2367
2372
  if (argStr) {
@@ -2717,7 +2722,7 @@ function createMemoryCommands() {
2717
2722
  {
2718
2723
  name: "memory",
2719
2724
  description: "Governed persistent memory + chat memory recall index",
2720
- usage: "/memory [show|add|edit|approve|reject|delete|expire|rebind|clear|export|path|rebuild|refresh|status|recall|index-clear]",
2725
+ usage: "/memory [show|add|edit|approve|reject|delete|expire|rebind|clear|backup|restore|export|path|rebuild|refresh|status|recall|index-clear]",
2721
2726
  async execute(args, ctx) {
2722
2727
  const configDir = ctx.config.getConfigDir();
2723
2728
  const sub = args[0] ?? "show";
@@ -2792,15 +2797,31 @@ function createMemoryCommands() {
2792
2797
  ctx.renderer.printInfo("Usage: /memory recall <query>");
2793
2798
  return;
2794
2799
  }
2800
+ const persistentHits = searchPersistentMemories(configDir, query, process.cwd(), 3);
2801
+ if (persistentHits.length > 0) {
2802
+ touchMemoryReferences(configDir, persistentHits.map((h) => h.entry.id));
2803
+ console.log(theme.heading(`
2804
+ \u{1F4DD} Persistent memory \u2014 ${persistentHits.length} hit(s):
2805
+ `));
2806
+ for (const [i, h] of persistentHits.entries()) {
2807
+ console.log(theme.accent(` [${i + 1}] id ${h.entry.id.slice(0, 8)} \xB7 ${h.entry.scope} \xB7 coverage ${h.score.toFixed(2)}`));
2808
+ console.log(theme.dim(" ") + h.entry.content.replace(/\n/g, "\n "));
2809
+ console.log();
2810
+ }
2811
+ }
2795
2812
  try {
2796
2813
  const hits = await searchChatMemory(query, { topK: 5, minScore: 0.2 });
2797
2814
  if (hits.length === 0) {
2798
- console.log(theme.warning(` No memories matched "${query}" above score 0.20.`));
2815
+ if (persistentHits.length === 0) {
2816
+ console.log(theme.warning(` No memories matched "${query}" (persistent + chat index).`));
2817
+ } else {
2818
+ console.log(theme.dim(` (no chat-history hits above score 0.20)`));
2819
+ }
2799
2820
  console.log();
2800
2821
  return;
2801
2822
  }
2802
2823
  console.log(theme.heading(`
2803
- \u{1F9E0} Memory recall for "${query}" \u2014 ${hits.length} hit(s):
2824
+ \u{1F9E0} Chat history recall for "${query}" \u2014 ${hits.length} hit(s):
2804
2825
  `));
2805
2826
  for (const [i, h] of hits.entries()) {
2806
2827
  const ts = h.chunk.timestamp.slice(0, 16).replace("T", " ");
@@ -2866,6 +2887,15 @@ function createMemoryCommands() {
2866
2887
  entries = entries.filter((m) => m.content.toLowerCase().includes(searchText) || m.id.startsWith(searchText));
2867
2888
  filters.push(`search:"${searchText}"`);
2868
2889
  }
2890
+ const staleDays = typeof parsed.flags.stale === "string" ? Number(parsed.flags.stale) : void 0;
2891
+ if (staleDays !== void 0) {
2892
+ if (!Number.isFinite(staleDays) || staleDays <= 0) {
2893
+ ctx.renderer.renderError("Usage: /memory show --stale <days> (positive number)");
2894
+ return;
2895
+ }
2896
+ entries = entries.filter((m) => isMemoryStale(m, staleDays));
2897
+ filters.push(`stale>${staleDays}d`);
2898
+ }
2869
2899
  if (entries.length === 0) {
2870
2900
  ctx.renderer.printInfo(filters.length > 0 ? `No memory entries match [${filters.join(", ")}]` : "Memory is empty");
2871
2901
  return;
@@ -2880,7 +2910,8 @@ function createMemoryCommands() {
2880
2910
  entry.sourceProject ? `project ${entry.sourceProject}` : ""
2881
2911
  ].filter(Boolean).join(" \xB7 ");
2882
2912
  console.log(theme.accent(` ${entry.id.slice(0, 8)} ${status} scope:${entry.scope} sensitivity:${entry.sensitivity}`));
2883
- console.log(theme.dim(` source: ${source} \xB7 created: ${entry.createdAt.replace("T", " ").slice(0, 19)}${entry.expiresAt ? ` \xB7 expires: ${entry.expiresAt}` : ""}`));
2913
+ const lastRef = entry.lastReferencedAt ? ` \xB7 last-referenced: ${entry.lastReferencedAt.slice(0, 10)}` : "";
2914
+ console.log(theme.dim(` source: ${source} \xB7 created: ${entry.createdAt.replace("T", " ").slice(0, 19)}${lastRef}${entry.expiresAt ? ` \xB7 expires: ${entry.expiresAt}` : ""}`));
2884
2915
  console.log(" " + entry.content.replace(/\n/g, "\n "));
2885
2916
  console.log();
2886
2917
  }
@@ -3022,12 +3053,35 @@ function createMemoryCommands() {
3022
3053
  if (result.backupPath) {
3023
3054
  ctx.renderer.printInfo(`Backup saved: ${result.backupPath}`);
3024
3055
  }
3056
+ } else if (sub === "backup") {
3057
+ const parsed = parseFlags(args.slice(1));
3058
+ try {
3059
+ const result = backupMemoryStore(configDir, typeof parsed.flags.out === "string" ? parsed.flags.out : void 0);
3060
+ ctx.renderer.printSuccess(`Backed up ${result.count} entr${result.count > 1 ? "ies" : "y"} to ${result.backupPath}`);
3061
+ } catch (err) {
3062
+ ctx.renderer.renderError(err instanceof Error ? err.message : String(err));
3063
+ }
3064
+ } else if (sub === "restore") {
3065
+ const file = args[1];
3066
+ if (!file) {
3067
+ ctx.renderer.printInfo("Usage: /memory restore <file> (accepts .jsonl backups or /memory export JSON)");
3068
+ return;
3069
+ }
3070
+ try {
3071
+ const result = restoreMemoryEntries(configDir, file);
3072
+ ctx.renderer.printSuccess(`Restored ${result.imported} entr${result.imported === 1 ? "y" : "ies"} (${result.skipped} duplicate${result.skipped === 1 ? "" : "s"} skipped)`);
3073
+ if (result.backupPath) ctx.renderer.printInfo(`Pre-restore backup: ${result.backupPath}`);
3074
+ const pending = countPendingMemories(configDir);
3075
+ if (pending > 0) ctx.renderer.printInfo(`${pending} entr${pending > 1 ? "ies" : "y"} pending approval \u2014 /memory show --pending`);
3076
+ } catch (err) {
3077
+ ctx.renderer.renderError(`Restore failed: ${err instanceof Error ? err.message : String(err)}`);
3078
+ }
3025
3079
  } else if (sub === "path") {
3026
3080
  console.log(theme.accent(memoryStorePath(configDir)));
3027
3081
  console.log(theme.dim(memoryMarkdownPath(configDir)));
3028
3082
  } else {
3029
3083
  ctx.renderer.printInfo(
3030
- "Governed persistent memory: show [--pending|--orphaned|--scope <s>|--search <text>] | add | edit <id> <text> | approve/reject/delete/expire <id> | rebind <id> <path> | clear | export [--format json|md] [--out <file>] | path\nChat memory index (cross-session recall): rebuild | refresh | status | recall <query> | index-clear"
3084
+ "Governed persistent memory: show [--pending|--orphaned|--stale <days>|--scope <s>|--search <text>] | add | edit <id> <text> | approve/reject/delete/expire <id> | rebind <id> <path> | clear | backup [--out <file>] | restore <file> | export [--format json|md] [--out <file>] | path\nChat memory index (cross-session recall): rebuild | refresh | status | recall <query> | index-clear"
3031
3085
  );
3032
3086
  }
3033
3087
  }
@@ -6164,7 +6218,19 @@ Session '${this.resumeSessionId}' not found.
6164
6218
  chunks: initial.chunks,
6165
6219
  sessions: initial.sessions
6166
6220
  };
6167
- if (!initial.exists) return;
6221
+ if (!initial.exists) {
6222
+ try {
6223
+ const sessionCount = this.sessions.listSessions().length;
6224
+ if (sessionCount >= 5) {
6225
+ process.stdout.write(theme.dim(
6226
+ ` \u{1F4A1} ${sessionCount} past sessions have no memory index \u2014 run /memory rebuild to enable cross-session recall (first run downloads ~117 MB)
6227
+ `
6228
+ ));
6229
+ }
6230
+ } catch {
6231
+ }
6232
+ return;
6233
+ }
6168
6234
  const stats = await buildChatIndex2({ full: false });
6169
6235
  const after = getChatIndexStatus2();
6170
6236
  this.chatMemoryStatus = {
@@ -7948,7 +8014,7 @@ program.command("web").description("Start Web UI server with browser-based chat
7948
8014
  console.error("Error: Invalid port number. Must be between 1 and 65535.");
7949
8015
  process.exit(1);
7950
8016
  }
7951
- const { startWebServer } = await import("./server-2FS65CQZ.js");
8017
+ const { startWebServer } = await import("./server-A5NGGDMP.js");
7952
8018
  await startWebServer({ port, host: options.host });
7953
8019
  });
7954
8020
  program.command("user [action] [username]").description("Manage Web UI users (list | create <name> | delete <name> | reset-password <name> | logout-all <name> | migrate <name>)").action(async (action, username) => {
@@ -8115,11 +8181,11 @@ program.command("sessions").description("List recent conversation sessions").opt
8115
8181
  console.log(footer + "\n");
8116
8182
  });
8117
8183
  program.command("usage").description("Show token + cost usage grouped by provider/model (cross-session)").option("--days <n>", "Only the last N days (inclusive of today)").option("--month <ym>", "Only a specific month, format YYYY-MM (e.g. 2026-06)").option("--json", "Output as JSON (for scripting)").action(async (options) => {
8118
- const { runUsageCli } = await import("./usage-WVUYNLOD.js");
8184
+ const { runUsageCli } = await import("./usage-7WJC234G.js");
8119
8185
  await runUsageCli(options);
8120
8186
  });
8121
8187
  program.command("doctor").description("Health check: API keys, config, MCP, recent crashes, tool usage, disk usage").option("--json", "Output as JSON (for scripting)").option("--reset-stats", "Reset accumulated tool usage statistics").action(async (options) => {
8122
- const { runDoctorCli } = await import("./doctor-cli-HCP56MKH.js");
8188
+ const { runDoctorCli } = await import("./doctor-cli-4QUHTJZ4.js");
8123
8189
  const argv = process.argv.slice(2);
8124
8190
  await runDoctorCli({
8125
8191
  json: !!options.json || argv.includes("--json"),
@@ -8128,7 +8194,7 @@ program.command("doctor").description("Health check: API keys, config, MCP, rece
8128
8194
  });
8129
8195
  program.command("batch <action> [arg] [arg2]").description("Anthropic Message Batches: submit | list | status <id> | results <id> [out] | cancel <id>").option("--dry-run", "Parse and validate input without submitting (submit only)").action(async (action, arg, arg2, options) => {
8130
8196
  try {
8131
- const batch = await import("./batch-D3UHL432.js");
8197
+ const batch = await import("./batch-CUVZUPRK.js");
8132
8198
  switch (action) {
8133
8199
  case "submit":
8134
8200
  if (!arg) {
@@ -8171,7 +8237,7 @@ program.command("batch <action> [arg] [arg2]").description("Anthropic Message Ba
8171
8237
  }
8172
8238
  });
8173
8239
  program.command("mcp-serve").description("Start an MCP server over STDIO, exposing aicli's built-in tools to Claude Desktop / Cursor / other MCP clients").option("--allow-destructive", "Allow bash / run_interactive / task_create (always destructive in MCP mode)").option("--allow-outside-cwd", "Allow tool path arguments to escape the sandbox root \u2014 disabled by default").option("--tools <list>", "Comma-separated whitelist of tools to expose (default: all eligible tools)").option("--cwd <path>", "Working directory AND sandbox root (default: current directory)").action(async (options) => {
8174
- const { startMcpServer } = await import("./server-EDCGPEGC.js");
8240
+ const { startMcpServer } = await import("./server-FEFIFJDA.js");
8175
8241
  await startMcpServer({
8176
8242
  allowDestructive: !!options.allowDestructive,
8177
8243
  allowOutsideCwd: !!options.allowOutsideCwd,
@@ -8184,7 +8250,7 @@ program.command("pr <action> [target]").description("PR review helpers: review |
8184
8250
  console.error(`Unknown pr action: ${action}. Use review | security-review | summarize.`);
8185
8251
  process.exit(1);
8186
8252
  }
8187
- const { runPrCli } = await import("./pr-OICMUN6R.js");
8253
+ const { runPrCli } = await import("./pr-GIDFO4KP.js");
8188
8254
  const result = await runPrCli({
8189
8255
  action,
8190
8256
  target,
@@ -8204,8 +8270,8 @@ program.command("pr <action> [target]").description("PR review helpers: review |
8204
8270
  process.exit(result.exitCode);
8205
8271
  });
8206
8272
  program.command("ci").description("Headless PR review (code + security) \u2014 reads git/gh diff, optionally posts to PR. Designed for GitHub Actions.").option("--pr <num>", "PR number or URL; diff fetched via gh pr diff <value>", (v) => /^#?\d+$/.test(v) ? parseInt(v.replace(/^#/, ""), 10) : v).option("--base <ref>", "Base ref for git diff <ref>...HEAD (ignored when --pr set)").option("--post", "Post review as a PR comment (requires gh CLI + GH_TOKEN, needs --pr)").option("--no-update", "Always create a new comment instead of updating the previous aicli review").option("--skip-code", "Skip the code review section").option("--skip-security", "Skip the security review section").option("--detailed", "Use the detailed code-review prompt").option("--max-diff <n>", "Max diff chars sent to the model (default 30000)", (v) => parseInt(v, 10)).option("--provider <id>", "Override provider (default: config.defaultProvider)").option("--model <id>", "Override model").option("--dry-run", "Print result to stdout instead of posting (overrides --post)").option("--json", "Output a structured JSON report").option("--markdown", "Output Markdown report (default)").option("--sarif", "Output SARIF 2.1.0 for code scanning artifacts").option("--fail-on-security-high", "Fail when the security review contains HIGH/CRITICAL findings (default)").option("--no-fail-on-security-high", "Do not fail on security HIGH/CRITICAL findings").option("--fail-on-test-failure", "Fail when the report mentions test failures (default)").option("--no-fail-on-test-failure", "Do not fail on test failure findings").option("--fail-on-lint-failure", "Fail when the report mentions lint/typecheck failures (default)").option("--no-fail-on-lint-failure", "Do not fail on lint/typecheck failure findings").action(async (options) => {
8207
- const { runCi } = await import("./ci-WSED3Z6V.js");
8208
- const { formatCiResult } = await import("./ci-format-6AYL2X2J.js");
8273
+ const { runCi } = await import("./ci-3O3JR6FX.js");
8274
+ const { formatCiResult } = await import("./ci-format-KGWF6KOU.js");
8209
8275
  const formats = [options.json, options.markdown, options.sarif].filter(Boolean).length;
8210
8276
  if (formats > 1) {
8211
8277
  console.error("Choose only one output format: --json, --markdown, or --sarif.");
@@ -8363,7 +8429,7 @@ program.command("hub [topic]").description("Start multi-agent hub (discuss / bra
8363
8429
  config.get("customProviders"),
8364
8430
  config.getConfigDir()
8365
8431
  );
8366
- const { startHub } = await import("./hub-K5MYSVEF.js");
8432
+ const { startHub } = await import("./hub-2GXFPWOR.js");
8367
8433
  await startHub(
8368
8434
  {
8369
8435
  topic: topic ?? "",
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  addMemoryEntry,
4
+ backupMemoryStore,
4
5
  clearMemoryEntries,
5
6
  countPendingMemories,
6
7
  deleteMemoryEntry,
@@ -11,6 +12,7 @@ import {
11
12
  formatMemoryForPrompt,
12
13
  getProjectKey,
13
14
  isMemoryExpired,
15
+ isMemoryStale,
14
16
  isMemoryVisibleInProject,
15
17
  listMemoryEntries,
16
18
  listOrphanedProjectMemories,
@@ -20,16 +22,20 @@ import {
20
22
  parseWritableScope,
21
23
  rebindMemoryProject,
22
24
  renderMemoryMarkdown,
25
+ restoreMemoryEntries,
26
+ searchPersistentMemories,
23
27
  syncLegacyMarkdown,
28
+ touchMemoryReferences,
24
29
  updateMemoryApproval,
25
30
  updateMemoryEntry
26
- } from "./chunk-D27TMEOV.js";
31
+ } from "./chunk-TY4FSEZS.js";
27
32
  import "./chunk-HOSJZMQS.js";
28
- import "./chunk-Y4CMNXZH.js";
33
+ import "./chunk-66CE3E6X.js";
29
34
  import "./chunk-B5TYJO7V.js";
30
35
  import "./chunk-IW3Q7AE5.js";
31
36
  export {
32
37
  addMemoryEntry,
38
+ backupMemoryStore,
33
39
  clearMemoryEntries,
34
40
  countPendingMemories,
35
41
  deleteMemoryEntry,
@@ -40,6 +46,7 @@ export {
40
46
  formatMemoryForPrompt,
41
47
  getProjectKey,
42
48
  isMemoryExpired,
49
+ isMemoryStale,
43
50
  isMemoryVisibleInProject,
44
51
  listMemoryEntries,
45
52
  listOrphanedProjectMemories,
@@ -49,7 +56,10 @@ export {
49
56
  parseWritableScope,
50
57
  rebindMemoryProject,
51
58
  renderMemoryMarkdown,
59
+ restoreMemoryEntries,
60
+ searchPersistentMemories,
52
61
  syncLegacyMarkdown,
62
+ touchMemoryReferences,
53
63
  updateMemoryApproval,
54
64
  updateMemoryEntry
55
65
  };
@@ -1,5 +1,6 @@
1
1
  import {
2
2
  addMemoryEntry,
3
+ backupMemoryStore,
3
4
  clearMemoryEntries,
4
5
  countPendingMemories,
5
6
  deleteMemoryEntry,
@@ -10,6 +11,7 @@ import {
10
11
  formatMemoryForPrompt,
11
12
  getProjectKey,
12
13
  isMemoryExpired,
14
+ isMemoryStale,
13
15
  isMemoryVisibleInProject,
14
16
  listMemoryEntries,
15
17
  listOrphanedProjectMemories,
@@ -19,15 +21,19 @@ import {
19
21
  parseWritableScope,
20
22
  rebindMemoryProject,
21
23
  renderMemoryMarkdown,
24
+ restoreMemoryEntries,
25
+ searchPersistentMemories,
22
26
  syncLegacyMarkdown,
27
+ touchMemoryReferences,
23
28
  updateMemoryApproval,
24
29
  updateMemoryEntry
25
- } from "./chunk-UWV2NBCO.js";
30
+ } from "./chunk-PNNZRJ67.js";
26
31
  import "./chunk-YVTASHS5.js";
27
- import "./chunk-MKLPAQT6.js";
32
+ import "./chunk-GEWPLNKA.js";
28
33
  import "./chunk-6BUTA5VW.js";
29
34
  export {
30
35
  addMemoryEntry,
36
+ backupMemoryStore,
31
37
  clearMemoryEntries,
32
38
  countPendingMemories,
33
39
  deleteMemoryEntry,
@@ -38,6 +44,7 @@ export {
38
44
  formatMemoryForPrompt,
39
45
  getProjectKey,
40
46
  isMemoryExpired,
47
+ isMemoryStale,
41
48
  isMemoryVisibleInProject,
42
49
  listMemoryEntries,
43
50
  listOrphanedProjectMemories,
@@ -47,7 +54,10 @@ export {
47
54
  parseWritableScope,
48
55
  rebindMemoryProject,
49
56
  renderMemoryMarkdown,
57
+ restoreMemoryEntries,
58
+ searchPersistentMemories,
50
59
  syncLegacyMarkdown,
60
+ touchMemoryReferences,
51
61
  updateMemoryApproval,
52
62
  updateMemoryEntry
53
63
  };
@@ -2,8 +2,8 @@
2
2
  import {
3
3
  countSeverity,
4
4
  runCi
5
- } from "./chunk-OO2PHOXD.js";
6
- import "./chunk-LHINXQZF.js";
5
+ } from "./chunk-QNK7GUUB.js";
6
+ import "./chunk-DJGCG7SF.js";
7
7
  import {
8
8
  buildReviewPrompt,
9
9
  buildSecurityReviewPrompt,
@@ -14,12 +14,12 @@ import {
14
14
  } from "./chunk-QYQI7ZWK.js";
15
15
  import {
16
16
  ConfigManager
17
- } from "./chunk-WMAXYDCB.js";
17
+ } from "./chunk-X73Y4JZI.js";
18
18
  import "./chunk-O3XSFPYH.js";
19
19
  import "./chunk-5ULLIOVC.js";
20
20
  import {
21
21
  VERSION
22
- } from "./chunk-Y4CMNXZH.js";
22
+ } from "./chunk-66CE3E6X.js";
23
23
  import "./chunk-IW3Q7AE5.js";
24
24
 
25
25
  // src/cli/pr.ts
@@ -2,8 +2,8 @@
2
2
  import {
3
3
  executeTests,
4
4
  runTestsTool
5
- } from "./chunk-6ZWNXHNH.js";
6
- import "./chunk-Y4CMNXZH.js";
5
+ } from "./chunk-L5IRDRWG.js";
6
+ import "./chunk-66CE3E6X.js";
7
7
  export {
8
8
  executeTests,
9
9
  runTestsTool
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  executeTests,
3
3
  runTestsTool
4
- } from "./chunk-MC2ZNPBC.js";
5
- import "./chunk-MKLPAQT6.js";
4
+ } from "./chunk-PLEXBFCR.js";
5
+ import "./chunk-GEWPLNKA.js";
6
6
  export {
7
7
  executeTests,
8
8
  runTestsTool
@@ -23,7 +23,7 @@ import {
23
23
  scanDirTree,
24
24
  scanProject,
25
25
  setupProxy
26
- } from "./chunk-PSP6UIKL.js";
26
+ } from "./chunk-H3ARWBYR.js";
27
27
  import {
28
28
  computeCost,
29
29
  formatCost,
@@ -63,7 +63,7 @@ import {
63
63
  spawnAgentContext,
64
64
  truncateOutput,
65
65
  undoStack
66
- } from "./chunk-FEMPCNX3.js";
66
+ } from "./chunk-KILKF2VN.js";
67
67
  import {
68
68
  addMemoryEntry,
69
69
  clearMemoryEntries,
@@ -77,7 +77,7 @@ import {
77
77
  parseWritableScope,
78
78
  updateMemoryApproval,
79
79
  updateMemoryEntry
80
- } from "./chunk-D27TMEOV.js";
80
+ } from "./chunk-TY4FSEZS.js";
81
81
  import "./chunk-K3CF65QH.js";
82
82
  import "./chunk-UUSRWSSX.js";
83
83
  import "./chunk-CKH4KQ4E.js";
@@ -90,13 +90,13 @@ import {
90
90
  buildDoctorReport,
91
91
  formatDoctorReport,
92
92
  loadContextFiles
93
- } from "./chunk-FRNWQIG6.js";
93
+ } from "./chunk-HNJX3N2V.js";
94
94
  import {
95
95
  ProviderRegistry
96
96
  } from "./chunk-QYQI7ZWK.js";
97
97
  import {
98
98
  ConfigManager
99
- } from "./chunk-WMAXYDCB.js";
99
+ } from "./chunk-X73Y4JZI.js";
100
100
  import {
101
101
  describePlugin,
102
102
  getActivePluginAssets,
@@ -111,7 +111,7 @@ import {
111
111
  runTool,
112
112
  setPluginEnabled,
113
113
  trustPlugin
114
- } from "./chunk-J363BGOH.js";
114
+ } from "./chunk-EMFCHE2B.js";
115
115
  import {
116
116
  CONTENT_ONLY_STREAM_REMINDER,
117
117
  TEE_FINAL_USER_NUDGE,
@@ -135,7 +135,7 @@ import {
135
135
  getGitRoot
136
136
  } from "./chunk-HOSJZMQS.js";
137
137
  import "./chunk-4BKXL7SM.js";
138
- import "./chunk-6ZWNXHNH.js";
138
+ import "./chunk-L5IRDRWG.js";
139
139
  import {
140
140
  AGENTIC_BEHAVIOR_GUIDELINE,
141
141
  AUTHOR,
@@ -151,7 +151,7 @@ import {
151
151
  SKILLS_DIR_NAME,
152
152
  VERSION,
153
153
  buildUserIdentityPrompt
154
- } from "./chunk-Y4CMNXZH.js";
154
+ } from "./chunk-66CE3E6X.js";
155
155
  import "./chunk-IGPFYNZA.js";
156
156
  import "./chunk-KHYD3WXE.js";
157
157
  import "./chunk-PJ3ONBWZ.js";
@@ -803,7 +803,7 @@ Cache: write=${cacheCreate} read=${cacheRead}` : "";
803
803
  Cost: ${formatCost(cost)}` : "";
804
804
  let memoryLine = "";
805
805
  try {
806
- const { countPendingMemories } = await import("./persistent-memory-EYAKL2XA.js");
806
+ const { countPendingMemories } = await import("./persistent-memory-VFBRMKGG.js");
807
807
  const pending = countPendingMemories(ctx.config.getConfigDir());
808
808
  if (pending > 0) memoryLine = `
809
809
  Memory: \u26A0 ${pending} pending approval \u2014 see the Memory panel or /memory`;
@@ -1612,7 +1612,7 @@ async function handleSecurityReview(args, ctx) {
1612
1612
  async function handleTest(args, ctx) {
1613
1613
  ctx.send({ type: "info", message: "\u{1F9EA} Running tests..." });
1614
1614
  try {
1615
- const { executeTests } = await import("./run-tests-DSEW5HED.js");
1615
+ const { executeTests } = await import("./run-tests-BMH6QJN2.js");
1616
1616
  const argStr = args.join(" ").trim();
1617
1617
  let testArgs = {};
1618
1618
  if (argStr) {
@@ -1876,7 +1876,7 @@ async function handleMemory(args, ctx) {
1876
1876
  ctx.handleMemoryManage(sub, args[1], sub === "expire" ? args[2] : void 0);
1877
1877
  } else if (sub === "export") {
1878
1878
  if (args[1] === "md") {
1879
- const { exportMemoryEntries: exportMemoryEntries2 } = await import("./persistent-memory-EYAKL2XA.js");
1879
+ const { exportMemoryEntries: exportMemoryEntries2 } = await import("./persistent-memory-VFBRMKGG.js");
1880
1880
  ctx.send({
1881
1881
  type: "export_data",
1882
1882
  format: "md",
@@ -1,15 +1,15 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ToolRegistry
4
- } from "./chunk-FEMPCNX3.js";
5
- import "./chunk-D27TMEOV.js";
4
+ } from "./chunk-KILKF2VN.js";
5
+ import "./chunk-TY4FSEZS.js";
6
6
  import "./chunk-K3CF65QH.js";
7
7
  import "./chunk-UUSRWSSX.js";
8
8
  import "./chunk-CKH4KQ4E.js";
9
9
  import "./chunk-BXP6YZ2P.js";
10
10
  import {
11
11
  runTool
12
- } from "./chunk-J363BGOH.js";
12
+ } from "./chunk-EMFCHE2B.js";
13
13
  import {
14
14
  getDangerLevel,
15
15
  schemaToJsonSchema
@@ -17,10 +17,10 @@ import {
17
17
  import "./chunk-5ULLIOVC.js";
18
18
  import "./chunk-HOSJZMQS.js";
19
19
  import "./chunk-4BKXL7SM.js";
20
- import "./chunk-6ZWNXHNH.js";
20
+ import "./chunk-L5IRDRWG.js";
21
21
  import {
22
22
  VERSION
23
- } from "./chunk-Y4CMNXZH.js";
23
+ } from "./chunk-66CE3E6X.js";
24
24
  import "./chunk-IGPFYNZA.js";
25
25
  import "./chunk-KHYD3WXE.js";
26
26
  import "./chunk-PJ3ONBWZ.js";
@@ -3,15 +3,15 @@ import {
3
3
  ToolRegistry,
4
4
  googleSearchContext,
5
5
  truncateOutput
6
- } from "./chunk-FEMPCNX3.js";
7
- import "./chunk-D27TMEOV.js";
6
+ } from "./chunk-KILKF2VN.js";
7
+ import "./chunk-TY4FSEZS.js";
8
8
  import "./chunk-K3CF65QH.js";
9
9
  import "./chunk-UUSRWSSX.js";
10
10
  import "./chunk-CKH4KQ4E.js";
11
11
  import "./chunk-BXP6YZ2P.js";
12
12
  import {
13
13
  runTool
14
- } from "./chunk-J363BGOH.js";
14
+ } from "./chunk-EMFCHE2B.js";
15
15
  import {
16
16
  getDangerLevel,
17
17
  runLeanAgentLoop
@@ -19,10 +19,10 @@ import {
19
19
  import "./chunk-5ULLIOVC.js";
20
20
  import "./chunk-HOSJZMQS.js";
21
21
  import "./chunk-4BKXL7SM.js";
22
- import "./chunk-6ZWNXHNH.js";
22
+ import "./chunk-L5IRDRWG.js";
23
23
  import {
24
24
  SUBAGENT_ALLOWED_TOOLS
25
- } from "./chunk-Y4CMNXZH.js";
25
+ } from "./chunk-66CE3E6X.js";
26
26
  import "./chunk-IGPFYNZA.js";
27
27
  import "./chunk-KHYD3WXE.js";
28
28
  import "./chunk-PJ3ONBWZ.js";
@@ -8,9 +8,9 @@ import {
8
8
  } from "./chunk-E44DTERW.js";
9
9
  import {
10
10
  ConfigManager
11
- } from "./chunk-WMAXYDCB.js";
11
+ } from "./chunk-X73Y4JZI.js";
12
12
  import "./chunk-5ULLIOVC.js";
13
- import "./chunk-Y4CMNXZH.js";
13
+ import "./chunk-66CE3E6X.js";
14
14
  import "./chunk-IW3Q7AE5.js";
15
15
 
16
16
  // src/cli/usage.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jinzd-ai-cli",
3
- "version": "0.4.242",
3
+ "version": "0.4.243",
4
4
  "description": "Cross-platform REPL-style AI CLI with multi-provider support",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",