@zonease/happy 0.6.46 → 0.6.47

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 (85) hide show
  1. package/dist/{api-CxdKKE-w.mjs → api-L9jLLtI1.mjs} +2 -2
  2. package/dist/{api-DGgccR6B.cjs → api-mv48hjhj.cjs} +3 -3
  3. package/dist/{auth-XO55Tcek.cjs → auth-0qbD9TEm.cjs} +4 -4
  4. package/dist/{auth-C7oghkN1.mjs → auth-BoWfky2q.mjs} +2 -2
  5. package/dist/{auth-Bf-VkNDK.cjs → auth-DfQYhTlg.cjs} +2 -2
  6. package/dist/{auth-CcMvoMIH.mjs → auth-InL7fBsz.mjs} +4 -4
  7. package/dist/{browser-Cn_RttD9.cjs → browser-CF-r2ami.cjs} +1 -1
  8. package/dist/{browser-DedYcRMI.mjs → browser-D9jMe1me.mjs} +1 -1
  9. package/dist/{claudeLocal-G2km5rB3.mjs → claudeLocal-CFEXiYts.mjs} +1 -1
  10. package/dist/{claudeLocal-CupQ03sq.cjs → claudeLocal-DOfhf6VK.cjs} +1 -1
  11. package/dist/codex/happyMcpStdioBridge.cjs +3 -2
  12. package/dist/codex/happyMcpStdioBridge.mjs +3 -2
  13. package/dist/{config-DimzIdjy.mjs → config-BBm54d_L.mjs} +1 -1
  14. package/dist/{config-BDbpXufc.cjs → config-ByyclMMi.cjs} +1 -1
  15. package/dist/{connect-CjFR0V4l.mjs → connect-B5JhnDTy.mjs} +4 -4
  16. package/dist/{connect-DWElyqHy.cjs → connect-CIOfZYj-.cjs} +4 -4
  17. package/dist/{controlClient-DTS16hKY.cjs → controlClient-DMEMVw4Y.cjs} +1 -1
  18. package/dist/{controlClient-C8MF8Qxi.mjs → controlClient-P5wJhu1R.mjs} +1 -1
  19. package/dist/{cursorApprovalHook-B9dUHp7N.cjs → cursorApprovalHook-C9mdmRIx.cjs} +2 -2
  20. package/dist/{cursorApprovalHook-DmVCQFLi.mjs → cursorApprovalHook-DplHRbGK.mjs} +2 -2
  21. package/dist/{cursorApprovalServer-BkQ3JeOR.cjs → cursorApprovalServer-BoI6qBTg.cjs} +1 -1
  22. package/dist/{cursorApprovalServer-DeyL8InE.mjs → cursorApprovalServer-C9y5dYDE.mjs} +1 -1
  23. package/dist/{deviceKeys-CcXkzhNB.cjs → deviceKeys-CzqNNlG1.cjs} +2 -2
  24. package/dist/{deviceKeys-CUdnv0Yf.mjs → deviceKeys-tcvwm4KA.mjs} +2 -2
  25. package/dist/{doctor-B1Tm6BSe.cjs → doctor-CBbj6YEl.cjs} +2 -2
  26. package/dist/{doctor-C59DXnte.mjs → doctor-CXYhUN9A.mjs} +2 -2
  27. package/dist/{downloadImage-fpJ_y7st.cjs → downloadImage-CRkycWIl.cjs} +1 -1
  28. package/dist/{downloadImage-tso3BJBM.mjs → downloadImage-CpnQ3aS1.mjs} +1 -1
  29. package/dist/{enroll-DJwHeZQv.mjs → enroll-CYNDVSIH.mjs} +3 -3
  30. package/dist/{enroll-qLqzLVlX.cjs → enroll-CyikRwm7.cjs} +3 -3
  31. package/dist/{evidence-IqM8YLhr.cjs → evidence-CuGxhBQm.cjs} +1 -1
  32. package/dist/{evidence-B2t1PILg.mjs → evidence-DAu9vtgh.mjs} +1 -1
  33. package/dist/{formatImageMessage-BzBJVvC5.cjs → formatImageMessage-CqonqpiB.cjs} +1 -1
  34. package/dist/{formatImageMessage-R9j4fTqw.mjs → formatImageMessage-ZJZza9-9.mjs} +1 -1
  35. package/dist/index.cjs +46 -46
  36. package/dist/index.mjs +46 -46
  37. package/dist/{install-BvOb90B1.mjs → install-5H5Lh58Z.mjs} +2 -2
  38. package/dist/{install-DVsfVhR4.mjs → install-Cma2vLWa.mjs} +1 -1
  39. package/dist/{install-CAWGzh-y.cjs → install-X4JLGAi3.cjs} +2 -2
  40. package/dist/{install-C4UgnaVt.cjs → install-_GiK-K1X.cjs} +1 -1
  41. package/dist/lib.cjs +3 -3
  42. package/dist/lib.mjs +3 -3
  43. package/dist/{loadableToolOutput-Pxv9LNrC.mjs → loadableToolOutput-4qF6EX0y.mjs} +2 -2
  44. package/dist/{loadableToolOutput-JbPnwQD1.cjs → loadableToolOutput-sf6E72GE.cjs} +2 -2
  45. package/dist/{persistence-DflTrEXm.cjs → persistence-B_w4o5z-.cjs} +1 -1
  46. package/dist/{persistence-BGgHa7Mf.mjs → persistence-D2aRTiT1.mjs} +1 -1
  47. package/dist/{push-DOwuDkzH.mjs → push-BiBqn-pk.mjs} +6 -6
  48. package/dist/{push-CavNF4-w.cjs → push-Df6QabEp.cjs} +6 -6
  49. package/dist/{registerKillSessionHandler-Bcg7ph3f.mjs → registerKillSessionHandler-AcpB6OSk.mjs} +31 -16
  50. package/dist/{registerKillSessionHandler-B9qo40Js.cjs → registerKillSessionHandler-DUrOhiGo.cjs} +31 -16
  51. package/dist/{run-CS7zNIOF.mjs → run-D6oXm1Jk.mjs} +8 -8
  52. package/dist/{run-vWYjxpj7.cjs → run-DclH1MRm.cjs} +8 -8
  53. package/dist/{runClaude-uzuESWTN.mjs → runClaude--M8lVtqr.mjs} +15 -15
  54. package/dist/{runClaude-DPv8wwz5.cjs → runClaude-BfLi7f2N.cjs} +16 -16
  55. package/dist/{runCodex-BQj7asY1.mjs → runCodex-DatWk57y.mjs} +15 -15
  56. package/dist/{runCodex-CukxaOtw.cjs → runCodex-DdcEe5bM.cjs} +15 -15
  57. package/dist/{runCursor-DRTH8eya.cjs → runCursor-CszdTKDp.cjs} +14 -14
  58. package/dist/{runCursor-DDFZIPow.mjs → runCursor-DxcT7Qtj.mjs} +14 -14
  59. package/dist/{runGemini-Dq1n_3Il.mjs → runGemini-41p6X_zo.mjs} +18 -18
  60. package/dist/{runGemini-fCjqaRxV.cjs → runGemini-sAOJNh2V.cjs} +18 -18
  61. package/dist/{runOneShot-B58c3uwD.mjs → runOneShot-NBUWEobi.mjs} +2 -2
  62. package/dist/{runOneShot-cFeh3BT0.cjs → runOneShot-m6HO3H5c.cjs} +2 -2
  63. package/dist/{serve-DlQJZwiG.mjs → serve-B84oK7m-.mjs} +6 -6
  64. package/dist/{serve-Dow3CBz9.cjs → serve-CUNdZ2ps.cjs} +6 -6
  65. package/dist/{session-xYoR4mck.mjs → session-9-fr4sTn.mjs} +5 -5
  66. package/dist/{session-DKY0LmV1.cjs → session-De8UTFFI.cjs} +5 -5
  67. package/dist/{sessionKeyCache-Pyx1Ydwx.mjs → sessionKeyCache-CEJH5cHj.mjs} +1 -1
  68. package/dist/{sessionKeyCache-B7Cr3M7u.cjs → sessionKeyCache-DYuPkw5Z.cjs} +1 -1
  69. package/dist/{sessionList-C4JvaNZK.mjs → sessionList-Dd4fyhNe.mjs} +2 -2
  70. package/dist/{sessionList-DGnoq1GY.cjs → sessionList-KhgmL10v.cjs} +2 -2
  71. package/dist/{sessionSummary-CTGgh_U0.mjs → sessionSummary-CYsvjLpK.mjs} +3 -3
  72. package/dist/{sessionSummary-DBDFmDZc.cjs → sessionSummary-u-kSmPto.cjs} +3 -3
  73. package/dist/{setupOfflineReconnection-CD7ix1EA.mjs → setupOfflineReconnection-2m0GAIU5.mjs} +3 -3
  74. package/dist/{setupOfflineReconnection-Cjcq7f53.cjs → setupOfflineReconnection-BkAr6jAB.cjs} +3 -3
  75. package/dist/{spawnHappyCLI-CcZ1W5ck.mjs → spawnHappyCLI-CG_S7LH1.mjs} +1 -1
  76. package/dist/{spawnHappyCLI-Bf5U61Km.cjs → spawnHappyCLI-T9EQFmAR.cjs} +1 -1
  77. package/dist/{ssh-X7pcNZhV.mjs → ssh-BTVqCokU.mjs} +5 -5
  78. package/dist/{ssh-DVtjvpXO.cjs → ssh-C4nI67Vq.cjs} +5 -5
  79. package/dist/{task-CDCM3UoN.cjs → task-AWrQbs-h.cjs} +6 -6
  80. package/dist/{task-B38P7nUL.mjs → task-DzqzVDDn.mjs} +6 -6
  81. package/dist/{uninstall-CnsQ85RV.mjs → uninstall-394a0fgf.mjs} +2 -2
  82. package/dist/{uninstall-BzSiuDRd.cjs → uninstall-BRDV8214.cjs} +2 -2
  83. package/dist/{update-VzbqRv5g.cjs → update-CZIaB80S.cjs} +3 -3
  84. package/dist/{update-CffXErUk.mjs → update-DLqQQtYc.mjs} +3 -3
  85. package/package.json +1 -1
@@ -35,7 +35,7 @@ function isDebug() {
35
35
  }
36
36
 
37
37
  var name = "@zonease/happy";
38
- var version = "0.6.46";
38
+ var version = "0.6.47";
39
39
  var description = "Mobile and Web client for Claude Code, Codex, and Gemini";
40
40
  var author = "ZonEaseTech";
41
41
  var license = "MIT";
@@ -14,7 +14,7 @@ function isDebug() {
14
14
  }
15
15
 
16
16
  var name = "@zonease/happy";
17
- var version = "0.6.46";
17
+ var version = "0.6.47";
18
18
  var description = "Mobile and Web client for Claude Code, Codex, and Gemini";
19
19
  var author = "ZonEaseTech";
20
20
  var license = "MIT";
@@ -1,7 +1,7 @@
1
1
  import { stat, readFile } from 'node:fs/promises';
2
2
  import { io } from 'socket.io-client';
3
- import { c as configuration, e as encodeBase64, f as encrypt, g as decrypt, h as decodeBase64 } from './persistence-BGgHa7Mf.mjs';
4
- import { resolveDeviceForCommand } from './ssh-X7pcNZhV.mjs';
3
+ import { c as configuration, e as encodeBase64, f as encrypt, g as decrypt, h as decodeBase64 } from './persistence-D2aRTiT1.mjs';
4
+ import { resolveDeviceForCommand } from './ssh-BTVqCokU.mjs';
5
5
  import 'node:fs';
6
6
  import 'node:os';
7
7
  import 'node:path';
@@ -10,16 +10,16 @@ import 'node:crypto';
10
10
  import 'tweetnacl';
11
11
  import 'chalk';
12
12
  import 'fs';
13
- import './deviceKeys-CUdnv0Yf.mjs';
13
+ import './deviceKeys-tcvwm4KA.mjs';
14
14
  import 'axios';
15
- import './auth-C7oghkN1.mjs';
15
+ import './auth-BoWfky2q.mjs';
16
16
  import 'qrcode-terminal';
17
17
  import './time-DgsBLJA_.mjs';
18
- import './browser-DedYcRMI.mjs';
18
+ import './browser-D9jMe1me.mjs';
19
19
  import 'open';
20
20
  import 'react';
21
21
  import 'ink';
22
- import './controlClient-C8MF8Qxi.mjs';
22
+ import './controlClient-P5wJhu1R.mjs';
23
23
  import './projectPath-BTBIMB57.mjs';
24
24
  import 'path';
25
25
  import 'url';
@@ -2,8 +2,8 @@
2
2
 
3
3
  var promises = require('node:fs/promises');
4
4
  var socket_ioClient = require('socket.io-client');
5
- var logger = require('./persistence-DflTrEXm.cjs');
6
- var ssh = require('./ssh-DVtjvpXO.cjs');
5
+ var logger = require('./persistence-B_w4o5z-.cjs');
6
+ var ssh = require('./ssh-C4nI67Vq.cjs');
7
7
  require('node:fs');
8
8
  require('node:os');
9
9
  require('node:path');
@@ -12,16 +12,16 @@ require('node:crypto');
12
12
  require('tweetnacl');
13
13
  require('chalk');
14
14
  require('fs');
15
- require('./deviceKeys-CcXkzhNB.cjs');
15
+ require('./deviceKeys-CzqNNlG1.cjs');
16
16
  require('axios');
17
- require('./auth-Bf-VkNDK.cjs');
17
+ require('./auth-DfQYhTlg.cjs');
18
18
  require('qrcode-terminal');
19
19
  require('./time-Bj2HRkKH.cjs');
20
- require('./browser-Cn_RttD9.cjs');
20
+ require('./browser-CF-r2ami.cjs');
21
21
  require('open');
22
22
  require('react');
23
23
  require('ink');
24
- require('./controlClient-DTS16hKY.cjs');
24
+ require('./controlClient-DMEMVw4Y.cjs');
25
25
  require('./projectPath-ChLhdOyt.cjs');
26
26
  require('path');
27
27
  require('url');
@@ -5,8 +5,8 @@ import { createServer } from 'node:http';
5
5
  import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
6
6
  import { isInitializeRequest } from '@modelcontextprotocol/sdk/types.js';
7
7
  import { z } from 'zod';
8
- import { c as configuration, l as logger, r as readCredentials } from './persistence-BGgHa7Mf.mjs';
9
- import { l as listDevices, d as deviceExec } from './deviceKeys-CUdnv0Yf.mjs';
8
+ import { c as configuration, l as logger, r as readCredentials } from './persistence-D2aRTiT1.mjs';
9
+ import { l as listDevices, d as deviceExec } from './deviceKeys-tcvwm4KA.mjs';
10
10
  import axios from 'axios';
11
11
  import { stat, readFile } from 'node:fs/promises';
12
12
  import { randomUUID } from 'node:crypto';
@@ -16,7 +16,7 @@ import './index-DTV7drqs.mjs';
16
16
  import { execSync } from 'node:child_process';
17
17
  import 'node:events';
18
18
  import 'socket.io-client';
19
- import './api-CxdKKE-w.mjs';
19
+ import './api-L9jLLtI1.mjs';
20
20
  import 'tweetnacl';
21
21
  import 'ws';
22
22
  import 'crypto';
@@ -68,6 +68,17 @@ async function attachBugImage(credentials, bugId, filePath) {
68
68
  form.append("file", new Blob([await readFile(filePath)], { type: mimeType }), basename(filePath));
69
69
  await axios.post(`${configuration.serverUrl}/v1/bugs/${bugId}/attachments`, form, authHeaders(credentials));
70
70
  }
71
+ async function attachImages(credentials, bugId, images, alreadyAttached) {
72
+ const room = Math.max(MAX_BUG_IMAGES - alreadyAttached, 0);
73
+ const attachments = [];
74
+ for (const file of images.slice(0, room)) {
75
+ await attachBugImage(credentials, bugId, file).then(() => attachments.push({ file, ok: true })).catch((error) => attachments.push({ file, ok: false, error: error instanceof Error ? error.message : String(error) }));
76
+ }
77
+ for (const file of images.slice(room)) {
78
+ attachments.push({ file, ok: false, error: `skipped \u2014 a bug takes at most ${MAX_BUG_IMAGES} images` });
79
+ }
80
+ return attachments;
81
+ }
71
82
  async function submitBug(credentials, input) {
72
83
  const response = await axios.post(
73
84
  `${configuration.serverUrl}/v1/bugs`,
@@ -82,23 +93,26 @@ async function submitBug(credentials, input) {
82
93
  if (!images.length) {
83
94
  return bug;
84
95
  }
85
- const attachments = [];
86
- for (const file of images.slice(0, MAX_BUG_IMAGES)) {
87
- await attachBugImage(credentials, bug.id, file).then(() => attachments.push({ file, ok: true })).catch((error) => attachments.push({ file, ok: false, error: error instanceof Error ? error.message : String(error) }));
88
- }
89
- for (const file of images.slice(MAX_BUG_IMAGES)) {
90
- attachments.push({ file, ok: false, error: `skipped \u2014 a bug takes at most ${MAX_BUG_IMAGES} images` });
91
- }
92
- return { ...bug, attachments };
96
+ return { ...bug, attachments: await attachImages(credentials, bug.id, images, 0) };
93
97
  }
94
98
  async function editBug(credentials, input) {
99
+ const images = input.images ?? [];
100
+ if (!input.description && !images.length) {
101
+ throw new Error("nothing to change \u2014 pass a description, images, or both");
102
+ }
95
103
  const bugId = await resolveBugId(credentials, input.bug);
96
- const response = await axios.patch(
104
+ const bug = input.description ? (await axios.patch(
97
105
  `${configuration.serverUrl}/v1/bugs/${bugId}/content`,
98
106
  { description: input.description },
99
107
  authHeaders(credentials)
100
- );
101
- return response.data.bug;
108
+ )).data.bug : (await axios.get(
109
+ `${configuration.serverUrl}/v1/bugs/${bugId}`,
110
+ authHeaders(credentials)
111
+ )).data.bug;
112
+ if (!images.length) {
113
+ return bug;
114
+ }
115
+ return { ...bug, attachments: await attachImages(credentials, bugId, images, bug.attachmentCount ?? 0) };
102
116
  }
103
117
  async function deleteBug(credentials, reference) {
104
118
  const bugId = await resolveBugId(credentials, reference);
@@ -283,11 +297,12 @@ ${result.stderr}`);
283
297
  }
284
298
  });
285
299
  mcp.registerTool("edit_bug", {
286
- description: "Rewrite the description of a bug already on the user's Happy bug board. Use when the user wants to correct or expand an existing bug. The description replaces the old one outright, so carry over anything still true.",
300
+ description: "Change a bug already on the user's Happy bug board: rewrite its description, add screenshots to it, or both. Use when the user wants to correct, expand or illustrate an existing bug.",
287
301
  title: "Edit Bug",
288
302
  inputSchema: {
289
303
  bug: z.string().describe('Which bug, as the user refers to it: "BUG-236", "#236" or "236". An internal bug id also works.'),
290
- description: z.string().describe("The full replacement description \u2014 what went wrong, what was expected, and how to reproduce it.")
304
+ description: z.string().optional().describe("The full replacement description. It replaces the old one outright, so carry over anything still true. Omit to leave the description alone."),
305
+ images: z.array(z.string()).optional().describe("Absolute paths to screenshots on this machine, added to any already on the bug. JPEG and PNG only, 10 per bug in total, 20MB each.")
291
306
  }
292
307
  }, async (args) => {
293
308
  const credentials = await readCredentials();
@@ -7,8 +7,8 @@ var node_http = require('node:http');
7
7
  var streamableHttp_js = require('@modelcontextprotocol/sdk/server/streamableHttp.js');
8
8
  var types_js = require('@modelcontextprotocol/sdk/types.js');
9
9
  var z = require('zod');
10
- var logger = require('./persistence-DflTrEXm.cjs');
11
- var deviceKeys = require('./deviceKeys-CcXkzhNB.cjs');
10
+ var logger = require('./persistence-B_w4o5z-.cjs');
11
+ var deviceKeys = require('./deviceKeys-CzqNNlG1.cjs');
12
12
  var axios = require('axios');
13
13
  var promises = require('node:fs/promises');
14
14
  var node_crypto = require('node:crypto');
@@ -18,7 +18,7 @@ require('./index-BeKrqPYR.cjs');
18
18
  var node_child_process = require('node:child_process');
19
19
  require('node:events');
20
20
  require('socket.io-client');
21
- require('./api-DGgccR6B.cjs');
21
+ require('./api-mv48hjhj.cjs');
22
22
  require('tweetnacl');
23
23
  require('ws');
24
24
  require('crypto');
@@ -70,6 +70,17 @@ async function attachBugImage(credentials, bugId, filePath) {
70
70
  form.append("file", new Blob([await promises.readFile(filePath)], { type: mimeType }), path.basename(filePath));
71
71
  await axios.post(`${logger.configuration.serverUrl}/v1/bugs/${bugId}/attachments`, form, authHeaders(credentials));
72
72
  }
73
+ async function attachImages(credentials, bugId, images, alreadyAttached) {
74
+ const room = Math.max(MAX_BUG_IMAGES - alreadyAttached, 0);
75
+ const attachments = [];
76
+ for (const file of images.slice(0, room)) {
77
+ await attachBugImage(credentials, bugId, file).then(() => attachments.push({ file, ok: true })).catch((error) => attachments.push({ file, ok: false, error: error instanceof Error ? error.message : String(error) }));
78
+ }
79
+ for (const file of images.slice(room)) {
80
+ attachments.push({ file, ok: false, error: `skipped \u2014 a bug takes at most ${MAX_BUG_IMAGES} images` });
81
+ }
82
+ return attachments;
83
+ }
73
84
  async function submitBug(credentials, input) {
74
85
  const response = await axios.post(
75
86
  `${logger.configuration.serverUrl}/v1/bugs`,
@@ -84,23 +95,26 @@ async function submitBug(credentials, input) {
84
95
  if (!images.length) {
85
96
  return bug;
86
97
  }
87
- const attachments = [];
88
- for (const file of images.slice(0, MAX_BUG_IMAGES)) {
89
- await attachBugImage(credentials, bug.id, file).then(() => attachments.push({ file, ok: true })).catch((error) => attachments.push({ file, ok: false, error: error instanceof Error ? error.message : String(error) }));
90
- }
91
- for (const file of images.slice(MAX_BUG_IMAGES)) {
92
- attachments.push({ file, ok: false, error: `skipped \u2014 a bug takes at most ${MAX_BUG_IMAGES} images` });
93
- }
94
- return { ...bug, attachments };
98
+ return { ...bug, attachments: await attachImages(credentials, bug.id, images, 0) };
95
99
  }
96
100
  async function editBug(credentials, input) {
101
+ const images = input.images ?? [];
102
+ if (!input.description && !images.length) {
103
+ throw new Error("nothing to change \u2014 pass a description, images, or both");
104
+ }
97
105
  const bugId = await resolveBugId(credentials, input.bug);
98
- const response = await axios.patch(
106
+ const bug = input.description ? (await axios.patch(
99
107
  `${logger.configuration.serverUrl}/v1/bugs/${bugId}/content`,
100
108
  { description: input.description },
101
109
  authHeaders(credentials)
102
- );
103
- return response.data.bug;
110
+ )).data.bug : (await axios.get(
111
+ `${logger.configuration.serverUrl}/v1/bugs/${bugId}`,
112
+ authHeaders(credentials)
113
+ )).data.bug;
114
+ if (!images.length) {
115
+ return bug;
116
+ }
117
+ return { ...bug, attachments: await attachImages(credentials, bugId, images, bug.attachmentCount ?? 0) };
104
118
  }
105
119
  async function deleteBug(credentials, reference) {
106
120
  const bugId = await resolveBugId(credentials, reference);
@@ -285,11 +299,12 @@ ${result.stderr}`);
285
299
  }
286
300
  });
287
301
  mcp.registerTool("edit_bug", {
288
- description: "Rewrite the description of a bug already on the user's Happy bug board. Use when the user wants to correct or expand an existing bug. The description replaces the old one outright, so carry over anything still true.",
302
+ description: "Change a bug already on the user's Happy bug board: rewrite its description, add screenshots to it, or both. Use when the user wants to correct, expand or illustrate an existing bug.",
289
303
  title: "Edit Bug",
290
304
  inputSchema: {
291
305
  bug: z.z.string().describe('Which bug, as the user refers to it: "BUG-236", "#236" or "236". An internal bug id also works.'),
292
- description: z.z.string().describe("The full replacement description \u2014 what went wrong, what was expected, and how to reproduce it.")
306
+ description: z.z.string().optional().describe("The full replacement description. It replaces the old one outright, so carry over anything still true. Omit to leave the description alone."),
307
+ images: z.z.array(z.z.string()).optional().describe("Absolute paths to screenshots on this machine, added to any already on the bug. JPEG and PNG only, 10 per bug in total, 20MB each.")
293
308
  }
294
309
  }, async (args) => {
295
310
  const credentials = await logger.readCredentials();
@@ -1,15 +1,15 @@
1
1
  import fs from 'fs/promises';
2
2
  import os from 'os';
3
3
  import * as tmp from 'tmp';
4
- import { A as ApiClient } from './api-CxdKKE-w.mjs';
5
- import { c as configuration, l as logger, p as packageJson, v as acquireDaemonLock, a as readSettings, i as isDebug, e as encodeBase64, x as writeDaemonState, m as readDaemonState, y as releaseDaemonLock, z as validateProfileForAgent, A as getProfileEnvironmentVariables } from './persistence-BGgHa7Mf.mjs';
6
- import { authAndSetupMachineIfNeeded } from './auth-C7oghkN1.mjs';
4
+ import { A as ApiClient } from './api-L9jLLtI1.mjs';
5
+ import { c as configuration, l as logger, p as packageJson, v as acquireDaemonLock, a as readSettings, i as isDebug, e as encodeBase64, x as writeDaemonState, m as readDaemonState, y as releaseDaemonLock, z as validateProfileForAgent, A as getProfileEnvironmentVariables } from './persistence-D2aRTiT1.mjs';
6
+ import { authAndSetupMachineIfNeeded } from './auth-BoWfky2q.mjs';
7
7
  import { spawn, execSync, exec } from 'child_process';
8
- import { getEnvironmentInfo } from './doctor-C59DXnte.mjs';
9
- import { s as spawnHappyCLI } from './spawnHappyCLI-CcZ1W5ck.mjs';
10
- import { isDaemonRunningCurrentlyInstalledHappyVersion, stopDaemon, cleanupDaemonState } from './controlClient-C8MF8Qxi.mjs';
11
- import { a as readCachedDeviceKey, d as deviceExec } from './deviceKeys-CUdnv0Yf.mjs';
12
- import { P as PLIST_LABEL } from './install-DVsfVhR4.mjs';
8
+ import { getEnvironmentInfo } from './doctor-CXYhUN9A.mjs';
9
+ import { s as spawnHappyCLI } from './spawnHappyCLI-CG_S7LH1.mjs';
10
+ import { isDaemonRunningCurrentlyInstalledHappyVersion, stopDaemon, cleanupDaemonState } from './controlClient-P5wJhu1R.mjs';
11
+ import { a as readCachedDeviceKey, d as deviceExec } from './deviceKeys-tcvwm4KA.mjs';
12
+ import { P as PLIST_LABEL } from './install-Cma2vLWa.mjs';
13
13
  import fastify from 'fastify';
14
14
  import { createReadStream } from 'node:fs';
15
15
  import { stat } from 'node:fs/promises';
@@ -3,15 +3,15 @@
3
3
  var fs$1 = require('fs/promises');
4
4
  var os = require('os');
5
5
  var tmp = require('tmp');
6
- var api = require('./api-DGgccR6B.cjs');
7
- var logger = require('./persistence-DflTrEXm.cjs');
8
- var auth = require('./auth-Bf-VkNDK.cjs');
6
+ var api = require('./api-mv48hjhj.cjs');
7
+ var logger = require('./persistence-B_w4o5z-.cjs');
8
+ var auth = require('./auth-DfQYhTlg.cjs');
9
9
  var child_process = require('child_process');
10
- var doctor = require('./doctor-B1Tm6BSe.cjs');
11
- var spawnHappyCLI = require('./spawnHappyCLI-Bf5U61Km.cjs');
12
- var controlClient = require('./controlClient-DTS16hKY.cjs');
13
- var deviceKeys = require('./deviceKeys-CcXkzhNB.cjs');
14
- var install = require('./install-C4UgnaVt.cjs');
10
+ var doctor = require('./doctor-CBbj6YEl.cjs');
11
+ var spawnHappyCLI = require('./spawnHappyCLI-T9EQFmAR.cjs');
12
+ var controlClient = require('./controlClient-DMEMVw4Y.cjs');
13
+ var deviceKeys = require('./deviceKeys-CzqNNlG1.cjs');
14
+ var install = require('./install-_GiK-K1X.cjs');
15
15
  var fastify = require('fastify');
16
16
  var fs = require('node:fs');
17
17
  var promises = require('node:fs/promises');
@@ -2,20 +2,20 @@ import os, { homedir } from 'node:os';
2
2
  import { randomUUID } from 'node:crypto';
3
3
  import { existsSync, mkdirSync, writeFileSync, unlinkSync, readdirSync } from 'node:fs';
4
4
  import { readFile, mkdir, writeFile, stat, copyFile } from 'node:fs/promises';
5
- import { I as InvalidateSync, k as AsyncLock, d as connectionState, A as ApiClient, r as resolveToolsDir, b as startOfflineReconnection, l as findClaudeProjectId } from './api-CxdKKE-w.mjs';
6
- import { l as logger, i as isDebug, c as configuration, a as readSettings, p as packageJson } from './persistence-BGgHa7Mf.mjs';
7
- import { g as getProjectPath, a as claudeLocal, E as ExitCodeError, b as claudeCheckSession, s as systemPrompt } from './claudeLocal-G2km5rB3.mjs';
5
+ import { I as InvalidateSync, k as AsyncLock, d as connectionState, A as ApiClient, r as resolveToolsDir, b as startOfflineReconnection, l as findClaudeProjectId } from './api-L9jLLtI1.mjs';
6
+ import { l as logger, i as isDebug, c as configuration, a as readSettings, p as packageJson } from './persistence-D2aRTiT1.mjs';
7
+ import { g as getProjectPath, a as claudeLocal, E as ExitCodeError, b as claudeCheckSession, s as systemPrompt } from './claudeLocal-CFEXiYts.mjs';
8
8
  import { R as RawJSONLinesSchema } from './types-BoJh4Qfv.mjs';
9
9
  import { join, resolve } from 'node:path';
10
10
  import { d as delay } from './time-DgsBLJA_.mjs';
11
11
  import { watch, access } from 'fs/promises';
12
12
  import { useStdout, useInput, Box, Text, render } from 'ink';
13
- import { b as parseSpecialCommand, a as MessageBuffer, M as MessageQueue2, h as hashObject } from './downloadImage-tso3BJBM.mjs';
13
+ import { b as parseSpecialCommand, a as MessageBuffer, M as MessageQueue2, h as hashObject } from './downloadImage-CpnQ3aS1.mjs';
14
14
  import React, { useState, useRef, useEffect, useCallback } from 'react';
15
15
  import { execSync, spawn } from 'node:child_process';
16
16
  import { createInterface } from 'node:readline';
17
17
  import { fileURLToPath } from 'node:url';
18
- import { i as isBun } from './spawnHappyCLI-CcZ1W5ck.mjs';
18
+ import { i as isBun } from './spawnHappyCLI-CG_S7LH1.mjs';
19
19
  import { p as projectPath } from './projectPath-BTBIMB57.mjs';
20
20
  import 'axios';
21
21
  import 'node:events';
@@ -26,12 +26,12 @@ import 'crypto';
26
26
  import '@stablelib/base64';
27
27
  import 'expo-server-sdk';
28
28
  import 'chalk';
29
- import { a as formatMessageForClaude } from './formatImageMessage-R9j4fTqw.mjs';
29
+ import { a as formatMessageForClaude } from './formatImageMessage-ZJZza9-9.mjs';
30
30
  import { isDeepStrictEqual } from 'node:util';
31
- import { i as initialMachineMetadata, s as stopCaffeinate, a as startCaffeinate } from './run-CS7zNIOF.mjs';
32
- import { getEnvironmentInfo } from './doctor-C59DXnte.mjs';
33
- import { notifyDaemonSessionStarted } from './controlClient-C8MF8Qxi.mjs';
34
- import { c as createMcpContext, r as registerKillSessionHandler, d as detectGitWorktree } from './registerKillSessionHandler-Bcg7ph3f.mjs';
31
+ import { i as initialMachineMetadata, s as stopCaffeinate, a as startCaffeinate } from './run-D6oXm1Jk.mjs';
32
+ import { getEnvironmentInfo } from './doctor-CXYhUN9A.mjs';
33
+ import { notifyDaemonSessionStarted } from './controlClient-P5wJhu1R.mjs';
34
+ import { c as createMcpContext, r as registerKillSessionHandler, d as detectGitWorktree } from './registerKillSessionHandler-AcpB6OSk.mjs';
35
35
  import { createServer } from 'node:http';
36
36
  import 'zod';
37
37
  import './index-DTV7drqs.mjs';
@@ -40,7 +40,7 @@ import 'child_process';
40
40
  import 'util';
41
41
  import 'path';
42
42
  import 'node:module';
43
- import './sessionKeyCache-Pyx1Ydwx.mjs';
43
+ import './sessionKeyCache-CEJH5cHj.mjs';
44
44
  import 'fs';
45
45
  import './prompt-BsAZsPbo.mjs';
46
46
  import './trimIdent-BAjmv_TG.mjs';
@@ -48,12 +48,12 @@ import './common-BdNgghUJ.mjs';
48
48
  import 'url';
49
49
  import 'os';
50
50
  import 'tmp';
51
- import './auth-C7oghkN1.mjs';
51
+ import './auth-BoWfky2q.mjs';
52
52
  import 'qrcode-terminal';
53
- import './browser-DedYcRMI.mjs';
53
+ import './browser-D9jMe1me.mjs';
54
54
  import 'open';
55
- import './deviceKeys-CUdnv0Yf.mjs';
56
- import './install-DVsfVhR4.mjs';
55
+ import './deviceKeys-tcvwm4KA.mjs';
56
+ import './install-Cma2vLWa.mjs';
57
57
  import 'fastify';
58
58
  import 'fastify-type-provider-zod';
59
59
  import './doctor-ON7pN5G5.mjs';
@@ -4,20 +4,20 @@ var os = require('node:os');
4
4
  var node_crypto = require('node:crypto');
5
5
  var fs$1 = require('node:fs');
6
6
  var promises = require('node:fs/promises');
7
- var api = require('./api-DGgccR6B.cjs');
8
- var logger = require('./persistence-DflTrEXm.cjs');
9
- var claudeLocal = require('./claudeLocal-CupQ03sq.cjs');
7
+ var api = require('./api-mv48hjhj.cjs');
8
+ var logger = require('./persistence-B_w4o5z-.cjs');
9
+ var claudeLocal = require('./claudeLocal-DOfhf6VK.cjs');
10
10
  var types = require('./types-DWeB7aqh.cjs');
11
11
  var path = require('node:path');
12
12
  var time = require('./time-Bj2HRkKH.cjs');
13
13
  var fs = require('fs/promises');
14
14
  var ink = require('ink');
15
- var downloadImage = require('./downloadImage-fpJ_y7st.cjs');
15
+ var downloadImage = require('./downloadImage-CRkycWIl.cjs');
16
16
  var React = require('react');
17
17
  var node_child_process = require('node:child_process');
18
18
  var node_readline = require('node:readline');
19
19
  var node_url = require('node:url');
20
- var spawnHappyCLI = require('./spawnHappyCLI-Bf5U61Km.cjs');
20
+ var spawnHappyCLI = require('./spawnHappyCLI-T9EQFmAR.cjs');
21
21
  var projectPath = require('./projectPath-ChLhdOyt.cjs');
22
22
  require('axios');
23
23
  require('node:events');
@@ -28,12 +28,12 @@ require('crypto');
28
28
  require('@stablelib/base64');
29
29
  require('expo-server-sdk');
30
30
  require('chalk');
31
- var formatImageMessage = require('./formatImageMessage-BzBJVvC5.cjs');
31
+ var formatImageMessage = require('./formatImageMessage-CqonqpiB.cjs');
32
32
  var node_util = require('node:util');
33
- var run = require('./run-vWYjxpj7.cjs');
34
- var doctor = require('./doctor-B1Tm6BSe.cjs');
35
- var controlClient = require('./controlClient-DTS16hKY.cjs');
36
- var registerKillSessionHandler = require('./registerKillSessionHandler-B9qo40Js.cjs');
33
+ var run = require('./run-DclH1MRm.cjs');
34
+ var doctor = require('./doctor-CBbj6YEl.cjs');
35
+ var controlClient = require('./controlClient-DMEMVw4Y.cjs');
36
+ var registerKillSessionHandler = require('./registerKillSessionHandler-DUrOhiGo.cjs');
37
37
  var node_http = require('node:http');
38
38
  require('zod');
39
39
  require('./index-BeKrqPYR.cjs');
@@ -42,7 +42,7 @@ require('child_process');
42
42
  require('util');
43
43
  require('path');
44
44
  require('node:module');
45
- require('./sessionKeyCache-B7Cr3M7u.cjs');
45
+ require('./sessionKeyCache-DYuPkw5Z.cjs');
46
46
  require('fs');
47
47
  require('./prompt-BTWDZZO0.cjs');
48
48
  require('./trimIdent-4gvk9Wk6.cjs');
@@ -50,12 +50,12 @@ require('./common-CZvSRU4p.cjs');
50
50
  require('url');
51
51
  require('os');
52
52
  require('tmp');
53
- require('./auth-Bf-VkNDK.cjs');
53
+ require('./auth-DfQYhTlg.cjs');
54
54
  require('qrcode-terminal');
55
- require('./browser-Cn_RttD9.cjs');
55
+ require('./browser-CF-r2ami.cjs');
56
56
  require('open');
57
- require('./deviceKeys-CcXkzhNB.cjs');
58
- require('./install-C4UgnaVt.cjs');
57
+ require('./deviceKeys-CzqNNlG1.cjs');
58
+ require('./install-_GiK-K1X.cjs');
59
59
  require('fastify');
60
60
  require('fastify-type-provider-zod');
61
61
  require('./doctor-C08m5Z9f.cjs');
@@ -732,7 +732,7 @@ class AbortError extends Error {
732
732
  }
733
733
  }
734
734
 
735
- const __filename$1 = node_url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('runClaude-DPv8wwz5.cjs', document.baseURI).href)));
735
+ const __filename$1 = node_url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('runClaude-BfLi7f2N.cjs', document.baseURI).href)));
736
736
  const __dirname$1 = path.join(__filename$1, "..");
737
737
  function getGlobalClaudeVersion() {
738
738
  try {
@@ -1,17 +1,17 @@
1
1
  import { useStdout, useInput, Box, Text, render } from 'ink';
2
2
  import React, { useState, useRef, useEffect, useCallback } from 'react';
3
- import { c as saveDiffRecords, e as extractUserText, i as isSystemMessage, g as generateStableUuid, f as findCodexSessionFile, d as connectionState, A as ApiClient } from './api-CxdKKE-w.mjs';
3
+ import { c as saveDiffRecords, e as extractUserText, i as isSystemMessage, g as generateStableUuid, f as findCodexSessionFile, d as connectionState, A as ApiClient } from './api-L9jLLtI1.mjs';
4
4
  import { spawn, execSync } from 'node:child_process';
5
5
  import { createInterface } from 'node:readline';
6
- import { l as logger, i as isDebug, a as readSettings } from './persistence-BGgHa7Mf.mjs';
7
- import { B as BasePermissionHandler, c as createSessionMetadata, s as setupOfflineReconnection } from './setupOfflineReconnection-CD7ix1EA.mjs';
8
- import { B as BaseReasoningProcessor, h as handleConfigMetadataEvent, s as summarizeBashToolOutput } from './loadableToolOutput-Pxv9LNrC.mjs';
6
+ import { l as logger, i as isDebug, a as readSettings } from './persistence-D2aRTiT1.mjs';
7
+ import { B as BasePermissionHandler, c as createSessionMetadata, s as setupOfflineReconnection } from './setupOfflineReconnection-2m0GAIU5.mjs';
8
+ import { B as BaseReasoningProcessor, h as handleConfigMetadataEvent, s as summarizeBashToolOutput } from './loadableToolOutput-4qF6EX0y.mjs';
9
9
  import { randomUUID } from 'node:crypto';
10
- import { M as MessageQueue2, h as hashObject, a as MessageBuffer, p as parseClear, d as downloadImage } from './downloadImage-tso3BJBM.mjs';
11
- import { i as initialMachineMetadata, s as stopCaffeinate } from './run-CS7zNIOF.mjs';
12
- import { c as createMcpContext, r as registerKillSessionHandler } from './registerKillSessionHandler-Bcg7ph3f.mjs';
10
+ import { M as MessageQueue2, h as hashObject, a as MessageBuffer, p as parseClear, d as downloadImage } from './downloadImage-CpnQ3aS1.mjs';
11
+ import { i as initialMachineMetadata, s as stopCaffeinate } from './run-D6oXm1Jk.mjs';
12
+ import { c as createMcpContext, r as registerKillSessionHandler } from './registerKillSessionHandler-AcpB6OSk.mjs';
13
13
  import { g as getFirstTurnInstruction } from './constants-pmXZGibX.mjs';
14
- import { notifyDaemonSessionStarted } from './controlClient-C8MF8Qxi.mjs';
14
+ import { notifyDaemonSessionStarted } from './controlClient-P5wJhu1R.mjs';
15
15
  import { inspect } from 'node:util';
16
16
  import { readFile } from 'node:fs/promises';
17
17
  import { basename, isAbsolute } from 'node:path';
@@ -36,22 +36,22 @@ import 'crypto';
36
36
  import 'tweetnacl';
37
37
  import '@stablelib/base64';
38
38
  import 'expo-server-sdk';
39
- import './sessionKeyCache-Pyx1Ydwx.mjs';
39
+ import './sessionKeyCache-CEJH5cHj.mjs';
40
40
  import 'chalk';
41
41
  import 'fs';
42
42
  import 'os';
43
43
  import 'tmp';
44
- import './auth-C7oghkN1.mjs';
44
+ import './auth-BoWfky2q.mjs';
45
45
  import 'qrcode-terminal';
46
- import './browser-DedYcRMI.mjs';
46
+ import './browser-D9jMe1me.mjs';
47
47
  import 'open';
48
- import './doctor-C59DXnte.mjs';
48
+ import './doctor-CXYhUN9A.mjs';
49
49
  import './doctor-ON7pN5G5.mjs';
50
50
  import 'ps-list';
51
51
  import 'cross-spawn';
52
- import './spawnHappyCLI-CcZ1W5ck.mjs';
53
- import './deviceKeys-CUdnv0Yf.mjs';
54
- import './install-DVsfVhR4.mjs';
52
+ import './spawnHappyCLI-CG_S7LH1.mjs';
53
+ import './deviceKeys-tcvwm4KA.mjs';
54
+ import './install-Cma2vLWa.mjs';
55
55
  import './trimIdent-BAjmv_TG.mjs';
56
56
  import 'fastify';
57
57
  import 'fastify-type-provider-zod';
@@ -2,18 +2,18 @@
2
2
 
3
3
  var ink = require('ink');
4
4
  var React = require('react');
5
- var api = require('./api-DGgccR6B.cjs');
5
+ var api = require('./api-mv48hjhj.cjs');
6
6
  var node_child_process = require('node:child_process');
7
7
  var node_readline = require('node:readline');
8
- var logger = require('./persistence-DflTrEXm.cjs');
9
- var setupOfflineReconnection = require('./setupOfflineReconnection-Cjcq7f53.cjs');
10
- var loadableToolOutput = require('./loadableToolOutput-JbPnwQD1.cjs');
8
+ var logger = require('./persistence-B_w4o5z-.cjs');
9
+ var setupOfflineReconnection = require('./setupOfflineReconnection-BkAr6jAB.cjs');
10
+ var loadableToolOutput = require('./loadableToolOutput-sf6E72GE.cjs');
11
11
  var node_crypto = require('node:crypto');
12
- var downloadImage = require('./downloadImage-fpJ_y7st.cjs');
13
- var run = require('./run-vWYjxpj7.cjs');
14
- var registerKillSessionHandler = require('./registerKillSessionHandler-B9qo40Js.cjs');
12
+ var downloadImage = require('./downloadImage-CRkycWIl.cjs');
13
+ var run = require('./run-DclH1MRm.cjs');
14
+ var registerKillSessionHandler = require('./registerKillSessionHandler-DUrOhiGo.cjs');
15
15
  var constants = require('./constants-E_UWYTo3.cjs');
16
- var controlClient = require('./controlClient-DTS16hKY.cjs');
16
+ var controlClient = require('./controlClient-DMEMVw4Y.cjs');
17
17
  var node_util = require('node:util');
18
18
  var promises = require('node:fs/promises');
19
19
  var path = require('node:path');
@@ -38,22 +38,22 @@ require('crypto');
38
38
  require('tweetnacl');
39
39
  require('@stablelib/base64');
40
40
  require('expo-server-sdk');
41
- require('./sessionKeyCache-B7Cr3M7u.cjs');
41
+ require('./sessionKeyCache-DYuPkw5Z.cjs');
42
42
  require('chalk');
43
43
  require('fs');
44
44
  require('os');
45
45
  require('tmp');
46
- require('./auth-Bf-VkNDK.cjs');
46
+ require('./auth-DfQYhTlg.cjs');
47
47
  require('qrcode-terminal');
48
- require('./browser-Cn_RttD9.cjs');
48
+ require('./browser-CF-r2ami.cjs');
49
49
  require('open');
50
- require('./doctor-B1Tm6BSe.cjs');
50
+ require('./doctor-CBbj6YEl.cjs');
51
51
  require('./doctor-C08m5Z9f.cjs');
52
52
  require('ps-list');
53
53
  require('cross-spawn');
54
- require('./spawnHappyCLI-Bf5U61Km.cjs');
55
- require('./deviceKeys-CcXkzhNB.cjs');
56
- require('./install-C4UgnaVt.cjs');
54
+ require('./spawnHappyCLI-T9EQFmAR.cjs');
55
+ require('./deviceKeys-CzqNNlG1.cjs');
56
+ require('./install-_GiK-K1X.cjs');
57
57
  require('./trimIdent-4gvk9Wk6.cjs');
58
58
  require('fastify');
59
59
  require('fastify-type-provider-zod');
@@ -2,14 +2,14 @@
2
2
 
3
3
  var node_crypto = require('node:crypto');
4
4
  var chalk = require('chalk');
5
- var api = require('./api-DGgccR6B.cjs');
6
- var logger = require('./persistence-DflTrEXm.cjs');
7
- var run = require('./run-vWYjxpj7.cjs');
8
- var setupOfflineReconnection = require('./setupOfflineReconnection-Cjcq7f53.cjs');
9
- var controlClient = require('./controlClient-DTS16hKY.cjs');
10
- var registerKillSessionHandler = require('./registerKillSessionHandler-B9qo40Js.cjs');
5
+ var api = require('./api-mv48hjhj.cjs');
6
+ var logger = require('./persistence-B_w4o5z-.cjs');
7
+ var run = require('./run-DclH1MRm.cjs');
8
+ var setupOfflineReconnection = require('./setupOfflineReconnection-BkAr6jAB.cjs');
9
+ var controlClient = require('./controlClient-DMEMVw4Y.cjs');
10
+ var registerKillSessionHandler = require('./registerKillSessionHandler-DUrOhiGo.cjs');
11
11
  var node_child_process = require('node:child_process');
12
- var cursorApprovalServer = require('./cursorApprovalServer-BkQ3JeOR.cjs');
12
+ var cursorApprovalServer = require('./cursorApprovalServer-BoI6qBTg.cjs');
13
13
  require('axios');
14
14
  require('node:events');
15
15
  require('socket.io-client');
@@ -35,23 +35,23 @@ require('tweetnacl');
35
35
  require('@stablelib/base64');
36
36
  require('node:readline');
37
37
  require('expo-server-sdk');
38
- require('./sessionKeyCache-B7Cr3M7u.cjs');
38
+ require('./sessionKeyCache-DYuPkw5Z.cjs');
39
39
  require('fs');
40
40
  require('os');
41
41
  require('tmp');
42
- require('./auth-Bf-VkNDK.cjs');
42
+ require('./auth-DfQYhTlg.cjs');
43
43
  require('qrcode-terminal');
44
- require('./browser-Cn_RttD9.cjs');
44
+ require('./browser-CF-r2ami.cjs');
45
45
  require('open');
46
46
  require('react');
47
47
  require('ink');
48
- require('./doctor-B1Tm6BSe.cjs');
48
+ require('./doctor-CBbj6YEl.cjs');
49
49
  require('./doctor-C08m5Z9f.cjs');
50
50
  require('ps-list');
51
51
  require('cross-spawn');
52
- require('./spawnHappyCLI-Bf5U61Km.cjs');
53
- require('./deviceKeys-CcXkzhNB.cjs');
54
- require('./install-C4UgnaVt.cjs');
52
+ require('./spawnHappyCLI-T9EQFmAR.cjs');
53
+ require('./deviceKeys-CzqNNlG1.cjs');
54
+ require('./install-_GiK-K1X.cjs');
55
55
  require('./trimIdent-4gvk9Wk6.cjs');
56
56
  require('fastify');
57
57
  require('fastify-type-provider-zod');