@zhigang1992/happy-cli 0.12.9 → 0.12.11

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.
package/README.md CHANGED
@@ -65,6 +65,12 @@ This will:
65
65
  - `HAPPY_DISABLE_CAFFEINATE` - Disable macOS sleep prevention (set to `true`, `1`, or `yes`)
66
66
  - `HAPPY_EXPERIMENTAL` - Enable experimental features (set to `true`, `1`, or `yes`)
67
67
 
68
+ ## Recommended MCP Servers
69
+
70
+ These MCP servers work well with Happy:
71
+
72
+ - **[@zhigang1992/uploadfile-mcp](https://github.com/zhigang1992/upload-mcp)** - Upload local files to get shareable public URLs. Useful for sharing generated images, CSVs, and other files from AI sessions.
73
+
68
74
  ## Requirements
69
75
 
70
76
  - Node.js >= 20.0.0
@@ -1,7 +1,7 @@
1
1
  import chalk from 'chalk';
2
2
  import os$1, { homedir } from 'node:os';
3
3
  import { randomUUID, randomBytes, createHmac } from 'node:crypto';
4
- import { l as logger, p as projectPath, j as backoff, k as delay, R as RawJSONLinesSchema, m as AsyncLock, c as configuration, n as readDaemonState, o as clearDaemonState, i as packageJson, r as readSettings, q as readCredentials, g as encodeBase64, u as updateSettings, s as encodeBase64Url, d as decodeBase64, w as writeCredentialsLegacy, t as writeCredentialsDataKey, v as acquireDaemonLock, x as writeDaemonState, A as ApiClient, y as releaseDaemonLock, z as authChallenge, B as clearCredentials, C as clearMachineId, D as getLatestDaemonLog } from './types-BQ_WM2tI.mjs';
4
+ import { l as logger, p as projectPath, j as backoff, k as delay, R as RawJSONLinesSchema, m as AsyncLock, c as configuration, n as readDaemonState, o as clearDaemonState, i as packageJson, r as readSettings, q as readCredentials, g as encodeBase64, u as updateSettings, s as encodeBase64Url, d as decodeBase64, w as writeCredentialsLegacy, t as writeCredentialsDataKey, v as acquireDaemonLock, x as writeDaemonState, A as ApiClient, y as releaseDaemonLock, z as authChallenge, B as clearCredentials, C as clearMachineId, D as getLatestDaemonLog } from './types-BOay0dlI.mjs';
5
5
  import { spawn, execSync, execFileSync } from 'node:child_process';
6
6
  import { resolve, join } from 'node:path';
7
7
  import { createInterface } from 'node:readline';
@@ -779,12 +779,18 @@ async function claudeLocalLauncher(session) {
779
779
  break;
780
780
  }
781
781
  } catch (e) {
782
+ const errorMessage = e instanceof Error ? e.message : String(e);
782
783
  logger.debug("[local]: launch error", e);
783
- if (!exitReason) {
784
- session.client.sendSessionEvent({ type: "message", message: "Process exited unexpectedly" });
785
- continue;
786
- } else {
784
+ const reason = exitReason;
785
+ if (reason === "switch") {
786
+ session.client.sendSessionEvent({ type: "message", message: `Error during mode switch: ${errorMessage}` });
787
+ break;
788
+ } else if (reason === "exit") {
789
+ session.client.sendSessionEvent({ type: "message", message: `Error during exit: ${errorMessage}` });
787
790
  break;
791
+ } else {
792
+ session.client.sendSessionEvent({ type: "message", message: `Process error: ${errorMessage}` });
793
+ continue;
788
794
  }
789
795
  }
790
796
  logger.debug("[local]: launch done");
@@ -1291,7 +1297,8 @@ function query(config) {
1291
1297
  model,
1292
1298
  fallbackModel,
1293
1299
  strictMcpConfig,
1294
- canCallTool
1300
+ canCallTool,
1301
+ onStderr
1295
1302
  } = {}
1296
1303
  } = config;
1297
1304
  if (!process.env.CLAUDE_CODE_ENTRYPOINT) {
@@ -1347,11 +1354,15 @@ function query(config) {
1347
1354
  streamToStdin(prompt, child.stdin, config.options?.abort);
1348
1355
  childStdin = child.stdin;
1349
1356
  }
1350
- if (process.env.DEBUG) {
1351
- child.stderr.on("data", (data) => {
1352
- console.error("Claude Code stderr:", data.toString());
1353
- });
1354
- }
1357
+ child.stderr.on("data", (data) => {
1358
+ const stderrText = data.toString();
1359
+ if (process.env.DEBUG) {
1360
+ console.error("Claude Code stderr:", stderrText);
1361
+ }
1362
+ if (onStderr) {
1363
+ onStderr(stderrText);
1364
+ }
1365
+ });
1355
1366
  const cleanup = () => {
1356
1367
  if (!child.killed) {
1357
1368
  child.kill("SIGTERM");
@@ -1722,7 +1733,8 @@ Echo message: ${echoMessage}` : "");
1722
1733
  abort: opts.signal,
1723
1734
  pathToClaudeCodeExecutable: (() => {
1724
1735
  return resolve(join(projectPath(), "scripts", "claude_remote_launcher.cjs"));
1725
- })()
1736
+ })(),
1737
+ onStderr: opts.onStderr
1726
1738
  };
1727
1739
  let thinking = false;
1728
1740
  const updateThinking = (newThinking) => {
@@ -2972,6 +2984,13 @@ async function claudeRemoteLauncher(session) {
2972
2984
  );
2973
2985
  }
2974
2986
  },
2987
+ onStderr: (data) => {
2988
+ const trimmed = data.trim();
2989
+ if (trimmed) {
2990
+ logger.debug(`[remote]: stderr: ${trimmed}`);
2991
+ session.client.sendSessionEvent({ type: "message", message: trimmed });
2992
+ }
2993
+ },
2975
2994
  signal: abortController.signal
2976
2995
  });
2977
2996
  session.consumeOneTimeFlags();
@@ -2979,9 +2998,14 @@ async function claudeRemoteLauncher(session) {
2979
2998
  session.client.sendSessionEvent({ type: "message", message: "Aborted by user" });
2980
2999
  }
2981
3000
  } catch (e) {
3001
+ const errorMessage = e instanceof Error ? e.message : String(e);
2982
3002
  logger.debug("[remote]: launch error", e);
2983
- if (!exitReason) {
2984
- session.client.sendSessionEvent({ type: "message", message: "Process exited unexpectedly" });
3003
+ if (exitReason === "switch") {
3004
+ session.client.sendSessionEvent({ type: "message", message: `Error during mode switch: ${errorMessage}` });
3005
+ } else if (exitReason === "exit") {
3006
+ session.client.sendSessionEvent({ type: "message", message: `Error during exit: ${errorMessage}` });
3007
+ } else {
3008
+ session.client.sendSessionEvent({ type: "message", message: `Process error: ${errorMessage}` });
2985
3009
  continue;
2986
3010
  }
2987
3011
  } finally {
@@ -6373,7 +6397,7 @@ async function handleConnectVendor(vendor, displayName) {
6373
6397
  return;
6374
6398
  } else if (subcommand === "codex") {
6375
6399
  try {
6376
- const { runCodex } = await import('./runCodex-BeLLGX3X.mjs');
6400
+ const { runCodex } = await import('./runCodex-kOPypLpq.mjs');
6377
6401
  let startedBy = void 0;
6378
6402
  for (let i = 1; i < args.length; i++) {
6379
6403
  if (args[i] === "--started-by") {
@@ -6418,7 +6442,7 @@ async function handleConnectVendor(vendor, displayName) {
6418
6442
  } else if (subcommand === "list") {
6419
6443
  try {
6420
6444
  const { credentials } = await authAndSetupMachineIfNeeded();
6421
- const { listSessions } = await import('./list-DqbAuRvF.mjs');
6445
+ const { listSessions } = await import('./list-CkDUkqjR.mjs');
6422
6446
  let sessionId;
6423
6447
  let titleFilter;
6424
6448
  let recentMsgs;
@@ -6520,7 +6544,7 @@ Examples:
6520
6544
  process.exit(1);
6521
6545
  }
6522
6546
  const { credentials } = await authAndSetupMachineIfNeeded();
6523
- const { promptSession } = await import('./prompt-DwjhpAf5.mjs');
6547
+ const { promptSession } = await import('./prompt-ChEWrDOB.mjs');
6524
6548
  await promptSession(credentials, sessionId, promptText, timeoutMinutes ?? void 0);
6525
6549
  } catch (error) {
6526
6550
  console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
@@ -3,7 +3,7 @@
3
3
  var chalk = require('chalk');
4
4
  var os = require('node:os');
5
5
  var node_crypto = require('node:crypto');
6
- var types = require('./types-DU-KcuRq.cjs');
6
+ var types = require('./types-DK1d73BF.cjs');
7
7
  var node_child_process = require('node:child_process');
8
8
  var node_path = require('node:path');
9
9
  var node_readline = require('node:readline');
@@ -802,12 +802,18 @@ async function claudeLocalLauncher(session) {
802
802
  break;
803
803
  }
804
804
  } catch (e) {
805
+ const errorMessage = e instanceof Error ? e.message : String(e);
805
806
  types.logger.debug("[local]: launch error", e);
806
- if (!exitReason) {
807
- session.client.sendSessionEvent({ type: "message", message: "Process exited unexpectedly" });
808
- continue;
809
- } else {
807
+ const reason = exitReason;
808
+ if (reason === "switch") {
809
+ session.client.sendSessionEvent({ type: "message", message: `Error during mode switch: ${errorMessage}` });
810
+ break;
811
+ } else if (reason === "exit") {
812
+ session.client.sendSessionEvent({ type: "message", message: `Error during exit: ${errorMessage}` });
810
813
  break;
814
+ } else {
815
+ session.client.sendSessionEvent({ type: "message", message: `Process error: ${errorMessage}` });
816
+ continue;
811
817
  }
812
818
  }
813
819
  types.logger.debug("[local]: launch done");
@@ -1083,7 +1089,7 @@ class AbortError extends Error {
1083
1089
  }
1084
1090
  }
1085
1091
 
1086
- const __filename$1 = node_url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-DvMFDzz3.cjs', document.baseURI).href)));
1092
+ const __filename$1 = node_url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-kN77bT9j.cjs', document.baseURI).href)));
1087
1093
  const __dirname$1 = node_path.join(__filename$1, "..");
1088
1094
  function getDefaultClaudeCodePath() {
1089
1095
  return node_path.join(__dirname$1, "..", "..", "..", "node_modules", "@anthropic-ai", "claude-code", "cli.js");
@@ -1314,7 +1320,8 @@ function query(config) {
1314
1320
  model,
1315
1321
  fallbackModel,
1316
1322
  strictMcpConfig,
1317
- canCallTool
1323
+ canCallTool,
1324
+ onStderr
1318
1325
  } = {}
1319
1326
  } = config;
1320
1327
  if (!process.env.CLAUDE_CODE_ENTRYPOINT) {
@@ -1370,11 +1377,15 @@ function query(config) {
1370
1377
  streamToStdin(prompt, child.stdin, config.options?.abort);
1371
1378
  childStdin = child.stdin;
1372
1379
  }
1373
- if (process.env.DEBUG) {
1374
- child.stderr.on("data", (data) => {
1375
- console.error("Claude Code stderr:", data.toString());
1376
- });
1377
- }
1380
+ child.stderr.on("data", (data) => {
1381
+ const stderrText = data.toString();
1382
+ if (process.env.DEBUG) {
1383
+ console.error("Claude Code stderr:", stderrText);
1384
+ }
1385
+ if (onStderr) {
1386
+ onStderr(stderrText);
1387
+ }
1388
+ });
1378
1389
  const cleanup = () => {
1379
1390
  if (!child.killed) {
1380
1391
  child.kill("SIGTERM");
@@ -1745,7 +1756,8 @@ Echo message: ${echoMessage}` : "");
1745
1756
  abort: opts.signal,
1746
1757
  pathToClaudeCodeExecutable: (() => {
1747
1758
  return node_path.resolve(node_path.join(types.projectPath(), "scripts", "claude_remote_launcher.cjs"));
1748
- })()
1759
+ })(),
1760
+ onStderr: opts.onStderr
1749
1761
  };
1750
1762
  let thinking = false;
1751
1763
  const updateThinking = (newThinking) => {
@@ -2995,6 +3007,13 @@ async function claudeRemoteLauncher(session) {
2995
3007
  );
2996
3008
  }
2997
3009
  },
3010
+ onStderr: (data) => {
3011
+ const trimmed = data.trim();
3012
+ if (trimmed) {
3013
+ types.logger.debug(`[remote]: stderr: ${trimmed}`);
3014
+ session.client.sendSessionEvent({ type: "message", message: trimmed });
3015
+ }
3016
+ },
2998
3017
  signal: abortController.signal
2999
3018
  });
3000
3019
  session.consumeOneTimeFlags();
@@ -3002,9 +3021,14 @@ async function claudeRemoteLauncher(session) {
3002
3021
  session.client.sendSessionEvent({ type: "message", message: "Aborted by user" });
3003
3022
  }
3004
3023
  } catch (e) {
3024
+ const errorMessage = e instanceof Error ? e.message : String(e);
3005
3025
  types.logger.debug("[remote]: launch error", e);
3006
- if (!exitReason) {
3007
- session.client.sendSessionEvent({ type: "message", message: "Process exited unexpectedly" });
3026
+ if (exitReason === "switch") {
3027
+ session.client.sendSessionEvent({ type: "message", message: `Error during mode switch: ${errorMessage}` });
3028
+ } else if (exitReason === "exit") {
3029
+ session.client.sendSessionEvent({ type: "message", message: `Error during exit: ${errorMessage}` });
3030
+ } else {
3031
+ session.client.sendSessionEvent({ type: "message", message: `Process error: ${errorMessage}` });
3008
3032
  continue;
3009
3033
  }
3010
3034
  } finally {
@@ -6396,7 +6420,7 @@ async function handleConnectVendor(vendor, displayName) {
6396
6420
  return;
6397
6421
  } else if (subcommand === "codex") {
6398
6422
  try {
6399
- const { runCodex } = await Promise.resolve().then(function () { return require('./runCodex-B33w9tjC.cjs'); });
6423
+ const { runCodex } = await Promise.resolve().then(function () { return require('./runCodex-BKM5EQtE.cjs'); });
6400
6424
  let startedBy = void 0;
6401
6425
  for (let i = 1; i < args.length; i++) {
6402
6426
  if (args[i] === "--started-by") {
@@ -6441,7 +6465,7 @@ async function handleConnectVendor(vendor, displayName) {
6441
6465
  } else if (subcommand === "list") {
6442
6466
  try {
6443
6467
  const { credentials } = await authAndSetupMachineIfNeeded();
6444
- const { listSessions } = await Promise.resolve().then(function () { return require('./list-sCcVgML_.cjs'); });
6468
+ const { listSessions } = await Promise.resolve().then(function () { return require('./list-DTBBqufH.cjs'); });
6445
6469
  let sessionId;
6446
6470
  let titleFilter;
6447
6471
  let recentMsgs;
@@ -6543,7 +6567,7 @@ Examples:
6543
6567
  process.exit(1);
6544
6568
  }
6545
6569
  const { credentials } = await authAndSetupMachineIfNeeded();
6546
- const { promptSession } = await Promise.resolve().then(function () { return require('./prompt-DQyb25aY.cjs'); });
6570
+ const { promptSession } = await Promise.resolve().then(function () { return require('./prompt-DbTKMvNz.cjs'); });
6547
6571
  await promptSession(credentials, sessionId, promptText, timeoutMinutes ?? void 0);
6548
6572
  } catch (error) {
6549
6573
  console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
package/dist/index.cjs CHANGED
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  require('chalk');
4
- require('./index-DvMFDzz3.cjs');
5
- require('./types-DU-KcuRq.cjs');
4
+ require('./index-kN77bT9j.cjs');
5
+ require('./types-DK1d73BF.cjs');
6
6
  require('zod');
7
7
  require('node:child_process');
8
8
  require('node:os');
package/dist/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import 'chalk';
2
- import './index-iFxcl7Hn.mjs';
3
- import './types-BQ_WM2tI.mjs';
2
+ import './index-Z_1PFUM2.mjs';
3
+ import './types-BOay0dlI.mjs';
4
4
  import 'zod';
5
5
  import 'node:child_process';
6
6
  import 'node:os';
package/dist/lib.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var types = require('./types-DU-KcuRq.cjs');
3
+ var types = require('./types-DK1d73BF.cjs');
4
4
  require('axios');
5
5
  require('chalk');
6
6
  require('fs');
package/dist/lib.mjs CHANGED
@@ -1,4 +1,4 @@
1
- export { A as ApiClient, a as ApiSessionClient, R as RawJSONLinesSchema, c as configuration, l as logger } from './types-BQ_WM2tI.mjs';
1
+ export { A as ApiClient, a as ApiSessionClient, R as RawJSONLinesSchema, c as configuration, l as logger } from './types-BOay0dlI.mjs';
2
2
  import 'axios';
3
3
  import 'chalk';
4
4
  import 'fs';
@@ -1,4 +1,4 @@
1
- import { c as configuration, l as logger, d as decodeBase64, b as decrypt, f as formatTimeAgo, e as libsodiumDecryptFromPublicKey } from './types-BQ_WM2tI.mjs';
1
+ import { c as configuration, l as logger, d as decodeBase64, b as decrypt, f as formatTimeAgo, e as libsodiumDecryptFromPublicKey } from './types-BOay0dlI.mjs';
2
2
  import axios from 'axios';
3
3
  import { existsSync, readdirSync, statSync, readFileSync } from 'fs';
4
4
  import { join } from 'path';
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var types = require('./types-DU-KcuRq.cjs');
3
+ var types = require('./types-DK1d73BF.cjs');
4
4
  var axios = require('axios');
5
5
  var fs = require('fs');
6
6
  var path = require('path');
@@ -1,4 +1,4 @@
1
- import { c as configuration, b as decrypt, d as decodeBase64, l as logger, g as encodeBase64, h as encrypt } from './types-BQ_WM2tI.mjs';
1
+ import { c as configuration, b as decrypt, d as decodeBase64, l as logger, g as encodeBase64, h as encrypt } from './types-BOay0dlI.mjs';
2
2
  import axios from 'axios';
3
3
  import { io } from 'socket.io-client';
4
4
  import 'chalk';
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var types = require('./types-DU-KcuRq.cjs');
3
+ var types = require('./types-DK1d73BF.cjs');
4
4
  var axios = require('axios');
5
5
  var socket_ioClient = require('socket.io-client');
6
6
  require('chalk');
@@ -2,14 +2,14 @@
2
2
 
3
3
  var ink = require('ink');
4
4
  var React = require('react');
5
- var types = require('./types-DU-KcuRq.cjs');
5
+ var types = require('./types-DK1d73BF.cjs');
6
6
  var index_js = require('@modelcontextprotocol/sdk/client/index.js');
7
7
  var stdio_js = require('@modelcontextprotocol/sdk/client/stdio.js');
8
8
  var z = require('zod');
9
9
  var types_js = require('@modelcontextprotocol/sdk/types.js');
10
10
  var child_process = require('child_process');
11
11
  var node_crypto = require('node:crypto');
12
- var index = require('./index-DvMFDzz3.cjs');
12
+ var index = require('./index-kN77bT9j.cjs');
13
13
  var os = require('node:os');
14
14
  var node_path = require('node:path');
15
15
  var fs = require('node:fs');
@@ -1,13 +1,13 @@
1
1
  import { useStdout, useInput, Box, Text, render } from 'ink';
2
2
  import React, { useState, useRef, useEffect, useCallback } from 'react';
3
- import { l as logger, A as ApiClient, r as readSettings, p as projectPath, c as configuration, i as packageJson } from './types-BQ_WM2tI.mjs';
3
+ import { l as logger, A as ApiClient, r as readSettings, p as projectPath, c as configuration, i as packageJson } from './types-BOay0dlI.mjs';
4
4
  import { Client } from '@modelcontextprotocol/sdk/client/index.js';
5
5
  import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
6
6
  import { z } from 'zod';
7
7
  import { ElicitRequestSchema } from '@modelcontextprotocol/sdk/types.js';
8
8
  import { execSync } from 'child_process';
9
9
  import { randomUUID } from 'node:crypto';
10
- import { i as initialMachineMetadata, n as notifyDaemonSessionStarted, M as MessageQueue2, h as hashObject, r as registerKillSessionHandler, a as MessageBuffer, s as startHappyServer, t as trimIdent, b as stopCaffeinate } from './index-iFxcl7Hn.mjs';
10
+ import { i as initialMachineMetadata, n as notifyDaemonSessionStarted, M as MessageQueue2, h as hashObject, r as registerKillSessionHandler, a as MessageBuffer, s as startHappyServer, t as trimIdent, b as stopCaffeinate } from './index-Z_1PFUM2.mjs';
11
11
  import os from 'node:os';
12
12
  import { resolve, join } from 'node:path';
13
13
  import fs from 'node:fs';
@@ -20,7 +20,7 @@ import { fileURLToPath } from 'url';
20
20
  import { Expo } from 'expo-server-sdk';
21
21
 
22
22
  var name = "@zhigang1992/happy-cli";
23
- var version = "0.12.9";
23
+ var version = "0.12.11";
24
24
  var description = "Mobile and Web client for Claude Code and Codex";
25
25
  var author = "Kirill Dubovitskiy";
26
26
  var license = "MIT";
@@ -86,8 +86,8 @@ var scripts = {
86
86
  release: "release-it"
87
87
  };
88
88
  var dependencies = {
89
- "@anthropic-ai/claude-code": "2.0.55",
90
- "@anthropic-ai/sdk": "0.65.0",
89
+ "@anthropic-ai/claude-code": "2.0.76",
90
+ "@anthropic-ai/sdk": "0.71.2",
91
91
  "@elevenlabs/elevenlabs-js": "^2.25.1",
92
92
  "@iarna/toml": "^3.0.0",
93
93
  "@modelcontextprotocol/sdk": "^1.15.1",
@@ -41,7 +41,7 @@ function _interopNamespaceDefault(e) {
41
41
  var z__namespace = /*#__PURE__*/_interopNamespaceDefault(z);
42
42
 
43
43
  var name = "@zhigang1992/happy-cli";
44
- var version = "0.12.9";
44
+ var version = "0.12.11";
45
45
  var description = "Mobile and Web client for Claude Code and Codex";
46
46
  var author = "Kirill Dubovitskiy";
47
47
  var license = "MIT";
@@ -107,8 +107,8 @@ var scripts = {
107
107
  release: "release-it"
108
108
  };
109
109
  var dependencies = {
110
- "@anthropic-ai/claude-code": "2.0.55",
111
- "@anthropic-ai/sdk": "0.65.0",
110
+ "@anthropic-ai/claude-code": "2.0.76",
111
+ "@anthropic-ai/sdk": "0.71.2",
112
112
  "@elevenlabs/elevenlabs-js": "^2.25.1",
113
113
  "@iarna/toml": "^3.0.0",
114
114
  "@modelcontextprotocol/sdk": "^1.15.1",
@@ -1150,7 +1150,7 @@ class RpcHandlerManager {
1150
1150
  }
1151
1151
  }
1152
1152
 
1153
- const __dirname$1 = path.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('types-DU-KcuRq.cjs', document.baseURI).href))));
1153
+ const __dirname$1 = path.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('types-DK1d73BF.cjs', document.baseURI).href))));
1154
1154
  function projectPath() {
1155
1155
  const path$1 = path.resolve(__dirname$1, "..");
1156
1156
  return path$1;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhigang1992/happy-cli",
3
- "version": "0.12.9",
3
+ "version": "0.12.11",
4
4
  "description": "Mobile and Web client for Claude Code and Codex",
5
5
  "author": "Kirill Dubovitskiy",
6
6
  "license": "MIT",
@@ -66,8 +66,8 @@
66
66
  "release": "release-it"
67
67
  },
68
68
  "dependencies": {
69
- "@anthropic-ai/claude-code": "2.0.55",
70
- "@anthropic-ai/sdk": "0.65.0",
69
+ "@anthropic-ai/claude-code": "2.0.76",
70
+ "@anthropic-ai/sdk": "0.71.2",
71
71
  "@elevenlabs/elevenlabs-js": "^2.25.1",
72
72
  "@iarna/toml": "^3.0.0",
73
73
  "@modelcontextprotocol/sdk": "^1.15.1",