very-happy-cli 0.2.125 → 0.2.127

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-DOQGItcS.mjs → AcpBackend-B9_vB_mY.mjs} +2 -2
  2. package/dist/{AcpBackend-ssQpTLks.cjs → AcpBackend-Cbykm5Pg.cjs} +2 -2
  3. package/dist/{AcpSessionManager-DHLc-D50.cjs → AcpSessionManager-DGCsNKRd.cjs} +1 -1
  4. package/dist/{AcpSessionManager-D4WkNsRs.mjs → AcpSessionManager-HsxKXreC.mjs} +1 -1
  5. package/dist/{agentGuidance-Cg9ZG1pP.cjs → agentGuidance-B-CazXmT.cjs} +64 -33
  6. package/dist/{agentGuidance-QpYwykb9.mjs → agentGuidance-CTyzeLCQ.mjs} +62 -35
  7. package/dist/codex/happyMcpStdioBridge.cjs +2 -2
  8. package/dist/codex/happyMcpStdioBridge.mjs +2 -2
  9. package/dist/{config-CZNIz3W0.mjs → config-DotNknpP.mjs} +4 -4
  10. package/dist/{config-BxHOGtEK.cjs → config-Dwt-15hE.cjs} +4 -4
  11. package/dist/{index-CrSifgJM.mjs → index-B1qzJIMw.mjs} +249 -28
  12. package/dist/{index-Jrk6ud3g.mjs → index-C2kblG8-.mjs} +13 -9
  13. package/dist/{index-D-BgvQi5.mjs → index-CWPgxeLD.mjs} +4 -4
  14. package/dist/{index-Do-kjc30.cjs → index-DgjzHewW.cjs} +254 -31
  15. package/dist/{index-D_Rm9dw9.cjs → index-DhCEmP3d.cjs} +4 -4
  16. package/dist/{index-CBj99SO6.cjs → index-DyvVjr8Y.cjs} +13 -9
  17. package/dist/index.cjs +4 -4
  18. package/dist/index.mjs +4 -4
  19. package/dist/{installTerminalHooks-CPsdeOM4.cjs → installTerminalHooks-DfBvxRdw.cjs} +4 -4
  20. package/dist/{installTerminalHooks-Z1Jb6yjb.mjs → installTerminalHooks-cpuDExTT.mjs} +4 -4
  21. package/dist/lib.cjs +2 -2
  22. package/dist/lib.d.cts +1 -0
  23. package/dist/lib.d.mts +1 -0
  24. package/dist/lib.mjs +2 -2
  25. package/dist/{limits-DViGHwSj.cjs → limits-BDG3QjIB.cjs} +7 -7
  26. package/dist/{limits-FjbPJPsF.mjs → limits-D2XM3dvN.mjs} +9 -9
  27. package/dist/{mcp-BbQ5FWcQ.cjs → mcp-BZ3iYnBc.cjs} +4 -4
  28. package/dist/{mcp-zqPJ94Bk.mjs → mcp-CpUrsnoC.mjs} +4 -4
  29. package/dist/{runGemini-BnHGYX-H.cjs → runGemini-BE_nghsj.cjs} +6 -6
  30. package/dist/{runGemini-Bu49s_bN.mjs → runGemini-BY7uA-Uk.mjs} +6 -6
  31. package/dist/{runOpenClaw-CznAYPCh.mjs → runOpenClaw-Be_U4DHZ.mjs} +5 -5
  32. package/dist/{runOpenClaw-3Ld1eoWV.cjs → runOpenClaw-Cqun9jar.cjs} +5 -5
  33. package/dist/{send-BevgS1mf.mjs → send-D2xX42zg.mjs} +4 -4
  34. package/dist/{send-DCzyBxLl.cjs → send-DbqRxLQW.cjs} +4 -4
  35. package/dist/{sessions-DSoaBHwA.cjs → sessions-CtrMbMBJ.cjs} +4 -4
  36. package/dist/{sessions-Ba2oRTmw.mjs → sessions-D06cLJ7f.mjs} +4 -4
  37. package/dist/{spawn-CqMLY6dE.cjs → spawn-Cu_kM761.cjs} +4 -4
  38. package/dist/{spawn-j9KBfj4e.mjs → spawn-DMx1JKXo.mjs} +4 -4
  39. package/dist/{teams-CmU3K9vB.cjs → teams-C2MfKWFe.cjs} +67 -7
  40. package/dist/{teams-C0ggJTJ-.mjs → teams-D7ubdfTY.mjs} +64 -4
  41. package/dist/todo-hKSIY23F.mjs +128 -0
  42. package/dist/todo-yvodzg_y.cjs +132 -0
  43. package/dist/{types-BGHnQXl5.cjs → types-BuxqyzYf.cjs} +329 -12
  44. package/dist/{types-DLDkfrTC.mjs → types-Df_vXvzD.mjs} +320 -6
  45. package/package.json +7 -7
  46. package/dist/resources-CVl7NdOB.cjs +0 -83
  47. package/dist/resources-D-mn7ptO.mjs +0 -80
package/dist/index.mjs CHANGED
@@ -1,8 +1,8 @@
1
1
  import 'chalk';
2
- import './index-CrSifgJM.mjs';
3
- import './limits-FjbPJPsF.mjs';
2
+ import './index-B1qzJIMw.mjs';
3
+ import './limits-D2XM3dvN.mjs';
4
4
  import 'zod';
5
- import './types-DLDkfrTC.mjs';
5
+ import './types-Df_vXvzD.mjs';
6
6
  import 'node:child_process';
7
7
  import 'node:os';
8
8
  import 'node:crypto';
@@ -10,7 +10,7 @@ import 'cross-spawn';
10
10
  import 'node:path';
11
11
  import 'node:readline';
12
12
  import 'node:fs';
13
- import './agentGuidance-QpYwykb9.mjs';
13
+ import './agentGuidance-CTyzeLCQ.mjs';
14
14
  import 'node:fs/promises';
15
15
  import 'fs/promises';
16
16
  import 'ink';
@@ -5,10 +5,10 @@ var path = require('node:path');
5
5
  var os = require('node:os');
6
6
  var node_child_process = require('node:child_process');
7
7
  var chalk = require('chalk');
8
- var api = require('./types-BGHnQXl5.cjs');
9
- var index = require('./index-Do-kjc30.cjs');
8
+ var api = require('./types-BuxqyzYf.cjs');
9
+ var index = require('./index-DgjzHewW.cjs');
10
10
  require('axios');
11
- require('./limits-DViGHwSj.cjs');
11
+ require('./limits-BDG3QjIB.cjs');
12
12
  require('node:fs/promises');
13
13
  require('zod');
14
14
  require('node:crypto');
@@ -30,7 +30,7 @@ require('fs');
30
30
  require('node:readline');
31
31
  require('@anthropic-ai/sandbox-runtime');
32
32
  require('expo-server-sdk');
33
- require('./agentGuidance-Cg9ZG1pP.cjs');
33
+ require('./agentGuidance-B-CazXmT.cjs');
34
34
  require('ink');
35
35
  require('react');
36
36
  require('@anthropic-ai/claude-agent-sdk');
@@ -3,10 +3,10 @@ import { join, resolve } from 'node:path';
3
3
  import { homedir } from 'node:os';
4
4
  import { spawnSync } from 'node:child_process';
5
5
  import chalk from 'chalk';
6
- import { p as projectPath } from './types-DLDkfrTC.mjs';
7
- import { t as tmuxSupportsSessionEnv } from './index-CrSifgJM.mjs';
6
+ import { p as projectPath } from './types-Df_vXvzD.mjs';
7
+ import { t as tmuxSupportsSessionEnv } from './index-B1qzJIMw.mjs';
8
8
  import 'axios';
9
- import './limits-FjbPJPsF.mjs';
9
+ import './limits-D2XM3dvN.mjs';
10
10
  import 'node:fs/promises';
11
11
  import 'zod';
12
12
  import 'node:crypto';
@@ -28,7 +28,7 @@ import 'fs';
28
28
  import 'node:readline';
29
29
  import '@anthropic-ai/sandbox-runtime';
30
30
  import 'expo-server-sdk';
31
- import './agentGuidance-QpYwykb9.mjs';
31
+ import './agentGuidance-CTyzeLCQ.mjs';
32
32
  import 'ink';
33
33
  import 'react';
34
34
  import '@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-BGHnQXl5.cjs');
4
- var persistence = require('./limits-DViGHwSj.cjs');
3
+ var api = require('./types-BuxqyzYf.cjs');
4
+ var persistence = require('./limits-BDG3QjIB.cjs');
5
5
  require('axios');
6
6
  require('node:events');
7
7
  require('socket.io-client');
package/dist/lib.d.cts CHANGED
@@ -309,6 +309,7 @@ type Session = {
309
309
  */
310
310
  declare const MachineMetadataSchema: z$1.ZodObject<{
311
311
  teamsVersion: z$1.ZodOptional<z$1.ZodNumber>;
312
+ teamLaunchVersion: z$1.ZodOptional<z$1.ZodNumber>;
312
313
  host: z$1.ZodString;
313
314
  platform: z$1.ZodString;
314
315
  happyCliVersion: z$1.ZodString;
package/dist/lib.d.mts CHANGED
@@ -309,6 +309,7 @@ type Session = {
309
309
  */
310
310
  declare const MachineMetadataSchema: z$1.ZodObject<{
311
311
  teamsVersion: z$1.ZodOptional<z$1.ZodNumber>;
312
+ teamLaunchVersion: z$1.ZodOptional<z$1.ZodNumber>;
312
313
  host: z$1.ZodString;
313
314
  platform: z$1.ZodString;
314
315
  happyCliVersion: z$1.ZodString;
package/dist/lib.mjs CHANGED
@@ -1,5 +1,5 @@
1
- export { A as ApiClient, a as ApiSessionClient, R as RawJSONLinesSchema } from './types-DLDkfrTC.mjs';
2
- export { c as configuration, l as logger } from './limits-FjbPJPsF.mjs';
1
+ export { A as ApiClient, a as ApiSessionClient, R as RawJSONLinesSchema } from './types-Df_vXvzD.mjs';
2
+ export { c as configuration, l as logger } from './limits-D2XM3dvN.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.125";
33
+ var version = "0.2.127";
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 = [
@@ -143,12 +143,12 @@ var dependencies = {
143
143
  zod: "^4.0.0"
144
144
  };
145
145
  var optionalDependencies = {
146
- "very-happy-tools-arm64-darwin": "0.2.125",
147
- "very-happy-tools-x64-darwin": "0.2.125",
148
- "very-happy-tools-arm64-linux": "0.2.125",
149
- "very-happy-tools-x64-linux": "0.2.125",
150
- "very-happy-tools-arm64-win32": "0.2.125",
151
- "very-happy-tools-x64-win32": "0.2.125"
146
+ "very-happy-tools-arm64-darwin": "0.2.127",
147
+ "very-happy-tools-x64-darwin": "0.2.127",
148
+ "very-happy-tools-arm64-linux": "0.2.127",
149
+ "very-happy-tools-x64-linux": "0.2.127",
150
+ "very-happy-tools-arm64-win32": "0.2.127",
151
+ "very-happy-tools-x64-win32": "0.2.127"
152
152
  };
153
153
  var devDependencies = {
154
154
  "@slopus/happy-wire": "workspace:*",
@@ -1,4 +1,4 @@
1
- import { mkdir, chmod, writeFile, readFile, open, unlink, stat, rename } from 'node:fs/promises';
1
+ import { mkdir, chmod, writeFile, open, unlink, readFile, stat, rename } from 'node:fs/promises';
2
2
  import { mkdirSync, chmodSync, readdirSync, statSync, appendFileSync, writeFileSync, existsSync, readFileSync, constants, unlinkSync, renameSync } from 'node:fs';
3
3
  import { homedir } from 'node:os';
4
4
  import { join, basename } from 'node:path';
@@ -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.125";
12
+ var version = "0.2.127";
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 = [
@@ -122,12 +122,12 @@ var dependencies = {
122
122
  zod: "^4.0.0"
123
123
  };
124
124
  var optionalDependencies = {
125
- "very-happy-tools-arm64-darwin": "0.2.125",
126
- "very-happy-tools-x64-darwin": "0.2.125",
127
- "very-happy-tools-arm64-linux": "0.2.125",
128
- "very-happy-tools-x64-linux": "0.2.125",
129
- "very-happy-tools-arm64-win32": "0.2.125",
130
- "very-happy-tools-x64-win32": "0.2.125"
125
+ "very-happy-tools-arm64-darwin": "0.2.127",
126
+ "very-happy-tools-x64-darwin": "0.2.127",
127
+ "very-happy-tools-arm64-linux": "0.2.127",
128
+ "very-happy-tools-x64-linux": "0.2.127",
129
+ "very-happy-tools-arm64-win32": "0.2.127",
130
+ "very-happy-tools-x64-win32": "0.2.127"
131
131
  };
132
132
  var devDependencies = {
133
133
  "@slopus/happy-wire": "workspace:*",
@@ -1126,4 +1126,4 @@ function prepareClipboardText(input) {
1126
1126
  return { text, truncated: true, totalBytes };
1127
1127
  }
1128
1128
 
1129
- export { clearDaemonState as A, ensurePrivateDirectory as B, CLIPBOARD_TOOL_NAME as C, hardenPrivateFile as D, readCredentials as E, readSettingsOutcome as F, updateSettings as G, encodeBase64Url as H, writeCredentialsLegacy as I, writeCredentialsDataKey as J, decryptWithDataKey as K, decryptLegacy as L, persistSession as M, acquireDaemonLock as N, deletePersistedSessions as O, writeDaemonState as P, writeSettings as Q, releaseDaemonLock as R, clearCredentials as S, clearMachineId as T, SandboxConfigSchema as U, getLatestDaemonLog as V, persistence as W, CLIPBOARD_TOOL_TITLE as a, CLIPBOARD_TOOL_DESCRIPTION as b, configuration as c, CLIPBOARD_MAX_BYTES as d, ensurePrivateDirectorySync as e, readSettings as f, encodeBase64 as g, hardenPrivateFileSync as h, readCredentialsForConfiguredRelay as i, encrypt as j, decrypt as k, logger as l, decodeBase64 as m, normalizeHttpEndpoint as n, decryptBlob as o, packageJson as p, prepareClipboardText as q, readPersistedSessions as r, credentialRelayProblem as s, readTrackedClaudeSessionIds as t, libsodiumEncryptForPublicKey as u, libsodiumPublicKeyFromSecretKey as v, writePrivateFileSync as w, getRandomBytes as x, redactLogValue as y, readDaemonState as z };
1129
+ export { clearDaemonState as A, ensurePrivateDirectory as B, CLIPBOARD_TOOL_NAME as C, hardenPrivateFile as D, readCredentials as E, readSettingsOutcome as F, updateSettings as G, encodeBase64Url as H, writeCredentialsLegacy as I, writeCredentialsDataKey as J, decryptWithDataKey as K, decryptLegacy as L, persistSession as M, acquireDaemonLock as N, deletePersistedSessions as O, writeDaemonState as P, writeSettings as Q, releaseDaemonLock as R, clearCredentials as S, clearMachineId as T, SandboxConfigSchema as U, getLatestDaemonLog as V, persistence as W, CLIPBOARD_TOOL_TITLE as a, CLIPBOARD_TOOL_DESCRIPTION as b, configuration as c, readCredentialsForConfiguredRelay as d, CLIPBOARD_MAX_BYTES as e, ensurePrivateDirectorySync as f, readSettings as g, hardenPrivateFileSync as h, encodeBase64 as i, encrypt as j, decrypt as k, logger as l, decodeBase64 as m, normalizeHttpEndpoint as n, decryptBlob as o, packageJson as p, prepareClipboardText as q, readPersistedSessions as r, credentialRelayProblem as s, readTrackedClaudeSessionIds as t, libsodiumEncryptForPublicKey as u, libsodiumPublicKeyFromSecretKey as v, writePrivateFileSync as w, getRandomBytes as x, redactLogValue as y, readDaemonState as z };
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var agentGuidance = require('./agentGuidance-Cg9ZG1pP.cjs');
3
+ var agentGuidance = require('./agentGuidance-B-CazXmT.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 index = require('./index-Do-kjc30.cjs');
8
- var persistence = require('./limits-DViGHwSj.cjs');
7
+ var index = require('./index-DgjzHewW.cjs');
8
+ var persistence = require('./limits-BDG3QjIB.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-BGHnQXl5.cjs');
16
+ require('./types-BuxqyzYf.cjs');
17
17
  require('node:fs');
18
18
  require('node:path');
19
19
  require('chalk');
@@ -1,9 +1,9 @@
1
- import { r as registerTeamsTools } from './agentGuidance-QpYwykb9.mjs';
1
+ import { r as registerTeamsTools } from './agentGuidance-CTyzeLCQ.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, k as setTerminalTitleViaDaemon, m as registerAssistantSessionTools } from './index-CrSifgJM.mjs';
6
- import { l as logger, C as CLIPBOARD_TOOL_NAME, a as CLIPBOARD_TOOL_TITLE, b as CLIPBOARD_TOOL_DESCRIPTION, d as CLIPBOARD_MAX_BYTES } from './limits-FjbPJPsF.mjs';
5
+ import { p as pushClipboardViaDaemon, k as setTerminalTitleViaDaemon, m as registerAssistantSessionTools } from './index-B1qzJIMw.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-D2XM3dvN.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-DLDkfrTC.mjs';
14
+ import './types-Df_vXvzD.mjs';
15
15
  import 'node:fs';
16
16
  import 'node:path';
17
17
  import 'chalk';
@@ -4,11 +4,11 @@ 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 api = require('./types-BGHnQXl5.cjs');
8
- var persistence = require('./limits-DViGHwSj.cjs');
9
- var index = require('./index-Do-kjc30.cjs');
10
- var AcpBackend = require('./AcpBackend-ssQpTLks.cjs');
11
- var config = require('./config-BxHOGtEK.cjs');
7
+ var api = require('./types-BuxqyzYf.cjs');
8
+ var persistence = require('./limits-BDG3QjIB.cjs');
9
+ var index = require('./index-DgjzHewW.cjs');
10
+ var AcpBackend = require('./AcpBackend-Cbykm5Pg.cjs');
11
+ var config = require('./config-Dwt-15hE.cjs');
12
12
  require('axios');
13
13
  require('node:events');
14
14
  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-Cg9ZG1pP.cjs');
37
+ require('./agentGuidance-B-CazXmT.cjs');
38
38
  require('@anthropic-ai/claude-agent-sdk');
39
39
  require('ps-list');
40
40
  require('tmp');
@@ -2,11 +2,11 @@ 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 { f as connectionState, A as ApiClient, e as errorLogMetadata, p as projectPath, b as contentLogMetadata } from './types-DLDkfrTC.mjs';
6
- import { l as logger, f as readSettings, g as encodeBase64 } from './limits-FjbPJPsF.mjs';
7
- import { J as GEMINI_API_KEY_ENV, K as GOOGLE_API_KEY_ENV, G as GEMINI_MODEL_ENV, E as BasePermissionHandler, L as BaseReasoningProcessor, n as initialMachineMetadata, o as createSessionMetadata, u as setupOfflineReconnection, v as notifyDaemonSessionStarted, x as MessageQueue2, B as hashObject, N as MessageBuffer, O as CHANGE_TITLE_INSTRUCTION, y as registerKillSessionHandler, C as startHappyServer } from './index-CrSifgJM.mjs';
8
- import { A as AcpBackend } from './AcpBackend-DOQGItcS.mjs';
9
- import { readGeminiLocalConfig, determineGeminiModel, getGeminiModelSource, getInitialGeminiModel, saveGeminiModelToConfig } from './config-CZNIz3W0.mjs';
5
+ import { g as connectionState, A as ApiClient, e as errorLogMetadata, p as projectPath, d as contentLogMetadata } from './types-Df_vXvzD.mjs';
6
+ import { l as logger, g as readSettings, i as encodeBase64 } from './limits-D2XM3dvN.mjs';
7
+ import { K as GEMINI_API_KEY_ENV, L as GOOGLE_API_KEY_ENV, G as GEMINI_MODEL_ENV, F as BasePermissionHandler, N as BaseReasoningProcessor, n as initialMachineMetadata, o as createSessionMetadata, u as setupOfflineReconnection, v as notifyDaemonSessionStarted, x as MessageQueue2, B as hashObject, O as MessageBuffer, Q as CHANGE_TITLE_INSTRUCTION, y as registerKillSessionHandler, C as startHappyServer } from './index-B1qzJIMw.mjs';
8
+ import { A as AcpBackend } from './AcpBackend-B9_vB_mY.mjs';
9
+ import { readGeminiLocalConfig, determineGeminiModel, getGeminiModelSource, getInitialGeminiModel, saveGeminiModelToConfig } from './config-DotNknpP.mjs';
10
10
  import 'axios';
11
11
  import 'node:events';
12
12
  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-QpYwykb9.mjs';
35
+ import './agentGuidance-CTyzeLCQ.mjs';
36
36
  import '@anthropic-ai/claude-agent-sdk';
37
37
  import 'ps-list';
38
38
  import 'tmp';
@@ -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 { e as errorLogMetadata, b as contentLogMetadata, f as connectionState, A as ApiClient } from './types-DLDkfrTC.mjs';
7
- import { A as AcpSessionManager } from './AcpSessionManager-D4WkNsRs.mjs';
8
- import { e as ensurePrivateDirectorySync, h as hardenPrivateFileSync, w as writePrivateFileSync, f as readSettings, g as encodeBase64, l as logger, c as configuration } from './limits-FjbPJPsF.mjs';
9
- import { n as initialMachineMetadata, o as createSessionMetadata, u as setupOfflineReconnection, v as notifyDaemonSessionStarted, x as MessageQueue2, y as registerKillSessionHandler } from './index-CrSifgJM.mjs';
6
+ import { e as errorLogMetadata, d as contentLogMetadata, g as connectionState, A as ApiClient } from './types-Df_vXvzD.mjs';
7
+ import { A as AcpSessionManager } from './AcpSessionManager-HsxKXreC.mjs';
8
+ import { f as ensurePrivateDirectorySync, h as hardenPrivateFileSync, w as writePrivateFileSync, g as readSettings, i as encodeBase64, l as logger, c as configuration } from './limits-D2XM3dvN.mjs';
9
+ import { n as initialMachineMetadata, o as createSessionMetadata, u as setupOfflineReconnection, v as notifyDaemonSessionStarted, x as MessageQueue2, y as registerKillSessionHandler } from './index-B1qzJIMw.mjs';
10
10
  import WebSocket from 'ws';
11
11
  import * as ed from '@noble/ed25519';
12
12
  import { sha512 } from '@noble/hashes/sha2.js';
@@ -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-QpYwykb9.mjs';
35
+ import './agentGuidance-CTyzeLCQ.mjs';
36
36
  import 'ink';
37
37
  import 'react';
38
38
  import '@anthropic-ai/claude-agent-sdk';
@@ -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 api = require('./types-BGHnQXl5.cjs');
9
- var AcpSessionManager = require('./AcpSessionManager-DHLc-D50.cjs');
10
- var persistence = require('./limits-DViGHwSj.cjs');
11
- var index = require('./index-Do-kjc30.cjs');
8
+ var api = require('./types-BuxqyzYf.cjs');
9
+ var AcpSessionManager = require('./AcpSessionManager-DGCsNKRd.cjs');
10
+ var persistence = require('./limits-BDG3QjIB.cjs');
11
+ var index = require('./index-DgjzHewW.cjs');
12
12
  var WebSocket = require('ws');
13
13
  var ed = require('@noble/ed25519');
14
14
  var sha2_js = require('@noble/hashes/sha2.js');
@@ -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-Cg9ZG1pP.cjs');
37
+ require('./agentGuidance-B-CazXmT.cjs');
38
38
  require('ink');
39
39
  require('react');
40
40
  require('@anthropic-ai/claude-agent-sdk');
@@ -1,15 +1,15 @@
1
1
  import chalk from 'chalk';
2
2
  import { readFileSync } from 'node:fs';
3
3
  import { resolve } from 'node:path';
4
- import { r as readPersistedSessions, c as configuration } from './limits-FjbPJPsF.mjs';
5
- import { d as sendUserMessage, a as sessionWebUrl } from './index-CrSifgJM.mjs';
4
+ import { r as readPersistedSessions, c as configuration } from './limits-D2XM3dvN.mjs';
5
+ import { d as sendUserMessage, a as sessionWebUrl } from './index-B1qzJIMw.mjs';
6
6
  import 'node:fs/promises';
7
7
  import 'node:os';
8
8
  import 'zod';
9
9
  import 'node:crypto';
10
10
  import 'tweetnacl';
11
11
  import 'node:util';
12
- import './types-DLDkfrTC.mjs';
12
+ import './types-Df_vXvzD.mjs';
13
13
  import 'axios';
14
14
  import 'node:events';
15
15
  import 'socket.io-client';
@@ -28,7 +28,7 @@ import 'fs';
28
28
  import 'node:readline';
29
29
  import '@anthropic-ai/sandbox-runtime';
30
30
  import 'expo-server-sdk';
31
- import './agentGuidance-QpYwykb9.mjs';
31
+ import './agentGuidance-CTyzeLCQ.mjs';
32
32
  import 'ink';
33
33
  import 'react';
34
34
  import '@anthropic-ai/claude-agent-sdk';
@@ -3,15 +3,15 @@
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-DViGHwSj.cjs');
7
- var index = require('./index-Do-kjc30.cjs');
6
+ var persistence = require('./limits-BDG3QjIB.cjs');
7
+ var index = require('./index-DgjzHewW.cjs');
8
8
  require('node:fs/promises');
9
9
  require('node:os');
10
10
  require('zod');
11
11
  require('node:crypto');
12
12
  require('tweetnacl');
13
13
  require('node:util');
14
- require('./types-BGHnQXl5.cjs');
14
+ require('./types-BuxqyzYf.cjs');
15
15
  require('axios');
16
16
  require('node:events');
17
17
  require('socket.io-client');
@@ -30,7 +30,7 @@ require('fs');
30
30
  require('node:readline');
31
31
  require('@anthropic-ai/sandbox-runtime');
32
32
  require('expo-server-sdk');
33
- require('./agentGuidance-Cg9ZG1pP.cjs');
33
+ require('./agentGuidance-B-CazXmT.cjs');
34
34
  require('ink');
35
35
  require('react');
36
36
  require('@anthropic-ai/claude-agent-sdk');
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
3
  var chalk = require('chalk');
4
- var index = require('./index-Do-kjc30.cjs');
5
- var api = require('./types-BGHnQXl5.cjs');
4
+ var index = require('./index-DgjzHewW.cjs');
5
+ var api = require('./types-BuxqyzYf.cjs');
6
6
  require('node:os');
7
7
  require('node:crypto');
8
- require('./limits-DViGHwSj.cjs');
8
+ require('./limits-BDG3QjIB.cjs');
9
9
  require('node:fs/promises');
10
10
  require('node:fs');
11
11
  require('node:path');
@@ -14,7 +14,7 @@ require('tweetnacl');
14
14
  require('node:util');
15
15
  require('cross-spawn');
16
16
  require('node:readline');
17
- require('./agentGuidance-Cg9ZG1pP.cjs');
17
+ require('./agentGuidance-B-CazXmT.cjs');
18
18
  require('fs/promises');
19
19
  require('ink');
20
20
  require('react');
@@ -1,9 +1,9 @@
1
1
  import chalk from 'chalk';
2
- import { D as DEFAULT_RECENT_LIMIT, M as MAX_READ_LIMIT, l as listAccountSessions, e as listSessions, r as readSessionTranscript, f as stopSession, g as resolvePermissionRequest, h as archiveSession } from './index-CrSifgJM.mjs';
3
- import { i as isValidSessionId } from './types-DLDkfrTC.mjs';
2
+ import { D as DEFAULT_RECENT_LIMIT, M as MAX_READ_LIMIT, l as listAccountSessions, e as listSessions, r as readSessionTranscript, f as stopSession, g as resolvePermissionRequest, h as archiveSession } from './index-B1qzJIMw.mjs';
3
+ import { i as isValidSessionId } from './types-Df_vXvzD.mjs';
4
4
  import 'node:os';
5
5
  import 'node:crypto';
6
- import './limits-FjbPJPsF.mjs';
6
+ import './limits-D2XM3dvN.mjs';
7
7
  import 'node:fs/promises';
8
8
  import 'node:fs';
9
9
  import 'node:path';
@@ -12,7 +12,7 @@ import 'tweetnacl';
12
12
  import 'node:util';
13
13
  import 'cross-spawn';
14
14
  import 'node:readline';
15
- import './agentGuidance-QpYwykb9.mjs';
15
+ import './agentGuidance-CTyzeLCQ.mjs';
16
16
  import 'fs/promises';
17
17
  import 'ink';
18
18
  import 'react';
@@ -3,11 +3,11 @@
3
3
  var chalk = require('chalk');
4
4
  var node_fs = require('node:fs');
5
5
  var path = require('node:path');
6
- var index = require('./index-Do-kjc30.cjs');
7
- var persistence = require('./limits-DViGHwSj.cjs');
6
+ var index = require('./index-DgjzHewW.cjs');
7
+ var persistence = require('./limits-BDG3QjIB.cjs');
8
8
  require('node:os');
9
9
  require('node:crypto');
10
- require('./types-BGHnQXl5.cjs');
10
+ require('./types-BuxqyzYf.cjs');
11
11
  require('axios');
12
12
  require('node:events');
13
13
  require('socket.io-client');
@@ -29,7 +29,7 @@ require('tweetnacl');
29
29
  require('node:readline');
30
30
  require('@anthropic-ai/sandbox-runtime');
31
31
  require('expo-server-sdk');
32
- require('./agentGuidance-Cg9ZG1pP.cjs');
32
+ require('./agentGuidance-B-CazXmT.cjs');
33
33
  require('ink');
34
34
  require('react');
35
35
  require('@anthropic-ai/claude-agent-sdk');
@@ -1,11 +1,11 @@
1
1
  import chalk from 'chalk';
2
2
  import { readFileSync, statSync } from 'node:fs';
3
3
  import { resolve } from 'node:path';
4
- import { c as checkIfDaemonRunningAndCleanupStaleState, s as spawnDaemonSession, a as sessionWebUrl, i as isValidSpawnOrigin, b as sanitizeSpawnPermissionMode, A as ALLOWED_SPAWN_PERMISSION_MODES, S as SPAWN_AGENTS, w as waitForSessionKey, d as sendUserMessage } from './index-CrSifgJM.mjs';
5
- import { l as logger } from './limits-FjbPJPsF.mjs';
4
+ import { c as checkIfDaemonRunningAndCleanupStaleState, s as spawnDaemonSession, a as sessionWebUrl, i as isValidSpawnOrigin, b as sanitizeSpawnPermissionMode, A as ALLOWED_SPAWN_PERMISSION_MODES, S as SPAWN_AGENTS, w as waitForSessionKey, d as sendUserMessage } from './index-B1qzJIMw.mjs';
5
+ import { l as logger } from './limits-D2XM3dvN.mjs';
6
6
  import 'node:os';
7
7
  import 'node:crypto';
8
- import './types-DLDkfrTC.mjs';
8
+ import './types-Df_vXvzD.mjs';
9
9
  import 'axios';
10
10
  import 'node:events';
11
11
  import 'socket.io-client';
@@ -27,7 +27,7 @@ import 'tweetnacl';
27
27
  import 'node:readline';
28
28
  import '@anthropic-ai/sandbox-runtime';
29
29
  import 'expo-server-sdk';
30
- import './agentGuidance-QpYwykb9.mjs';
30
+ import './agentGuidance-CTyzeLCQ.mjs';
31
31
  import 'ink';
32
32
  import 'react';
33
33
  import '@anthropic-ai/claude-agent-sdk';
@@ -4,14 +4,49 @@ 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-Cg9ZG1pP.cjs');
7
+ var agentGuidance = require('./agentGuidance-B-CazXmT.cjs');
8
+ var persistence = require('./limits-BDG3QjIB.cjs');
8
9
  var path = require('node:path');
9
- var resources = require('./resources-CVl7NdOB.cjs');
10
- require('./limits-DViGHwSj.cjs');
10
+ var index = require('./index-DgjzHewW.cjs');
11
11
  require('node:fs');
12
12
  require('tweetnacl');
13
13
  require('chalk');
14
14
  require('node:util');
15
+ require('./types-BuxqyzYf.cjs');
16
+ require('axios');
17
+ require('node:events');
18
+ require('socket.io-client');
19
+ require('@paralleldrive/cuid2');
20
+ require('child_process');
21
+ require('util');
22
+ require('fs/promises');
23
+ require('crypto');
24
+ require('path');
25
+ require('cross-spawn');
26
+ require('url');
27
+ require('os');
28
+ require('node:child_process');
29
+ require('node-pty');
30
+ require('fs');
31
+ require('node:readline');
32
+ require('@anthropic-ai/sandbox-runtime');
33
+ require('expo-server-sdk');
34
+ require('ink');
35
+ require('react');
36
+ require('@anthropic-ai/claude-agent-sdk');
37
+ require('ps-list');
38
+ require('tmp');
39
+ require('open');
40
+ require('fastify');
41
+ require('fastify-type-provider-zod');
42
+ require('node:module');
43
+ require('@modelcontextprotocol/sdk/server/mcp.js');
44
+ require('node:http');
45
+ require('@modelcontextprotocol/sdk/server/streamableHttp.js');
46
+ require('http');
47
+ require('inquirer');
48
+ require('node:url');
49
+ require('node:readline/promises');
15
50
 
16
51
  const legacyTask = z.z.object({
17
52
  id: z.z.string().regex(/^T-\d{3,}$/),
@@ -45,6 +80,25 @@ function previewLegacyTeamsMigration(input) {
45
80
  };
46
81
  }
47
82
 
83
+ async function setTeamPermissionMode(teamId, mode, requestId) {
84
+ if (process.env.VH_TEAM_SCOPE_FILE || process.env.HAPPY_SESSION_ID) {
85
+ throw new Error("Change team execution mode from the owner Web UI or an independent CLI terminal");
86
+ }
87
+ if (!teamId?.trim() || !requestId?.trim()) throw new Error("Team and request ID are required");
88
+ if (mode !== "default" && mode !== "bypassPermissions") throw new Error("Mode must be default or bypassPermissions");
89
+ const credentials = await persistence.readCredentialsForConfiguredRelay();
90
+ if (!credentials) throw new Error("Sign in before changing team execution mode");
91
+ const result = await agentGuidance.teamRequest(
92
+ `/v1/teams/${encodeURIComponent(teamId)}/actions`,
93
+ "POST",
94
+ credentials.token,
95
+ false,
96
+ { requestId, action: { type: "set-permission-mode", permissionMode: mode } }
97
+ );
98
+ const { credential: _credential, ...safe } = result;
99
+ return safe;
100
+ }
101
+
48
102
  async function assertPrivateDestination(directory) {
49
103
  for (let path$1 = directory; ; path$1 = path.dirname(path$1)) {
50
104
  try {
@@ -89,7 +143,7 @@ async function installTeamSkill(options) {
89
143
  if (current !== null && (!previous || previous.owner !== "very-happy" || previous.sha256 !== digest(current) && previous.pendingSha256 !== digest(current))) {
90
144
  throw new Error("Existing skill is not owned by Very Happy or was edited; preserve it and resolve manually");
91
145
  }
92
- const action = options.uninstall ? current === null && managed === null ? "unchanged" : "remove" : current === resources.TEAM_SKILL && !previous?.pendingSha256 ? "unchanged" : "write";
146
+ const action = options.uninstall ? current === null && managed === null ? "unchanged" : "remove" : current === index.TEAM_SKILL && !previous?.pendingSha256 ? "unchanged" : "write";
93
147
  if (options.apply && action !== "unchanged") {
94
148
  await assertPrivateDestination(directory);
95
149
  if (options.uninstall) {
@@ -99,9 +153,9 @@ async function installTeamSkill(options) {
99
153
  });
100
154
  } else {
101
155
  await promises.mkdir(directory, { recursive: true });
102
- const nextHash = digest(resources.TEAM_SKILL);
156
+ const nextHash = digest(index.TEAM_SKILL);
103
157
  await publish(manifest, JSON.stringify({ owner: "very-happy", sha256: current === null ? null : digest(current), pendingSha256: nextHash, version: 1 }));
104
- await publish(file, resources.TEAM_SKILL);
158
+ await publish(file, index.TEAM_SKILL);
105
159
  await publish(manifest, JSON.stringify({ owner: "very-happy", sha256: nextHash, version: 1 }));
106
160
  }
107
161
  }
@@ -115,7 +169,7 @@ async function handleTeamsCommand(args) {
115
169
  return index < 0 ? void 0 : args[index + 1];
116
170
  };
117
171
  if (!command || command === "--help") {
118
- console.log("very-happy teams install|uninstall --host claude|codex|pi [--home PATH] [--apply]\nvery-happy teams doctor --host pi\nvery-happy teams migration-preview --file LEDGER_JSON\nvery-happy teams inspect\nvery-happy teams create|join --name NAME [--machine-id ID | --team-id ID] [--session-id ID] [--request-id ID]\nvery-happy teams action --json ACTION_JSON --request-id ID\nInstallation previews changes unless --apply is supplied. Managed sessions receive tools automatically.");
172
+ console.log("very-happy teams install|uninstall --host claude|codex|pi [--home PATH] [--apply]\nvery-happy teams doctor --host pi\nvery-happy teams migration-preview --file LEDGER_JSON\nvery-happy teams inspect\nvery-happy teams permissions --team-id ID --mode default|bypassPermissions --request-id ID\nvery-happy teams create|join --name NAME [--machine-id ID | --team-id ID] [--session-id ID] [--request-id ID]\nvery-happy teams action --json ACTION_JSON --request-id ID\nInstallation previews changes unless --apply is supplied. Managed sessions receive tools automatically.");
119
173
  return;
120
174
  }
121
175
  if (command === "install" || command === "uninstall") {
@@ -144,6 +198,12 @@ async function handleTeamsCommand(args) {
144
198
  console.log(JSON.stringify(previewLegacyTeamsMigration(JSON.parse(await promises.readFile(file, "utf8"))), null, 2));
145
199
  return;
146
200
  }
201
+ if (command === "permissions") {
202
+ const teamId = value("--team-id"), mode = value("--mode"), requestId = value("--request-id");
203
+ if (!teamId || !mode || !requestId) throw new Error("--team-id, --mode and --request-id are required");
204
+ console.log(JSON.stringify(await setTeamPermissionMode(teamId, mode, requestId)));
205
+ return;
206
+ }
147
207
  const client = agentGuidance.createTeamsClient(value("--session-id"));
148
208
  let result;
149
209
  if (command === "inspect") result = await client.inspect();