jinzd-ai-cli 0.4.213 → 0.4.215

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 (28) hide show
  1. package/README.md +5 -2
  2. package/README.zh-CN.md +5 -2
  3. package/dist/{batch-PKY63TME.js → batch-74H5SA7P.js} +2 -2
  4. package/dist/{chunk-MRGWPCFQ.js → chunk-2224JGA6.js} +1 -1
  5. package/dist/{chunk-UDMU4FUF.js → chunk-3TSHNZKI.js} +1 -1
  6. package/dist/{chunk-THNECAAY.js → chunk-6C3JYNM6.js} +380 -74
  7. package/dist/{chunk-IWLVH32D.js → chunk-7JES2NWR.js} +1 -1
  8. package/dist/{chunk-FGUKBIYO.js → chunk-KL7UBVSQ.js} +2 -2
  9. package/dist/{chunk-J35V3IAH.js → chunk-RS4WBI73.js} +1 -1
  10. package/dist/{chunk-7NTFMLJJ.js → chunk-X6OXS7KU.js} +1 -1
  11. package/dist/{chunk-G3PW3AOB.js → chunk-ZOF5NFKW.js} +1 -1
  12. package/dist/{ci-HBZ6CIW5.js → ci-3ALK2XJN.js} +2 -2
  13. package/dist/{constants-CAUBTSFW.js → constants-IN2HXJK7.js} +1 -1
  14. package/dist/{doctor-cli-5Z5UWYW6.js → doctor-cli-7XL4TCVT.js} +4 -4
  15. package/dist/electron-server.js +558 -184
  16. package/dist/{hub-ZRADBR76.js → hub-VAOG5EY6.js} +1 -1
  17. package/dist/index.js +17 -16
  18. package/dist/{run-tests-7J3PNWVS.js → run-tests-J2JQ57R3.js} +1 -1
  19. package/dist/{run-tests-DSOJBJWA.js → run-tests-QJD43AML.js} +2 -2
  20. package/dist/{server-U4I7RI42.js → server-VGPZOISQ.js} +88 -8
  21. package/dist/{server-PWBWHVYB.js → server-WDLV3W4F.js} +4 -4
  22. package/dist/{task-orchestrator-RUXWRMQV.js → task-orchestrator-QFOCO3N7.js} +4 -4
  23. package/dist/{usage-2P6TIBTN.js → usage-IEB476NE.js} +2 -2
  24. package/dist/web/client/actions.js +1 -0
  25. package/dist/web/client/app.js +183 -11
  26. package/dist/web/client/index.html +21 -3
  27. package/dist/web/client/style.css +62 -0
  28. package/package.json +1 -1
@@ -154,7 +154,7 @@ ${content}`);
154
154
  }
155
155
  }
156
156
  async function runTaskMode(config, providers, configManager, topic) {
157
- const { TaskOrchestrator } = await import("./task-orchestrator-RUXWRMQV.js");
157
+ const { TaskOrchestrator } = await import("./task-orchestrator-QFOCO3N7.js");
158
158
  const orchestrator = new TaskOrchestrator(config, providers, configManager);
159
159
  let interrupted = false;
160
160
  const onSigint = () => {
package/dist/index.js CHANGED
@@ -15,7 +15,7 @@ import {
15
15
  scanProject,
16
16
  sessionHasMeaningfulContent,
17
17
  setupProxy
18
- } from "./chunk-FGUKBIYO.js";
18
+ } from "./chunk-KL7UBVSQ.js";
19
19
  import {
20
20
  buildReviewPrompt,
21
21
  buildSecurityReviewPrompt
@@ -47,10 +47,10 @@ import {
47
47
  trustHook,
48
48
  undoStack,
49
49
  untrustHook
50
- } from "./chunk-THNECAAY.js";
50
+ } from "./chunk-6C3JYNM6.js";
51
51
  import "./chunk-T2NL5ZIA.js";
52
52
  import "./chunk-BXP6YZ2P.js";
53
- import "./chunk-UDMU4FUF.js";
53
+ import "./chunk-3TSHNZKI.js";
54
54
  import {
55
55
  SessionManager,
56
56
  getContentText
@@ -67,7 +67,7 @@ import {
67
67
  getConfigDirUsage,
68
68
  listRecentCrashes,
69
69
  writeCrashLog
70
- } from "./chunk-G3PW3AOB.js";
70
+ } from "./chunk-ZOF5NFKW.js";
71
71
  import {
72
72
  ProviderRegistry
73
73
  } from "./chunk-QMXC327F.js";
@@ -76,7 +76,7 @@ import {
76
76
  getTopFailingTools,
77
77
  getTopUsedTools,
78
78
  installFlushOnExit
79
- } from "./chunk-7NTFMLJJ.js";
79
+ } from "./chunk-X6OXS7KU.js";
80
80
  import {
81
81
  CONTENT_ONLY_STREAM_REMINDER,
82
82
  TEE_FINAL_USER_NUDGE,
@@ -98,7 +98,7 @@ import {
98
98
  } from "./chunk-XPBEJB27.js";
99
99
  import {
100
100
  ConfigManager
101
- } from "./chunk-MRGWPCFQ.js";
101
+ } from "./chunk-2224JGA6.js";
102
102
  import {
103
103
  AuthError,
104
104
  ProviderError,
@@ -124,7 +124,7 @@ import {
124
124
  SKILLS_DIR_NAME,
125
125
  VERSION,
126
126
  buildUserIdentityPrompt
127
- } from "./chunk-IWLVH32D.js";
127
+ } from "./chunk-7JES2NWR.js";
128
128
  import {
129
129
  formatGitContextForPrompt,
130
130
  getGitContext,
@@ -1661,7 +1661,7 @@ No tools match "${filter}".
1661
1661
  const { join: join5 } = await import("path");
1662
1662
  const { existsSync: existsSync5 } = await import("fs");
1663
1663
  const { getGitRoot: getGitRoot2 } = await import("./git-context-EXOEHQSF.js");
1664
- const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-CAUBTSFW.js");
1664
+ const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-IN2HXJK7.js");
1665
1665
  const { approveProject, hashMcpFile } = await import("./project-trust-NKYHL3VZ.js");
1666
1666
  const cwd = process.cwd();
1667
1667
  const projectRoot = getGitRoot2(cwd) ?? cwd;
@@ -2720,7 +2720,7 @@ ${hint}` : "")
2720
2720
  usage: "/test [command|filter]",
2721
2721
  async execute(args, ctx) {
2722
2722
  try {
2723
- const { executeTests } = await import("./run-tests-DSOJBJWA.js");
2723
+ const { executeTests } = await import("./run-tests-QJD43AML.js");
2724
2724
  const argStr = args.join(" ").trim();
2725
2725
  let testArgs = {};
2726
2726
  if (argStr) {
@@ -6460,6 +6460,7 @@ ${systemPromptVolatile}` : systemPrompt;
6460
6460
  ${systemPromptVolatile}` : systemPrompt;
6461
6461
  spawnAgentContext.modelParams = modelParams;
6462
6462
  spawnAgentContext.configManager = this.config;
6463
+ spawnAgentContext.providers = this.providers;
6463
6464
  ToolExecutor.currentMessageIndex = session.messages.length;
6464
6465
  return this.toolExecutor.executeAll(toolCalls);
6465
6466
  },
@@ -7206,7 +7207,7 @@ program.command("web").description("Start Web UI server with browser-based chat
7206
7207
  console.error("Error: Invalid port number. Must be between 1 and 65535.");
7207
7208
  process.exit(1);
7208
7209
  }
7209
- const { startWebServer } = await import("./server-U4I7RI42.js");
7210
+ const { startWebServer } = await import("./server-VGPZOISQ.js");
7210
7211
  await startWebServer({ port, host: options.host });
7211
7212
  });
7212
7213
  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) => {
@@ -7373,16 +7374,16 @@ program.command("sessions").description("List recent conversation sessions").opt
7373
7374
  console.log(footer + "\n");
7374
7375
  });
7375
7376
  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) => {
7376
- const { runUsageCli } = await import("./usage-2P6TIBTN.js");
7377
+ const { runUsageCli } = await import("./usage-IEB476NE.js");
7377
7378
  await runUsageCli(options);
7378
7379
  });
7379
7380
  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) => {
7380
- const { runDoctorCli } = await import("./doctor-cli-5Z5UWYW6.js");
7381
+ const { runDoctorCli } = await import("./doctor-cli-7XL4TCVT.js");
7381
7382
  await runDoctorCli({ json: !!options.json, resetStats: !!options.resetStats });
7382
7383
  });
7383
7384
  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) => {
7384
7385
  try {
7385
- const batch = await import("./batch-PKY63TME.js");
7386
+ const batch = await import("./batch-74H5SA7P.js");
7386
7387
  switch (action) {
7387
7388
  case "submit":
7388
7389
  if (!arg) {
@@ -7425,7 +7426,7 @@ program.command("batch <action> [arg] [arg2]").description("Anthropic Message Ba
7425
7426
  }
7426
7427
  });
7427
7428
  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) => {
7428
- const { startMcpServer } = await import("./server-PWBWHVYB.js");
7429
+ const { startMcpServer } = await import("./server-WDLV3W4F.js");
7429
7430
  await startMcpServer({
7430
7431
  allowDestructive: !!options.allowDestructive,
7431
7432
  allowOutsideCwd: !!options.allowOutsideCwd,
@@ -7434,7 +7435,7 @@ program.command("mcp-serve").description("Start an MCP server over STDIO, exposi
7434
7435
  });
7435
7436
  });
7436
7437
  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; diff fetched via `gh pr diff <num>`", (v) => parseInt(v, 10)).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)").action(async (options) => {
7437
- const { runCi } = await import("./ci-HBZ6CIW5.js");
7438
+ const { runCi } = await import("./ci-3ALK2XJN.js");
7438
7439
  const result = await runCi({
7439
7440
  pr: options.pr,
7440
7441
  base: options.base,
@@ -7580,7 +7581,7 @@ program.command("hub [topic]").description("Start multi-agent hub (discuss / bra
7580
7581
  }),
7581
7582
  config.get("customProviders")
7582
7583
  );
7583
- const { startHub } = await import("./hub-ZRADBR76.js");
7584
+ const { startHub } = await import("./hub-VAOG5EY6.js");
7584
7585
  await startHub(
7585
7586
  {
7586
7587
  topic: topic ?? "",
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  executeTests,
3
3
  runTestsTool
4
- } from "./chunk-J35V3IAH.js";
4
+ } from "./chunk-RS4WBI73.js";
5
5
  export {
6
6
  executeTests,
7
7
  runTestsTool
@@ -2,8 +2,8 @@
2
2
  import {
3
3
  executeTests,
4
4
  runTestsTool
5
- } from "./chunk-UDMU4FUF.js";
6
- import "./chunk-IWLVH32D.js";
5
+ } from "./chunk-3TSHNZKI.js";
6
+ import "./chunk-7JES2NWR.js";
7
7
  export {
8
8
  executeTests,
9
9
  runTestsTool
@@ -24,7 +24,7 @@ import {
24
24
  scanDirTree,
25
25
  scanProject,
26
26
  setupProxy
27
- } from "./chunk-FGUKBIYO.js";
27
+ } from "./chunk-KL7UBVSQ.js";
28
28
  import {
29
29
  buildReviewPrompt,
30
30
  buildSecurityReviewPrompt
@@ -41,24 +41,30 @@ import {
41
41
  estimateTokens,
42
42
  formatPermissionProfileWarning,
43
43
  getPendingHookTrust,
44
+ getPreferredAgentName,
44
45
  getRecentlyDeniedAutoActions,
45
46
  googleSearchContext,
46
47
  groupCallsByPhase,
48
+ listAgentConfigs,
49
+ listAgentRuns,
47
50
  recordRecentlyDeniedAutoAction,
48
51
  renderDiff,
52
+ requestAgentStop,
53
+ resolveAgentConfig,
49
54
  runHook,
50
55
  runLifecycleHooks,
51
56
  runSafePhases,
52
57
  runWithSessionKey,
53
58
  setContextWindow,
54
59
  setMaxOutputCap,
60
+ setPreferredAgentName,
55
61
  spawnAgentContext,
56
62
  truncateOutput,
57
63
  undoStack
58
- } from "./chunk-THNECAAY.js";
64
+ } from "./chunk-6C3JYNM6.js";
59
65
  import "./chunk-T2NL5ZIA.js";
60
66
  import "./chunk-BXP6YZ2P.js";
61
- import "./chunk-UDMU4FUF.js";
67
+ import "./chunk-3TSHNZKI.js";
62
68
  import {
63
69
  SessionManager,
64
70
  getContentText
@@ -72,7 +78,7 @@ import {
72
78
  } from "./chunk-QMXC327F.js";
73
79
  import {
74
80
  runTool
75
- } from "./chunk-7NTFMLJJ.js";
81
+ } from "./chunk-X6OXS7KU.js";
76
82
  import {
77
83
  CONTENT_ONLY_STREAM_REMINDER,
78
84
  TEE_FINAL_USER_NUDGE,
@@ -91,7 +97,7 @@ import {
91
97
  } from "./chunk-XPBEJB27.js";
92
98
  import {
93
99
  ConfigManager
94
- } from "./chunk-MRGWPCFQ.js";
100
+ } from "./chunk-2224JGA6.js";
95
101
  import "./chunk-TZQHYZKT.js";
96
102
  import {
97
103
  AGENTIC_BEHAVIOR_GUIDELINE,
@@ -110,7 +116,7 @@ import {
110
116
  SKILLS_DIR_NAME,
111
117
  VERSION,
112
118
  buildUserIdentityPrompt
113
- } from "./chunk-IWLVH32D.js";
119
+ } from "./chunk-7JES2NWR.js";
114
120
  import {
115
121
  formatGitContextForPrompt,
116
122
  getGitContext,
@@ -812,7 +818,19 @@ var SessionHandler = class {
812
818
  costUsd,
813
819
  providers: providerList,
814
820
  branches,
815
- activeBranchId: sess?.activeBranchId ?? "main"
821
+ activeBranchId: sess?.activeBranchId ?? "main",
822
+ agents: listAgentRuns().slice(0, 20).map((run) => ({
823
+ id: run.id,
824
+ agentName: run.agentName,
825
+ task: run.task,
826
+ status: run.status,
827
+ startedAt: run.startedAt,
828
+ finishedAt: run.finishedAt,
829
+ summary: run.summary,
830
+ error: run.error,
831
+ toolNames: run.toolNames,
832
+ agentIndex: run.agentIndex
833
+ }))
816
834
  });
817
835
  }
818
836
  async handleMessage(raw) {
@@ -1289,6 +1307,7 @@ Details: ${errMsg.split("\n")[0]}
1289
1307
  ${systemPromptVolatile}` : systemPrompt;
1290
1308
  spawnAgentContext.modelParams = modelParams;
1291
1309
  spawnAgentContext.configManager = this.config;
1310
+ spawnAgentContext.providers = this.providers;
1292
1311
  ToolExecutor.currentMessageIndex = this.sessions.current?.messages.length ?? 0;
1293
1312
  return this.toolExecutor.executeAll(toolCalls);
1294
1313
  },
@@ -1883,6 +1902,7 @@ Tokens: in=${this.sessionTokenUsage.inputTokens} out=${this.sessionTokenUsage.ou
1883
1902
  " /export [md|json] \u2014 Export conversation",
1884
1903
  " /skill [name|off|list|reload] \u2014 Manage agent skills",
1885
1904
  " /memory [show|add|clear] \u2014 Persistent memory management",
1905
+ " /agent list|switch|stop|summary \u2014 Manage named sub-agents",
1886
1906
  " /yolo [on|off] \u2014 Toggle auto-approve (skip confirmations)",
1887
1907
  " /search <keyword> \u2014 Search across all session histories",
1888
1908
  " /undo [list|<n>] \u2014 Undo file operations",
@@ -2015,6 +2035,66 @@ ${activated.meta.description || ""}` });
2015
2035
  }
2016
2036
  break;
2017
2037
  }
2038
+ case "agent": {
2039
+ const sub = args[0]?.toLowerCase() ?? "summary";
2040
+ if (sub === "list") {
2041
+ const agents = listAgentConfigs(this.config.getConfigDir());
2042
+ const lines = [`Agents (${agents.length})`, ""];
2043
+ for (const agent of agents) {
2044
+ const active = agent.name === getPreferredAgentName() ? " *" : " ";
2045
+ const model = [agent.provider, agent.model].filter(Boolean).join("/") || "inherit";
2046
+ lines.push(`${active} ${agent.name} [${agent.source ?? "builtin"}] \u2014 ${agent.description ?? ""}`);
2047
+ lines.push(` model: ${model} \xB7 permission: ${agent.permissionProfile ?? "workspace-write"} \xB7 maxRounds: ${agent.maxToolRounds ?? "inherit"}`);
2048
+ }
2049
+ lines.push("", "Config dirs: ~/.aicli/agents/ and .aicli/agents/");
2050
+ this.send({ type: "info", message: lines.join("\n") });
2051
+ break;
2052
+ }
2053
+ if (sub === "switch") {
2054
+ const name2 = args[1];
2055
+ if (!name2) {
2056
+ this.send({ type: "error", message: "Usage: /agent switch <name>" });
2057
+ break;
2058
+ }
2059
+ const agent = resolveAgentConfig(name2, this.config.getConfigDir());
2060
+ if (!agent) {
2061
+ const available = listAgentConfigs(this.config.getConfigDir()).map((a) => a.name).join(", ");
2062
+ this.send({ type: "error", message: `Unknown agent: ${name2}
2063
+ Available: ${available}` });
2064
+ break;
2065
+ }
2066
+ setPreferredAgentName(agent.name);
2067
+ this.send({ type: "info", message: `Preferred spawn_agent role: ${agent.name}` });
2068
+ this.sendStatus();
2069
+ break;
2070
+ }
2071
+ if (sub === "stop") {
2072
+ const target = args[1] ?? "all";
2073
+ const count = requestAgentStop(target);
2074
+ this.send({ type: "info", message: count > 0 ? `Stop requested for ${count} running agent(s).` : "No matching running agents." });
2075
+ this.sendStatus();
2076
+ break;
2077
+ }
2078
+ if (sub === "summary") {
2079
+ const runs = listAgentRuns();
2080
+ if (runs.length === 0) {
2081
+ this.send({ type: "info", message: "No sub-agent runs yet." });
2082
+ break;
2083
+ }
2084
+ const lines = [`Recent agent runs (${runs.length})`, ""];
2085
+ for (const run of runs.slice(0, 20)) {
2086
+ lines.push(`${run.id} ${run.status} ${run.agentName} ${run.startedAt}`);
2087
+ lines.push(` task: ${run.task.slice(0, 120)}${run.task.length > 120 ? "..." : ""}`);
2088
+ if (run.toolNames.length > 0) lines.push(` tools: ${run.toolNames.join(", ")}`);
2089
+ if (run.summary) lines.push(` summary: ${run.summary.slice(0, 180)}${run.summary.length > 180 ? "..." : ""}`);
2090
+ if (run.error) lines.push(` error: ${run.error}`);
2091
+ }
2092
+ this.send({ type: "info", message: lines.join("\n") });
2093
+ break;
2094
+ }
2095
+ this.send({ type: "error", message: "Usage: /agent list|switch <name>|stop <id|all>|summary" });
2096
+ break;
2097
+ }
2018
2098
  // ── /yolo ──────────────────────────────────────────────────────
2019
2099
  case "auto": {
2020
2100
  const sub = args[0]?.toLowerCase() ?? "status";
@@ -2675,7 +2755,7 @@ ${undoResults.map((r) => ` \u2022 ${r}`).join("\n")}` });
2675
2755
  case "test": {
2676
2756
  this.send({ type: "info", message: "\u{1F9EA} Running tests..." });
2677
2757
  try {
2678
- const { executeTests } = await import("./run-tests-DSOJBJWA.js");
2758
+ const { executeTests } = await import("./run-tests-QJD43AML.js");
2679
2759
  const argStr = args.join(" ").trim();
2680
2760
  let testArgs = {};
2681
2761
  if (argStr) {
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ToolRegistry
4
- } from "./chunk-THNECAAY.js";
4
+ } from "./chunk-6C3JYNM6.js";
5
5
  import "./chunk-T2NL5ZIA.js";
6
6
  import "./chunk-BXP6YZ2P.js";
7
- import "./chunk-UDMU4FUF.js";
7
+ import "./chunk-3TSHNZKI.js";
8
8
  import {
9
9
  runTool
10
- } from "./chunk-7NTFMLJJ.js";
10
+ } from "./chunk-X6OXS7KU.js";
11
11
  import {
12
12
  getDangerLevel,
13
13
  schemaToJsonSchema
@@ -15,7 +15,7 @@ import {
15
15
  import "./chunk-TZQHYZKT.js";
16
16
  import {
17
17
  VERSION
18
- } from "./chunk-IWLVH32D.js";
18
+ } from "./chunk-7JES2NWR.js";
19
19
  import "./chunk-4BKXL7SM.js";
20
20
  import "./chunk-TB4W4Y4T.js";
21
21
  import "./chunk-KHYD3WXE.js";
@@ -3,13 +3,13 @@ import {
3
3
  ToolRegistry,
4
4
  googleSearchContext,
5
5
  truncateOutput
6
- } from "./chunk-THNECAAY.js";
6
+ } from "./chunk-6C3JYNM6.js";
7
7
  import "./chunk-T2NL5ZIA.js";
8
8
  import "./chunk-BXP6YZ2P.js";
9
- import "./chunk-UDMU4FUF.js";
9
+ import "./chunk-3TSHNZKI.js";
10
10
  import {
11
11
  runTool
12
- } from "./chunk-7NTFMLJJ.js";
12
+ } from "./chunk-X6OXS7KU.js";
13
13
  import {
14
14
  getDangerLevel,
15
15
  runLeanAgentLoop
@@ -17,7 +17,7 @@ import {
17
17
  import "./chunk-TZQHYZKT.js";
18
18
  import {
19
19
  SUBAGENT_ALLOWED_TOOLS
20
- } from "./chunk-IWLVH32D.js";
20
+ } from "./chunk-7JES2NWR.js";
21
21
  import "./chunk-4BKXL7SM.js";
22
22
  import "./chunk-TB4W4Y4T.js";
23
23
  import "./chunk-KHYD3WXE.js";
@@ -8,9 +8,9 @@ import {
8
8
  } from "./chunk-E44DTERW.js";
9
9
  import {
10
10
  ConfigManager
11
- } from "./chunk-MRGWPCFQ.js";
11
+ } from "./chunk-2224JGA6.js";
12
12
  import "./chunk-TZQHYZKT.js";
13
- import "./chunk-IWLVH32D.js";
13
+ import "./chunk-7JES2NWR.js";
14
14
  import "./chunk-IW3Q7AE5.js";
15
15
 
16
16
  // src/cli/usage.ts
@@ -24,6 +24,7 @@ function handleDeclarativeAction(action, el) {
24
24
  case 'batch-deny-response': window.respondBatchDeny(el.dataset.requestId, el); break;
25
25
  case 'ask-user-response': window.respondAskUser(el.dataset.requestId); break;
26
26
  case 'auto-pause-response': window.respondAutoPause(el.dataset.requestId, el.dataset.pauseAction); break;
27
+ case 'copy-confirm-diff': window.copyConfirmDiff(el); break;
27
28
  case 'use-template': useTemplate(el.closest('[data-tpl-id]')?.dataset.tplId); break;
28
29
  case 'edit-template': editTemplate(el.closest('[data-tpl-id]')?.dataset.tplId); break;
29
30
  case 'delete-template': deleteTemplate(el.closest('[data-tpl-id]')?.dataset.tplId); break;