very-happy-cli 0.2.155 → 0.2.156

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 (55) hide show
  1. package/dist/{AcpBackend-DmFcRh54.cjs → AcpBackend-BHe1_F1h.cjs} +2 -2
  2. package/dist/{AcpBackend-DVB0nzgR.mjs → AcpBackend-C3nc1u-s.mjs} +2 -2
  3. package/dist/{AcpSessionManager-CWaSYTnT.cjs → AcpSessionManager-BVxkQnNf.cjs} +1 -1
  4. package/dist/{AcpSessionManager-dGDgNb-p.mjs → AcpSessionManager-dN3k1LbI.mjs} +1 -1
  5. package/dist/{agentGuidance-un7YPryB.cjs → agentGuidance-C-CmV03f.cjs} +1 -1
  6. package/dist/{agentGuidance-BWxFC6UL.mjs → agentGuidance-C604n0Zq.mjs} +1 -1
  7. package/dist/{agentHome-aucT8BHw.cjs → agentHome-CmIJNV7f.cjs} +2 -2
  8. package/dist/{agentHome-ByLb2HFg.mjs → agentHome-D2XGsoqs.mjs} +2 -2
  9. package/dist/{auto-BQnD6gVx.mjs → auto-B1I6G_Nf.mjs} +6 -6
  10. package/dist/{auto-P9RoJaY0.cjs → auto-CMDq4oIu.cjs} +6 -6
  11. package/dist/codex/happyMcpStdioBridge.cjs +2 -2
  12. package/dist/codex/happyMcpStdioBridge.mjs +2 -2
  13. package/dist/{config-BoePh9PX.cjs → config-BYHSRY2E.cjs} +4 -4
  14. package/dist/{config-BPZ2Y6o8.mjs → config-BkTu25bH.mjs} +4 -4
  15. package/dist/{index-BjzdXb9x.mjs → index-B5QbzEga.mjs} +8 -8
  16. package/dist/{index-DRrLaljt.cjs → index-B_-7NpGZ.cjs} +7 -7
  17. package/dist/{index-D_fYUxVg.cjs → index-BbtR-Qto.cjs} +114 -51
  18. package/dist/{index--KCpVs1c.cjs → index-CB8QnjvS.cjs} +4 -4
  19. package/dist/{index-B4oXnbYw.mjs → index-DAAreiRF.mjs} +110 -47
  20. package/dist/{index-DVVRqaVG.mjs → index-PYO8Mdz4.mjs} +4 -4
  21. package/dist/index.cjs +4 -4
  22. package/dist/index.mjs +4 -4
  23. package/dist/{install-DP5aPNEX.mjs → install-CNtXzwT_.mjs} +1 -1
  24. package/dist/{install-CGigiocs.cjs → install-CO1ps6Wt.cjs} +1 -1
  25. package/dist/{installTerminalHooks-XrcPvfBs.cjs → installTerminalHooks-BOAnQ1Qe.cjs} +4 -4
  26. package/dist/{installTerminalHooks-tIg7mANc.mjs → installTerminalHooks-CMpOV3RU.mjs} +4 -4
  27. package/dist/lib.cjs +2 -2
  28. package/dist/lib.d.cts +24 -8
  29. package/dist/lib.d.mts +24 -8
  30. package/dist/lib.mjs +2 -2
  31. package/dist/{limits-C_DW0M0q.mjs → limits-DmMdchTz.mjs} +7 -7
  32. package/dist/{limits-DkfHJ3nS.cjs → limits-o29KXBgj.cjs} +7 -7
  33. package/dist/{mcp-o7QglAQM.mjs → mcp-C_uejotl.mjs} +4 -4
  34. package/dist/{mcp-BqlXl10F.cjs → mcp-CwK1nI7Y.cjs} +4 -4
  35. package/dist/{piRuntime-MjiJI-nV.mjs → piRuntime-Cu2-8nOT.mjs} +2 -2
  36. package/dist/{piRuntime-BxP4B_zY.cjs → piRuntime-Dj5WnqzJ.cjs} +2 -2
  37. package/dist/{piTerminal-DYzRcwgb.cjs → piTerminal-D-BIbov9.cjs} +6 -6
  38. package/dist/{piTerminal-Dpq6yqKU.mjs → piTerminal-DanZeBrO.mjs} +6 -6
  39. package/dist/{runGemini-8Pxh94Fm.cjs → runGemini--QqK-Ap5.cjs} +6 -6
  40. package/dist/{runGemini-CDlcQ-OA.mjs → runGemini-CZ_lhMWY.mjs} +6 -6
  41. package/dist/{runOpenClaw-B5FSZIbK.cjs → runOpenClaw-C0xLhTvk.cjs} +5 -5
  42. package/dist/{runOpenClaw-YkhsgPs0.mjs → runOpenClaw-CxgLpm38.mjs} +5 -5
  43. package/dist/{send-DJStmLBv.mjs → send-BaOkDgH0.mjs} +2 -2
  44. package/dist/{send-CwrYXTPr.cjs → send-CTcGMVuG.cjs} +2 -2
  45. package/dist/{sessions-JaVXlSqj.mjs → sessions-Bn304xF1.mjs} +2 -2
  46. package/dist/{sessions-MX21NJXd.cjs → sessions-OmvyJb0n.cjs} +2 -2
  47. package/dist/{spawn-BaPnjClT.mjs → spawn-BKNabutV.mjs} +4 -4
  48. package/dist/{spawn-cIoglKVf.cjs → spawn-CC6V2KiA.cjs} +4 -4
  49. package/dist/{teams-DXV5Pwwt.mjs → teams-CLbS2_4Q.mjs} +5 -5
  50. package/dist/{teams-Dqk7F3D-.cjs → teams-XtrH3_h3.cjs} +5 -5
  51. package/dist/{todo-2Z1REhfx.mjs → todo-BcPbNKt2.mjs} +2 -2
  52. package/dist/{todo-Buuqn9gm.cjs → todo-CEDvKNXK.cjs} +2 -2
  53. package/dist/{types-CkbfdRzq.mjs → types-BEVzYSoV.mjs} +49 -10
  54. package/dist/{types-a2xsH2UI.cjs → types-CphWjqHc.cjs} +49 -10
  55. package/package.json +7 -7
package/dist/lib.mjs CHANGED
@@ -1,5 +1,5 @@
1
- export { A as ApiClient, a as ApiSessionClient, R as RawJSONLinesSchema } from './types-CkbfdRzq.mjs';
2
- export { c as configuration, l as logger } from './limits-C_DW0M0q.mjs';
1
+ export { A as ApiClient, a as ApiSessionClient, R as RawJSONLinesSchema } from './types-BEVzYSoV.mjs';
2
+ export { c as configuration, l as logger } from './limits-DmMdchTz.mjs';
3
3
  import 'axios';
4
4
  import 'node:events';
5
5
  import 'socket.io-client';
@@ -11,7 +11,7 @@ import { homedir } from 'node:os';
11
11
  import { join, basename } from 'node:path';
12
12
 
13
13
  var name = "very-happy-cli";
14
- var version = "0.2.155";
14
+ var version = "0.2.156";
15
15
  var description = "Remote multi-agent workspace CLI with deep Claude integration, native terminal streaming, and self-hosting.";
16
16
  var author = "Kirill Dubovitskiy";
17
17
  var contributors = [
@@ -128,12 +128,12 @@ var dependencies = {
128
128
  zod: "^4.0.0"
129
129
  };
130
130
  var optionalDependencies = {
131
- "very-happy-tools-arm64-darwin": "0.2.155",
132
- "very-happy-tools-x64-darwin": "0.2.155",
133
- "very-happy-tools-arm64-linux": "0.2.155",
134
- "very-happy-tools-x64-linux": "0.2.155",
135
- "very-happy-tools-arm64-win32": "0.2.155",
136
- "very-happy-tools-x64-win32": "0.2.155"
131
+ "very-happy-tools-arm64-darwin": "0.2.156",
132
+ "very-happy-tools-x64-darwin": "0.2.156",
133
+ "very-happy-tools-arm64-linux": "0.2.156",
134
+ "very-happy-tools-x64-linux": "0.2.156",
135
+ "very-happy-tools-arm64-win32": "0.2.156",
136
+ "very-happy-tools-x64-win32": "0.2.156"
137
137
  };
138
138
  var devDependencies = {
139
139
  "@slopus/happy-wire": "workspace:*",
@@ -31,7 +31,7 @@ function _interopNamespaceDefault(e) {
31
31
  var z__namespace = /*#__PURE__*/_interopNamespaceDefault(z);
32
32
 
33
33
  var name = "very-happy-cli";
34
- var version = "0.2.155";
34
+ var version = "0.2.156";
35
35
  var description = "Remote multi-agent workspace CLI with deep Claude integration, native terminal streaming, and self-hosting.";
36
36
  var author = "Kirill Dubovitskiy";
37
37
  var contributors = [
@@ -148,12 +148,12 @@ var dependencies = {
148
148
  zod: "^4.0.0"
149
149
  };
150
150
  var optionalDependencies = {
151
- "very-happy-tools-arm64-darwin": "0.2.155",
152
- "very-happy-tools-x64-darwin": "0.2.155",
153
- "very-happy-tools-arm64-linux": "0.2.155",
154
- "very-happy-tools-x64-linux": "0.2.155",
155
- "very-happy-tools-arm64-win32": "0.2.155",
156
- "very-happy-tools-x64-win32": "0.2.155"
151
+ "very-happy-tools-arm64-darwin": "0.2.156",
152
+ "very-happy-tools-x64-darwin": "0.2.156",
153
+ "very-happy-tools-arm64-linux": "0.2.156",
154
+ "very-happy-tools-x64-linux": "0.2.156",
155
+ "very-happy-tools-arm64-win32": "0.2.156",
156
+ "very-happy-tools-x64-win32": "0.2.156"
157
157
  };
158
158
  var devDependencies = {
159
159
  "@slopus/happy-wire": "workspace:*",
@@ -1,9 +1,9 @@
1
- import { r as registerTeamsTools, P as PREVIEW_TOOL_NAME, a as PREVIEW_TOOL_TITLE, b as PREVIEW_TOOL_DESCRIPTION } from './agentGuidance-BWxFC6UL.mjs';
1
+ import { r as registerTeamsTools, P as PREVIEW_TOOL_NAME, a as PREVIEW_TOOL_TITLE, b as PREVIEW_TOOL_DESCRIPTION } from './agentGuidance-C604n0Zq.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 { l as logger, C as CLIPBOARD_TOOL_NAME, a as CLIPBOARD_TOOL_TITLE, b as CLIPBOARD_TOOL_DESCRIPTION, p as pushClipboardViaDaemon, o as CLIPBOARD_MAX_BYTES, q as pushFilePreviewViaDaemon, t as setTerminalTitleViaDaemon } from './limits-C_DW0M0q.mjs';
6
- import { e as checkPreviewPath, f as registerAssistantSessionTools, g as suggestTitleForPrompt } from './index-B4oXnbYw.mjs';
5
+ import { l as logger, C as CLIPBOARD_TOOL_NAME, a as CLIPBOARD_TOOL_TITLE, b as CLIPBOARD_TOOL_DESCRIPTION, p as pushClipboardViaDaemon, o as CLIPBOARD_MAX_BYTES, q as pushFilePreviewViaDaemon, t as setTerminalTitleViaDaemon } from './limits-DmMdchTz.mjs';
6
+ import { e as checkPreviewPath, f as registerAssistantSessionTools, g as suggestTitleForPrompt } from './index-DAAreiRF.mjs';
7
7
  import 'node:fs/promises';
8
8
  import 'node:os';
9
9
  import 'node:crypto';
@@ -11,7 +11,7 @@ import 'axios';
11
11
  import 'tweetnacl';
12
12
  import 'socket.io-client';
13
13
  import 'node:child_process';
14
- import './types-CkbfdRzq.mjs';
14
+ import './types-BEVzYSoV.mjs';
15
15
  import 'node:fs';
16
16
  import 'node:path';
17
17
  import { b as TerminalTitleSuggestRequestSchema } from './terminalTitleSuggest-DKgX3osW.mjs';
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var agentGuidance = require('./agentGuidance-un7YPryB.cjs');
3
+ var agentGuidance = require('./agentGuidance-C-CmV03f.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 persistence = require('./limits-DkfHJ3nS.cjs');
8
- var index = require('./index-D_fYUxVg.cjs');
7
+ var persistence = require('./limits-o29KXBgj.cjs');
8
+ var index = require('./index-BbtR-Qto.cjs');
9
9
  require('node:fs/promises');
10
10
  require('node:os');
11
11
  require('node:crypto');
@@ -13,7 +13,7 @@ require('axios');
13
13
  require('tweetnacl');
14
14
  require('socket.io-client');
15
15
  require('node:child_process');
16
- require('./types-a2xsH2UI.cjs');
16
+ require('./types-CphWjqHc.cjs');
17
17
  require('node:fs');
18
18
  require('node:path');
19
19
  var terminalTitleSuggest = require('./terminalTitleSuggest-Dji8I0Jy.cjs');
@@ -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-C_DW0M0q.mjs';
5
- import { P as PI_TEAMS_EXTENSION } from './index-B4oXnbYw.mjs';
4
+ import { c as configuration } from './limits-DmMdchTz.mjs';
5
+ import { P as PI_TEAMS_EXTENSION } from './index-DAAreiRF.mjs';
6
6
 
7
7
  async function publish(path, content, mode) {
8
8
  const temporary = `${path}.${randomUUID()}.new`;
@@ -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-DkfHJ3nS.cjs');
7
- var index = require('./index-D_fYUxVg.cjs');
6
+ var persistence = require('./limits-o29KXBgj.cjs');
7
+ var index = require('./index-BbtR-Qto.cjs');
8
8
 
9
9
  async function publish(path, content, mode) {
10
10
  const temporary = `${path}.${node_crypto.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-BxP4B_zY.cjs');
9
- var mcp = require('./mcp-BqlXl10F.cjs');
10
- require('./agentGuidance-un7YPryB.cjs');
8
+ var piRuntime = require('./piRuntime-Dj5WnqzJ.cjs');
9
+ var mcp = require('./mcp-CwK1nI7Y.cjs');
10
+ require('./agentGuidance-C-CmV03f.cjs');
11
11
  require('node:fs/promises');
12
12
  require('node:os');
13
13
  require('zod');
14
- require('./limits-DkfHJ3nS.cjs');
14
+ require('./limits-o29KXBgj.cjs');
15
15
  require('axios');
16
16
  require('tweetnacl');
17
17
  require('socket.io-client');
18
- require('./types-a2xsH2UI.cjs');
18
+ require('./types-CphWjqHc.cjs');
19
19
  require('node:fs');
20
20
  require('node:path');
21
21
  var terminalToolContext = require('./terminalToolContext-DoV9Gs7K.cjs');
22
- require('./index-D_fYUxVg.cjs');
22
+ require('./index-BbtR-Qto.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-MjiJI-nV.mjs';
7
- import { registerMcpTools, registerTerminalTitleSuggest } from './mcp-o7QglAQM.mjs';
8
- import './agentGuidance-BWxFC6UL.mjs';
6
+ import { p as preparePiTeamsRuntime } from './piRuntime-Cu2-8nOT.mjs';
7
+ import { registerMcpTools, registerTerminalTitleSuggest } from './mcp-C_uejotl.mjs';
8
+ import './agentGuidance-C604n0Zq.mjs';
9
9
  import 'node:fs/promises';
10
10
  import 'node:os';
11
11
  import 'zod';
12
- import './limits-C_DW0M0q.mjs';
12
+ import './limits-DmMdchTz.mjs';
13
13
  import 'axios';
14
14
  import 'tweetnacl';
15
15
  import 'socket.io-client';
16
- import './types-CkbfdRzq.mjs';
16
+ import './types-BEVzYSoV.mjs';
17
17
  import 'node:fs';
18
18
  import 'node:path';
19
19
  import { r as resolveMcpTerminalId } from './terminalToolContext-CFeGeaNm.mjs';
20
- import './index-B4oXnbYw.mjs';
20
+ import './index-DAAreiRF.mjs';
21
21
  import 'chalk';
22
22
  import 'cross-spawn';
23
23
  import 'node:readline';
@@ -4,12 +4,12 @@ var ink = require('ink');
4
4
  var React = require('react');
5
5
  var node_crypto = require('node:crypto');
6
6
  var path = require('node:path');
7
- var index$1 = require('./types-a2xsH2UI.cjs');
8
- var persistence = require('./limits-DkfHJ3nS.cjs');
9
- var index = require('./index-D_fYUxVg.cjs');
7
+ var index$1 = require('./types-CphWjqHc.cjs');
8
+ var persistence = require('./limits-o29KXBgj.cjs');
9
+ var index = require('./index-BbtR-Qto.cjs');
10
10
  var terminalTitleSuggest = require('./terminalTitleSuggest-Dji8I0Jy.cjs');
11
- var AcpBackend = require('./AcpBackend-DmFcRh54.cjs');
12
- var config = require('./config-BoePh9PX.cjs');
11
+ var AcpBackend = require('./AcpBackend-BHe1_F1h.cjs');
12
+ var config = require('./config-BYHSRY2E.cjs');
13
13
  require('axios');
14
14
  require('node:events');
15
15
  require('socket.io-client');
@@ -34,7 +34,7 @@ require('@anthropic-ai/sandbox-runtime');
34
34
  require('expo-server-sdk');
35
35
  require('chalk');
36
36
  require('node:util');
37
- require('./agentGuidance-un7YPryB.cjs');
37
+ require('./agentGuidance-C-CmV03f.cjs');
38
38
  require('@anthropic-ai/claude-agent-sdk');
39
39
  require('ps-list');
40
40
  require('tmp');
@@ -2,12 +2,12 @@ import { useStdout, useInput, Box, Text, render } from 'ink';
2
2
  import React, { useState, useRef, useEffect, useCallback } from 'react';
3
3
  import { randomUUID } from 'node:crypto';
4
4
  import { join } from 'node:path';
5
- import { h as connectionState, A as ApiClient, i as errorLogMetadata, j as contentLogMetadata } from './types-CkbfdRzq.mjs';
6
- import { l as logger, r as readSettings, v as notifyDaemonSessionStarted, w as encodeBase64 } from './limits-C_DW0M0q.mjs';
7
- import { I as GEMINI_API_KEY_ENV, J as GOOGLE_API_KEY_ENV, G as GEMINI_MODEL_ENV, B as BasePermissionHandler, K as BaseReasoningProcessor, h as initialMachineMetadata, j as createSessionMetadata, k as setupOfflineReconnection, M as MessageQueue2, m as hashObject, L as MessageBuffer, N as CHANGE_TITLE_INSTRUCTION, v as registerKillSessionHandler, n as startHappyServer } from './index-B4oXnbYw.mjs';
5
+ import { h as connectionState, A as ApiClient, i as errorLogMetadata, j as contentLogMetadata } from './types-BEVzYSoV.mjs';
6
+ import { l as logger, r as readSettings, v as notifyDaemonSessionStarted, w as encodeBase64 } from './limits-DmMdchTz.mjs';
7
+ import { I as GEMINI_API_KEY_ENV, J as GOOGLE_API_KEY_ENV, G as GEMINI_MODEL_ENV, B as BasePermissionHandler, K as BaseReasoningProcessor, h as initialMachineMetadata, j as createSessionMetadata, k as setupOfflineReconnection, M as MessageQueue2, m as hashObject, L as MessageBuffer, N as CHANGE_TITLE_INSTRUCTION, v as registerKillSessionHandler, n as startHappyServer } from './index-DAAreiRF.mjs';
8
8
  import { p as projectPath } from './terminalTitleSuggest-DKgX3osW.mjs';
9
- import { A as AcpBackend } from './AcpBackend-DVB0nzgR.mjs';
10
- import { readGeminiLocalConfig, determineGeminiModel, getGeminiModelSource, getInitialGeminiModel, saveGeminiModelToConfig } from './config-BPZ2Y6o8.mjs';
9
+ import { A as AcpBackend } from './AcpBackend-C3nc1u-s.mjs';
10
+ import { readGeminiLocalConfig, determineGeminiModel, getGeminiModelSource, getInitialGeminiModel, saveGeminiModelToConfig } from './config-BkTu25bH.mjs';
11
11
  import 'axios';
12
12
  import 'node:events';
13
13
  import 'socket.io-client';
@@ -32,7 +32,7 @@ import '@anthropic-ai/sandbox-runtime';
32
32
  import 'expo-server-sdk';
33
33
  import 'chalk';
34
34
  import 'node:util';
35
- import './agentGuidance-BWxFC6UL.mjs';
35
+ import './agentGuidance-C604n0Zq.mjs';
36
36
  import '@anthropic-ai/claude-agent-sdk';
37
37
  import 'ps-list';
38
38
  import 'tmp';
@@ -5,10 +5,10 @@ var node_child_process = require('node:child_process');
5
5
  var os = require('node:os');
6
6
  var node_fs = require('node:fs');
7
7
  var path = require('node:path');
8
- var index = require('./types-a2xsH2UI.cjs');
9
- var AcpSessionManager = require('./AcpSessionManager-CWaSYTnT.cjs');
10
- var persistence = require('./limits-DkfHJ3nS.cjs');
11
- var index$1 = require('./index-D_fYUxVg.cjs');
8
+ var index = require('./types-CphWjqHc.cjs');
9
+ var AcpSessionManager = require('./AcpSessionManager-BVxkQnNf.cjs');
10
+ var persistence = require('./limits-o29KXBgj.cjs');
11
+ var index$1 = require('./index-BbtR-Qto.cjs');
12
12
  var WebSocket = require('ws');
13
13
  var ed = require('@noble/ed25519');
14
14
  var sha2_js = require('@noble/hashes/sha2.js');
@@ -35,7 +35,7 @@ require('@anthropic-ai/sandbox-runtime');
35
35
  require('expo-server-sdk');
36
36
  require('chalk');
37
37
  require('node:util');
38
- require('./agentGuidance-un7YPryB.cjs');
38
+ require('./agentGuidance-C-CmV03f.cjs');
39
39
  require('ink');
40
40
  require('react');
41
41
  require('@anthropic-ai/claude-agent-sdk');
@@ -3,10 +3,10 @@ import { execFileSync } from 'node:child_process';
3
3
  import os from 'node:os';
4
4
  import { existsSync, readFileSync } from 'node:fs';
5
5
  import { join } from 'node:path';
6
- import { i as errorLogMetadata, j as contentLogMetadata, h as connectionState, A as ApiClient } from './types-CkbfdRzq.mjs';
7
- import { A as AcpSessionManager } from './AcpSessionManager-dGDgNb-p.mjs';
8
- import { z as ensurePrivateDirectorySync, D as hardenPrivateFileSync, E as writePrivateFileSync, r as readSettings, v as notifyDaemonSessionStarted, w as encodeBase64, l as logger, c as configuration } from './limits-C_DW0M0q.mjs';
9
- import { h as initialMachineMetadata, j as createSessionMetadata, k as setupOfflineReconnection, M as MessageQueue2, v as registerKillSessionHandler } from './index-B4oXnbYw.mjs';
6
+ import { i as errorLogMetadata, j as contentLogMetadata, h as connectionState, A as ApiClient } from './types-BEVzYSoV.mjs';
7
+ import { A as AcpSessionManager } from './AcpSessionManager-dN3k1LbI.mjs';
8
+ import { z as ensurePrivateDirectorySync, D as hardenPrivateFileSync, E as writePrivateFileSync, r as readSettings, v as notifyDaemonSessionStarted, w as encodeBase64, l as logger, c as configuration } from './limits-DmMdchTz.mjs';
9
+ import { h as initialMachineMetadata, j as createSessionMetadata, k as setupOfflineReconnection, M as MessageQueue2, v as registerKillSessionHandler } from './index-DAAreiRF.mjs';
10
10
  import WebSocket from 'ws';
11
11
  import * as ed from '@noble/ed25519';
12
12
  import { sha512 } from '@noble/hashes/sha2.js';
@@ -33,7 +33,7 @@ import '@anthropic-ai/sandbox-runtime';
33
33
  import 'expo-server-sdk';
34
34
  import 'chalk';
35
35
  import 'node:util';
36
- import './agentGuidance-BWxFC6UL.mjs';
36
+ import './agentGuidance-C604n0Zq.mjs';
37
37
  import 'ink';
38
38
  import 'react';
39
39
  import '@anthropic-ai/claude-agent-sdk';
@@ -1,8 +1,8 @@
1
1
  import chalk from 'chalk';
2
2
  import { readFileSync } from 'node:fs';
3
3
  import { resolve } from 'node:path';
4
- import { d as readPersistedSessions, c as configuration } from './limits-C_DW0M0q.mjs';
5
- import { n as deliverToSession, o as sessionWebUrl } from './agentGuidance-BWxFC6UL.mjs';
4
+ import { d as readPersistedSessions, c as configuration } from './limits-DmMdchTz.mjs';
5
+ import { n as deliverToSession, o as sessionWebUrl } from './agentGuidance-C604n0Zq.mjs';
6
6
  import 'zod';
7
7
  import '@paralleldrive/cuid2';
8
8
  import 'node:fs/promises';
@@ -3,8 +3,8 @@
3
3
  var chalk = require('chalk');
4
4
  var node_fs = require('node:fs');
5
5
  var path = require('node:path');
6
- var persistence = require('./limits-DkfHJ3nS.cjs');
7
- var agentGuidance = require('./agentGuidance-un7YPryB.cjs');
6
+ var persistence = require('./limits-o29KXBgj.cjs');
7
+ var agentGuidance = require('./agentGuidance-C-CmV03f.cjs');
8
8
  require('zod');
9
9
  require('@paralleldrive/cuid2');
10
10
  require('node:fs/promises');
@@ -1,6 +1,6 @@
1
1
  import chalk from 'chalk';
2
- import { D as DEFAULT_RECENT_LIMIT, M as MAX_READ_LIMIT, l as listAccountSessions, e as listSessions, f as cliPeerSelf, g as listPeerSessions, s as sendPeerMessage, w as waitForTurnEnd, T as TurnWaitTimeoutError, h as readSessionTranscript, i as stopSession, j as resolvePermissionRequest, k as archiveSession, m as PEER_SCOPES } from './agentGuidance-BWxFC6UL.mjs';
3
- import { d as readPersistedSessions, i as isValidSessionId } from './limits-C_DW0M0q.mjs';
2
+ import { D as DEFAULT_RECENT_LIMIT, M as MAX_READ_LIMIT, l as listAccountSessions, e as listSessions, f as cliPeerSelf, g as listPeerSessions, s as sendPeerMessage, w as waitForTurnEnd, T as TurnWaitTimeoutError, h as readSessionTranscript, i as stopSession, j as resolvePermissionRequest, k as archiveSession, m as PEER_SCOPES } from './agentGuidance-C604n0Zq.mjs';
3
+ import { d as readPersistedSessions, i as isValidSessionId } from './limits-DmMdchTz.mjs';
4
4
  import { resolve } from 'node:path';
5
5
  import 'zod';
6
6
  import 'node:crypto';
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  var chalk = require('chalk');
4
- var agentGuidance = require('./agentGuidance-un7YPryB.cjs');
5
- var persistence = require('./limits-DkfHJ3nS.cjs');
4
+ var agentGuidance = require('./agentGuidance-C-CmV03f.cjs');
5
+ var persistence = require('./limits-o29KXBgj.cjs');
6
6
  var path = require('node:path');
7
7
  require('zod');
8
8
  require('node:crypto');
@@ -1,10 +1,10 @@
1
1
  import chalk from 'chalk';
2
2
  import { readFileSync, statSync } from 'node:fs';
3
3
  import { resolve } from 'node:path';
4
- import { d as readPersistedSessions, k as checkIfDaemonRunningAndCleanupStaleState, l as logger, m as spawnDaemonSession, n as stopDaemonSession } from './limits-C_DW0M0q.mjs';
5
- import { r as resolveSpawnPermissionMode, c as resolveFirstMessageMeta, i as isValidSpawnOrigin, s as sanitizeSpawnPermissionMode, A as ALLOWED_SPAWN_PERMISSION_MODES, S as SPAWN_AGENTS } from './index-B4oXnbYw.mjs';
6
- import { f as forkSession, g as getProjectPath, F as ForkSourceMissingError, C as CodexAppServerClient, c as forkCodexThread } from './types-CkbfdRzq.mjs';
7
- import { x as readSessionMetadata, o as sessionWebUrl, y as waitForSessionKey, z as sendUserMessage } from './agentGuidance-BWxFC6UL.mjs';
4
+ import { d as readPersistedSessions, k as checkIfDaemonRunningAndCleanupStaleState, l as logger, m as spawnDaemonSession, n as stopDaemonSession } from './limits-DmMdchTz.mjs';
5
+ import { r as resolveSpawnPermissionMode, c as resolveFirstMessageMeta, i as isValidSpawnOrigin, s as sanitizeSpawnPermissionMode, A as ALLOWED_SPAWN_PERMISSION_MODES, S as SPAWN_AGENTS } from './index-DAAreiRF.mjs';
6
+ import { f as forkSession, g as getProjectPath, F as ForkSourceMissingError, C as CodexAppServerClient, c as forkCodexThread } from './types-BEVzYSoV.mjs';
7
+ import { x as readSessionMetadata, o as sessionWebUrl, y as waitForSessionKey, z as sendUserMessage } from './agentGuidance-C604n0Zq.mjs';
8
8
  import 'zod';
9
9
  import '@paralleldrive/cuid2';
10
10
  import 'node:fs/promises';
@@ -3,10 +3,10 @@
3
3
  var chalk = require('chalk');
4
4
  var node_fs = require('node:fs');
5
5
  var path = require('node:path');
6
- var persistence = require('./limits-DkfHJ3nS.cjs');
7
- var index = require('./index-D_fYUxVg.cjs');
8
- var index$1 = require('./types-a2xsH2UI.cjs');
9
- var agentGuidance = require('./agentGuidance-un7YPryB.cjs');
6
+ var persistence = require('./limits-o29KXBgj.cjs');
7
+ var index = require('./index-BbtR-Qto.cjs');
8
+ var index$1 = require('./types-CphWjqHc.cjs');
9
+ var agentGuidance = require('./agentGuidance-C-CmV03f.cjs');
10
10
  require('zod');
11
11
  require('@paralleldrive/cuid2');
12
12
  require('node:fs/promises');
@@ -2,9 +2,9 @@ import { homedir } from 'node:os';
2
2
  import { readFile } from 'node:fs/promises';
3
3
  import { z } from 'zod';
4
4
  import { randomUUID } from 'node:crypto';
5
- import { B as teamRequest, C as createTeamsClient } from './agentGuidance-BWxFC6UL.mjs';
6
- import { h as readCredentialsForConfiguredRelay } from './limits-C_DW0M0q.mjs';
7
- import { a as installTeamSkill, i as installAutomationSkill } from './install-DP5aPNEX.mjs';
5
+ import { B as teamRequest, C as createTeamsClient } from './agentGuidance-C604n0Zq.mjs';
6
+ import { h as readCredentialsForConfiguredRelay } from './limits-DmMdchTz.mjs';
7
+ import { a as installTeamSkill, i as installAutomationSkill } from './install-CNtXzwT_.mjs';
8
8
  import 'node:fs';
9
9
  import 'node:path';
10
10
  import 'axios';
@@ -13,8 +13,8 @@ import '@paralleldrive/cuid2';
13
13
  import 'tweetnacl';
14
14
  import 'chalk';
15
15
  import 'node:util';
16
- import './index-B4oXnbYw.mjs';
17
- import './types-CkbfdRzq.mjs';
16
+ import './index-DAAreiRF.mjs';
17
+ import './types-BEVzYSoV.mjs';
18
18
  import 'node:events';
19
19
  import 'child_process';
20
20
  import 'util';
@@ -4,9 +4,9 @@ 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-un7YPryB.cjs');
8
- var persistence = require('./limits-DkfHJ3nS.cjs');
9
- var install = require('./install-CGigiocs.cjs');
7
+ var agentGuidance = require('./agentGuidance-C-CmV03f.cjs');
8
+ var persistence = require('./limits-o29KXBgj.cjs');
9
+ var install = require('./install-CO1ps6Wt.cjs');
10
10
  require('node:fs');
11
11
  require('node:path');
12
12
  require('axios');
@@ -15,8 +15,8 @@ require('@paralleldrive/cuid2');
15
15
  require('tweetnacl');
16
16
  require('chalk');
17
17
  require('node:util');
18
- require('./index-D_fYUxVg.cjs');
19
- require('./types-a2xsH2UI.cjs');
18
+ require('./index-BbtR-Qto.cjs');
19
+ require('./types-CphWjqHc.cjs');
20
20
  require('node:events');
21
21
  require('child_process');
22
22
  require('util');
@@ -1,5 +1,5 @@
1
- import { h as readCredentialsForConfiguredRelay, j as createBuiltinTodoClient, c as configuration, B as BUILTIN_TODO_SKILL } from './limits-C_DW0M0q.mjs';
2
- import { u as readTeamScope, v as teamScopePath } from './agentGuidance-BWxFC6UL.mjs';
1
+ import { h as readCredentialsForConfiguredRelay, j as createBuiltinTodoClient, c as configuration, B as BUILTIN_TODO_SKILL } from './limits-DmMdchTz.mjs';
2
+ import { u as readTeamScope, v as teamScopePath } from './agentGuidance-C604n0Zq.mjs';
3
3
  import 'zod';
4
4
  import '@paralleldrive/cuid2';
5
5
  import 'node:fs/promises';
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var persistence = require('./limits-DkfHJ3nS.cjs');
4
- var agentGuidance = require('./agentGuidance-un7YPryB.cjs');
3
+ var persistence = require('./limits-o29KXBgj.cjs');
4
+ var agentGuidance = require('./agentGuidance-C-CmV03f.cjs');
5
5
  require('zod');
6
6
  require('@paralleldrive/cuid2');
7
7
  require('node:fs/promises');
@@ -1,5 +1,5 @@
1
1
  import axios from 'axios';
2
- import { R as AgentVersionsSchema, l as logger, w as encodeBase64, L as encrypt, N as decrypt, M as decodeBase64, c as configuration, e as createEnvelope, s as streamKeyOf, S as backoff, T as ReleaseDrainNoticeSchema, U as decryptBlob, V as RelayAssignmentResponseSchema, W as notifyDaemonTurnEvent, X as prepareClipboardText, Y as prepareClipboardHistoryText, g as delay, r as readSettings, d as readPersistedSessions, Z as credentialRelayProblem, F as packageJson, _ as RelayCandidatesResponseSchema, $ as readTrackedClaudeSessionIds, a0 as readTrackedCodexThreadIds, a1 as isValidTerminalId, a2 as exponentialBackoffDelay, a3 as libsodiumEncryptForPublicKey, a4 as libsodiumPublicKeyFromSecretKey, a5 as getRandomBytes, a6 as redactLogValue } from './limits-C_DW0M0q.mjs';
2
+ import { R as AgentVersionsSchema, l as logger, w as encodeBase64, L as encrypt, N as decrypt, M as decodeBase64, c as configuration, e as createEnvelope, s as streamKeyOf, S as backoff, T as ReleaseDrainNoticeSchema, U as decryptBlob, V as RelayAssignmentResponseSchema, W as notifyDaemonTurnEvent, X as prepareClipboardText, Y as prepareClipboardHistoryText, g as delay, r as readSettings, d as readPersistedSessions, Z as credentialRelayProblem, F as packageJson, _ as RelayCandidatesResponseSchema, $ as readTrackedClaudeSessionIds, a0 as readTrackedCodexThreadIds, a1 as isValidTerminalId, a2 as exponentialBackoffDelay, a3 as libsodiumEncryptForPublicKey, a4 as libsodiumPublicKeyFromSecretKey, a5 as getRandomBytes, a6 as redactLogValue } from './limits-DmMdchTz.mjs';
3
3
  import { EventEmitter } from 'node:events';
4
4
  import { io } from 'socket.io-client';
5
5
  import { z } from 'zod';
@@ -16201,17 +16201,56 @@ class ApiClient {
16201
16201
  }
16202
16202
  }
16203
16203
  /**
16204
- * Mark a session as inactive on the server (active=false). Does NOT
16205
- * change `lifecycleState`, so the session remains visible in the app
16206
- * and resumable — same effect as the in-app "Archive" button hitting
16207
- * the /archive endpoint, but without the extra metadata.
16204
+ * B-505: mark a session OFFLINE on the server (active=false, `archivedAt`
16205
+ * untouched) — the same row state a missed keepalive produces, so the web
16206
+ * shows it offline and resumable instead of archived.
16208
16207
  *
16209
- * Used during graceful shutdown (Ctrl-C / SIGTERM) as a synchronous
16210
- * fallback for the socket-based session-end signal: even if the
16211
- * socket emit doesn't drain before the process exits, the HTTP
16212
- * response confirms the deactivate landed.
16208
+ * Used when the wrapper exits for an infrastructure reason (SIGTERM /
16209
+ * SIGINT: daemon stop, supervisor restart, machine shutdown) as a
16210
+ * synchronous fallback for the socket `session-end` signal: even if the
16211
+ * socket emit doesn't drain before the process exits, the HTTP response
16212
+ * confirms the row went inactive.
16213
+ *
16214
+ * This MUST NOT hit `/archive`: since B-265 that route writes the
16215
+ * server-owned `archivedAt` tombstone (the only thing that distinguishes
16216
+ * "archived" from "offline"), and the server answers it with a
16217
+ * `session-archive` command that makes the wrapper archive itself. That is
16218
+ * exactly how every dev-sg upgrade archived the sessions mid-turn on
16219
+ * 2026-09-25. A server without `/deactivate` returns 404, which is a
16220
+ * compatible no-op: `session-end` already sets active=false there.
16213
16221
  */
16214
16222
  async deactivateSession(sessionId) {
16223
+ try {
16224
+ const response = await axios.post(
16225
+ `${configuration.serverUrl}/v1/sessions/${sessionId}/deactivate`,
16226
+ {},
16227
+ {
16228
+ headers: {
16229
+ "Authorization": `Bearer ${this.credential.token}`,
16230
+ "X-Happy-Client": `cli-coding-session/${configuration.currentCliVersion}`
16231
+ },
16232
+ timeout: 3e3,
16233
+ validateStatus: (status) => status >= 200 && status < 300 || status === 404
16234
+ }
16235
+ );
16236
+ if (response.status === 404) {
16237
+ logger.debug("[API] deactivateSession: server has no /deactivate route; relying on session-end");
16238
+ return false;
16239
+ }
16240
+ return true;
16241
+ } catch (error) {
16242
+ logger.debug("[API] deactivateSession failed:", error);
16243
+ return false;
16244
+ }
16245
+ }
16246
+ /**
16247
+ * Archive a session on the server: writes the `archivedAt` tombstone and
16248
+ * makes the server tell every wrapper of this session to exit. Only for an
16249
+ * intentional end of life — the user's Archive / kill, a crash the wrapper
16250
+ * cannot recover from, a terminal mirror whose pane went back to a shell.
16251
+ * Never call this from a signal handler; see `deactivateSession`.
16252
+ */
16253
+ async archiveSession(sessionId) {
16215
16254
  try {
16216
16255
  const response = await axios.post(
16217
16256
  `${configuration.serverUrl}/v1/sessions/${sessionId}/archive`,
@@ -16226,7 +16265,7 @@ class ApiClient {
16226
16265
  );
16227
16266
  return response.status >= 200 && response.status < 300;
16228
16267
  } catch (error) {
16229
- logger.debug("[API] deactivateSession failed:", error);
16268
+ logger.debug("[API] archiveSession failed:", error);
16230
16269
  return false;
16231
16270
  }
16232
16271
  }
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var axios = require('axios');
4
- var persistence = require('./limits-DkfHJ3nS.cjs');
4
+ var persistence = require('./limits-o29KXBgj.cjs');
5
5
  var node_events = require('node:events');
6
6
  var socket_ioClient = require('socket.io-client');
7
7
  var z = require('zod');
@@ -16222,17 +16222,56 @@ class ApiClient {
16222
16222
  }
16223
16223
  }
16224
16224
  /**
16225
- * Mark a session as inactive on the server (active=false). Does NOT
16226
- * change `lifecycleState`, so the session remains visible in the app
16227
- * and resumable — same effect as the in-app "Archive" button hitting
16228
- * the /archive endpoint, but without the extra metadata.
16225
+ * B-505: mark a session OFFLINE on the server (active=false, `archivedAt`
16226
+ * untouched) — the same row state a missed keepalive produces, so the web
16227
+ * shows it offline and resumable instead of archived.
16229
16228
  *
16230
- * Used during graceful shutdown (Ctrl-C / SIGTERM) as a synchronous
16231
- * fallback for the socket-based session-end signal: even if the
16232
- * socket emit doesn't drain before the process exits, the HTTP
16233
- * response confirms the deactivate landed.
16229
+ * Used when the wrapper exits for an infrastructure reason (SIGTERM /
16230
+ * SIGINT: daemon stop, supervisor restart, machine shutdown) as a
16231
+ * synchronous fallback for the socket `session-end` signal: even if the
16232
+ * socket emit doesn't drain before the process exits, the HTTP response
16233
+ * confirms the row went inactive.
16234
+ *
16235
+ * This MUST NOT hit `/archive`: since B-265 that route writes the
16236
+ * server-owned `archivedAt` tombstone (the only thing that distinguishes
16237
+ * "archived" from "offline"), and the server answers it with a
16238
+ * `session-archive` command that makes the wrapper archive itself. That is
16239
+ * exactly how every dev-sg upgrade archived the sessions mid-turn on
16240
+ * 2026-09-25. A server without `/deactivate` returns 404, which is a
16241
+ * compatible no-op: `session-end` already sets active=false there.
16234
16242
  */
16235
16243
  async deactivateSession(sessionId) {
16244
+ try {
16245
+ const response = await axios.post(
16246
+ `${persistence.configuration.serverUrl}/v1/sessions/${sessionId}/deactivate`,
16247
+ {},
16248
+ {
16249
+ headers: {
16250
+ "Authorization": `Bearer ${this.credential.token}`,
16251
+ "X-Happy-Client": `cli-coding-session/${persistence.configuration.currentCliVersion}`
16252
+ },
16253
+ timeout: 3e3,
16254
+ validateStatus: (status) => status >= 200 && status < 300 || status === 404
16255
+ }
16256
+ );
16257
+ if (response.status === 404) {
16258
+ persistence.logger.debug("[API] deactivateSession: server has no /deactivate route; relying on session-end");
16259
+ return false;
16260
+ }
16261
+ return true;
16262
+ } catch (error) {
16263
+ persistence.logger.debug("[API] deactivateSession failed:", error);
16264
+ return false;
16265
+ }
16266
+ }
16267
+ /**
16268
+ * Archive a session on the server: writes the `archivedAt` tombstone and
16269
+ * makes the server tell every wrapper of this session to exit. Only for an
16270
+ * intentional end of life — the user's Archive / kill, a crash the wrapper
16271
+ * cannot recover from, a terminal mirror whose pane went back to a shell.
16272
+ * Never call this from a signal handler; see `deactivateSession`.
16273
+ */
16274
+ async archiveSession(sessionId) {
16236
16275
  try {
16237
16276
  const response = await axios.post(
16238
16277
  `${persistence.configuration.serverUrl}/v1/sessions/${sessionId}/archive`,
@@ -16247,7 +16286,7 @@ class ApiClient {
16247
16286
  );
16248
16287
  return response.status >= 200 && response.status < 300;
16249
16288
  } catch (error) {
16250
- persistence.logger.debug("[API] deactivateSession failed:", error);
16289
+ persistence.logger.debug("[API] archiveSession failed:", error);
16251
16290
  return false;
16252
16291
  }
16253
16292
  }