very-happy-cli 0.2.133 → 0.2.135

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 (45) hide show
  1. package/dist/{AcpBackend-DgG8o4jd.cjs → AcpBackend-C0Bwx6bc.cjs} +3 -3
  2. package/dist/{AcpBackend-BQm7dNza.mjs → AcpBackend-CkDpu1n_.mjs} +3 -3
  3. package/dist/{AcpSessionManager-C7unPEZO.mjs → AcpSessionManager-DB_mfFaH.mjs} +1 -1
  4. package/dist/{AcpSessionManager-DDFEmhQp.cjs → AcpSessionManager-DqvUp-UU.cjs} +1 -1
  5. package/dist/{agentGuidance-BaplwDcV.mjs → agentGuidance-7MByWxKj.mjs} +1 -1
  6. package/dist/{agentGuidance-BItqIZTf.cjs → agentGuidance-DlZM_YPV.cjs} +1 -1
  7. package/dist/codex/happyMcpStdioBridge.cjs +2 -2
  8. package/dist/codex/happyMcpStdioBridge.mjs +2 -2
  9. package/dist/{config-uLywzv5t.cjs → config-BO0ZHyoB.cjs} +4 -4
  10. package/dist/{config-BZ8xEnOv.mjs → config-DzvbcL_x.mjs} +4 -4
  11. package/dist/{index-Daga0ztv.cjs → index-BEpZjXs4.cjs} +15 -9
  12. package/dist/{index-ClCeQ1FW.mjs → index-C33JB4xB.mjs} +16 -10
  13. package/dist/{index-D8i2EViA.mjs → index-CpEdOGpe.mjs} +4 -4
  14. package/dist/{index-CdH3ecC5.cjs → index-DHI6Y1xW.cjs} +4 -4
  15. package/dist/{index-6Xm0CgN_.cjs → index-DNbKbe23.cjs} +1536 -1202
  16. package/dist/{index-EsR8ayIg.mjs → index-gefLe1Bk.mjs} +1534 -1200
  17. package/dist/index.cjs +4 -4
  18. package/dist/index.mjs +4 -4
  19. package/dist/{installTerminalHooks-NH4kiB2E.mjs → installTerminalHooks-BWoHGCew.mjs} +4 -4
  20. package/dist/{installTerminalHooks-CKG0MYVK.cjs → installTerminalHooks-gmWKACNb.cjs} +4 -4
  21. package/dist/lib.cjs +2 -2
  22. package/dist/lib.d.cts +20 -60
  23. package/dist/lib.d.mts +20 -60
  24. package/dist/lib.mjs +2 -2
  25. package/dist/{limits-Du7S6jqA.mjs → limits-CPTgiQ9A.mjs} +8 -8
  26. package/dist/{limits-XRNzIlVm.cjs → limits-K17AgMHD.cjs} +8 -8
  27. package/dist/{mcp-CAMCuudA.cjs → mcp-CK1NCZm0.cjs} +4 -4
  28. package/dist/{mcp-D8zhjyZa.mjs → mcp-DhuxpwTB.mjs} +4 -4
  29. package/dist/{runGemini-Db4rX54F.mjs → runGemini-BVJE7LZl.mjs} +6 -6
  30. package/dist/{runGemini-BIVHp0ST.cjs → runGemini-n0wD2Z9R.cjs} +6 -6
  31. package/dist/{runOpenClaw-D2MceXPO.mjs → runOpenClaw-CJaIYpB7.mjs} +5 -5
  32. package/dist/{runOpenClaw-a0f2pZZp.cjs → runOpenClaw-fYx1XweW.cjs} +5 -5
  33. package/dist/{send-DKbumEcg.cjs → send-WlJ4r3U2.cjs} +4 -4
  34. package/dist/{send-1Wjb0lIh.mjs → send-fWHOFJV9.mjs} +4 -4
  35. package/dist/{sessions-DXCCRDb5.mjs → sessions-5fJxQ2xj.mjs} +4 -4
  36. package/dist/{sessions-SIFOOlGp.cjs → sessions-Cx_3cvN6.cjs} +4 -4
  37. package/dist/{spawn-Bj3W6HR4.mjs → spawn-CF1ZV-YH.mjs} +4 -4
  38. package/dist/{spawn-C-XpSPLX.cjs → spawn-DVJtNwWN.cjs} +4 -4
  39. package/dist/{teams-ChFzXAqr.cjs → teams-BbYi0fWG.cjs} +4 -4
  40. package/dist/{teams-CqhFQLVC.mjs → teams-gzvKrMfn.mjs} +4 -4
  41. package/dist/{todo-B0gbQHH8.mjs → todo-BAK2DVLV.mjs} +3 -3
  42. package/dist/{todo-o0clp-_I.cjs → todo-DHY20tpD.cjs} +3 -3
  43. package/dist/{types-6DrEgHVx.mjs → types-BEXGahmj.mjs} +128 -35
  44. package/dist/{types-CcjVmS2i.cjs → types-DjAHWb4J.cjs} +129 -35
  45. package/package.json +8 -8
@@ -3,8 +3,8 @@
3
3
  var node_child_process = require('node:child_process');
4
4
  var sdk = require('@agentclientprotocol/sdk');
5
5
  var node_crypto = require('node:crypto');
6
- var persistence = require('./limits-XRNzIlVm.cjs');
7
- var api = require('./types-CcjVmS2i.cjs');
6
+ var persistence = require('./limits-K17AgMHD.cjs');
7
+ var api = require('./types-DjAHWb4J.cjs');
8
8
 
9
9
  function acpImageBlocks(attachments, supportsImages) {
10
10
  return attachments.filter((file) => ["image/jpeg", "image/png", "image/gif", "image/webp"].includes(file.mimeType)).map((file) => {
@@ -1359,7 +1359,7 @@ class AcpBackend {
1359
1359
  }
1360
1360
  try {
1361
1361
  await this.connection.cancel({ sessionId: this.acpSessionId });
1362
- this.emit({ type: "status", status: "stopped", detail: "Cancelled by user" });
1362
+ this.emit({ type: "status", status: "idle", detail: "Cancelled by user" });
1363
1363
  } catch (error) {
1364
1364
  persistence.logger.debug("[AcpBackend] Error cancelling:", api.errorLogMetadata(error));
1365
1365
  }
@@ -1,8 +1,8 @@
1
1
  import { spawn } from 'node:child_process';
2
2
  import { ndJsonStream, ClientSideConnection } from '@agentclientprotocol/sdk';
3
3
  import { randomUUID } from 'node:crypto';
4
- import { l as logger, p as packageJson } from './limits-Du7S6jqA.mjs';
5
- import { d as contentLogMetadata, e as errorLogMetadata, h as delay } from './types-6DrEgHVx.mjs';
4
+ import { l as logger, p as packageJson } from './limits-CPTgiQ9A.mjs';
5
+ import { d as contentLogMetadata, e as errorLogMetadata, h as delay } from './types-BEXGahmj.mjs';
6
6
 
7
7
  function acpImageBlocks(attachments, supportsImages) {
8
8
  return attachments.filter((file) => ["image/jpeg", "image/png", "image/gif", "image/webp"].includes(file.mimeType)).map((file) => {
@@ -1357,7 +1357,7 @@ class AcpBackend {
1357
1357
  }
1358
1358
  try {
1359
1359
  await this.connection.cancel({ sessionId: this.acpSessionId });
1360
- this.emit({ type: "status", status: "stopped", detail: "Cancelled by user" });
1360
+ this.emit({ type: "status", status: "idle", detail: "Cancelled by user" });
1361
1361
  } catch (error) {
1362
1362
  logger.debug("[AcpBackend] Error cancelling:", errorLogMetadata(error));
1363
1363
  }
@@ -1,5 +1,5 @@
1
1
  import { createId } from '@paralleldrive/cuid2';
2
- import { s as streamKeyOf, c as createEnvelope } from './types-6DrEgHVx.mjs';
2
+ import { s as streamKeyOf, c as createEnvelope } from './types-BEXGahmj.mjs';
3
3
 
4
4
  function turnOptions(turnId, time) {
5
5
  return turnId ? { turn: turnId, time } : { time };
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var cuid2 = require('@paralleldrive/cuid2');
4
- var api = require('./types-CcjVmS2i.cjs');
4
+ var api = require('./types-DjAHWb4J.cjs');
5
5
 
6
6
  function turnOptions(turnId, time) {
7
7
  return turnId ? { turn: turnId, time } : { time };
@@ -1,6 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  import { randomUUID } from 'node:crypto';
3
- import { n as normalizeHttpEndpoint, c as configuration, g as readSettings, r as readPersistedSessions, d as readCredentialsForConfiguredRelay } from './limits-Du7S6jqA.mjs';
3
+ import { n as normalizeHttpEndpoint, c as configuration, g as readSettings, r as readPersistedSessions, d as readCredentialsForConfiguredRelay } from './limits-CPTgiQ9A.mjs';
4
4
  import { open, mkdir, rename, unlink } from 'node:fs/promises';
5
5
  import { constants } from 'node:fs';
6
6
  import { isAbsolute, join, dirname } from 'node:path';
@@ -2,7 +2,7 @@
2
2
 
3
3
  var z = require('zod');
4
4
  var node_crypto = require('node:crypto');
5
- var persistence = require('./limits-XRNzIlVm.cjs');
5
+ var persistence = require('./limits-K17AgMHD.cjs');
6
6
  var promises = require('node:fs/promises');
7
7
  var node_fs = require('node:fs');
8
8
  var path = require('node:path');
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var agentGuidance = require('../agentGuidance-BItqIZTf.cjs');
3
+ var agentGuidance = require('../agentGuidance-DlZM_YPV.cjs');
4
4
  var mcp_js = require('@modelcontextprotocol/sdk/server/mcp.js');
5
5
  var stdio_js = require('@modelcontextprotocol/sdk/server/stdio.js');
6
6
  var index_js = require('@modelcontextprotocol/sdk/client/index.js');
7
7
  var streamableHttp_js = require('@modelcontextprotocol/sdk/client/streamableHttp.js');
8
8
  var z = require('zod');
9
- var persistence = require('../limits-XRNzIlVm.cjs');
9
+ var persistence = require('../limits-K17AgMHD.cjs');
10
10
  require('node:crypto');
11
11
  require('node:fs/promises');
12
12
  require('node:fs');
@@ -1,10 +1,10 @@
1
- import { P as PREVIEW_TOOL_NAME, a as PREVIEW_TOOL_TITLE, b as PREVIEW_TOOL_DESCRIPTION, r as registerTeamsTools } from '../agentGuidance-BaplwDcV.mjs';
1
+ import { P as PREVIEW_TOOL_NAME, a as PREVIEW_TOOL_TITLE, b as PREVIEW_TOOL_DESCRIPTION, r as registerTeamsTools } from '../agentGuidance-7MByWxKj.mjs';
2
2
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
3
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
4
4
  import { Client } from '@modelcontextprotocol/sdk/client/index.js';
5
5
  import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
6
6
  import { z } from 'zod';
7
- import { C as CLIPBOARD_TOOL_NAME, a as CLIPBOARD_TOOL_TITLE, b as CLIPBOARD_TOOL_DESCRIPTION } from '../limits-Du7S6jqA.mjs';
7
+ import { C as CLIPBOARD_TOOL_NAME, a as CLIPBOARD_TOOL_TITLE, b as CLIPBOARD_TOOL_DESCRIPTION } from '../limits-CPTgiQ9A.mjs';
8
8
  import 'node:crypto';
9
9
  import 'node:fs/promises';
10
10
  import 'node:fs';
@@ -4,8 +4,8 @@ var fs = require('fs');
4
4
  var path = require('path');
5
5
  var os = require('os');
6
6
  var child_process = require('child_process');
7
- var persistence = require('./limits-XRNzIlVm.cjs');
8
- var index = require('./index-6Xm0CgN_.cjs');
7
+ var persistence = require('./limits-K17AgMHD.cjs');
8
+ var index = require('./index-DNbKbe23.cjs');
9
9
  require('node:fs/promises');
10
10
  require('node:fs');
11
11
  require('node:os');
@@ -15,7 +15,7 @@ require('node:crypto');
15
15
  require('tweetnacl');
16
16
  require('chalk');
17
17
  require('node:util');
18
- require('./types-CcjVmS2i.cjs');
18
+ require('./types-DjAHWb4J.cjs');
19
19
  require('axios');
20
20
  require('node:events');
21
21
  require('socket.io-client');
@@ -30,7 +30,7 @@ require('node-pty');
30
30
  require('node:readline');
31
31
  require('@anthropic-ai/sandbox-runtime');
32
32
  require('expo-server-sdk');
33
- require('./agentGuidance-BItqIZTf.cjs');
33
+ require('./agentGuidance-DlZM_YPV.cjs');
34
34
  require('ink');
35
35
  require('react');
36
36
  require('@anthropic-ai/claude-agent-sdk');
@@ -2,8 +2,8 @@ import { existsSync, readFileSync, mkdirSync, writeFileSync } from 'fs';
2
2
  import { join } from 'path';
3
3
  import { homedir } from 'os';
4
4
  import { execSync } from 'child_process';
5
- import { l as logger } from './limits-Du7S6jqA.mjs';
6
- import { j as DEFAULT_GEMINI_MODEL, G as GEMINI_MODEL_ENV } from './index-EsR8ayIg.mjs';
5
+ import { l as logger } from './limits-CPTgiQ9A.mjs';
6
+ import { j as DEFAULT_GEMINI_MODEL, G as GEMINI_MODEL_ENV } from './index-gefLe1Bk.mjs';
7
7
  import 'node:fs/promises';
8
8
  import 'node:fs';
9
9
  import 'node:os';
@@ -13,7 +13,7 @@ import 'node:crypto';
13
13
  import 'tweetnacl';
14
14
  import 'chalk';
15
15
  import 'node:util';
16
- import './types-6DrEgHVx.mjs';
16
+ import './types-BEXGahmj.mjs';
17
17
  import 'axios';
18
18
  import 'node:events';
19
19
  import 'socket.io-client';
@@ -28,7 +28,7 @@ import 'node-pty';
28
28
  import 'node:readline';
29
29
  import '@anthropic-ai/sandbox-runtime';
30
30
  import 'expo-server-sdk';
31
- import './agentGuidance-BaplwDcV.mjs';
31
+ import './agentGuidance-7MByWxKj.mjs';
32
32
  import 'ink';
33
33
  import 'react';
34
34
  import '@anthropic-ai/claude-agent-sdk';
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var AcpBackend = require('./AcpBackend-DgG8o4jd.cjs');
4
- var persistence = require('./limits-XRNzIlVm.cjs');
5
- var AcpSessionManager = require('./AcpSessionManager-DDFEmhQp.cjs');
6
- var api = require('./types-CcjVmS2i.cjs');
7
- var index = require('./index-6Xm0CgN_.cjs');
3
+ var AcpBackend = require('./AcpBackend-C0Bwx6bc.cjs');
4
+ var persistence = require('./limits-K17AgMHD.cjs');
5
+ var AcpSessionManager = require('./AcpSessionManager-DqvUp-UU.cjs');
6
+ var api = require('./types-DjAHWb4J.cjs');
7
+ var index = require('./index-DNbKbe23.cjs');
8
8
  var promises = require('node:fs/promises');
9
9
  var node_crypto = require('node:crypto');
10
10
  var path = require('node:path');
@@ -33,7 +33,7 @@ require('fs');
33
33
  require('node:readline');
34
34
  require('@anthropic-ai/sandbox-runtime');
35
35
  require('expo-server-sdk');
36
- require('./agentGuidance-BItqIZTf.cjs');
36
+ require('./agentGuidance-DlZM_YPV.cjs');
37
37
  require('ink');
38
38
  require('react');
39
39
  require('@anthropic-ai/claude-agent-sdk');
@@ -750,6 +750,7 @@ async function runAcp(opts) {
750
750
  let shouldExit = false;
751
751
  let abortController = new AbortController();
752
752
  let pendingTurn = null;
753
+ let turnCancelled = false;
753
754
  const clearPendingTurn = (error) => {
754
755
  if (!pendingTurn) {
755
756
  return;
@@ -1095,6 +1096,7 @@ async function runAcp(opts) {
1095
1096
  session.keepAlive(thinking, "remote");
1096
1097
  }, 2e3);
1097
1098
  async function handleAbort() {
1099
+ turnCancelled = thinking;
1098
1100
  try {
1099
1101
  if (acpSessionId) {
1100
1102
  await backend.cancel(acpSessionId);
@@ -1124,12 +1126,12 @@ async function runAcp(opts) {
1124
1126
  return { mode };
1125
1127
  }
1126
1128
  );
1127
- index.registerKillSessionHandler(session.rpcHandlerManager, async () => {
1129
+ const disposeTermination = index.registerKillSessionHandler(session.rpcHandlerManager, async () => {
1128
1130
  shouldExit = true;
1129
1131
  messageQueue.close();
1130
1132
  clearPendingTurn(new Error("Session terminated"));
1131
1133
  await handleAbort();
1132
- }, session);
1134
+ }, session, { processSignals: true });
1133
1135
  try {
1134
1136
  const started = await backend.startSession();
1135
1137
  acpSessionId = started.sessionId;
@@ -1175,8 +1177,11 @@ async function runAcp(opts) {
1175
1177
  }
1176
1178
  logAcp("incoming", `Incoming prompt: ${formatUnknownForConsole(batch.message, ACP_EVENT_PREVIEW_CHARS)}`);
1177
1179
  sendEnvelopes(sessionManager.startTurn());
1180
+ turnCancelled = false;
1178
1181
  setThinking(true);
1179
1182
  const turnEnded = waitForTurnEnd();
1183
+ void turnEnded.catch(() => {
1184
+ });
1180
1185
  try {
1181
1186
  if (typeof batch.mode.permissionMode === "string" && batch.mode.permissionMode.length > 0) {
1182
1187
  await switchPermissionModeIfRequested(batch.mode.permissionMode);
@@ -1196,7 +1201,7 @@ ${api.BUILTIN_TODO_DISCOVERY}`;
1196
1201
  await backend.sendPrompt(acpSessionId, index.appendStagedAttachmentsToPrompt(prompt, staged), attachments);
1197
1202
  todoDiscoverySent = true;
1198
1203
  await turnEnded;
1199
- sendEnvelopes(sessionManager.endTurn("completed"));
1204
+ sendEnvelopes(sessionManager.endTurn(turnCancelled ? "cancelled" : "completed"));
1200
1205
  streamRelay.endTurn();
1201
1206
  setThinking(false);
1202
1207
  session.sendSessionEvent({ type: "ready" });
@@ -1215,6 +1220,7 @@ ${api.BUILTIN_TODO_DISCOVERY}`;
1215
1220
  }
1216
1221
  }
1217
1222
  } finally {
1223
+ disposeTermination?.();
1218
1224
  setThinking(false);
1219
1225
  clearInterval(keepAliveInterval);
1220
1226
  streamRelay.endTurn();
@@ -1,9 +1,9 @@
1
- import { D as DefaultTransport, A as AcpBackend } from './AcpBackend-BQm7dNza.mjs';
2
- export { a as DEFAULT_IDLE_TIMEOUT_MS, b as DEFAULT_TOOL_CALL_TIMEOUT_MS, e as extractErrorDetail, f as formatDuration, c as formatDurationMinutes, h as handleAgentMessageChunk, d as handleAgentThoughtChunk, g as handleLegacyMessageChunk, i as handlePlanUpdate, j as handleThinkingUpdate, k as handleToolCall, l as handleToolCallUpdate, p as parseArgsFromContent } from './AcpBackend-BQm7dNza.mjs';
3
- import { c as configuration, g as readSettings, i as encodeBase64, l as logger } from './limits-Du7S6jqA.mjs';
4
- import { A as AcpSessionManager } from './AcpSessionManager-C7unPEZO.mjs';
5
- import { f as connectionState, A as ApiClient, p as projectPath, g as BUILTIN_TODO_DISCOVERY } from './types-6DrEgHVx.mjs';
6
- import { P as PI_TEAMS_EXTENSION, n as initialMachineMetadata, o as createSessionMetadata, u as setupOfflineReconnection, v as notifyDaemonSessionStarted, z as StreamRelay, x as MessageQueue2, B as hashObject, C as startHappyServer, E as registerAgentAttachmentDownloads, F as TitleGenerator, y as registerKillSessionHandler, H as CLAUDE_ATTACHMENT_KINDS, I as stageClaudeAttachments, J as appendStagedAttachmentsToPrompt, K as BasePermissionHandler, L as writeSessionModeFile, N as normalizeAcpPermissionMode, O as removeSessionModeFile } from './index-EsR8ayIg.mjs';
1
+ import { D as DefaultTransport, A as AcpBackend } from './AcpBackend-CkDpu1n_.mjs';
2
+ export { a as DEFAULT_IDLE_TIMEOUT_MS, b as DEFAULT_TOOL_CALL_TIMEOUT_MS, e as extractErrorDetail, f as formatDuration, c as formatDurationMinutes, h as handleAgentMessageChunk, d as handleAgentThoughtChunk, g as handleLegacyMessageChunk, i as handlePlanUpdate, j as handleThinkingUpdate, k as handleToolCall, l as handleToolCallUpdate, p as parseArgsFromContent } from './AcpBackend-CkDpu1n_.mjs';
3
+ import { c as configuration, g as readSettings, i as encodeBase64, l as logger } from './limits-CPTgiQ9A.mjs';
4
+ import { A as AcpSessionManager } from './AcpSessionManager-DB_mfFaH.mjs';
5
+ import { f as connectionState, A as ApiClient, p as projectPath, g as BUILTIN_TODO_DISCOVERY } from './types-BEXGahmj.mjs';
6
+ import { P as PI_TEAMS_EXTENSION, n as initialMachineMetadata, o as createSessionMetadata, u as setupOfflineReconnection, v as notifyDaemonSessionStarted, z as StreamRelay, x as MessageQueue2, B as hashObject, C as startHappyServer, E as registerAgentAttachmentDownloads, F as TitleGenerator, y as registerKillSessionHandler, H as CLAUDE_ATTACHMENT_KINDS, I as stageClaudeAttachments, J as appendStagedAttachmentsToPrompt, K as BasePermissionHandler, L as writeSessionModeFile, N as normalizeAcpPermissionMode, O as removeSessionModeFile } from './index-gefLe1Bk.mjs';
7
7
  import { mkdir, chmod, writeFile, rename } from 'node:fs/promises';
8
8
  import { randomUUID } from 'node:crypto';
9
9
  import { join } from 'node:path';
@@ -32,7 +32,7 @@ import 'fs';
32
32
  import 'node:readline';
33
33
  import '@anthropic-ai/sandbox-runtime';
34
34
  import 'expo-server-sdk';
35
- import './agentGuidance-BaplwDcV.mjs';
35
+ import './agentGuidance-7MByWxKj.mjs';
36
36
  import 'ink';
37
37
  import 'react';
38
38
  import '@anthropic-ai/claude-agent-sdk';
@@ -749,6 +749,7 @@ async function runAcp(opts) {
749
749
  let shouldExit = false;
750
750
  let abortController = new AbortController();
751
751
  let pendingTurn = null;
752
+ let turnCancelled = false;
752
753
  const clearPendingTurn = (error) => {
753
754
  if (!pendingTurn) {
754
755
  return;
@@ -1094,6 +1095,7 @@ async function runAcp(opts) {
1094
1095
  session.keepAlive(thinking, "remote");
1095
1096
  }, 2e3);
1096
1097
  async function handleAbort() {
1098
+ turnCancelled = thinking;
1097
1099
  try {
1098
1100
  if (acpSessionId) {
1099
1101
  await backend.cancel(acpSessionId);
@@ -1123,12 +1125,12 @@ async function runAcp(opts) {
1123
1125
  return { mode };
1124
1126
  }
1125
1127
  );
1126
- registerKillSessionHandler(session.rpcHandlerManager, async () => {
1128
+ const disposeTermination = registerKillSessionHandler(session.rpcHandlerManager, async () => {
1127
1129
  shouldExit = true;
1128
1130
  messageQueue.close();
1129
1131
  clearPendingTurn(new Error("Session terminated"));
1130
1132
  await handleAbort();
1131
- }, session);
1133
+ }, session, { processSignals: true });
1132
1134
  try {
1133
1135
  const started = await backend.startSession();
1134
1136
  acpSessionId = started.sessionId;
@@ -1174,8 +1176,11 @@ async function runAcp(opts) {
1174
1176
  }
1175
1177
  logAcp("incoming", `Incoming prompt: ${formatUnknownForConsole(batch.message, ACP_EVENT_PREVIEW_CHARS)}`);
1176
1178
  sendEnvelopes(sessionManager.startTurn());
1179
+ turnCancelled = false;
1177
1180
  setThinking(true);
1178
1181
  const turnEnded = waitForTurnEnd();
1182
+ void turnEnded.catch(() => {
1183
+ });
1179
1184
  try {
1180
1185
  if (typeof batch.mode.permissionMode === "string" && batch.mode.permissionMode.length > 0) {
1181
1186
  await switchPermissionModeIfRequested(batch.mode.permissionMode);
@@ -1195,7 +1200,7 @@ ${BUILTIN_TODO_DISCOVERY}`;
1195
1200
  await backend.sendPrompt(acpSessionId, appendStagedAttachmentsToPrompt(prompt, staged), attachments);
1196
1201
  todoDiscoverySent = true;
1197
1202
  await turnEnded;
1198
- sendEnvelopes(sessionManager.endTurn("completed"));
1203
+ sendEnvelopes(sessionManager.endTurn(turnCancelled ? "cancelled" : "completed"));
1199
1204
  streamRelay.endTurn();
1200
1205
  setThinking(false);
1201
1206
  session.sendSessionEvent({ type: "ready" });
@@ -1214,6 +1219,7 @@ ${BUILTIN_TODO_DISCOVERY}`;
1214
1219
  }
1215
1220
  }
1216
1221
  } finally {
1222
+ disposeTermination?.();
1217
1223
  setThinking(false);
1218
1224
  clearInterval(keepAliveInterval);
1219
1225
  streamRelay.endTurn();
@@ -1,11 +1,11 @@
1
- import { q as query } from './index-EsR8ayIg.mjs';
1
+ import { q as query } from './index-gefLe1Bk.mjs';
2
2
  export { AbortError } from '@anthropic-ai/claude-agent-sdk';
3
3
  import 'chalk';
4
4
  import 'node:os';
5
5
  import 'node:crypto';
6
- import './types-6DrEgHVx.mjs';
6
+ import './types-BEXGahmj.mjs';
7
7
  import 'axios';
8
- import './limits-Du7S6jqA.mjs';
8
+ import './limits-CPTgiQ9A.mjs';
9
9
  import 'node:fs/promises';
10
10
  import 'node:fs';
11
11
  import 'node:path';
@@ -29,7 +29,7 @@ import 'fs';
29
29
  import 'node:readline';
30
30
  import '@anthropic-ai/sandbox-runtime';
31
31
  import 'expo-server-sdk';
32
- import './agentGuidance-BaplwDcV.mjs';
32
+ import './agentGuidance-7MByWxKj.mjs';
33
33
  import 'ink';
34
34
  import 'react';
35
35
  import 'ps-list';
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-6Xm0CgN_.cjs');
3
+ var index = require('./index-DNbKbe23.cjs');
4
4
  var claudeAgentSdk = require('@anthropic-ai/claude-agent-sdk');
5
5
  require('chalk');
6
6
  require('node:os');
7
7
  require('node:crypto');
8
- require('./types-CcjVmS2i.cjs');
8
+ require('./types-DjAHWb4J.cjs');
9
9
  require('axios');
10
- require('./limits-XRNzIlVm.cjs');
10
+ require('./limits-K17AgMHD.cjs');
11
11
  require('node:fs/promises');
12
12
  require('node:fs');
13
13
  require('node:path');
@@ -31,7 +31,7 @@ require('fs');
31
31
  require('node:readline');
32
32
  require('@anthropic-ai/sandbox-runtime');
33
33
  require('expo-server-sdk');
34
- require('./agentGuidance-BItqIZTf.cjs');
34
+ require('./agentGuidance-DlZM_YPV.cjs');
35
35
  require('ink');
36
36
  require('react');
37
37
  require('ps-list');