very-happy-cli 0.2.146 → 0.2.147

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 (49) hide show
  1. package/dist/{AcpBackend--1XmtY13.mjs → AcpBackend-CtoDlI4b.mjs} +2 -2
  2. package/dist/{AcpBackend-D4J-b7TB.cjs → AcpBackend-DYAbnvv0.cjs} +2 -2
  3. package/dist/{AcpSessionManager-BXHAABP5.mjs → AcpSessionManager-BHnqkhBf.mjs} +1 -1
  4. package/dist/{AcpSessionManager-BUh-XYb7.cjs → AcpSessionManager-Cn2214Af.cjs} +1 -1
  5. package/dist/{agentGuidance-BL1SZ7I3.mjs → agentGuidance-CK792QWi.mjs} +1 -1
  6. package/dist/{agentGuidance-BI4l2HRo.cjs → agentGuidance-FDBKJgGC.cjs} +1 -1
  7. package/dist/{agentHome-BdFP00V7.mjs → agentHome-Cj4LYQV-.mjs} +2 -2
  8. package/dist/{agentHome-Ck-uqSJ2.cjs → agentHome-z_h7cVnq.cjs} +2 -2
  9. package/dist/codex/happyMcpStdioBridge.cjs +2 -2
  10. package/dist/codex/happyMcpStdioBridge.mjs +2 -2
  11. package/dist/{config-CpY7JwBj.cjs → config-C1ysAgX3.cjs} +4 -4
  12. package/dist/{config-1MpGxQ9y.mjs → config-CVvEoSGv.mjs} +4 -4
  13. package/dist/{index-GZ--m9D1.mjs → index-B7UauKjp.mjs} +81 -31
  14. package/dist/{index-BEpwCxqf.cjs → index-C1QWpPoB.cjs} +4 -4
  15. package/dist/{index-BRygi44L.cjs → index-CXc3BQNG.cjs} +85 -35
  16. package/dist/{index-BnkxOdPZ.mjs → index-DUw34UHh.mjs} +4 -4
  17. package/dist/{index-BDts8AaI.cjs → index-DhcgPLDK.cjs} +7 -7
  18. package/dist/{index-k5Q1BYVe.mjs → index-EH6Pjsic.mjs} +8 -8
  19. package/dist/index.cjs +4 -4
  20. package/dist/index.mjs +4 -4
  21. package/dist/{installTerminalHooks-BYMuFagt.mjs → installTerminalHooks-AUERBJd4.mjs} +4 -4
  22. package/dist/{installTerminalHooks-CcDZxqew.cjs → installTerminalHooks-BMpt_X5L.cjs} +4 -4
  23. package/dist/lib.cjs +2 -2
  24. package/dist/lib.mjs +2 -2
  25. package/dist/{limits-DNPVbu0o.mjs → limits-Dh0u29C4.mjs} +7 -7
  26. package/dist/{limits-Cs9ZqLsR.cjs → limits-WZLbGgEg.cjs} +7 -7
  27. package/dist/{mcp-BtuzLwSL.mjs → mcp-3lcIERfY.mjs} +4 -4
  28. package/dist/{mcp-B0SoNWuQ.cjs → mcp-D-Crar0K.cjs} +4 -4
  29. package/dist/{piRuntime-C52DKuoS.cjs → piRuntime-Dkk0SGGN.cjs} +2 -2
  30. package/dist/{piRuntime-RzukAlha.mjs → piRuntime-dQ6fN-W9.mjs} +2 -2
  31. package/dist/{piTerminal-BjATNNi_.cjs → piTerminal-C1gXyJA1.cjs} +6 -6
  32. package/dist/{piTerminal-BhHNN6o7.mjs → piTerminal-YoY7Z7sP.mjs} +6 -6
  33. package/dist/{runGemini-CSbocY0x.cjs → runGemini-Cj284Qhk.cjs} +6 -6
  34. package/dist/{runGemini-H0nzGgAr.mjs → runGemini-D2Hr4-Xz.mjs} +6 -6
  35. package/dist/{runOpenClaw-DgLSw9ye.mjs → runOpenClaw-0tleKtRj.mjs} +5 -5
  36. package/dist/{runOpenClaw-DTf27x3y.cjs → runOpenClaw-USGbHPm-.cjs} +5 -5
  37. package/dist/{send-D_gFbnUb.cjs → send-Bt9iWhWx.cjs} +4 -4
  38. package/dist/{send-B1xGe7BR.mjs → send-vmjOSMYO.mjs} +4 -4
  39. package/dist/{sessions-C_5xh0tc.mjs → sessions-BeqWzIdm.mjs} +4 -4
  40. package/dist/{sessions-DTef64KU.cjs → sessions-lzuQguqk.cjs} +4 -4
  41. package/dist/{spawn-jDF92zCE.mjs → spawn-13v957Zv.mjs} +4 -4
  42. package/dist/{spawn-CaClsWIZ.cjs → spawn-B9kfeZZL.cjs} +4 -4
  43. package/dist/{teams-BL-EFcfu.mjs → teams-BkFamplo.mjs} +4 -4
  44. package/dist/{teams-CA6BHcPk.cjs → teams-DQ1pAIhZ.cjs} +4 -4
  45. package/dist/{todo-B-CAD9Y3.cjs → todo-Ba0Wpu2G.cjs} +3 -3
  46. package/dist/{todo-DxNoHaPw.mjs → todo-CxQEUY9J.mjs} +3 -3
  47. package/dist/{types-CgOMSh1y.cjs → types-CGACQD3M.cjs} +1 -1
  48. package/dist/{types-DjB5fcAr.mjs → types-DFYgWw3-.mjs} +1 -1
  49. 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-DNPVbu0o.mjs';
5
- import { t as contentLogMetadata, q as errorLogMetadata, u as delay } from './types-DjB5fcAr.mjs';
4
+ import { l as logger, p as packageJson } from './limits-Dh0u29C4.mjs';
5
+ import { t as contentLogMetadata, q as errorLogMetadata, u as delay } from './types-DFYgWw3-.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-Cs9ZqLsR.cjs');
7
- var index = require('./types-CgOMSh1y.cjs');
6
+ var persistence = require('./limits-WZLbGgEg.cjs');
7
+ var index = require('./types-CGACQD3M.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 { f as streamKeyOf, g as createEnvelope } from './types-DjB5fcAr.mjs';
2
+ import { f as streamKeyOf, g as createEnvelope } from './types-DFYgWw3-.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 index = require('./types-CgOMSh1y.cjs');
4
+ var index = require('./types-CGACQD3M.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, r as readSettings, d as readPersistedSessions, e as readCredentialsForConfiguredRelay } from './limits-DNPVbu0o.mjs';
3
+ import { n as normalizeHttpEndpoint, c as configuration, r as readSettings, d as readPersistedSessions, e as readCredentialsForConfiguredRelay } from './limits-Dh0u29C4.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-Cs9ZqLsR.cjs');
5
+ var persistence = require('./limits-WZLbGgEg.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,8 +1,8 @@
1
1
  import chalk from 'chalk';
2
2
  import { homedir } from 'node:os';
3
- import { r as readSettings, u as updateSettings } from './limits-DNPVbu0o.mjs';
3
+ import { r as readSettings, u as updateSettings } from './limits-Dh0u29C4.mjs';
4
4
  import 'node:fs';
5
- import { d as describeAgentHome, p as probeLoginShellEnv, r as resolveAgentHomes, e as expandHomePath, b as AGENT_HOME_ENV_NAMES } from './types-DjB5fcAr.mjs';
5
+ import { d as describeAgentHome, p as probeLoginShellEnv, r as resolveAgentHomes, e as expandHomePath, b as AGENT_HOME_ENV_NAMES } from './types-DFYgWw3-.mjs';
6
6
  import 'node:fs/promises';
7
7
  import 'node:path';
8
8
  import 'zod';
@@ -2,9 +2,9 @@
2
2
 
3
3
  var chalk = require('chalk');
4
4
  var os = require('node:os');
5
- var persistence = require('./limits-Cs9ZqLsR.cjs');
5
+ var persistence = require('./limits-WZLbGgEg.cjs');
6
6
  require('node:fs');
7
- var index = require('./types-CgOMSh1y.cjs');
7
+ var index = require('./types-CGACQD3M.cjs');
8
8
  require('node:fs/promises');
9
9
  require('node:path');
10
10
  require('zod');
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var agentGuidance = require('../agentGuidance-BI4l2HRo.cjs');
3
+ var agentGuidance = require('../agentGuidance-FDBKJgGC.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-Cs9ZqLsR.cjs');
9
+ var persistence = require('../limits-WZLbGgEg.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-BL1SZ7I3.mjs';
1
+ import { P as PREVIEW_TOOL_NAME, a as PREVIEW_TOOL_TITLE, b as PREVIEW_TOOL_DESCRIPTION, r as registerTeamsTools } from '../agentGuidance-CK792QWi.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-DNPVbu0o.mjs';
7
+ import { C as CLIPBOARD_TOOL_NAME, a as CLIPBOARD_TOOL_TITLE, b as CLIPBOARD_TOOL_DESCRIPTION } from '../limits-Dh0u29C4.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-Cs9ZqLsR.cjs');
8
- var index = require('./index-BRygi44L.cjs');
7
+ var persistence = require('./limits-WZLbGgEg.cjs');
8
+ var index = require('./index-CXc3BQNG.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-CgOMSh1y.cjs');
18
+ require('./types-CGACQD3M.cjs');
19
19
  require('axios');
20
20
  require('node:events');
21
21
  require('socket.io-client');
@@ -31,7 +31,7 @@ require('node-pty');
31
31
  require('node:readline');
32
32
  require('@anthropic-ai/sandbox-runtime');
33
33
  require('expo-server-sdk');
34
- require('./agentGuidance-BI4l2HRo.cjs');
34
+ require('./agentGuidance-FDBKJgGC.cjs');
35
35
  require('ink');
36
36
  require('react');
37
37
  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-DNPVbu0o.mjs';
6
- import { g as DEFAULT_GEMINI_MODEL, G as GEMINI_MODEL_ENV } from './index-GZ--m9D1.mjs';
5
+ import { l as logger } from './limits-Dh0u29C4.mjs';
6
+ import { g as DEFAULT_GEMINI_MODEL, G as GEMINI_MODEL_ENV } from './index-B7UauKjp.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-DjB5fcAr.mjs';
16
+ import './types-DFYgWw3-.mjs';
17
17
  import 'axios';
18
18
  import 'node:events';
19
19
  import 'socket.io-client';
@@ -29,7 +29,7 @@ import 'node-pty';
29
29
  import 'node:readline';
30
30
  import '@anthropic-ai/sandbox-runtime';
31
31
  import 'expo-server-sdk';
32
- import './agentGuidance-BL1SZ7I3.mjs';
32
+ import './agentGuidance-CK792QWi.mjs';
33
33
  import 'ink';
34
34
  import 'react';
35
35
  import '@anthropic-ai/claude-agent-sdk';
@@ -1,14 +1,14 @@
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 { v as notifyDaemonSessionEvent, w as getProjectPath, o as BUILTIN_TODO_DISCOVERY, x as initializeSandbox, y as wrapCommand, t as contentLogMetadata, I as InvalidateSync, R as RawJSONLinesSchema, u as delay, z as AsyncLock, S as STREAM_DELTA_MAX_CHARS, M as MAX_CHAT_ATTACHMENT_SOURCE_BYTES, C as notifyDaemonClaudeAuthFailed, D as commandOnPath, c as checkIfDaemonRunningAndCleanupStaleState, E as deriveLocalCliUpdateSummary, F as AGENT_VERSION_SOURCES, G as isClaudeSessionId, H as getLocalHappyAgentCredentialPath, J as readLocalHappyAgentCredentials, K as parseExactVersion, L as compareExactVersions, N as extractCompleteLines, O as decideBackfill, P as parseTerminalHookPayload, Q as tmuxArgs, T as scrubTmuxClientEnv, U as decideMirrorBinding, V as MIRROR_BACKFILL_LINES_DEFAULT, W as mirrorLineKey, X as mirrorLocalId, Y as listDaemonSessions, Z as stopDaemonSession, _ as detectCLIAvailability, $ as detectResumeSupport, a0 as refreshAgentHomes, d as describeAgentHome, a1 as isDaemonRunningCurrentlyInstalledHappyVersion, a2 as stopDaemon, a3 as TurnActivityTracker, a4 as summarizeSpawnSessionForLog, a5 as locateClaudeConversation, a6 as agentHomeSpawnEnv, a7 as shellescape, A as ApiClient, a8 as fetchCliUpdateState, a9 as resolveCliUpdateCheckInterval, aa as DEFAULT_CLI_UPDATE_CHECK_INTERVAL_MS, ab as cleanupDaemonState, i as isValidSessionId, s as spawnDaemonSession, ac as listVhTerminals, ad as isValidTerminalId, ae as readVhTerminal, af as sendToVhTerminal, ag as ContextUsageSchema, ah as TITLE_PROMPT_PREFIX, ai as BOARD_ANALYZER_PROMPT_PREFIX, m as connectionState, aj as startOfflineReconnection, n as notifyDaemonSessionStarted, g as createEnvelope, ak as CodexAppServerClient } from './types-DjB5fcAr.mjs';
5
- import { l as logger, F as ensurePrivateDirectory, G as hardenPrivateFile, c as configuration, p as packageJson, r as readSettings, H as readCredentials, x as credentialRelayProblem, o as readDaemonState, g as encodeBase64, I as readSettingsOutcome, u as updateSettings, J as encodeBase64Url, m as decodeBase64, K as writeCredentialsLegacy, L as writeCredentialsDataKey, e as readCredentialsForConfiguredRelay, j as encrypt, d as readPersistedSessions, w as writePrivateFileSync, M as decryptWithDataKey, N as decryptLegacy, O as persistSession, k as decrypt, h as ensurePrivateDirectorySync, P as acquireDaemonLock, Q as deletePersistedSessions, R as writeDaemonState, S as writeSettings, T as releaseDaemonLock, C as CLIPBOARD_TOOL_NAME, a as CLIPBOARD_TOOL_TITLE, b as CLIPBOARD_TOOL_DESCRIPTION, f as CLIPBOARD_MAX_BYTES, U as clearCredentials, V as clearMachineId, W as SandboxConfigSchema, X as getLatestDaemonLog } from './limits-DNPVbu0o.mjs';
4
+ import { v as notifyDaemonSessionEvent, w as getProjectPath, o as BUILTIN_TODO_DISCOVERY, x as initializeSandbox, y as wrapCommand, t as contentLogMetadata, I as InvalidateSync, R as RawJSONLinesSchema, u as delay, z as AsyncLock, S as STREAM_DELTA_MAX_CHARS, M as MAX_CHAT_ATTACHMENT_SOURCE_BYTES, C as notifyDaemonClaudeAuthFailed, D as commandOnPath, c as checkIfDaemonRunningAndCleanupStaleState, E as deriveLocalCliUpdateSummary, F as AGENT_VERSION_SOURCES, G as isClaudeSessionId, H as getLocalHappyAgentCredentialPath, J as readLocalHappyAgentCredentials, K as parseExactVersion, L as compareExactVersions, N as extractCompleteLines, O as decideBackfill, P as parseTerminalHookPayload, Q as tmuxArgs, T as scrubTmuxClientEnv, U as decideMirrorBinding, V as MIRROR_BACKFILL_LINES_DEFAULT, W as mirrorLineKey, X as mirrorLocalId, Y as listDaemonSessions, Z as stopDaemonSession, _ as detectCLIAvailability, $ as detectResumeSupport, a0 as refreshAgentHomes, d as describeAgentHome, a1 as isDaemonRunningCurrentlyInstalledHappyVersion, a2 as stopDaemon, a3 as TurnActivityTracker, a4 as summarizeSpawnSessionForLog, a5 as locateClaudeConversation, a6 as agentHomeSpawnEnv, a7 as shellescape, A as ApiClient, a8 as fetchCliUpdateState, a9 as resolveCliUpdateCheckInterval, aa as DEFAULT_CLI_UPDATE_CHECK_INTERVAL_MS, ab as cleanupDaemonState, i as isValidSessionId, s as spawnDaemonSession, ac as listVhTerminals, ad as isValidTerminalId, ae as readVhTerminal, af as sendToVhTerminal, ag as ContextUsageSchema, ah as TITLE_PROMPT_PREFIX, ai as BOARD_ANALYZER_PROMPT_PREFIX, m as connectionState, aj as startOfflineReconnection, n as notifyDaemonSessionStarted, g as createEnvelope, ak as CodexAppServerClient } from './types-DFYgWw3-.mjs';
5
+ import { l as logger, F as ensurePrivateDirectory, G as hardenPrivateFile, c as configuration, p as packageJson, r as readSettings, H as readCredentials, x as credentialRelayProblem, o as readDaemonState, g as encodeBase64, I as readSettingsOutcome, u as updateSettings, J as encodeBase64Url, m as decodeBase64, K as writeCredentialsLegacy, L as writeCredentialsDataKey, e as readCredentialsForConfiguredRelay, j as encrypt, d as readPersistedSessions, w as writePrivateFileSync, M as decryptWithDataKey, N as decryptLegacy, O as persistSession, k as decrypt, h as ensurePrivateDirectorySync, P as acquireDaemonLock, Q as deletePersistedSessions, R as writeDaemonState, S as writeSettings, T as releaseDaemonLock, C as CLIPBOARD_TOOL_NAME, a as CLIPBOARD_TOOL_TITLE, b as CLIPBOARD_TOOL_DESCRIPTION, f as CLIPBOARD_MAX_BYTES, U as clearCredentials, V as clearMachineId, W as SandboxConfigSchema, X as getLatestDaemonLog } from './limits-Dh0u29C4.mjs';
6
6
  import spawn$1, { spawn } from 'cross-spawn';
7
7
  import path, { join, resolve, basename, isAbsolute, sep, dirname, 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
10
  import { p as projectPath } from './projectPath-CSpqWdxp.mjs';
11
- 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-BL1SZ7I3.mjs';
11
+ 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-CK792QWi.mjs';
12
12
  import { readFile, writeFile, rename, unlink, mkdir, symlink, rm, readlink, lstat, stat, open as open$1, appendFile } from 'node:fs/promises';
13
13
  import fs, { watch, access } from 'fs/promises';
14
14
  import { useStdout, useInput, Box, Text, render } from 'ink';
@@ -145,6 +145,8 @@ class Session {
145
145
  lastAssistantSnippet;
146
146
  /** Live remote-query input sink. Absent in local mode and between SDK queries. */
147
147
  steerHandler = null;
148
+ /** B-482: the live remote Query's in-process side-question entry; null between Queries and in local mode. */
149
+ sideQuestionLive = null;
148
150
  /** Callbacks to be notified when session ID is found/changed */
149
151
  sessionFoundCallbacks = [];
150
152
  /** Keep alive interval reference for cleanup */
@@ -186,8 +188,14 @@ class Session {
186
188
  clearInterval(this.keepAliveInterval);
187
189
  this.sessionFoundCallbacks = [];
188
190
  this.steerHandler = null;
191
+ this.sideQuestionLive = null;
189
192
  logger.debug("[Session] Cleaned up resources");
190
193
  };
194
+ /** Register the current remote query's in-process side-question entry (B-482); null removes it. */
195
+ setSideQuestionLive = (live) => {
196
+ this.sideQuestionLive = live;
197
+ };
198
+ getSideQuestionLive = () => this.sideQuestionLive;
191
199
  /** Register the current remote query's Steer sink; null removes it. */
192
200
  setSteerHandler = (handler) => {
193
201
  this.steerHandler = handler;
@@ -2062,6 +2070,14 @@ async function claudeRemote(opts) {
2062
2070
  interrupt: async () => {
2063
2071
  await response.interrupt();
2064
2072
  },
2073
+ // `request` is the SDK's generic control-request sender (every typed
2074
+ // method wraps it); the public types omit `side_question`, the CLI
2075
+ // handles it. An abort on `signal` becomes control_cancel_request.
2076
+ sideQuestion: async (request, signal) => {
2077
+ const raw = await response.request({ subtype: "side_question", ...request }, { signal });
2078
+ const body = raw?.response;
2079
+ return body && typeof body === "object" ? body : { response: null };
2080
+ },
2065
2081
  steer: (message, nextMode) => {
2066
2082
  mode = { ...nextMode, model: mode.model };
2067
2083
  messages.push({
@@ -4212,6 +4228,7 @@ async function claudeRemoteLauncher(session, onPermissionModeChange, onEffective
4212
4228
  onQueryReady: (q) => {
4213
4229
  runtimeControls.setQuery(q);
4214
4230
  turnSteering.setInterrupt(q.interrupt);
4231
+ session.setSideQuestionLive({ ask: q.sideQuestion, canControl: q.canControl });
4215
4232
  session.setSteerHandler(async (input) => {
4216
4233
  if (!modeGate.matches(input.mode)) return false;
4217
4234
  let message = input.message;
@@ -4308,6 +4325,7 @@ async function claudeRemoteLauncher(session, onPermissionModeChange, onEffective
4308
4325
  runtimeControls.setQuery(null);
4309
4326
  turnSteering.reset();
4310
4327
  session.setSteerHandler(null);
4328
+ session.setSideQuestionLive(null);
4311
4329
  livePermissionModeHandler = null;
4312
4330
  permissionHandler.setPermissionModeUpdater(void 0);
4313
4331
  sdkToLogConverter.resetTransientState();
@@ -5295,8 +5313,8 @@ ${typeLabels[type] || type}:`));
5295
5313
  }
5296
5314
  console.log(chalk.gray(" An external claude command is only needed for native terminal/mirror use."));
5297
5315
  try {
5298
- const { resolveAgentHomesForCli } = await import('./agentHome-BdFP00V7.mjs');
5299
- const { describeAgentHome } = await import('./types-DjB5fcAr.mjs').then(function (n) { return n.al; });
5316
+ const { resolveAgentHomesForCli } = await import('./agentHome-Cj4LYQV-.mjs');
5317
+ const { describeAgentHome } = await import('./types-DFYgWw3-.mjs').then(function (n) { return n.al; });
5300
5318
  const homes = await resolveAgentHomesForCli();
5301
5319
  console.log(chalk.green(`\u2713 Claude config dir: ${describeAgentHome(homes.claudeConfigDir)}`));
5302
5320
  console.log(chalk.green(`\u2713 Codex home: ${describeAgentHome(homes.codexHome)}`));
@@ -12276,6 +12294,23 @@ function registerKillSessionHandler(rpcHandlerManager, killThisHappy, archiveEve
12276
12294
  };
12277
12295
  }
12278
12296
 
12297
+ function isUnsupportedSideQuestionError(error) {
12298
+ const message = error instanceof Error ? error.message : String(error);
12299
+ return /unknown|unsupported|not supported|unrecognized|invalid.*subtype/i.test(message);
12300
+ }
12301
+ async function runSideQuestionLive(ask, input) {
12302
+ const history = (input.history ?? []).filter((h) => h.question.trim() && h.answer.trim()).slice(-12).map((h) => ({ question: clip(h.question.trim(), MAX_HISTORY_CHARS), response: clip(h.answer.trim(), MAX_HISTORY_CHARS) }));
12303
+ const result = await ask({ question: input.question.trim(), ...history.length ? { history } : {} }, input.signal);
12304
+ if (input.signal?.aborted) throw new Error("Side question cancelled");
12305
+ const text = typeof result?.response === "string" ? result.response : "";
12306
+ if (!text.trim()) throw new Error("Side question ended without a result");
12307
+ const fallback = result.refusal_fallback?.content;
12308
+ const answer = fallback ? `\u26A0 ${fallback}
12309
+
12310
+ ${text}` : text;
12311
+ input.onText?.(answer);
12312
+ return { answer, hadContext: true, mode: "live" };
12313
+ }
12279
12314
  const SIDE_QUESTION_SYSTEM_PROMPT = [
12280
12315
  "A user message wrapped in a side-question system-reminder is a SIDE QUESTION: answer it",
12281
12316
  "directly in one response from the conversation context, with no tools and no action on the main task."
@@ -12406,10 +12441,10 @@ ${text}` : text;
12406
12441
  if (toolAttempt && !final.trim() && !streamed.trim()) {
12407
12442
  const notice = toolAttemptNotice(toolAttempt);
12408
12443
  input.onText?.(notice);
12409
- return { answer: notice, hadContext: Boolean(input.resumeSessionId) };
12444
+ return { answer: notice, hadContext: Boolean(input.resumeSessionId), mode: "fork" };
12410
12445
  }
12411
12446
  if (!resultSeen && !final && !streamed) throw new Error(`Side question ended without a result${lastApiError ? `: ${lastApiError}` : ""}`);
12412
- return { answer: final || streamed, hadContext: Boolean(input.resumeSessionId) };
12447
+ return { answer: final || streamed, hadContext: Boolean(input.resumeSessionId), mode: "fork" };
12413
12448
  }
12414
12449
 
12415
12450
  const SIDE_QUESTION_RETAIN_MS = 5 * 6e4;
@@ -12434,10 +12469,20 @@ function registerSideQuestionHandler(rpc, deps) {
12434
12469
  const now = deps.now ?? (() => Date.now());
12435
12470
  const retainMs = deps.retainMs ?? SIDE_QUESTION_RETAIN_MS;
12436
12471
  const maxRunMs = deps.maxRunMs ?? SIDE_QUESTION_MAX_RUN_MS;
12437
- const run = deps.run ?? (async (input) => {
12438
- const { query } = await import('./index-BnkxOdPZ.mjs');
12472
+ const fork = deps.run ?? (async (input) => {
12473
+ const { query } = await import('./index-DUw34UHh.mjs');
12439
12474
  return runSideQuestion(query, input);
12440
12475
  });
12476
+ const run = async (input, live) => {
12477
+ if (!live) return fork(input);
12478
+ try {
12479
+ return await runSideQuestionLive(live.ask, input);
12480
+ } catch (error) {
12481
+ if (input.signal?.aborted || !isUnsupportedSideQuestionError(error)) throw error;
12482
+ logger.debug(`[btw] live side question unsupported by this CLI, forking instead: ${error instanceof Error ? error.message : String(error)}`);
12483
+ return fork(input);
12484
+ }
12485
+ };
12441
12486
  const slots = /* @__PURE__ */ new Map();
12442
12487
  let active = null;
12443
12488
  const prune = () => {
@@ -12464,6 +12509,8 @@ function registerSideQuestionHandler(rpc, deps) {
12464
12509
  finish(stale, "cancelled");
12465
12510
  logger.debug(`[btw] side question ${stale.requestId} superseded by a new ask`);
12466
12511
  }
12512
+ const candidate = deps.getLiveQuery?.() ?? null;
12513
+ const live = candidate && candidate.canControl() ? candidate : null;
12467
12514
  const resumeSessionId = deps.getClaudeSessionId() ?? null;
12468
12515
  const slot = {
12469
12516
  requestId: randomUUID(),
@@ -12474,7 +12521,7 @@ function registerSideQuestionHandler(rpc, deps) {
12474
12521
  };
12475
12522
  slots.set(slot.requestId, slot);
12476
12523
  active = slot;
12477
- logger.debug(`[btw] side question ${slot.requestId} start (context=${resumeSessionId ? "fork" : "none"})`);
12524
+ logger.debug(`[btw] side question ${slot.requestId} start (${live ? "live" : resumeSessionId ? "fork" : "no-context"})`);
12478
12525
  const deadline = setTimeout(() => {
12479
12526
  if (slot.status !== "running") return;
12480
12527
  slot.abort.abort("timeout");
@@ -12494,10 +12541,10 @@ function registerSideQuestionHandler(rpc, deps) {
12494
12541
  onText: (text) => {
12495
12542
  if (slot.status === "running") slot.text = text;
12496
12543
  }
12497
- }).then((result) => {
12544
+ }, live).then((result) => {
12498
12545
  slot.text = result.answer;
12499
12546
  finish(slot, "done");
12500
- logger.debug(`[btw] side question ${slot.requestId} done (${result.answer.length} chars)`);
12547
+ logger.debug(`[btw] side question ${slot.requestId} done (${result.mode ?? "fork"}, ${result.answer.length} chars)`);
12501
12548
  }).catch((error) => {
12502
12549
  const message = error instanceof Error ? error.message : String(error);
12503
12550
  if (slot.abort.signal.aborted) {
@@ -12507,7 +12554,7 @@ function registerSideQuestionHandler(rpc, deps) {
12507
12554
  logger.debug(`[btw] side question ${slot.requestId} failed: ${message}`);
12508
12555
  }
12509
12556
  }).finally(() => clearTimeout(deadline));
12510
- return { requestId: slot.requestId, hadContext: Boolean(resumeSessionId) };
12557
+ return { requestId: slot.requestId, hadContext: live ? true : Boolean(resumeSessionId), mode: live ? "live" : "fork" };
12511
12558
  });
12512
12559
  rpc.registerHandler("btw-poll", async (request) => {
12513
12560
  prune();
@@ -13304,7 +13351,10 @@ async function runClaude(credentials, options = {}) {
13304
13351
  getModel: () => currentModel,
13305
13352
  cwd: workingDirectory,
13306
13353
  getEnv: () => options.claudeEnvVars,
13307
- settingsPath: writeSideQuestionSettingsFile(configuration.happyHomeDir)
13354
+ settingsPath: writeSideQuestionSettingsFile(configuration.happyHomeDir),
13355
+ // B-482: in remote mode the launcher parks the live Query's /btw entry
13356
+ // on the session while the Query is alive; local mode never sets it.
13357
+ getLiveQuery: () => currentSession?.getSideQuestionLive() ?? null
13308
13358
  });
13309
13359
  const resetCurrentModeDefaults = () => {
13310
13360
  currentModel = options.model ?? DEFAULT_CLAUDE_MODEL;
@@ -17685,7 +17735,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
17685
17735
  return;
17686
17736
  } else if (subcommand === "install-terminal-hooks") {
17687
17737
  try {
17688
- const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await import('./installTerminalHooks-BYMuFagt.mjs');
17738
+ const { installTerminalHooks, parseTerminalHooksArgs, TERMINAL_HOOKS_HELP } = await import('./installTerminalHooks-AUERBJd4.mjs');
17689
17739
  const command = parseTerminalHooksArgs(args.slice(1));
17690
17740
  if (command.action === "help") {
17691
17741
  console.log(TERMINAL_HOOKS_HELP);
@@ -17702,7 +17752,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
17702
17752
  }
17703
17753
  } else if (subcommand === "agent-home") {
17704
17754
  try {
17705
- const { parseAgentHomeArgs, runAgentHomeCommand } = await import('./agentHome-BdFP00V7.mjs');
17755
+ const { parseAgentHomeArgs, runAgentHomeCommand } = await import('./agentHome-Cj4LYQV-.mjs');
17706
17756
  await runAgentHomeCommand(parseAgentHomeArgs(args.slice(1)));
17707
17757
  process.exit(0);
17708
17758
  } catch (error) {
@@ -17711,7 +17761,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
17711
17761
  }
17712
17762
  } else if (subcommand === "spawn") {
17713
17763
  try {
17714
- const { handleSpawnCommand } = await import('./spawn-jDF92zCE.mjs');
17764
+ const { handleSpawnCommand } = await import('./spawn-13v957Zv.mjs');
17715
17765
  await handleSpawnCommand(args.slice(1));
17716
17766
  } catch (error) {
17717
17767
  console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
@@ -17723,7 +17773,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
17723
17773
  return;
17724
17774
  } else if (subcommand === "sessions") {
17725
17775
  try {
17726
- const { handleSessionsCommand } = await import('./sessions-C_5xh0tc.mjs');
17776
+ const { handleSessionsCommand } = await import('./sessions-BeqWzIdm.mjs');
17727
17777
  await handleSessionsCommand(args.slice(1));
17728
17778
  } catch (error) {
17729
17779
  console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
@@ -17735,7 +17785,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
17735
17785
  return;
17736
17786
  } else if (subcommand === "send") {
17737
17787
  try {
17738
- const { handleSendCommand } = await import('./send-B1xGe7BR.mjs');
17788
+ const { handleSendCommand } = await import('./send-vmjOSMYO.mjs');
17739
17789
  await handleSendCommand(args.slice(1));
17740
17790
  } catch (error) {
17741
17791
  console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
@@ -17841,9 +17891,9 @@ Conversation history is preserved on the server, but in-flight tool calls are in
17841
17891
  if (geminiSubcommand === "project" && args[2] === "set" && args[3]) {
17842
17892
  const projectId = args[3];
17843
17893
  try {
17844
- const { saveGoogleCloudProjectToConfig } = await import('./config-1MpGxQ9y.mjs');
17845
- const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await import('./limits-DNPVbu0o.mjs').then(function (n) { return n.Y; });
17846
- const { ApiClient: ApiClient2 } = await import('./types-DjB5fcAr.mjs').then(function (n) { return n.am; });
17894
+ const { saveGoogleCloudProjectToConfig } = await import('./config-CVvEoSGv.mjs');
17895
+ const { readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay2 } = await import('./limits-Dh0u29C4.mjs').then(function (n) { return n.Y; });
17896
+ const { ApiClient: ApiClient2 } = await import('./types-DFYgWw3-.mjs').then(function (n) { return n.am; });
17847
17897
  let userEmail = void 0;
17848
17898
  try {
17849
17899
  const credentials = await readCredentialsForConfiguredRelay2();
@@ -17874,7 +17924,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
17874
17924
  }
17875
17925
  if (geminiSubcommand === "project" && args[2] === "get") {
17876
17926
  try {
17877
- const { readGeminiLocalConfig } = await import('./config-1MpGxQ9y.mjs');
17927
+ const { readGeminiLocalConfig } = await import('./config-CVvEoSGv.mjs');
17878
17928
  const config = readGeminiLocalConfig();
17879
17929
  if (config.googleCloudProject) {
17880
17930
  console.log(`Current Google Cloud Project: ${config.googleCloudProject}`);
@@ -17914,7 +17964,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
17914
17964
  process.exit(0);
17915
17965
  }
17916
17966
  try {
17917
- const { runGemini } = await import('./runGemini-H0nzGgAr.mjs');
17967
+ const { runGemini } = await import('./runGemini-D2Hr4-Xz.mjs');
17918
17968
  let startedBy = void 0;
17919
17969
  for (let i = 1; i < args.length; i++) {
17920
17970
  if (args[i] === "--started-by") {
@@ -17937,7 +17987,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
17937
17987
  } else if (subcommand === "pi") {
17938
17988
  if (args[1] === "--terminal") {
17939
17989
  try {
17940
- const { runPiTerminal } = await import('./piTerminal-BhHNN6o7.mjs');
17990
+ const { runPiTerminal } = await import('./piTerminal-YoY7Z7sP.mjs');
17941
17991
  process.exitCode = await runPiTerminal(args.slice(2));
17942
17992
  } catch (error) {
17943
17993
  console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
@@ -17954,7 +18004,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
17954
18004
  }
17955
18005
  };
17956
18006
  try {
17957
- const { runAcp, resolveAcpAgentConfig } = await import('./index-k5Q1BYVe.mjs');
18007
+ const { runAcp, resolveAcpAgentConfig } = await import('./index-EH6Pjsic.mjs');
17958
18008
  const parsed = parsePiRunnerArgs(args.slice(1));
17959
18009
  const resolved = resolveAcpAgentConfig(["pi", ...parsed.passthrough]);
17960
18010
  const { credentials } = await authAndSetupMachineIfNeeded();
@@ -17982,7 +18032,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
17982
18032
  return;
17983
18033
  } else if (subcommand === "acp") {
17984
18034
  try {
17985
- const { runAcp, resolveAcpAgentConfig } = await import('./index-k5Q1BYVe.mjs');
18035
+ const { runAcp, resolveAcpAgentConfig } = await import('./index-EH6Pjsic.mjs');
17986
18036
  let startedBy = void 0;
17987
18037
  let verbose = false;
17988
18038
  const acpArgs = [];
@@ -18022,7 +18072,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
18022
18072
  return;
18023
18073
  } else if (subcommand === "openclaw") {
18024
18074
  try {
18025
- const { runOpenClaw } = await import('./runOpenClaw-DgLSw9ye.mjs');
18075
+ const { runOpenClaw } = await import('./runOpenClaw-0tleKtRj.mjs');
18026
18076
  let startedBy = void 0;
18027
18077
  let verbose = false;
18028
18078
  let gatewayUrl;
@@ -18073,7 +18123,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
18073
18123
  return;
18074
18124
  } else if (subcommand === "todo") {
18075
18125
  try {
18076
- const { handleTodoCommand } = await import('./todo-DxNoHaPw.mjs');
18126
+ const { handleTodoCommand } = await import('./todo-CxQEUY9J.mjs');
18077
18127
  await handleTodoCommand(args.slice(1));
18078
18128
  } catch (error) {
18079
18129
  console.error(JSON.stringify({ error: error instanceof Error ? error.message : "Todo command failed" }));
@@ -18082,7 +18132,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
18082
18132
  return;
18083
18133
  } else if (subcommand === "teams") {
18084
18134
  try {
18085
- const { handleTeamsCommand } = await import('./teams-BL-EFcfu.mjs');
18135
+ const { handleTeamsCommand } = await import('./teams-BkFamplo.mjs');
18086
18136
  await handleTeamsCommand(args.slice(1));
18087
18137
  } catch (error) {
18088
18138
  console.error(error instanceof Error ? error.message : "Teams command failed");
@@ -18091,7 +18141,7 @@ Conversation history is preserved on the server, but in-flight tool calls are in
18091
18141
  return;
18092
18142
  } else if (subcommand === "mcp" && (args.length === 1 || args.length === 2 && args[1] === "--terminal-tools")) {
18093
18143
  try {
18094
- const { handleMcpCommand } = await import('./mcp-BtuzLwSL.mjs');
18144
+ const { handleMcpCommand } = await import('./mcp-3lcIERfY.mjs');
18095
18145
  await handleMcpCommand(args[1] === "--terminal-tools");
18096
18146
  } catch (error) {
18097
18147
  process.stderr.write(`[very-happy mcp] Fatal: ${error instanceof Error ? error.message : String(error)}
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BRygi44L.cjs');
3
+ var index = require('./index-CXc3BQNG.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-CgOMSh1y.cjs');
8
+ require('./types-CGACQD3M.cjs');
9
9
  require('axios');
10
- require('./limits-Cs9ZqLsR.cjs');
10
+ require('./limits-WZLbGgEg.cjs');
11
11
  require('node:fs/promises');
12
12
  require('node:fs');
13
13
  require('node:path');
@@ -32,7 +32,7 @@ require('fs');
32
32
  require('node:readline');
33
33
  require('@anthropic-ai/sandbox-runtime');
34
34
  require('expo-server-sdk');
35
- require('./agentGuidance-BI4l2HRo.cjs');
35
+ require('./agentGuidance-FDBKJgGC.cjs');
36
36
  require('ink');
37
37
  require('react');
38
38
  require('ps-list');