very-happy-cli 0.2.142 → 0.2.143

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 (47) hide show
  1. package/dist/{AcpBackend-DJsqfgjD.cjs → AcpBackend-B8oehrfU.cjs} +2 -2
  2. package/dist/{AcpBackend-D2LqY2to.mjs → AcpBackend-LEgn9vol.mjs} +2 -2
  3. package/dist/{AcpSessionManager-CTfDxziP.cjs → AcpSessionManager-BomdfyhZ.cjs} +1 -1
  4. package/dist/{AcpSessionManager-CdeM5KD9.mjs → AcpSessionManager-Yfbs5bi2.mjs} +1 -1
  5. package/dist/{agentGuidance-Cz8QVcX3.mjs → agentGuidance-BU4hxm8M.mjs} +1 -1
  6. package/dist/{agentGuidance-Bi8iBjy3.cjs → agentGuidance-CJSl54ua.cjs} +1 -1
  7. package/dist/codex/happyMcpStdioBridge.cjs +2 -2
  8. package/dist/codex/happyMcpStdioBridge.mjs +2 -2
  9. package/dist/{config-BIbYBmTd.cjs → config-CfqWoHmO.cjs} +4 -4
  10. package/dist/{config-ZsBeq10u.mjs → config-euZ_K5Lo.mjs} +4 -4
  11. package/dist/{index-Bom8mTuS.cjs → index-BREtikhm.cjs} +4 -4
  12. package/dist/{index-BPTPrjhL.cjs → index-Bj68y6ee.cjs} +7 -7
  13. package/dist/{index-CSQZhQ0C.cjs → index-C510dSUn.cjs} +32 -28
  14. package/dist/{index-CYFendNf.mjs → index-DoiG88oX.mjs} +28 -24
  15. package/dist/{index-CNARLBax.mjs → index-PM_SsRpw.mjs} +4 -4
  16. package/dist/{index-CY0zmhIp.mjs → index-ZOMC8Gzn.mjs} +8 -8
  17. package/dist/index.cjs +4 -4
  18. package/dist/index.mjs +4 -4
  19. package/dist/{installTerminalHooks-BPJu2WVz.mjs → installTerminalHooks-BGVQqbgq.mjs} +4 -4
  20. package/dist/{installTerminalHooks-DA7SyFYW.cjs → installTerminalHooks-C_jraM1j.cjs} +4 -4
  21. package/dist/lib.cjs +2 -2
  22. package/dist/lib.mjs +2 -2
  23. package/dist/{limits-B3hngubn.cjs → limits-B3oVgqBJ.cjs} +7 -7
  24. package/dist/{limits-CHsz3Ba-.mjs → limits-uABU-yq3.mjs} +7 -7
  25. package/dist/{mcp-BkWBRWFe.mjs → mcp-CfbTQXyh.mjs} +4 -4
  26. package/dist/{mcp-ySrfNOYl.cjs → mcp-G-3lL_KH.cjs} +4 -4
  27. package/dist/{piRuntime-DBLUyXFr.mjs → piRuntime-BE6iYQwU.mjs} +2 -2
  28. package/dist/{piRuntime-uX0WHVr4.cjs → piRuntime-CWE-1W-y.cjs} +2 -2
  29. package/dist/{piTerminal-DNr3hkzY.cjs → piTerminal-Dyc_9pGP.cjs} +6 -6
  30. package/dist/{piTerminal-Bc3jSCnY.mjs → piTerminal-rqKn1_Zy.mjs} +6 -6
  31. package/dist/{runGemini-rgFHTnG7.mjs → runGemini-BMlXIaTL.mjs} +6 -6
  32. package/dist/{runGemini-eJ08cXk7.cjs → runGemini-C6qMFzcn.cjs} +6 -6
  33. package/dist/{runOpenClaw-D0LVzxqM.cjs → runOpenClaw-C2_aCP7v.cjs} +5 -5
  34. package/dist/{runOpenClaw-GjLWwjas.mjs → runOpenClaw-CoO5Vp3S.mjs} +5 -5
  35. package/dist/{send-DV8liaRN.mjs → send-CBrJylJc.mjs} +4 -4
  36. package/dist/{send-Bg2oqt7f.cjs → send-DGVwmB-p.cjs} +4 -4
  37. package/dist/{sessions-JiL4aJkC.mjs → sessions-DbLubh2N.mjs} +4 -4
  38. package/dist/{sessions-DPimBZ8H.cjs → sessions-DyQXMN-8.cjs} +4 -4
  39. package/dist/{spawn-COOcUwkG.cjs → spawn-DIyFOn3W.cjs} +4 -4
  40. package/dist/{spawn-CnMk3LFG.mjs → spawn-wkkxEGdF.mjs} +4 -4
  41. package/dist/{teams-uHZcdX9j.mjs → teams-BTyVFK3P.mjs} +4 -4
  42. package/dist/{teams-DSQgHBLE.cjs → teams-QOkGFjkJ.cjs} +4 -4
  43. package/dist/{todo-oHWNpEx_.mjs → todo-DoLkqdBe.mjs} +3 -3
  44. package/dist/{todo-DeauuUd6.cjs → todo-Du6pjwx_.cjs} +3 -3
  45. package/dist/{types-Xd_LJRJN.cjs → types-6__wqmmP.cjs} +52 -5
  46. package/dist/{types-Dnoxgb7G.mjs → types-BG4gFjLL.mjs} +52 -5
  47. package/package.json +7 -7
@@ -4,15 +4,15 @@ var os = require('node:os');
4
4
  var promises = require('node:fs/promises');
5
5
  var z = require('zod');
6
6
  var node_crypto = require('node:crypto');
7
- var agentGuidance = require('./agentGuidance-Bi8iBjy3.cjs');
8
- var persistence = require('./limits-B3hngubn.cjs');
7
+ var agentGuidance = require('./agentGuidance-CJSl54ua.cjs');
8
+ var persistence = require('./limits-B3oVgqBJ.cjs');
9
9
  var path = require('node:path');
10
- var index = require('./index-CSQZhQ0C.cjs');
10
+ var index = require('./index-C510dSUn.cjs');
11
11
  require('node:fs');
12
12
  require('tweetnacl');
13
13
  require('chalk');
14
14
  require('node:util');
15
- require('./types-Xd_LJRJN.cjs');
15
+ require('./types-6__wqmmP.cjs');
16
16
  require('axios');
17
17
  require('node:events');
18
18
  require('socket.io-client');
@@ -1,6 +1,6 @@
1
- import { d as readCredentialsForConfiguredRelay, c as configuration } from './limits-CHsz3Ba-.mjs';
2
- import { e as createBuiltinTodoClient, B as BUILTIN_TODO_SKILL } from './types-Dnoxgb7G.mjs';
3
- import { c as readTeamScope, t as teamScopePath } from './agentGuidance-Cz8QVcX3.mjs';
1
+ import { d as readCredentialsForConfiguredRelay, c as configuration } from './limits-uABU-yq3.mjs';
2
+ import { e as createBuiltinTodoClient, B as BUILTIN_TODO_SKILL } from './types-BG4gFjLL.mjs';
3
+ import { c as readTeamScope, t as teamScopePath } from './agentGuidance-BU4hxm8M.mjs';
4
4
  import 'node:fs/promises';
5
5
  import 'node:fs';
6
6
  import 'node:os';
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var persistence = require('./limits-B3hngubn.cjs');
4
- var api = require('./types-Xd_LJRJN.cjs');
5
- var agentGuidance = require('./agentGuidance-Bi8iBjy3.cjs');
3
+ var persistence = require('./limits-B3oVgqBJ.cjs');
4
+ var api = require('./types-6__wqmmP.cjs');
5
+ var agentGuidance = require('./agentGuidance-CJSl54ua.cjs');
6
6
  require('node:fs/promises');
7
7
  require('node:fs');
8
8
  require('node:os');
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var axios = require('axios');
4
- var persistence = require('./limits-B3hngubn.cjs');
4
+ var persistence = require('./limits-B3oVgqBJ.cjs');
5
5
  var node_events = require('node:events');
6
6
  var socket_ioClient = require('socket.io-client');
7
7
  var z = require('zod');
@@ -1377,6 +1377,40 @@ class RpcHandlerManager {
1377
1377
  }
1378
1378
  }
1379
1379
 
1380
+ function describeSocketAckDrop(drop) {
1381
+ switch (drop.reason) {
1382
+ case "no-ack":
1383
+ return "no ack callback on the frame (re-delivered after a transport close?); response dropped";
1384
+ case "handler-threw":
1385
+ return `handler threw: ${drop.error instanceof Error ? drop.error.message : String(drop.error)}`;
1386
+ case "ack-threw":
1387
+ return `ack callback threw: ${drop.error instanceof Error ? drop.error.message : String(drop.error)}`;
1388
+ }
1389
+ }
1390
+ function safeAck(ack, onDrop) {
1391
+ return (value) => {
1392
+ if (typeof ack !== "function") {
1393
+ onDrop({ reason: "no-ack" });
1394
+ return;
1395
+ }
1396
+ try {
1397
+ ack(value);
1398
+ } catch (error) {
1399
+ onDrop({ reason: "ack-threw", error });
1400
+ }
1401
+ };
1402
+ }
1403
+ async function answerSocketRequest(ack, run, onDrop) {
1404
+ let value;
1405
+ try {
1406
+ value = await run();
1407
+ } catch (error) {
1408
+ onDrop({ reason: "handler-threw", error });
1409
+ return;
1410
+ }
1411
+ safeAck(ack, onDrop)(value);
1412
+ }
1413
+
1380
1414
  function run$1(args, options) {
1381
1415
  const RUNNER_PATH = path.resolve(path.join(projectPath.projectPath(), "scripts", "ripgrep_launcher.cjs"));
1382
1416
  return new Promise((resolve2, reject) => {
@@ -3279,7 +3313,11 @@ class ApiSessionClient extends node_events.EventEmitter {
3279
3313
  void this.connectSessionRelay();
3280
3314
  });
3281
3315
  this.socket.on("rpc-request", async (data, callback) => {
3282
- callback(await this.rpcHandlerManager.handleRequest(data));
3316
+ await answerSocketRequest(
3317
+ callback,
3318
+ () => this.rpcHandlerManager.handleRequest(data),
3319
+ (drop) => persistence.logger.debug(`[API] RPC ${data?.method} unanswered \u2014 ${describeSocketAckDrop(drop)}`)
3320
+ );
3283
3321
  });
3284
3322
  this.socket.on("disconnect", (reason) => {
3285
3323
  persistence.logger.debug(`[API] Socket disconnected: ${reason}`);
@@ -3715,9 +3753,14 @@ class ApiSessionClient extends node_events.EventEmitter {
3715
3753
  persistence.logger.debug(`[API] Session connected to regional relay ${assignment.relayId}`);
3716
3754
  });
3717
3755
  relaySocket.on("rpc-request", async (data, callback) => {
3718
- callback(await this.rpcHandlerManager.handleRequest(data));
3756
+ await answerSocketRequest(
3757
+ callback,
3758
+ () => this.rpcHandlerManager.handleRequest(data),
3759
+ (drop) => persistence.logger.debug(`[API] Relay RPC ${data?.method} unanswered \u2014 ${describeSocketAckDrop(drop)}`)
3760
+ );
3719
3761
  });
3720
- relaySocket.on("session-message-deliver", async (data, callback) => {
3762
+ relaySocket.on("session-message-deliver", async (data, rawCallback) => {
3763
+ const callback = safeAck(rawCallback, (drop) => persistence.logger.debug(`[API] session-message-deliver unanswered \u2014 ${describeSocketAckDrop(drop)}`));
3721
3764
  if (data?.sessionId !== this.sessionId || !Array.isArray(data.messages) || data.messages.length === 0 || data.messages.length > 50) {
3722
3765
  callback({ ok: false, error: "Invalid session message request" });
3723
3766
  return;
@@ -15750,7 +15793,11 @@ class ApiMachineClient {
15750
15793
  bindRpcRequestHandler(socket, transport) {
15751
15794
  socket.on("rpc-request", async (data, callback) => {
15752
15795
  persistence.logger.debugLargeJson(`[API MACHINE] Received RPC request via ${transport}:`, data);
15753
- callback(await this.rpcHandlerManager.handleRequest(data));
15796
+ await answerSocketRequest(
15797
+ callback,
15798
+ () => this.rpcHandlerManager.handleRequest(data),
15799
+ (drop) => persistence.logger.debug(`[API MACHINE] RPC ${data?.method} via ${transport} unanswered \u2014 ${describeSocketAckDrop(drop)}`)
15800
+ );
15754
15801
  });
15755
15802
  }
15756
15803
  bindMachineCommandHandlers(socket) {
@@ -1,5 +1,5 @@
1
1
  import axios from 'axios';
2
- import { l as logger, g as encodeBase64, j as encrypt, k as decrypt, m as decodeBase64, c as configuration, o as readDaemonState, q as clearDaemonState, s as decryptBlob, t as prepareClipboardText, u as prepareClipboardHistoryText, f as readSettings, r as readPersistedSessions, v as credentialRelayProblem, p as packageJson, x as readTrackedClaudeSessionIds, y as readTrackedCodexThreadIds, z as libsodiumEncryptForPublicKey, A as libsodiumPublicKeyFromSecretKey, B as getRandomBytes, D as redactLogValue } from './limits-CHsz3Ba-.mjs';
2
+ import { l as logger, g as encodeBase64, j as encrypt, k as decrypt, m as decodeBase64, c as configuration, o as readDaemonState, q as clearDaemonState, s as decryptBlob, t as prepareClipboardText, u as prepareClipboardHistoryText, f as readSettings, r as readPersistedSessions, v as credentialRelayProblem, p as packageJson, x as readTrackedClaudeSessionIds, y as readTrackedCodexThreadIds, z as libsodiumEncryptForPublicKey, A as libsodiumPublicKeyFromSecretKey, B as getRandomBytes, D as redactLogValue } from './limits-uABU-yq3.mjs';
3
3
  import { EventEmitter } from 'node:events';
4
4
  import { io } from 'socket.io-client';
5
5
  import * as z from 'zod';
@@ -1356,6 +1356,40 @@ class RpcHandlerManager {
1356
1356
  }
1357
1357
  }
1358
1358
 
1359
+ function describeSocketAckDrop(drop) {
1360
+ switch (drop.reason) {
1361
+ case "no-ack":
1362
+ return "no ack callback on the frame (re-delivered after a transport close?); response dropped";
1363
+ case "handler-threw":
1364
+ return `handler threw: ${drop.error instanceof Error ? drop.error.message : String(drop.error)}`;
1365
+ case "ack-threw":
1366
+ return `ack callback threw: ${drop.error instanceof Error ? drop.error.message : String(drop.error)}`;
1367
+ }
1368
+ }
1369
+ function safeAck(ack, onDrop) {
1370
+ return (value) => {
1371
+ if (typeof ack !== "function") {
1372
+ onDrop({ reason: "no-ack" });
1373
+ return;
1374
+ }
1375
+ try {
1376
+ ack(value);
1377
+ } catch (error) {
1378
+ onDrop({ reason: "ack-threw", error });
1379
+ }
1380
+ };
1381
+ }
1382
+ async function answerSocketRequest(ack, run, onDrop) {
1383
+ let value;
1384
+ try {
1385
+ value = await run();
1386
+ } catch (error) {
1387
+ onDrop({ reason: "handler-threw", error });
1388
+ return;
1389
+ }
1390
+ safeAck(ack, onDrop)(value);
1391
+ }
1392
+
1359
1393
  function run$1(args, options) {
1360
1394
  const RUNNER_PATH = resolve(join(projectPath(), "scripts", "ripgrep_launcher.cjs"));
1361
1395
  return new Promise((resolve2, reject) => {
@@ -3258,7 +3292,11 @@ class ApiSessionClient extends EventEmitter {
3258
3292
  void this.connectSessionRelay();
3259
3293
  });
3260
3294
  this.socket.on("rpc-request", async (data, callback) => {
3261
- callback(await this.rpcHandlerManager.handleRequest(data));
3295
+ await answerSocketRequest(
3296
+ callback,
3297
+ () => this.rpcHandlerManager.handleRequest(data),
3298
+ (drop) => logger.debug(`[API] RPC ${data?.method} unanswered \u2014 ${describeSocketAckDrop(drop)}`)
3299
+ );
3262
3300
  });
3263
3301
  this.socket.on("disconnect", (reason) => {
3264
3302
  logger.debug(`[API] Socket disconnected: ${reason}`);
@@ -3694,9 +3732,14 @@ class ApiSessionClient extends EventEmitter {
3694
3732
  logger.debug(`[API] Session connected to regional relay ${assignment.relayId}`);
3695
3733
  });
3696
3734
  relaySocket.on("rpc-request", async (data, callback) => {
3697
- callback(await this.rpcHandlerManager.handleRequest(data));
3735
+ await answerSocketRequest(
3736
+ callback,
3737
+ () => this.rpcHandlerManager.handleRequest(data),
3738
+ (drop) => logger.debug(`[API] Relay RPC ${data?.method} unanswered \u2014 ${describeSocketAckDrop(drop)}`)
3739
+ );
3698
3740
  });
3699
- relaySocket.on("session-message-deliver", async (data, callback) => {
3741
+ relaySocket.on("session-message-deliver", async (data, rawCallback) => {
3742
+ const callback = safeAck(rawCallback, (drop) => logger.debug(`[API] session-message-deliver unanswered \u2014 ${describeSocketAckDrop(drop)}`));
3700
3743
  if (data?.sessionId !== this.sessionId || !Array.isArray(data.messages) || data.messages.length === 0 || data.messages.length > 50) {
3701
3744
  callback({ ok: false, error: "Invalid session message request" });
3702
3745
  return;
@@ -15729,7 +15772,11 @@ class ApiMachineClient {
15729
15772
  bindRpcRequestHandler(socket, transport) {
15730
15773
  socket.on("rpc-request", async (data, callback) => {
15731
15774
  logger.debugLargeJson(`[API MACHINE] Received RPC request via ${transport}:`, data);
15732
- callback(await this.rpcHandlerManager.handleRequest(data));
15775
+ await answerSocketRequest(
15776
+ callback,
15777
+ () => this.rpcHandlerManager.handleRequest(data),
15778
+ (drop) => logger.debug(`[API MACHINE] RPC ${data?.method} via ${transport} unanswered \u2014 ${describeSocketAckDrop(drop)}`)
15779
+ );
15733
15780
  });
15734
15781
  }
15735
15782
  bindMachineCommandHandlers(socket) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "very-happy-cli",
3
- "version": "0.2.142",
3
+ "version": "0.2.143",
4
4
  "description": "Remote multi-agent workspace CLI with deep Claude integration, native terminal streaming, and self-hosting.",
5
5
  "author": "Kirill Dubovitskiy",
6
6
  "contributors": [
@@ -117,12 +117,12 @@
117
117
  "zod": "^4.0.0"
118
118
  },
119
119
  "optionalDependencies": {
120
- "very-happy-tools-arm64-darwin": "0.2.142",
121
- "very-happy-tools-x64-darwin": "0.2.142",
122
- "very-happy-tools-arm64-linux": "0.2.142",
123
- "very-happy-tools-x64-linux": "0.2.142",
124
- "very-happy-tools-arm64-win32": "0.2.142",
125
- "very-happy-tools-x64-win32": "0.2.142"
120
+ "very-happy-tools-arm64-darwin": "0.2.143",
121
+ "very-happy-tools-x64-darwin": "0.2.143",
122
+ "very-happy-tools-arm64-linux": "0.2.143",
123
+ "very-happy-tools-x64-linux": "0.2.143",
124
+ "very-happy-tools-arm64-win32": "0.2.143",
125
+ "very-happy-tools-x64-win32": "0.2.143"
126
126
  },
127
127
  "devDependencies": {
128
128
  "@slopus/happy-wire": "workspace:*",