very-happy-cli 0.2.142 → 0.2.144

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-D2LqY2to.mjs → AcpBackend-DLsPpWnc.mjs} +2 -2
  2. package/dist/{AcpBackend-DJsqfgjD.cjs → AcpBackend-DssrjZDS.cjs} +30 -30
  3. package/dist/{AcpSessionManager-CdeM5KD9.mjs → AcpSessionManager-1pAH8SdV.mjs} +1 -1
  4. package/dist/{AcpSessionManager-CTfDxziP.cjs → AcpSessionManager-DkBV80Rr.cjs} +9 -9
  5. package/dist/{agentGuidance-Cz8QVcX3.mjs → agentGuidance-CupQ9Lve.mjs} +1 -1
  6. package/dist/{agentGuidance-Bi8iBjy3.cjs → agentGuidance-D1PDVswF.cjs} +1 -1
  7. package/dist/agentHome-BaSxP7lQ.mjs +107 -0
  8. package/dist/agentHome-uf1zs2Fi.cjs +113 -0
  9. package/dist/codex/happyMcpStdioBridge.cjs +2 -2
  10. package/dist/codex/happyMcpStdioBridge.mjs +2 -2
  11. package/dist/{config-ZsBeq10u.mjs → config-CxHoQo52.mjs} +4 -4
  12. package/dist/{config-BIbYBmTd.cjs → config-kx4y9oAI.cjs} +4 -4
  13. package/dist/{index-Bom8mTuS.cjs → index-DIoSNgtt.cjs} +4 -4
  14. package/dist/{index-CYFendNf.mjs → index-Diu81aSC.mjs} +77 -28
  15. package/dist/{index-CSQZhQ0C.cjs → index-Dn0JMM8l.cjs} +250 -201
  16. package/dist/{index-BPTPrjhL.cjs → index-Dox9iD5R.cjs} +31 -31
  17. package/dist/{index-CNARLBax.mjs → index-DxEaiVzX.mjs} +4 -4
  18. package/dist/{index-CY0zmhIp.mjs → index-J6a8OHS6.mjs} +8 -8
  19. package/dist/index.cjs +4 -4
  20. package/dist/index.mjs +4 -4
  21. package/dist/{installTerminalHooks-BPJu2WVz.mjs → installTerminalHooks-BBMGk3q5.mjs} +4 -4
  22. package/dist/{installTerminalHooks-DA7SyFYW.cjs → installTerminalHooks-De7_iOOC.cjs} +4 -4
  23. package/dist/lib.cjs +5 -5
  24. package/dist/lib.mjs +2 -2
  25. package/dist/{limits-B3hngubn.cjs → limits-C_Sklt--.cjs} +7 -7
  26. package/dist/{limits-CHsz3Ba-.mjs → limits-DxArdmkZ.mjs} +8 -8
  27. package/dist/{mcp-BkWBRWFe.mjs → mcp-C1oNnlw5.mjs} +4 -4
  28. package/dist/{mcp-ySrfNOYl.cjs → mcp-xyb8dYIQ.cjs} +9 -9
  29. package/dist/{piRuntime-uX0WHVr4.cjs → piRuntime-3Vbdgv6X.cjs} +2 -2
  30. package/dist/{piRuntime-DBLUyXFr.mjs → piRuntime-CzJdE4z4.mjs} +2 -2
  31. package/dist/{piTerminal-DNr3hkzY.cjs → piTerminal-BFpwVGWr.cjs} +6 -6
  32. package/dist/{piTerminal-Bc3jSCnY.mjs → piTerminal-Do2GiKMN.mjs} +6 -6
  33. package/dist/{runGemini-eJ08cXk7.cjs → runGemini-CCdGxTF2.cjs} +24 -24
  34. package/dist/{runGemini-rgFHTnG7.mjs → runGemini-De5NRMT9.mjs} +6 -6
  35. package/dist/{runOpenClaw-GjLWwjas.mjs → runOpenClaw-C2t4DRyi.mjs} +5 -5
  36. package/dist/{runOpenClaw-D0LVzxqM.cjs → runOpenClaw-CRMUfrWk.cjs} +26 -26
  37. package/dist/{send-Bg2oqt7f.cjs → send-BA1Dgpgn.cjs} +4 -4
  38. package/dist/{send-DV8liaRN.mjs → send-l6Rj09c0.mjs} +4 -4
  39. package/dist/{sessions-DPimBZ8H.cjs → sessions-CtVcoXvG.cjs} +5 -5
  40. package/dist/{sessions-JiL4aJkC.mjs → sessions-MWLDqQk-.mjs} +4 -4
  41. package/dist/{spawn-COOcUwkG.cjs → spawn-Be4nsNuQ.cjs} +6 -6
  42. package/dist/{spawn-CnMk3LFG.mjs → spawn-DKWR-6Qc.mjs} +4 -4
  43. package/dist/{teams-DSQgHBLE.cjs → teams-CcjjNLi8.cjs} +4 -4
  44. package/dist/{teams-uHZcdX9j.mjs → teams-DMf9GNGE.mjs} +4 -4
  45. package/dist/{todo-oHWNpEx_.mjs → todo-BEXZRm1A.mjs} +3 -3
  46. package/dist/{todo-DeauuUd6.cjs → todo-EffYAnre.cjs} +5 -5
  47. package/dist/{types-Dnoxgb7G.mjs → types-D6YKR7wo.mjs} +372 -15
  48. package/dist/{types-Xd_LJRJN.cjs → types-DZ5c-9f3.cjs} +379 -13
  49. package/package.json +7 -7
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var AcpBackend = require('./AcpBackend-DJsqfgjD.cjs');
4
- var persistence = require('./limits-B3hngubn.cjs');
5
- var AcpSessionManager = require('./AcpSessionManager-CTfDxziP.cjs');
6
- var api = require('./types-Xd_LJRJN.cjs');
7
- var index = require('./index-CSQZhQ0C.cjs');
8
- var piRuntime = require('./piRuntime-uX0WHVr4.cjs');
3
+ var AcpBackend = require('./AcpBackend-DssrjZDS.cjs');
4
+ var persistence = require('./limits-C_Sklt--.cjs');
5
+ var AcpSessionManager = require('./AcpSessionManager-DkBV80Rr.cjs');
6
+ var index = require('./types-DZ5c-9f3.cjs');
7
+ var index$1 = require('./index-Dn0JMM8l.cjs');
8
+ var piRuntime = require('./piRuntime-3Vbdgv6X.cjs');
9
9
  var node_crypto = require('node:crypto');
10
10
  var path = require('node:path');
11
11
  var projectPath = require('./projectPath-ChLhdOyt.cjs');
@@ -34,7 +34,7 @@ require('fs');
34
34
  require('node:readline');
35
35
  require('@anthropic-ai/sandbox-runtime');
36
36
  require('expo-server-sdk');
37
- require('./agentGuidance-Bi8iBjy3.cjs');
37
+ require('./agentGuidance-D1PDVswF.cjs');
38
38
  require('ink');
39
39
  require('react');
40
40
  require('@anthropic-ai/claude-agent-sdk');
@@ -555,7 +555,7 @@ function resolveRequestedLegacyModelCode(models, requested) {
555
555
  }
556
556
  return null;
557
557
  }
558
- class GenericAcpPermissionHandler extends index.BasePermissionHandler {
558
+ class GenericAcpPermissionHandler extends index$1.BasePermissionHandler {
559
559
  logPrefix;
560
560
  constructor(session, agentName) {
561
561
  super(session);
@@ -589,17 +589,17 @@ function resolveSessionFlavor(agentName) {
589
589
  async function runAcp(opts) {
590
590
  const verbose = opts.verbose === true;
591
591
  const sessionTag = node_crypto.randomUUID();
592
- api.connectionState.setBackend(opts.agentName);
593
- const api$1 = await api.ApiClient.create(opts.credentials);
592
+ index.connectionState.setBackend(opts.agentName);
593
+ const api = await index.ApiClient.create(opts.credentials);
594
594
  const settings = await persistence.readSettings();
595
595
  if (!settings?.machineId) {
596
596
  throw new Error("No machine ID found in settings");
597
597
  }
598
- await api$1.getOrCreateMachine({
598
+ await api.getOrCreateMachine({
599
599
  machineId: settings.machineId,
600
- metadata: index.initialMachineMetadata
600
+ metadata: index$1.initialMachineMetadata
601
601
  });
602
- const { state, metadata } = index.createSessionMetadata({
602
+ const { state, metadata } = index$1.createSessionMetadata({
603
603
  flavor: resolveSessionFlavor(opts.agentName),
604
604
  ...process.env.VH_TEAM_OPERATION_ID ? { teamOperationId: process.env.VH_TEAM_OPERATION_ID } : {},
605
605
  machineId: settings.machineId,
@@ -607,14 +607,14 @@ async function runAcp(opts) {
607
607
  sandbox: settings.sandboxConfig
608
608
  });
609
609
  metadata.attachmentKinds = [];
610
- const response = await api$1.getOrCreateSession({ tag: sessionTag, metadata, state });
610
+ const response = await api.getOrCreateSession({ tag: sessionTag, metadata, state });
611
611
  if (response) {
612
612
  logAcp("muted", `Happy Session ID: ${response.id}`);
613
613
  }
614
614
  let session;
615
615
  let permissionHandler;
616
- const { session: initialSession, reconnectionHandle } = index.setupOfflineReconnection({
617
- api: api$1,
616
+ const { session: initialSession, reconnectionHandle } = index$1.setupOfflineReconnection({
617
+ api,
618
618
  sessionTag,
619
619
  metadata,
620
620
  state,
@@ -629,7 +629,7 @@ async function runAcp(opts) {
629
629
  session = initialSession;
630
630
  if (response) {
631
631
  try {
632
- await api.notifyDaemonSessionStarted(response.id, metadata, {
632
+ await index.notifyDaemonSessionStarted(response.id, metadata, {
633
633
  encryptionKey: persistence.encodeBase64(response.encryptionKey),
634
634
  encryptionVariant: response.encryptionVariant,
635
635
  seq: response.seq,
@@ -643,11 +643,11 @@ async function runAcp(opts) {
643
643
  permissionHandler = new GenericAcpPermissionHandler(session, opts.agentName);
644
644
  permissionHandler.reset("Previous CLI process exited before responding");
645
645
  const streamingEnabled = process.env.HAPPY_SESSION_STREAM_DISABLED !== "1";
646
- const streamRelay = new index.StreamRelay({
646
+ const streamRelay = new index$1.StreamRelay({
647
647
  send: (frame) => session.sendStreamFrame(frame)
648
648
  });
649
649
  const sessionManager = new AcpSessionManager.AcpSessionManager(streamingEnabled ? { stream: streamRelay } : {});
650
- const messageQueue = new index.MessageQueue2((mode) => index.hashObject(mode));
650
+ const messageQueue = new index$1.MessageQueue2((mode) => index$1.hashObject(mode));
651
651
  let currentPermissionMode;
652
652
  let currentModel;
653
653
  let modeSelector = null;
@@ -668,7 +668,7 @@ async function runAcp(opts) {
668
668
  return true;
669
669
  }
670
670
  try {
671
- index.writeSessionModeFile(session.sessionId, mode);
671
+ index$1.writeSessionModeFile(session.sessionId, mode);
672
672
  } catch (error) {
673
673
  persistence.logger.debug(`[${opts.agentName}] Failed to write session mode file:`, error);
674
674
  return false;
@@ -679,7 +679,7 @@ async function runAcp(opts) {
679
679
  return true;
680
680
  };
681
681
  const isAssistantVariant = process.env.HAPPY_SESSION_VARIANT === "assistant";
682
- const happyServer = await index.startHappyServer(session, {
682
+ const happyServer = await index$1.startHappyServer(session, {
683
683
  assistant: isAssistantVariant,
684
684
  ...opts.agentName === "pi" ? { onContextUsage: (contextUsage) => {
685
685
  session.updateAgentState((state2) => ({ ...state2, contextUsage }));
@@ -767,7 +767,7 @@ async function runAcp(opts) {
767
767
  return;
768
768
  }
769
769
  if (permissionModeIsFileBacked()) {
770
- const mode = index.normalizeAcpPermissionMode(requestedMode);
770
+ const mode = index$1.normalizeAcpPermissionMode(requestedMode);
771
771
  if (!mode) {
772
772
  persistence.logger.debug(`[${opts.agentName}] Ignoring unknown file-backed permission mode request: ${requestedMode}`);
773
773
  return;
@@ -1031,8 +1031,8 @@ async function runAcp(opts) {
1031
1031
  sendEnvelopes(sessionManager.mapMessage(msg));
1032
1032
  };
1033
1033
  backend.onMessage(onBackendMessage);
1034
- const titleGenerator = new index.TitleGenerator(session);
1035
- index.registerAgentAttachmentDownloads(session);
1034
+ const titleGenerator = new index$1.TitleGenerator(session);
1035
+ index$1.registerAgentAttachmentDownloads(session);
1036
1036
  let userMessageDelivery = Promise.resolve();
1037
1037
  session.onUserMessage((message) => {
1038
1038
  const downloads = session.drainAttachmentsForUserMessage();
@@ -1088,7 +1088,7 @@ async function runAcp(opts) {
1088
1088
  if (!fileBackedModeActive) {
1089
1089
  throw new Error(`${opts.agentName} does not support live permission mode changes`);
1090
1090
  }
1091
- const mode = typeof request?.mode === "string" ? index.normalizeAcpPermissionMode(request.mode) : null;
1091
+ const mode = typeof request?.mode === "string" ? index$1.normalizeAcpPermissionMode(request.mode) : null;
1092
1092
  if (!mode) {
1093
1093
  throw new Error("Invalid permission mode");
1094
1094
  }
@@ -1098,7 +1098,7 @@ async function runAcp(opts) {
1098
1098
  return { mode };
1099
1099
  }
1100
1100
  );
1101
- const disposeTermination = index.registerKillSessionHandler(session.rpcHandlerManager, async () => {
1101
+ const disposeTermination = index$1.registerKillSessionHandler(session.rpcHandlerManager, async () => {
1102
1102
  shouldExit = true;
1103
1103
  messageQueue.close();
1104
1104
  clearPendingTurn(new Error("Session terminated"));
@@ -1114,7 +1114,7 @@ async function runAcp(opts) {
1114
1114
  }
1115
1115
  session.updateMetadata((current) => ({
1116
1116
  ...current,
1117
- attachmentKinds: opts.agentName === "pi" && backend.supportsImageAttachments ? [...index.CLAUDE_ATTACHMENT_KINDS] : []
1117
+ attachmentKinds: opts.agentName === "pi" && backend.supportsImageAttachments ? [...index$1.CLAUDE_ATTACHMENT_KINDS] : []
1118
1118
  }));
1119
1119
  if (permissionModeIsFileBacked()) {
1120
1120
  fileBackedModeActive = true;
@@ -1164,13 +1164,13 @@ async function runAcp(opts) {
1164
1164
  }
1165
1165
  const prompt = todoDiscoverySent ? batch.message : `${batch.message}
1166
1166
 
1167
- ${api.BUILTIN_TODO_DISCOVERY}`;
1167
+ ${index.BUILTIN_TODO_DISCOVERY}`;
1168
1168
  const attachments = batch.attachments ?? [];
1169
- const staged = attachments.length ? await index.stageClaudeAttachments(attachments, {
1169
+ const staged = attachments.length ? await index$1.stageClaudeAttachments(attachments, {
1170
1170
  happyHomeDir: persistence.configuration.happyHomeDir,
1171
1171
  sessionId: session.sessionId
1172
1172
  }) : [];
1173
- await backend.sendPrompt(acpSessionId, index.appendStagedAttachmentsToPrompt(prompt, staged), attachments);
1173
+ await backend.sendPrompt(acpSessionId, index$1.appendStagedAttachmentsToPrompt(prompt, staged), attachments);
1174
1174
  todoDiscoverySent = true;
1175
1175
  await turnEnded;
1176
1176
  sendEnvelopes(sessionManager.endTurn(turnCancelled ? "cancelled" : "completed"));
@@ -1208,7 +1208,7 @@ ${api.BUILTIN_TODO_DISCOVERY}`;
1208
1208
  await backend.dispose();
1209
1209
  if (fileBackedPermissionMode) {
1210
1210
  try {
1211
- index.removeSessionModeFile(session.sessionId);
1211
+ index$1.removeSessionModeFile(session.sessionId);
1212
1212
  } catch (error) {
1213
1213
  persistence.logger.debug(`[${opts.agentName}] Failed to remove session mode file:`, error);
1214
1214
  }
@@ -1,11 +1,11 @@
1
- import { q as query } from './index-CYFendNf.mjs';
1
+ import { q as query } from './index-Diu81aSC.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-Dnoxgb7G.mjs';
6
+ import './types-D6YKR7wo.mjs';
7
7
  import 'axios';
8
- import './limits-CHsz3Ba-.mjs';
8
+ import './limits-DxArdmkZ.mjs';
9
9
  import 'node:fs/promises';
10
10
  import 'node:fs';
11
11
  import 'node:path';
@@ -30,7 +30,7 @@ import 'fs';
30
30
  import 'node:readline';
31
31
  import '@anthropic-ai/sandbox-runtime';
32
32
  import 'expo-server-sdk';
33
- import './agentGuidance-Cz8QVcX3.mjs';
33
+ import './agentGuidance-CupQ9Lve.mjs';
34
34
  import 'ink';
35
35
  import 'react';
36
36
  import 'ps-list';
@@ -1,10 +1,10 @@
1
- import { D as DefaultTransport, A as AcpBackend } from './AcpBackend-D2LqY2to.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-D2LqY2to.mjs';
3
- import { f as readSettings, g as encodeBase64, l as logger, c as configuration } from './limits-CHsz3Ba-.mjs';
4
- import { A as AcpSessionManager } from './AcpSessionManager-CdeM5KD9.mjs';
5
- import { h as connectionState, A as ApiClient, n as notifyDaemonSessionStarted, j as BUILTIN_TODO_DISCOVERY } from './types-Dnoxgb7G.mjs';
6
- import { k as initialMachineMetadata, m as createSessionMetadata, n as setupOfflineReconnection, o as StreamRelay, p as MessageQueue2, u as hashObject, v as startHappyServer, x as registerAgentAttachmentDownloads, T as TitleGenerator, y as registerKillSessionHandler, C as CLAUDE_ATTACHMENT_KINDS, z as stageClaudeAttachments, B as appendStagedAttachmentsToPrompt, E as BasePermissionHandler, F as writeSessionModeFile, H as normalizeAcpPermissionMode, I as removeSessionModeFile } from './index-CYFendNf.mjs';
7
- import { p as preparePiTeamsRuntime } from './piRuntime-DBLUyXFr.mjs';
1
+ import { D as DefaultTransport, A as AcpBackend } from './AcpBackend-DLsPpWnc.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-DLsPpWnc.mjs';
3
+ import { r as readSettings, g as encodeBase64, l as logger, c as configuration } from './limits-DxArdmkZ.mjs';
4
+ import { A as AcpSessionManager } from './AcpSessionManager-1pAH8SdV.mjs';
5
+ import { m as connectionState, A as ApiClient, n as notifyDaemonSessionStarted, o as BUILTIN_TODO_DISCOVERY } from './types-D6YKR7wo.mjs';
6
+ import { k as initialMachineMetadata, m as createSessionMetadata, n as setupOfflineReconnection, o as StreamRelay, p as MessageQueue2, u as hashObject, v as startHappyServer, x as registerAgentAttachmentDownloads, T as TitleGenerator, y as registerKillSessionHandler, C as CLAUDE_ATTACHMENT_KINDS, z as stageClaudeAttachments, B as appendStagedAttachmentsToPrompt, E as BasePermissionHandler, F as writeSessionModeFile, H as normalizeAcpPermissionMode, I as removeSessionModeFile } from './index-Diu81aSC.mjs';
7
+ import { p as preparePiTeamsRuntime } from './piRuntime-CzJdE4z4.mjs';
8
8
  import { randomUUID } from 'node:crypto';
9
9
  import { join } from 'node:path';
10
10
  import { p as projectPath } from './projectPath-CSpqWdxp.mjs';
@@ -33,7 +33,7 @@ import 'fs';
33
33
  import 'node:readline';
34
34
  import '@anthropic-ai/sandbox-runtime';
35
35
  import 'expo-server-sdk';
36
- import './agentGuidance-Cz8QVcX3.mjs';
36
+ import './agentGuidance-CupQ9Lve.mjs';
37
37
  import 'ink';
38
38
  import 'react';
39
39
  import '@anthropic-ai/claude-agent-sdk';
package/dist/index.cjs CHANGED
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
3
  require('chalk');
4
- require('./index-CSQZhQ0C.cjs');
5
- require('./limits-B3hngubn.cjs');
4
+ require('./index-Dn0JMM8l.cjs');
5
+ require('./limits-C_Sklt--.cjs');
6
6
  require('zod');
7
- require('./types-Xd_LJRJN.cjs');
7
+ require('./types-DZ5c-9f3.cjs');
8
8
  require('node:child_process');
9
9
  require('node:os');
10
10
  require('node:crypto');
@@ -15,7 +15,7 @@ require('node:fs');
15
15
  require('./projectPath-ChLhdOyt.cjs');
16
16
  require('path');
17
17
  require('url');
18
- require('./agentGuidance-Bi8iBjy3.cjs');
18
+ require('./agentGuidance-D1PDVswF.cjs');
19
19
  require('node:fs/promises');
20
20
  require('fs/promises');
21
21
  require('ink');
package/dist/index.mjs CHANGED
@@ -1,8 +1,8 @@
1
1
  import 'chalk';
2
- import './index-CYFendNf.mjs';
3
- import './limits-CHsz3Ba-.mjs';
2
+ import './index-Diu81aSC.mjs';
3
+ import './limits-DxArdmkZ.mjs';
4
4
  import 'zod';
5
- import './types-Dnoxgb7G.mjs';
5
+ import './types-D6YKR7wo.mjs';
6
6
  import 'node:child_process';
7
7
  import 'node:os';
8
8
  import 'node:crypto';
@@ -13,7 +13,7 @@ import 'node:fs';
13
13
  import './projectPath-CSpqWdxp.mjs';
14
14
  import 'path';
15
15
  import 'url';
16
- import './agentGuidance-Cz8QVcX3.mjs';
16
+ import './agentGuidance-CupQ9Lve.mjs';
17
17
  import 'node:fs/promises';
18
18
  import 'fs/promises';
19
19
  import 'ink';
@@ -4,13 +4,13 @@ import { homedir } from 'node:os';
4
4
  import { spawnSync } from 'node:child_process';
5
5
  import chalk from 'chalk';
6
6
  import { p as projectPath } from './projectPath-CSpqWdxp.mjs';
7
- import { t as tmuxSupportsSessionEnv } from './index-CYFendNf.mjs';
7
+ import { t as tmuxSupportsSessionEnv } from './index-Diu81aSC.mjs';
8
8
  import 'path';
9
9
  import 'url';
10
10
  import 'node:crypto';
11
- import './types-Dnoxgb7G.mjs';
11
+ import './types-D6YKR7wo.mjs';
12
12
  import 'axios';
13
- import './limits-CHsz3Ba-.mjs';
13
+ import './limits-DxArdmkZ.mjs';
14
14
  import 'node:fs/promises';
15
15
  import 'zod';
16
16
  import 'tweetnacl';
@@ -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-Cz8QVcX3.mjs';
32
+ import './agentGuidance-CupQ9Lve.mjs';
33
33
  import 'ink';
34
34
  import 'react';
35
35
  import '@anthropic-ai/claude-agent-sdk';
@@ -6,13 +6,13 @@ var os = require('node:os');
6
6
  var node_child_process = require('node:child_process');
7
7
  var chalk = require('chalk');
8
8
  var projectPath = require('./projectPath-ChLhdOyt.cjs');
9
- var index = require('./index-CSQZhQ0C.cjs');
9
+ var index = require('./index-Dn0JMM8l.cjs');
10
10
  require('path');
11
11
  require('url');
12
12
  require('node:crypto');
13
- require('./types-Xd_LJRJN.cjs');
13
+ require('./types-DZ5c-9f3.cjs');
14
14
  require('axios');
15
- require('./limits-B3hngubn.cjs');
15
+ require('./limits-C_Sklt--.cjs');
16
16
  require('node:fs/promises');
17
17
  require('zod');
18
18
  require('tweetnacl');
@@ -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-Bi8iBjy3.cjs');
34
+ require('./agentGuidance-D1PDVswF.cjs');
35
35
  require('ink');
36
36
  require('react');
37
37
  require('@anthropic-ai/claude-agent-sdk');
package/dist/lib.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var api = require('./types-Xd_LJRJN.cjs');
4
- var persistence = require('./limits-B3hngubn.cjs');
3
+ var index = require('./types-DZ5c-9f3.cjs');
4
+ var persistence = require('./limits-C_Sklt--.cjs');
5
5
  require('axios');
6
6
  require('node:events');
7
7
  require('socket.io-client');
@@ -33,8 +33,8 @@ require('node:util');
33
33
 
34
34
 
35
35
 
36
- exports.ApiClient = api.ApiClient;
37
- exports.ApiSessionClient = api.ApiSessionClient;
38
- exports.RawJSONLinesSchema = api.RawJSONLinesSchema;
36
+ exports.ApiClient = index.ApiClient;
37
+ exports.ApiSessionClient = index.ApiSessionClient;
38
+ exports.RawJSONLinesSchema = index.RawJSONLinesSchema;
39
39
  exports.configuration = persistence.configuration;
40
40
  exports.logger = persistence.logger;
package/dist/lib.mjs CHANGED
@@ -1,5 +1,5 @@
1
- export { A as ApiClient, a as ApiSessionClient, R as RawJSONLinesSchema } from './types-Dnoxgb7G.mjs';
2
- export { c as configuration, l as logger } from './limits-CHsz3Ba-.mjs';
1
+ export { A as ApiClient, a as ApiSessionClient, R as RawJSONLinesSchema } from './types-D6YKR7wo.mjs';
2
+ export { c as configuration, l as logger } from './limits-DxArdmkZ.mjs';
3
3
  import 'axios';
4
4
  import 'node:events';
5
5
  import 'socket.io-client';
@@ -30,7 +30,7 @@ function _interopNamespaceDefault(e) {
30
30
  var z__namespace = /*#__PURE__*/_interopNamespaceDefault(z);
31
31
 
32
32
  var name = "very-happy-cli";
33
- var version = "0.2.142";
33
+ var version = "0.2.144";
34
34
  var description = "Remote multi-agent workspace CLI with deep Claude integration, native terminal streaming, and self-hosting.";
35
35
  var author = "Kirill Dubovitskiy";
36
36
  var contributors = [
@@ -147,12 +147,12 @@ var dependencies = {
147
147
  zod: "^4.0.0"
148
148
  };
149
149
  var optionalDependencies = {
150
- "very-happy-tools-arm64-darwin": "0.2.142",
151
- "very-happy-tools-x64-darwin": "0.2.142",
152
- "very-happy-tools-arm64-linux": "0.2.142",
153
- "very-happy-tools-x64-linux": "0.2.142",
154
- "very-happy-tools-arm64-win32": "0.2.142",
155
- "very-happy-tools-x64-win32": "0.2.142"
150
+ "very-happy-tools-arm64-darwin": "0.2.144",
151
+ "very-happy-tools-x64-darwin": "0.2.144",
152
+ "very-happy-tools-arm64-linux": "0.2.144",
153
+ "very-happy-tools-x64-linux": "0.2.144",
154
+ "very-happy-tools-arm64-win32": "0.2.144",
155
+ "very-happy-tools-x64-win32": "0.2.144"
156
156
  };
157
157
  var devDependencies = {
158
158
  "@slopus/happy-wire": "workspace:*",
@@ -9,7 +9,7 @@ import chalk from 'chalk';
9
9
  import { inspect } from 'node:util';
10
10
 
11
11
  var name = "very-happy-cli";
12
- var version = "0.2.142";
12
+ var version = "0.2.144";
13
13
  var description = "Remote multi-agent workspace CLI with deep Claude integration, native terminal streaming, and self-hosting.";
14
14
  var author = "Kirill Dubovitskiy";
15
15
  var contributors = [
@@ -126,12 +126,12 @@ var dependencies = {
126
126
  zod: "^4.0.0"
127
127
  };
128
128
  var optionalDependencies = {
129
- "very-happy-tools-arm64-darwin": "0.2.142",
130
- "very-happy-tools-x64-darwin": "0.2.142",
131
- "very-happy-tools-arm64-linux": "0.2.142",
132
- "very-happy-tools-x64-linux": "0.2.142",
133
- "very-happy-tools-arm64-win32": "0.2.142",
134
- "very-happy-tools-x64-win32": "0.2.142"
129
+ "very-happy-tools-arm64-darwin": "0.2.144",
130
+ "very-happy-tools-x64-darwin": "0.2.144",
131
+ "very-happy-tools-arm64-linux": "0.2.144",
132
+ "very-happy-tools-x64-linux": "0.2.144",
133
+ "very-happy-tools-arm64-win32": "0.2.144",
134
+ "very-happy-tools-x64-win32": "0.2.144"
135
135
  };
136
136
  var devDependencies = {
137
137
  "@slopus/happy-wire": "workspace:*",
@@ -1162,4 +1162,4 @@ function prepareClipboardHistoryText(input) {
1162
1162
  return { text, truncated: true, totalBytes: prepared.totalBytes };
1163
1163
  }
1164
1164
 
1165
- export { libsodiumPublicKeyFromSecretKey as A, getRandomBytes as B, CLIPBOARD_TOOL_NAME as C, redactLogValue as D, ensurePrivateDirectory as E, hardenPrivateFile as F, readCredentials as G, readSettingsOutcome as H, updateSettings as I, encodeBase64Url as J, writeCredentialsLegacy as K, writeCredentialsDataKey as L, decryptWithDataKey as M, decryptLegacy as N, persistSession as O, acquireDaemonLock as P, deletePersistedSessions as Q, writeDaemonState as R, writeSettings as S, releaseDaemonLock as T, clearCredentials as U, clearMachineId as V, SandboxConfigSchema as W, getLatestDaemonLog as X, persistence as Y, CLIPBOARD_TOOL_TITLE as a, CLIPBOARD_TOOL_DESCRIPTION as b, configuration as c, readCredentialsForConfiguredRelay as d, CLIPBOARD_MAX_BYTES as e, readSettings as f, encodeBase64 as g, ensurePrivateDirectorySync as h, hardenPrivateFileSync as i, encrypt as j, decrypt as k, logger as l, decodeBase64 as m, normalizeHttpEndpoint as n, readDaemonState as o, packageJson as p, clearDaemonState as q, readPersistedSessions as r, decryptBlob as s, prepareClipboardText as t, prepareClipboardHistoryText as u, credentialRelayProblem as v, writePrivateFileSync as w, readTrackedClaudeSessionIds as x, readTrackedCodexThreadIds as y, libsodiumEncryptForPublicKey as z };
1165
+ export { libsodiumEncryptForPublicKey as A, libsodiumPublicKeyFromSecretKey as B, CLIPBOARD_TOOL_NAME as C, getRandomBytes as D, redactLogValue as E, ensurePrivateDirectory as F, hardenPrivateFile as G, readCredentials as H, readSettingsOutcome as I, encodeBase64Url as J, writeCredentialsLegacy as K, writeCredentialsDataKey as L, decryptWithDataKey as M, decryptLegacy as N, persistSession as O, acquireDaemonLock as P, deletePersistedSessions as Q, writeDaemonState as R, writeSettings as S, releaseDaemonLock as T, clearCredentials as U, clearMachineId as V, SandboxConfigSchema as W, getLatestDaemonLog as X, persistence as Y, CLIPBOARD_TOOL_TITLE as a, CLIPBOARD_TOOL_DESCRIPTION as b, configuration as c, readPersistedSessions as d, readCredentialsForConfiguredRelay as e, CLIPBOARD_MAX_BYTES as f, encodeBase64 as g, ensurePrivateDirectorySync as h, hardenPrivateFileSync as i, encrypt as j, decrypt as k, logger as l, decodeBase64 as m, normalizeHttpEndpoint as n, readDaemonState as o, packageJson as p, clearDaemonState as q, readSettings as r, decryptBlob as s, prepareClipboardText as t, updateSettings as u, prepareClipboardHistoryText as v, writePrivateFileSync as w, credentialRelayProblem as x, readTrackedClaudeSessionIds as y, readTrackedCodexThreadIds as z };
@@ -1,10 +1,10 @@
1
- import { r as registerTeamsTools, P as PREVIEW_TOOL_NAME, a as PREVIEW_TOOL_TITLE, b as PREVIEW_TOOL_DESCRIPTION } from './agentGuidance-Cz8QVcX3.mjs';
1
+ import { r as registerTeamsTools, P as PREVIEW_TOOL_NAME, a as PREVIEW_TOOL_TITLE, b as PREVIEW_TOOL_DESCRIPTION } from './agentGuidance-CupQ9Lve.mjs';
2
2
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
3
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
4
4
  import { z } from 'zod';
5
- import { p as pushClipboardViaDaemon, f as pushFilePreviewViaDaemon, g as setTerminalTitleViaDaemon } from './types-Dnoxgb7G.mjs';
6
- import { l as logger, C as CLIPBOARD_TOOL_NAME, a as CLIPBOARD_TOOL_TITLE, b as CLIPBOARD_TOOL_DESCRIPTION, e as CLIPBOARD_MAX_BYTES } from './limits-CHsz3Ba-.mjs';
7
- import { h as checkPreviewPath, j as registerAssistantSessionTools } from './index-CYFendNf.mjs';
5
+ import { j as pushClipboardViaDaemon, k as pushFilePreviewViaDaemon, l as setTerminalTitleViaDaemon } from './types-D6YKR7wo.mjs';
6
+ import { l as logger, C as CLIPBOARD_TOOL_NAME, a as CLIPBOARD_TOOL_TITLE, b as CLIPBOARD_TOOL_DESCRIPTION, f as CLIPBOARD_MAX_BYTES } from './limits-DxArdmkZ.mjs';
7
+ import { h as checkPreviewPath, j as registerAssistantSessionTools } from './index-Diu81aSC.mjs';
8
8
  import 'node:fs/promises';
9
9
  import 'node:os';
10
10
  import 'node:crypto';
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var agentGuidance = require('./agentGuidance-Bi8iBjy3.cjs');
3
+ var agentGuidance = require('./agentGuidance-D1PDVswF.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 z = require('zod');
7
- var api = require('./types-Xd_LJRJN.cjs');
8
- var persistence = require('./limits-B3hngubn.cjs');
9
- var index = require('./index-CSQZhQ0C.cjs');
7
+ var index = require('./types-DZ5c-9f3.cjs');
8
+ var persistence = require('./limits-C_Sklt--.cjs');
9
+ var index$1 = require('./index-Dn0JMM8l.cjs');
10
10
  require('node:fs/promises');
11
11
  require('node:os');
12
12
  require('node:crypto');
@@ -67,7 +67,7 @@ function registerMcpTools(server, surface, terminalId = null) {
67
67
  }
68
68
  }, async (args) => {
69
69
  persistence.logger.debug(`[MCP] copy_to_clipboard called (${args.text.length} chars)`);
70
- const result = await api.pushClipboardViaDaemon(args.text, terminalId ?? void 0);
70
+ const result = await index.pushClipboardViaDaemon(args.text, terminalId ?? void 0);
71
71
  if (result.delivered) {
72
72
  const note = result.truncated ? ` (truncated to ${persistence.CLIPBOARD_MAX_BYTES / 1024}KB \u2014 original was ${result.totalBytes} bytes)` : "";
73
73
  return {
@@ -95,9 +95,9 @@ function registerMcpTools(server, surface, terminalId = null) {
95
95
  mode: z.z.enum(["file", "diff"]).optional().describe("'file' (default) previews the file; 'diff' is reserved and currently falls back to 'file'")
96
96
  }
97
97
  }, async (args) => {
98
- const verdict = index.checkPreviewPath(args.path);
98
+ const verdict = index$1.checkPreviewPath(args.path);
99
99
  if (verdict.deniedReason) return { content: [{ type: "text", text: verdict.deniedReason }], isError: true };
100
- const result = await api.pushFilePreviewViaDaemon(terminalId, verdict.resolved, args.mode ?? "file");
100
+ const result = await index.pushFilePreviewViaDaemon(terminalId, verdict.resolved, args.mode ?? "file");
101
101
  return {
102
102
  content: [{ type: "text", text: result.delivered ? `Queued a preview request for ${verdict.resolved}. This does not confirm that a browser opened it.` : `Failed to request preview: ${result.error || "unknown error"}` }],
103
103
  isError: !result.delivered
@@ -111,7 +111,7 @@ function registerMcpTools(server, surface, terminalId = null) {
111
111
  }
112
112
  }, async (args) => {
113
113
  persistence.logger.debug(`[MCP] change_title called for terminal ${terminalId}`);
114
- const result = await api.setTerminalTitleViaDaemon(terminalId, args.title);
114
+ const result = await index.setTerminalTitleViaDaemon(terminalId, args.title);
115
115
  if (result.ok) {
116
116
  return {
117
117
  content: [{ type: "text", text: `Successfully changed terminal title to: "${args.title}"` }],
@@ -128,7 +128,7 @@ function registerMcpTools(server, surface, terminalId = null) {
128
128
  });
129
129
  }
130
130
  if (surface === "assistant" && !process.env.VH_TEAM_SCOPE_FILE) {
131
- index.registerAssistantSessionTools(server);
131
+ index$1.registerAssistantSessionTools(server);
132
132
  }
133
133
  }
134
134
  async function handleMcpCommand(terminalToolsOnly = false) {
@@ -3,8 +3,8 @@
3
3
  var promises = require('node:fs/promises');
4
4
  var node_crypto = require('node:crypto');
5
5
  var path = require('node:path');
6
- var persistence = require('./limits-B3hngubn.cjs');
7
- var index = require('./index-CSQZhQ0C.cjs');
6
+ var persistence = require('./limits-C_Sklt--.cjs');
7
+ var index = require('./index-Dn0JMM8l.cjs');
8
8
 
9
9
  async function publish(path, content, mode) {
10
10
  const temporary = `${path}.${node_crypto.randomUUID()}.new`;
@@ -1,8 +1,8 @@
1
1
  import { mkdir, chmod, writeFile, rename } from 'node:fs/promises';
2
2
  import { randomUUID } from 'node:crypto';
3
3
  import { join } from 'node:path';
4
- import { c as configuration } from './limits-CHsz3Ba-.mjs';
5
- import { P as PI_TEAMS_EXTENSION } from './index-CYFendNf.mjs';
4
+ import { c as configuration } from './limits-DxArdmkZ.mjs';
5
+ import { P as PI_TEAMS_EXTENSION } from './index-Diu81aSC.mjs';
6
6
 
7
7
  async function publish(path, content, mode) {
8
8
  const temporary = `${path}.${randomUUID()}.new`;
@@ -5,21 +5,21 @@ var node_crypto = require('node:crypto');
5
5
  var node_http = require('node:http');
6
6
  var mcp_js = require('@modelcontextprotocol/sdk/server/mcp.js');
7
7
  var streamableHttp_js = require('@modelcontextprotocol/sdk/server/streamableHttp.js');
8
- var piRuntime = require('./piRuntime-uX0WHVr4.cjs');
9
- var mcp = require('./mcp-ySrfNOYl.cjs');
10
- require('./agentGuidance-Bi8iBjy3.cjs');
8
+ var piRuntime = require('./piRuntime-3Vbdgv6X.cjs');
9
+ var mcp = require('./mcp-xyb8dYIQ.cjs');
10
+ require('./agentGuidance-D1PDVswF.cjs');
11
11
  require('node:fs/promises');
12
12
  require('node:os');
13
13
  require('zod');
14
- require('./limits-B3hngubn.cjs');
14
+ require('./limits-C_Sklt--.cjs');
15
15
  require('axios');
16
16
  require('tweetnacl');
17
17
  require('socket.io-client');
18
- require('./types-Xd_LJRJN.cjs');
18
+ require('./types-DZ5c-9f3.cjs');
19
19
  require('node:fs');
20
20
  require('node:path');
21
21
  var terminalToolContext = require('./terminalToolContext-DoV9Gs7K.cjs');
22
- require('./index-CSQZhQ0C.cjs');
22
+ require('./index-Dn0JMM8l.cjs');
23
23
  require('chalk');
24
24
  require('cross-spawn');
25
25
  require('node:readline');
@@ -3,21 +3,21 @@ import { randomUUID } from 'node:crypto';
3
3
  import { createServer } from 'node:http';
4
4
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
5
5
  import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
6
- import { p as preparePiTeamsRuntime } from './piRuntime-DBLUyXFr.mjs';
7
- import { registerMcpTools } from './mcp-BkWBRWFe.mjs';
8
- import './agentGuidance-Cz8QVcX3.mjs';
6
+ import { p as preparePiTeamsRuntime } from './piRuntime-CzJdE4z4.mjs';
7
+ import { registerMcpTools } from './mcp-C1oNnlw5.mjs';
8
+ import './agentGuidance-CupQ9Lve.mjs';
9
9
  import 'node:fs/promises';
10
10
  import 'node:os';
11
11
  import 'zod';
12
- import './limits-CHsz3Ba-.mjs';
12
+ import './limits-DxArdmkZ.mjs';
13
13
  import 'axios';
14
14
  import 'tweetnacl';
15
15
  import 'socket.io-client';
16
- import './types-Dnoxgb7G.mjs';
16
+ import './types-D6YKR7wo.mjs';
17
17
  import 'node:fs';
18
18
  import 'node:path';
19
19
  import { r as resolveMcpTerminalId } from './terminalToolContext-CFeGeaNm.mjs';
20
- import './index-CYFendNf.mjs';
20
+ import './index-Diu81aSC.mjs';
21
21
  import 'chalk';
22
22
  import 'cross-spawn';
23
23
  import 'node:readline';