very-happy-cli 0.2.139 → 0.2.141

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 (43) hide show
  1. package/dist/{AcpBackend-BwTEBAyP.mjs → AcpBackend-CWmjboOm.mjs} +2 -2
  2. package/dist/{AcpBackend-ioCPQLt4.cjs → AcpBackend-CnWSwaHk.cjs} +2 -2
  3. package/dist/{AcpSessionManager-Bh3KETfz.mjs → AcpSessionManager-CtXoi6PN.mjs} +1 -1
  4. package/dist/{AcpSessionManager-o9T6W69-.cjs → AcpSessionManager-Dxt78rPO.cjs} +1 -1
  5. package/dist/{agentGuidance-Dxt2uz3R.cjs → agentGuidance-B9ENxSaS.cjs} +1 -1
  6. package/dist/{agentGuidance-DRnXdFAY.mjs → agentGuidance-Do7cQka3.mjs} +1 -1
  7. package/dist/codex/happyMcpStdioBridge.cjs +2 -2
  8. package/dist/codex/happyMcpStdioBridge.mjs +2 -2
  9. package/dist/{config-o9NFsj8x.mjs → config-DY57frJF.mjs} +4 -4
  10. package/dist/{config-nyMHCx-i.cjs → config-Dn7nAHcA.cjs} +4 -4
  11. package/dist/{index-klhxcpC8.cjs → index-3STVDtNO.cjs} +6 -6
  12. package/dist/{index-gkFhwPXq.cjs → index-BSVgut_Y.cjs} +4 -4
  13. package/dist/{index-BZr5l8TH.mjs → index-C55sW8E9.mjs} +60 -22
  14. package/dist/{index-C3NtU4Ch.cjs → index-ChWePQEd.cjs} +64 -26
  15. package/dist/{index-CTemcNko.mjs → index-DhfgAB8K.mjs} +4 -4
  16. package/dist/{index-BkmfJyCf.mjs → index-Dz6FgNFg.mjs} +7 -7
  17. package/dist/index.cjs +4 -4
  18. package/dist/index.mjs +4 -4
  19. package/dist/{installTerminalHooks-DZUBgnFh.cjs → installTerminalHooks--jkP17uE.cjs} +4 -4
  20. package/dist/{installTerminalHooks-8CHTgUC-.mjs → installTerminalHooks-zmtIrf3E.mjs} +4 -4
  21. package/dist/lib.cjs +2 -2
  22. package/dist/lib.mjs +2 -2
  23. package/dist/{limits-DefXc1TL.mjs → limits-DT5Yk_UH.mjs} +7 -7
  24. package/dist/{limits-C_RGzva6.cjs → limits-DbLWXlJm.cjs} +7 -7
  25. package/dist/{mcp-8DcunR0J.mjs → mcp-Bzy-X9kI.mjs} +4 -4
  26. package/dist/{mcp-czNIfD59.cjs → mcp-kE0n1dBF.cjs} +4 -4
  27. package/dist/{runGemini-CDUObQTD.mjs → runGemini-BmdhYEzM.mjs} +6 -6
  28. package/dist/{runGemini-Dy3y-lD9.cjs → runGemini-CxUz95A1.cjs} +6 -6
  29. package/dist/{runOpenClaw-B6KMCsVB.mjs → runOpenClaw-CYpO3Vv8.mjs} +5 -5
  30. package/dist/{runOpenClaw-CJusckVM.cjs → runOpenClaw-RLIFJx61.cjs} +5 -5
  31. package/dist/{send-B4Qo-87h.cjs → send-BGcCrMUT.cjs} +4 -4
  32. package/dist/{send-BT32Jiel.mjs → send-DT04hV8o.mjs} +4 -4
  33. package/dist/{sessions-Dh0Lg-5z.mjs → sessions-DDWTq2AG.mjs} +4 -4
  34. package/dist/{sessions-CN2y0xBl.cjs → sessions-Jt9lrcrG.cjs} +4 -4
  35. package/dist/{spawn-DFIyobCt.mjs → spawn-Ca0A70dX.mjs} +4 -4
  36. package/dist/{spawn-jWj3xFhX.cjs → spawn-CdZgvthE.cjs} +4 -4
  37. package/dist/{teams-CZ9ICWeB.mjs → teams-CzK1zg0m.mjs} +4 -4
  38. package/dist/{teams-BhFspeAY.cjs → teams-DfVwVZ4x.cjs} +4 -4
  39. package/dist/{todo-jL3ttna3.mjs → todo-4WhOom8k.mjs} +3 -3
  40. package/dist/{todo-B0kvqUTQ.cjs → todo-D9nFaYpQ.cjs} +3 -3
  41. package/dist/{types-CxGm_YJ-.cjs → types-Bk3W89Z3.cjs} +2 -2
  42. package/dist/{types-CrKeJuyF.mjs → types-CLosaeZT.mjs} +1 -1
  43. package/package.json +7 -7
@@ -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-DefXc1TL.mjs';
5
- import { j as contentLogMetadata, h as errorLogMetadata, m as delay } from './types-CrKeJuyF.mjs';
4
+ import { l as logger, p as packageJson } from './limits-DT5Yk_UH.mjs';
5
+ import { j as contentLogMetadata, h as errorLogMetadata, m as delay } from './types-CLosaeZT.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) => {
@@ -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-C_RGzva6.cjs');
7
- var api = require('./types-CxGm_YJ-.cjs');
6
+ var persistence = require('./limits-DbLWXlJm.cjs');
7
+ var api = require('./types-Bk3W89Z3.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) => {
@@ -1,5 +1,5 @@
1
1
  import { createId } from '@paralleldrive/cuid2';
2
- import { b as streamKeyOf, d as createEnvelope } from './types-CrKeJuyF.mjs';
2
+ import { b as streamKeyOf, d as createEnvelope } from './types-CLosaeZT.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-CxGm_YJ-.cjs');
4
+ var api = require('./types-Bk3W89Z3.cjs');
5
5
 
6
6
  function turnOptions(turnId, time) {
7
7
  return turnId ? { turn: turnId, time } : { time };
@@ -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-C_RGzva6.cjs');
5
+ var persistence = require('./limits-DbLWXlJm.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,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-DefXc1TL.mjs';
3
+ import { n as normalizeHttpEndpoint, c as configuration, g as readSettings, r as readPersistedSessions, d as readCredentialsForConfiguredRelay } from './limits-DT5Yk_UH.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';
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var agentGuidance = require('../agentGuidance-Dxt2uz3R.cjs');
3
+ var agentGuidance = require('../agentGuidance-B9ENxSaS.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-C_RGzva6.cjs');
9
+ var persistence = require('../limits-DbLWXlJm.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-DRnXdFAY.mjs';
1
+ import { P as PREVIEW_TOOL_NAME, a as PREVIEW_TOOL_TITLE, b as PREVIEW_TOOL_DESCRIPTION, r as registerTeamsTools } from '../agentGuidance-Do7cQka3.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-DefXc1TL.mjs';
7
+ import { C as CLIPBOARD_TOOL_NAME, a as CLIPBOARD_TOOL_TITLE, b as CLIPBOARD_TOOL_DESCRIPTION } from '../limits-DT5Yk_UH.mjs';
8
8
  import 'node:crypto';
9
9
  import 'node:fs/promises';
10
10
  import 'node:fs';
@@ -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-DefXc1TL.mjs';
6
- import { g as DEFAULT_GEMINI_MODEL, G as GEMINI_MODEL_ENV } from './index-BZr5l8TH.mjs';
5
+ import { l as logger } from './limits-DT5Yk_UH.mjs';
6
+ import { g as DEFAULT_GEMINI_MODEL, G as GEMINI_MODEL_ENV } from './index-C55sW8E9.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-CrKeJuyF.mjs';
16
+ import './types-CLosaeZT.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-DRnXdFAY.mjs';
31
+ import './agentGuidance-Do7cQka3.mjs';
32
32
  import 'ink';
33
33
  import 'react';
34
34
  import '@anthropic-ai/claude-agent-sdk';
@@ -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-C_RGzva6.cjs');
8
- var index = require('./index-C3NtU4Ch.cjs');
7
+ var persistence = require('./limits-DbLWXlJm.cjs');
8
+ var index = require('./index-ChWePQEd.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-CxGm_YJ-.cjs');
18
+ require('./types-Bk3W89Z3.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-Dxt2uz3R.cjs');
33
+ require('./agentGuidance-B9ENxSaS.cjs');
34
34
  require('ink');
35
35
  require('react');
36
36
  require('@anthropic-ai/claude-agent-sdk');
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var AcpBackend = require('./AcpBackend-ioCPQLt4.cjs');
4
- var persistence = require('./limits-C_RGzva6.cjs');
5
- var AcpSessionManager = require('./AcpSessionManager-o9T6W69-.cjs');
6
- var api = require('./types-CxGm_YJ-.cjs');
7
- var index = require('./index-C3NtU4Ch.cjs');
3
+ var AcpBackend = require('./AcpBackend-CnWSwaHk.cjs');
4
+ var persistence = require('./limits-DbLWXlJm.cjs');
5
+ var AcpSessionManager = require('./AcpSessionManager-Dxt78rPO.cjs');
6
+ var api = require('./types-Bk3W89Z3.cjs');
7
+ var index = require('./index-ChWePQEd.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-Dxt2uz3R.cjs');
36
+ require('./agentGuidance-B9ENxSaS.cjs');
37
37
  require('ink');
38
38
  require('react');
39
39
  require('@anthropic-ai/claude-agent-sdk');
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-C3NtU4Ch.cjs');
3
+ var index = require('./index-ChWePQEd.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-CxGm_YJ-.cjs');
8
+ require('./types-Bk3W89Z3.cjs');
9
9
  require('axios');
10
- require('./limits-C_RGzva6.cjs');
10
+ require('./limits-DbLWXlJm.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-Dxt2uz3R.cjs');
34
+ require('./agentGuidance-B9ENxSaS.cjs');
35
35
  require('ink');
36
36
  require('react');
37
37
  require('ps-list');
@@ -1,13 +1,13 @@
1
1
  import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(import.meta.url);import chalk from 'chalk';
2
2
  import os, { homedir, userInfo, tmpdir } from 'node:os';
3
3
  import { randomUUID, randomInt, randomBytes, createHash as createHash$1, timingSafeEqual } from 'node:crypto';
4
- import { o as notifyDaemonSessionEvent, q as getProjectPath, l as BUILTIN_TODO_DISCOVERY, p as projectPath, r as initializeSandbox, w as wrapCommand, j as contentLogMetadata, I as InvalidateSync, R as RawJSONLinesSchema, m as delay, t as AsyncLock, S as STREAM_DELTA_MAX_CHARS, M as MAX_CHAT_ATTACHMENT_SOURCE_BYTES, u as notifyDaemonClaudeAuthFailed, v as commandOnPath, c as checkIfDaemonRunningAndCleanupStaleState, x as deriveLocalCliUpdateSummary, y as AGENT_VERSION_SOURCES, z as isClaudeSessionId, C as getLocalHappyAgentCredentialPath, D as readLocalHappyAgentCredentials, E as parseExactVersion, F as compareExactVersions, G as extractCompleteLines, H as decideBackfill, J as parseTerminalHookPayload, K as tmuxArgs, L as scrubTmuxClientEnv, N as decideMirrorBinding, O as MIRROR_BACKFILL_LINES_DEFAULT, P as mirrorLineKey, Q as mirrorLocalId, T as listDaemonSessions, U as stopDaemonSession, V as detectCLIAvailability, W as detectResumeSupport, X as isDaemonRunningCurrentlyInstalledHappyVersion, Y as stopDaemon, Z as TurnActivityTracker, _ as summarizeSpawnSessionForLog, $ as shellescape, A as ApiClient, a0 as fetchCliUpdateState, a1 as resolveCliUpdateCheckInterval, a2 as DEFAULT_CLI_UPDATE_CHECK_INTERVAL_MS, a3 as cleanupDaemonState, i as isValidSessionId, s as spawnDaemonSession, a4 as listVhTerminals, a5 as isValidTerminalId, a6 as readVhTerminal, a7 as sendToVhTerminal, a8 as ContextUsageSchema, a9 as TITLE_PROMPT_PREFIX, aa as BOARD_ANALYZER_PROMPT_PREFIX, k as connectionState, ab as startOfflineReconnection, n as notifyDaemonSessionStarted, d as createEnvelope, ac as CodexAppServerClient } from './types-CrKeJuyF.mjs';
5
- import { l as logger, D as ensurePrivateDirectory, E as hardenPrivateFile, c as configuration, p as packageJson, g as readSettings, F as readCredentials, u as credentialRelayProblem, o as readDaemonState, i as encodeBase64, G as readSettingsOutcome, H as updateSettings, I as encodeBase64Url, m as decodeBase64, J as writeCredentialsLegacy, K as writeCredentialsDataKey, d as readCredentialsForConfiguredRelay, j as encrypt, r as readPersistedSessions, w as writePrivateFileSync, L as decryptWithDataKey, M as decryptLegacy, N as persistSession, k as decrypt, f as ensurePrivateDirectorySync, O as acquireDaemonLock, P as deletePersistedSessions, Q as writeDaemonState, R as writeSettings, S as releaseDaemonLock, C as CLIPBOARD_TOOL_NAME, a as CLIPBOARD_TOOL_TITLE, b as CLIPBOARD_TOOL_DESCRIPTION, e as CLIPBOARD_MAX_BYTES, T as clearCredentials, U as clearMachineId, V as SandboxConfigSchema, W as getLatestDaemonLog } from './limits-DefXc1TL.mjs';
4
+ import { o as notifyDaemonSessionEvent, q as getProjectPath, l as BUILTIN_TODO_DISCOVERY, p as projectPath, r as initializeSandbox, w as wrapCommand, j as contentLogMetadata, I as InvalidateSync, R as RawJSONLinesSchema, m as delay, t as AsyncLock, S as STREAM_DELTA_MAX_CHARS, M as MAX_CHAT_ATTACHMENT_SOURCE_BYTES, u as notifyDaemonClaudeAuthFailed, v as commandOnPath, c as checkIfDaemonRunningAndCleanupStaleState, x as deriveLocalCliUpdateSummary, y as AGENT_VERSION_SOURCES, z as isClaudeSessionId, C as getLocalHappyAgentCredentialPath, D as readLocalHappyAgentCredentials, E as parseExactVersion, F as compareExactVersions, G as extractCompleteLines, H as decideBackfill, J as parseTerminalHookPayload, K as tmuxArgs, L as scrubTmuxClientEnv, N as decideMirrorBinding, O as MIRROR_BACKFILL_LINES_DEFAULT, P as mirrorLineKey, Q as mirrorLocalId, T as listDaemonSessions, U as stopDaemonSession, V as detectCLIAvailability, W as detectResumeSupport, X as isDaemonRunningCurrentlyInstalledHappyVersion, Y as stopDaemon, Z as TurnActivityTracker, _ as summarizeSpawnSessionForLog, $ as shellescape, A as ApiClient, a0 as fetchCliUpdateState, a1 as resolveCliUpdateCheckInterval, a2 as DEFAULT_CLI_UPDATE_CHECK_INTERVAL_MS, a3 as cleanupDaemonState, i as isValidSessionId, s as spawnDaemonSession, a4 as listVhTerminals, a5 as isValidTerminalId, a6 as readVhTerminal, a7 as sendToVhTerminal, a8 as ContextUsageSchema, a9 as TITLE_PROMPT_PREFIX, aa as BOARD_ANALYZER_PROMPT_PREFIX, k as connectionState, ab as startOfflineReconnection, n as notifyDaemonSessionStarted, d as createEnvelope, ac as CodexAppServerClient } from './types-CLosaeZT.mjs';
5
+ import { l as logger, D as ensurePrivateDirectory, E as hardenPrivateFile, c as configuration, p as packageJson, g as readSettings, F as readCredentials, u as credentialRelayProblem, o as readDaemonState, i as encodeBase64, G as readSettingsOutcome, H as updateSettings, I as encodeBase64Url, m as decodeBase64, J as writeCredentialsLegacy, K as writeCredentialsDataKey, d as readCredentialsForConfiguredRelay, j as encrypt, r as readPersistedSessions, w as writePrivateFileSync, L as decryptWithDataKey, M as decryptLegacy, N as persistSession, k as decrypt, f as ensurePrivateDirectorySync, O as acquireDaemonLock, P as deletePersistedSessions, Q as writeDaemonState, R as writeSettings, S as releaseDaemonLock, C as CLIPBOARD_TOOL_NAME, a as CLIPBOARD_TOOL_TITLE, b as CLIPBOARD_TOOL_DESCRIPTION, e as CLIPBOARD_MAX_BYTES, T as clearCredentials, U as clearMachineId, V as SandboxConfigSchema, W as getLatestDaemonLog } from './limits-DT5Yk_UH.mjs';
6
6
  import spawn$1, { spawn } from 'cross-spawn';
7
7
  import path, { join, resolve, basename, isAbsolute, dirname, sep, delimiter, normalize } from 'node:path';
8
8
  import { createInterface } from 'node:readline';
9
9
  import { existsSync, readFileSync, readdirSync, statSync, mkdirSync, unlinkSync, renameSync, writeFileSync, accessSync, constants, openSync, fsyncSync, closeSync, rmSync as rmSync$1, chmodSync as chmodSync$1 } from 'node:fs';
10
- import { f as trimIdent, A as AGENT_GUIDANCE, t as teamScopePath, T as TeamConnectionPreflightError, e as createTeamsClient, P as PREVIEW_TOOL_NAME, R as REPORT_PROGRESS_TOOL_NAME, g as TEAM_TOOL_NAMES, r as registerTeamsTools, a as PREVIEW_TOOL_TITLE, b as PREVIEW_TOOL_DESCRIPTION, h as REPORT_PROGRESS_TOOL_TITLE, i as REPORT_PROGRESS_TOOL_DESCRIPTION } from './agentGuidance-DRnXdFAY.mjs';
10
+ import { f as trimIdent, A as AGENT_GUIDANCE, t as teamScopePath, T as TeamConnectionPreflightError, e as createTeamsClient, P as PREVIEW_TOOL_NAME, R as REPORT_PROGRESS_TOOL_NAME, g as TEAM_TOOL_NAMES, r as registerTeamsTools, a as PREVIEW_TOOL_TITLE, b as PREVIEW_TOOL_DESCRIPTION, h as REPORT_PROGRESS_TOOL_TITLE, i as REPORT_PROGRESS_TOOL_DESCRIPTION } from './agentGuidance-Do7cQka3.mjs';
11
11
  import { readFile, writeFile, rename, unlink, mkdir, symlink, rm, readlink, lstat, stat, open as open$1, appendFile } from 'node:fs/promises';
12
12
  import fs, { watch, access } from 'fs/promises';
13
13
  import { useStdout, useInput, Box, Text, render } from 'ink';
@@ -1282,7 +1282,21 @@ function createRuntimeControls(isThinking) {
1282
1282
  });
1283
1283
  return { operationId: op.id };
1284
1284
  }
1285
- return { setQuery, observe, request };
1285
+ async function stopRunningTasks() {
1286
+ const q = query, runGeneration = generation;
1287
+ if (!q || !q.canControl()) return [];
1288
+ const running = [...tasks.values()].filter((task) => task.status === "running" && text(task.id)).map((task) => String(task.id)).slice(0, 20);
1289
+ const stopped = [];
1290
+ await Promise.all(running.map(async (id) => {
1291
+ try {
1292
+ await q.stopTask(id);
1293
+ if (query === q && generation === runGeneration) stopped.push(id);
1294
+ } catch {
1295
+ }
1296
+ }));
1297
+ return stopped;
1298
+ }
1299
+ return { setQuery, observe, request, stopRunningTasks };
1286
1300
  }
1287
1301
 
1288
1302
  class MessageBuffer {
@@ -3696,6 +3710,7 @@ function applyClaudeSdkMetadata(current, update) {
3696
3710
  function createTurnSteeringController() {
3697
3711
  let interrupt = null;
3698
3712
  let steering = false;
3713
+ let interrupting = false;
3699
3714
  return {
3700
3715
  setInterrupt(next) {
3701
3716
  interrupt = next;
@@ -3720,17 +3735,31 @@ function createTurnSteeringController() {
3720
3735
  */
3721
3736
  async interruptTurn() {
3722
3737
  if (!interrupt) return false;
3723
- await interrupt();
3724
- return true;
3738
+ interrupting = true;
3739
+ try {
3740
+ await interrupt();
3741
+ return true;
3742
+ } catch (error) {
3743
+ interrupting = false;
3744
+ throw error;
3745
+ }
3725
3746
  },
3726
3747
  consumeReady() {
3727
3748
  if (!steering) return false;
3728
3749
  steering = false;
3729
3750
  return true;
3730
3751
  },
3752
+ /** The next `result` belongs to a stop-button interrupt: close the
3753
+ * turn as cancelled and say "Aborted by user", not "failed". */
3754
+ consumeInterrupted() {
3755
+ if (!interrupting) return false;
3756
+ interrupting = false;
3757
+ return true;
3758
+ },
3731
3759
  reset() {
3732
3760
  interrupt = null;
3733
3761
  steering = false;
3762
+ interrupting = false;
3734
3763
  }
3735
3764
  };
3736
3765
  }
@@ -3882,6 +3911,9 @@ async function claudeRemoteLauncher(session, onPermissionModeChange, onEffective
3882
3911
  logger.debug("[remote]: doAbort");
3883
3912
  session.markAborting();
3884
3913
  session.onAbort();
3914
+ void runtimeControls.stopRunningTasks().then((ids) => {
3915
+ if (ids.length > 0) logger.debug(`[remote]: stopped ${ids.length} background task(s) on abort: ${ids.join(", ")}`);
3916
+ }).catch((error) => logger.debug("[remote]: stopping background tasks on abort failed", error));
3885
3917
  if (session.thinking) {
3886
3918
  const interrupted = await turnSteering.interruptTurn().catch((e) => {
3887
3919
  logger.debug("[remote]: interruptTurn threw, falling back to hard abort", e);
@@ -3892,6 +3924,7 @@ async function claudeRemoteLauncher(session, onPermissionModeChange, onEffective
3892
3924
  return;
3893
3925
  }
3894
3926
  logger.debug("[remote]: interrupt did not stop the turn in time; escalating to hard abort");
3927
+ turnSteering.consumeInterrupted();
3895
3928
  }
3896
3929
  await abort();
3897
3930
  }
@@ -4225,6 +4258,11 @@ async function claudeRemoteLauncher(session, onPermissionModeChange, onEffective
4225
4258
  session.client.closeClaudeSessionTurn("cancelled");
4226
4259
  return;
4227
4260
  }
4261
+ if (turnSteering.consumeInterrupted()) {
4262
+ session.client.closeClaudeSessionTurn("cancelled");
4263
+ session.client.sendSessionEvent({ type: "message", message: "Aborted by user" });
4264
+ return;
4265
+ }
4228
4266
  applyClaudeResultLifecycle(result, {
4229
4267
  closeCompleted: () => session.client.closeClaudeSessionTurn("completed"),
4230
4268
  closeFailed: (error) => session.client.closeClaudeSessionTurn("failed", { error }),
@@ -12284,7 +12322,7 @@ function registerSideQuestionHandler(rpc, deps) {
12284
12322
  const retainMs = deps.retainMs ?? SIDE_QUESTION_RETAIN_MS;
12285
12323
  const maxRunMs = deps.maxRunMs ?? SIDE_QUESTION_MAX_RUN_MS;
12286
12324
  const run = deps.run ?? (async (input) => {
12287
- const { query } = await import('./index-CTemcNko.mjs');
12325
+ const { query } = await import('./index-DhfgAB8K.mjs');
12288
12326
  return runSideQuestion(query, input);
12289
12327
  });
12290
12328
  const slots = /* @__PURE__ */ new Map();
@@ -17520,7 +17558,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
17520
17558
  process.exit(0);
17521
17559
  } else if (subcommand === "install-terminal-hooks") {
17522
17560
  try {
17523
- const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await import('./installTerminalHooks-8CHTgUC-.mjs');
17561
+ const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await import('./installTerminalHooks-zmtIrf3E.mjs');
17524
17562
  const command = parseTerminalHooksArgs(args.slice(1));
17525
17563
  if (command.action === "help") {
17526
17564
  console.log(TERMINAL_HOOKS_HELP);
@@ -17537,7 +17575,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
17537
17575
  }
17538
17576
  } else if (subcommand === "spawn") {
17539
17577
  try {
17540
- const { handleSpawnCommand } = await import('./spawn-DFIyobCt.mjs');
17578
+ const { handleSpawnCommand } = await import('./spawn-Ca0A70dX.mjs');
17541
17579
  await handleSpawnCommand(args.slice(1));
17542
17580
  } catch (error) {
17543
17581
  console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
@@ -17549,7 +17587,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
17549
17587
  return;
17550
17588
  } else if (subcommand === "sessions") {
17551
17589
  try {
17552
- const { handleSessionsCommand } = await import('./sessions-Dh0Lg-5z.mjs');
17590
+ const { handleSessionsCommand } = await import('./sessions-DDWTq2AG.mjs');
17553
17591
  await handleSessionsCommand(args.slice(1));
17554
17592
  } catch (error) {
17555
17593
  console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
@@ -17561,7 +17599,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
17561
17599
  return;
17562
17600
  } else if (subcommand === "send") {
17563
17601
  try {
17564
- const { handleSendCommand } = await import('./send-BT32Jiel.mjs');
17602
+ const { handleSendCommand } = await import('./send-DT04hV8o.mjs');
17565
17603
  await handleSendCommand(args.slice(1));
17566
17604
  } catch (error) {
17567
17605
  console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
@@ -17667,9 +17705,9 @@ Conversation history is preserved on the server, but in-flight tool calls are in
17667
17705
  if (geminiSubcommand === "project" && args[2] === "set" && args[3]) {
17668
17706
  const projectId = args[3];
17669
17707
  try {
17670
- const { saveGoogleCloudProjectToConfig } = await import('./config-o9NFsj8x.mjs');
17671
- const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await import('./limits-DefXc1TL.mjs').then(function (n) { return n.X; });
17672
- const { ApiClient: ApiClient2 } = await import('./types-CrKeJuyF.mjs').then(function (n) { return n.ad; });
17708
+ const { saveGoogleCloudProjectToConfig } = await import('./config-DY57frJF.mjs');
17709
+ const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await import('./limits-DT5Yk_UH.mjs').then(function (n) { return n.X; });
17710
+ const { ApiClient: ApiClient2 } = await import('./types-CLosaeZT.mjs').then(function (n) { return n.ad; });
17673
17711
  let userEmail = void 0;
17674
17712
  try {
17675
17713
  const credentials = await readCredentialsForConfiguredRelay2();
@@ -17700,7 +17738,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
17700
17738
  }
17701
17739
  if (geminiSubcommand === "project" && args[2] === "get") {
17702
17740
  try {
17703
- const { readGeminiLocalConfig } = await import('./config-o9NFsj8x.mjs');
17741
+ const { readGeminiLocalConfig } = await import('./config-DY57frJF.mjs');
17704
17742
  const config = readGeminiLocalConfig();
17705
17743
  if (config.googleCloudProject) {
17706
17744
  console.log(`Current Google Cloud Project: ${config.googleCloudProject}`);
@@ -17740,7 +17778,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
17740
17778
  process.exit(0);
17741
17779
  }
17742
17780
  try {
17743
- const { runGemini } = await import('./runGemini-CDUObQTD.mjs');
17781
+ const { runGemini } = await import('./runGemini-BmdhYEzM.mjs');
17744
17782
  let startedBy = void 0;
17745
17783
  for (let i = 1; i < args.length; i++) {
17746
17784
  if (args[i] === "--started-by") {
@@ -17770,7 +17808,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
17770
17808
  }
17771
17809
  };
17772
17810
  try {
17773
- const { runAcp, resolveAcpAgentConfig } = await import('./index-BkmfJyCf.mjs');
17811
+ const { runAcp, resolveAcpAgentConfig } = await import('./index-Dz6FgNFg.mjs');
17774
17812
  const parsed = parsePiRunnerArgs(args.slice(1));
17775
17813
  const resolved = resolveAcpAgentConfig(["pi", ...parsed.passthrough]);
17776
17814
  const { credentials } = await authAndSetupMachineIfNeeded();
@@ -17798,7 +17836,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
17798
17836
  return;
17799
17837
  } else if (subcommand === "acp") {
17800
17838
  try {
17801
- const { runAcp, resolveAcpAgentConfig } = await import('./index-BkmfJyCf.mjs');
17839
+ const { runAcp, resolveAcpAgentConfig } = await import('./index-Dz6FgNFg.mjs');
17802
17840
  let startedBy = void 0;
17803
17841
  let verbose = false;
17804
17842
  const acpArgs = [];
@@ -17838,7 +17876,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
17838
17876
  return;
17839
17877
  } else if (subcommand === "openclaw") {
17840
17878
  try {
17841
- const { runOpenClaw } = await import('./runOpenClaw-B6KMCsVB.mjs');
17879
+ const { runOpenClaw } = await import('./runOpenClaw-CYpO3Vv8.mjs');
17842
17880
  let startedBy = void 0;
17843
17881
  let verbose = false;
17844
17882
  let gatewayUrl;
@@ -17889,7 +17927,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
17889
17927
  return;
17890
17928
  } else if (subcommand === "todo") {
17891
17929
  try {
17892
- const { handleTodoCommand } = await import('./todo-jL3ttna3.mjs');
17930
+ const { handleTodoCommand } = await import('./todo-4WhOom8k.mjs');
17893
17931
  await handleTodoCommand(args.slice(1));
17894
17932
  } catch (error) {
17895
17933
  console.error(JSON.stringify({ error: error instanceof Error ? error.message : "Todo command failed" }));
@@ -17898,7 +17936,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
17898
17936
  return;
17899
17937
  } else if (subcommand === "teams") {
17900
17938
  try {
17901
- const { handleTeamsCommand } = await import('./teams-CZ9ICWeB.mjs');
17939
+ const { handleTeamsCommand } = await import('./teams-CzK1zg0m.mjs');
17902
17940
  await handleTeamsCommand(args.slice(1));
17903
17941
  } catch (error) {
17904
17942
  console.error(error instanceof Error ? error.message : "Teams command failed");
@@ -17907,7 +17945,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
17907
17945
  return;
17908
17946
  } else if (subcommand === "mcp" && args.length === 1) {
17909
17947
  try {
17910
- const { handleMcpCommand } = await import('./mcp-8DcunR0J.mjs');
17948
+ const { handleMcpCommand } = await import('./mcp-Bzy-X9kI.mjs');
17911
17949
  await handleMcpCommand();
17912
17950
  } catch (error) {
17913
17951
  process.stderr.write(`[very-happy mcp] Fatal: ${error instanceof Error ? error.message : String(error)}