@zonease/happy 0.6.54 → 0.6.56
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/dist/{api-DLk8tzQQ.mjs → api-9wvM_aF-.mjs} +79 -67
- package/dist/{api-Da8DnAgp.cjs → api-BGc484qf.cjs} +73 -61
- package/dist/{auth-3eHy-NiL.cjs → auth-B6vskzfm.cjs} +2 -2
- package/dist/{auth-Dn64MNXy.mjs → auth-BnEa31tI.mjs} +2 -2
- package/dist/{auth-DHyEz32d.cjs → auth-CPfJalJM.cjs} +4 -4
- package/dist/{auth-l0Gi002V.mjs → auth-DqAM-lIh.mjs} +4 -4
- package/dist/{browser-DmSfJ05Z.mjs → browser-CkQP96Zi.mjs} +1 -1
- package/dist/{browser-Cw-H2Ma5.cjs → browser-CnxzD1lA.cjs} +1 -1
- package/dist/{claudeLocal-B0Y7CBFV.mjs → claudeLocal-B5uxtoit.mjs} +1 -1
- package/dist/{claudeLocal-DNLVyOkk.cjs → claudeLocal-CV4fT0Gg.cjs} +1 -1
- package/dist/{config-CPzuub8l.mjs → config-C9hdBdfj.mjs} +1 -1
- package/dist/{config-B1dECrwV.cjs → config-C__p7EWC.cjs} +1 -1
- package/dist/{connect-C7dp_WX0.mjs → connect-BeORCRXq.mjs} +5 -5
- package/dist/{connect-CcqT6Eg4.cjs → connect-DQjpjfYn.cjs} +5 -5
- package/dist/{controlClient-4irLqjPn.cjs → controlClient-DWBW6jRF.cjs} +4 -4
- package/dist/{controlClient-DESWXp4N.mjs → controlClient-VY0CGL8k.mjs} +4 -4
- package/dist/{cursorApprovalHook-BDYPCM1A.cjs → cursorApprovalHook-BuDSRM-6.cjs} +2 -2
- package/dist/{cursorApprovalHook-BX5PlCLv.mjs → cursorApprovalHook-D_8btpsY.mjs} +2 -2
- package/dist/{cursorApprovalServer-BZyv6LZR.mjs → cursorApprovalServer-BOUd2-Fg.mjs} +1 -1
- package/dist/{cursorApprovalServer-gH0pwRGq.cjs → cursorApprovalServer-j9RphnEG.cjs} +1 -1
- package/dist/{deviceKeys-BekDRny4.mjs → deviceKeys-DvfaTff3.mjs} +2 -2
- package/dist/{deviceKeys-CDTA_iqA.cjs → deviceKeys-c_sN01Mm.cjs} +2 -2
- package/dist/{doctor-BCqchQlg.cjs → doctor-CD46A-_Y.cjs} +2 -2
- package/dist/{doctor-CFDWT__E.mjs → doctor-DQtQbfG-.mjs} +2 -2
- package/dist/{downloadImage-Bv0iPThm.mjs → downloadImage-B6A4x8Jw.mjs} +1 -1
- package/dist/{downloadImage-oDAqiRug.cjs → downloadImage-DGdHCFi3.cjs} +1 -1
- package/dist/{enroll-BEZ5llpQ.mjs → enroll-CyHWNKNt.mjs} +3 -3
- package/dist/{enroll-BS_DDdDI.cjs → enroll-D9CEuRI_.cjs} +3 -3
- package/dist/{evidence-DUqAB-YC.mjs → evidence-BuYebdrN.mjs} +1 -1
- package/dist/{evidence-DNxlL47R.cjs → evidence-CCrpzsTA.cjs} +1 -1
- package/dist/{formatImageMessage-DNrnXT9b.mjs → formatImageMessage-5qaaT_Wq.mjs} +1 -1
- package/dist/{formatImageMessage-9IXAYb2e.cjs → formatImageMessage-DttKW75w.cjs} +1 -1
- package/dist/index.cjs +49 -47
- package/dist/index.mjs +49 -47
- package/dist/{install-DRJM6rAH.mjs → install-1Y6dAcMp.mjs} +1 -1
- package/dist/{install-B8BRcKro.cjs → install-B0hT_tLv.cjs} +2 -2
- package/dist/{install-qidTS2aZ.cjs → install-C4cwObCN.cjs} +1 -1
- package/dist/{install-PoZjcS6c.mjs → install-eIXFuZbC.mjs} +2 -2
- package/dist/lib.cjs +6 -6
- package/dist/lib.mjs +6 -6
- package/dist/{loadableToolOutput-BlVR2izz.mjs → loadableToolOutput-BKDTnyoF.mjs} +2 -2
- package/dist/{loadableToolOutput-Dee4IYX-.cjs → loadableToolOutput-Cb-18__b.cjs} +2 -2
- package/dist/{persistence-CXOGgoCo.cjs → persistence-CNXsXPLm.cjs} +1 -1
- package/dist/{persistence-DSUgpkhC.mjs → persistence-IdEuIeMz.mjs} +1 -1
- package/dist/{push-CISsRYtP.cjs → push-XL6Sb0Vw.cjs} +6 -6
- package/dist/{push-BAhpKKZi.mjs → push-tXs96IyG.mjs} +6 -6
- package/dist/{registerKillSessionHandler-DYhs41SE.cjs → registerKillSessionHandler-D9tmPdw5.cjs} +3 -3
- package/dist/{registerKillSessionHandler-Due-xxRL.mjs → registerKillSessionHandler-vF5c8YZF.mjs} +3 -3
- package/dist/{run-DOdseFir.cjs → run-BKfeeheJ.cjs} +16 -10
- package/dist/{run-CnaW5CvS.mjs → run-BvpCwXkt.mjs} +16 -10
- package/dist/{runClaude-DZMQllwE.mjs → runClaude-BiVqZQOm.mjs} +15 -15
- package/dist/{runClaude-Bdg1uZQB.cjs → runClaude-DDsG7eMR.cjs} +16 -16
- package/dist/{runCodex-Btsu2b6-.cjs → runCodex-Bh519-dW.cjs} +15 -15
- package/dist/{runCodex-DBZcVBP-.mjs → runCodex-C-8SvnpP.mjs} +15 -15
- package/dist/{runCursor-BGoe6glt.mjs → runCursor-3AFNF0y2.mjs} +16 -16
- package/dist/{runCursor-BoqAa3cX.cjs → runCursor-CYbvOqUa.cjs} +16 -16
- package/dist/{runGemini-CrPFkfeE.mjs → runGemini-Dh2JRfOJ.mjs} +19 -19
- package/dist/{runGemini-PlEnK1qg.cjs → runGemini-ExHXGZBY.cjs} +19 -19
- package/dist/{runOneShot-Ck0pDOnK.cjs → runOneShot-CEVKtkx_.cjs} +2 -2
- package/dist/{runOneShot-CtcdFR7C.mjs → runOneShot-CVcw-K0_.mjs} +2 -2
- package/dist/{serve-CmDwh71O.mjs → serve-C4dOQ0jP.mjs} +6 -6
- package/dist/{serve-Dw2TAf7J.cjs → serve-D0IhhySV.cjs} +6 -6
- package/dist/{session-lvats2oo.mjs → session-CwMxRPXS.mjs} +5 -5
- package/dist/{session-cgCKfQlj.cjs → session-DK9eudJT.cjs} +5 -5
- package/dist/{sessionKeyCache-WsWILYqW.mjs → sessionKeyCache-DDzTs7E5.mjs} +1 -1
- package/dist/{sessionKeyCache-BcHYqqvh.cjs → sessionKeyCache-JjjYAxdf.cjs} +1 -1
- package/dist/{sessionList-CZe1CUNV.cjs → sessionList-DZmmAP3q.cjs} +2 -2
- package/dist/{sessionList-rWjYFvKo.mjs → sessionList-IYAtPIev.mjs} +2 -2
- package/dist/{sessionSummary-DHMo6gQp.mjs → sessionSummary-CQQyTHRC.mjs} +3 -3
- package/dist/{sessionSummary-B2alrCw2.cjs → sessionSummary-CsIfkyZA.cjs} +3 -3
- package/dist/{setupOfflineReconnection-Bgr2zrFL.mjs → setupOfflineReconnection-C1yzDMt6.mjs} +3 -3
- package/dist/{setupOfflineReconnection-CDKLObwx.cjs → setupOfflineReconnection-DwtIEUeJ.cjs} +3 -3
- package/dist/{spawnHappyCLI-DMHDwhaj.cjs → spawnHappyCLI-BbMkZhMk.cjs} +1 -1
- package/dist/{spawnHappyCLI-D395WmG6.mjs → spawnHappyCLI-DlTg87jS.mjs} +1 -1
- package/dist/{ssh-DY2t_lUb.cjs → ssh-D31o750w.cjs} +40 -28
- package/dist/{ssh-D4Tm8kgg.mjs → ssh-DSVjanff.mjs} +40 -28
- package/dist/{task-CwUcMY2G.cjs → task--Apxd9oF.cjs} +6 -6
- package/dist/{task-5ZowiuIL.mjs → task-D9ZjWCcw.mjs} +6 -6
- package/dist/{uninstall-rxjrCBV0.mjs → uninstall-Bo2uaLRP.mjs} +2 -2
- package/dist/{uninstall-B8pTaKP5.cjs → uninstall-CZJcoC06.cjs} +2 -2
- package/dist/{update-DP570X8n.mjs → update-BiV4YqG3.mjs} +3 -3
- package/dist/{update-DwU5c4md.cjs → update-D-bTjP2k.cjs} +3 -3
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(import.meta.url);import chalk from 'chalk';
|
|
2
|
-
import { l as logger, i as isDebug, r as readCredentials, a as readSettings, p as packageJson } from './persistence-
|
|
2
|
+
import { l as logger, i as isDebug, r as readCredentials, a as readSettings, p as packageJson } from './persistence-IdEuIeMz.mjs';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import { execFileSync } from 'node:child_process';
|
|
5
5
|
import 'node:fs/promises';
|
|
@@ -11,8 +11,8 @@ import 'tweetnacl';
|
|
|
11
11
|
import 'fs';
|
|
12
12
|
|
|
13
13
|
async function spawnAndWaitForDaemon() {
|
|
14
|
-
const { spawnHappyCLI } = await import('./spawnHappyCLI-
|
|
15
|
-
const { checkIfDaemonRunningAndCleanupStaleState } = await import('./controlClient-
|
|
14
|
+
const { spawnHappyCLI } = await import('./spawnHappyCLI-DlTg87jS.mjs').then(function (n) { return n.a; });
|
|
15
|
+
const { checkIfDaemonRunningAndCleanupStaleState } = await import('./controlClient-VY0CGL8k.mjs');
|
|
16
16
|
const child = spawnHappyCLI(["daemon", "start-sync"], {
|
|
17
17
|
detached: true,
|
|
18
18
|
stdio: "ignore"
|
|
@@ -35,7 +35,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
35
35
|
if (!args.includes("--version")) ;
|
|
36
36
|
if (subcommand === "orchestrator-oneshot") {
|
|
37
37
|
try {
|
|
38
|
-
const { runOrchestratorOneShot } = await import('./runOneShot-
|
|
38
|
+
const { runOrchestratorOneShot } = await import('./runOneShot-CVcw-K0_.mjs');
|
|
39
39
|
const exitCode = await runOrchestratorOneShot(args.slice(1));
|
|
40
40
|
process.exit(exitCode);
|
|
41
41
|
} catch (error) {
|
|
@@ -48,7 +48,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
48
48
|
return;
|
|
49
49
|
} else if (subcommand === "doctor") {
|
|
50
50
|
const { killRunawayHappyProcesses } = await import('./doctor-ON7pN5G5.mjs');
|
|
51
|
-
const { runDoctorCommand } = await import('./doctor-
|
|
51
|
+
const { runDoctorCommand } = await import('./doctor-DQtQbfG-.mjs');
|
|
52
52
|
if (args[1] === "clean") {
|
|
53
53
|
const result = await killRunawayHappyProcesses();
|
|
54
54
|
console.log(`Cleaned up ${result.killed} runaway processes`);
|
|
@@ -61,7 +61,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
61
61
|
return;
|
|
62
62
|
} else if (subcommand === "auth") {
|
|
63
63
|
try {
|
|
64
|
-
const { handleAuthCommand } = await import('./auth-
|
|
64
|
+
const { handleAuthCommand } = await import('./auth-DqAM-lIh.mjs');
|
|
65
65
|
await handleAuthCommand(args.slice(1));
|
|
66
66
|
} catch (error) {
|
|
67
67
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -73,7 +73,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
73
73
|
return;
|
|
74
74
|
} else if (subcommand === "connect") {
|
|
75
75
|
try {
|
|
76
|
-
const { handleConnectCommand } = await import('./connect-
|
|
76
|
+
const { handleConnectCommand } = await import('./connect-BeORCRXq.mjs');
|
|
77
77
|
await handleConnectCommand(args.slice(1));
|
|
78
78
|
} catch (error) {
|
|
79
79
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -84,11 +84,11 @@ async function spawnAndWaitForDaemon() {
|
|
|
84
84
|
}
|
|
85
85
|
return;
|
|
86
86
|
} else if (subcommand === "codex") {
|
|
87
|
-
const { authAndSetupMachineIfNeeded } = await import('./auth-
|
|
88
|
-
const { isDaemonRunningCurrentlyInstalledHappyVersion } = await import('./controlClient-
|
|
89
|
-
const { spawnHappyCLI } = await import('./spawnHappyCLI-
|
|
87
|
+
const { authAndSetupMachineIfNeeded } = await import('./auth-BnEa31tI.mjs');
|
|
88
|
+
const { isDaemonRunningCurrentlyInstalledHappyVersion } = await import('./controlClient-VY0CGL8k.mjs');
|
|
89
|
+
const { spawnHappyCLI } = await import('./spawnHappyCLI-DlTg87jS.mjs').then(function (n) { return n.a; });
|
|
90
90
|
try {
|
|
91
|
-
const { runCodex } = await import('./runCodex-
|
|
91
|
+
const { runCodex } = await import('./runCodex-C-8SvnpP.mjs');
|
|
92
92
|
let startedBy = void 0;
|
|
93
93
|
for (let i = 1; i < args.length; i++) {
|
|
94
94
|
if (args[i] === "--started-by") {
|
|
@@ -119,15 +119,15 @@ async function spawnAndWaitForDaemon() {
|
|
|
119
119
|
}
|
|
120
120
|
return;
|
|
121
121
|
} else if (subcommand === "cursor-approval-hook") {
|
|
122
|
-
const { runCursorApprovalHook } = await import('./cursorApprovalHook-
|
|
122
|
+
const { runCursorApprovalHook } = await import('./cursorApprovalHook-D_8btpsY.mjs');
|
|
123
123
|
await runCursorApprovalHook();
|
|
124
124
|
return;
|
|
125
125
|
} else if (subcommand === "cursor") {
|
|
126
|
-
const { authAndSetupMachineIfNeeded } = await import('./auth-
|
|
127
|
-
const { isDaemonRunningCurrentlyInstalledHappyVersion } = await import('./controlClient-
|
|
128
|
-
const { spawnHappyCLI } = await import('./spawnHappyCLI-
|
|
126
|
+
const { authAndSetupMachineIfNeeded } = await import('./auth-BnEa31tI.mjs');
|
|
127
|
+
const { isDaemonRunningCurrentlyInstalledHappyVersion } = await import('./controlClient-VY0CGL8k.mjs');
|
|
128
|
+
const { spawnHappyCLI } = await import('./spawnHappyCLI-DlTg87jS.mjs').then(function (n) { return n.a; });
|
|
129
129
|
try {
|
|
130
|
-
const { runCursor } = await import('./runCursor-
|
|
130
|
+
const { runCursor } = await import('./runCursor-3AFNF0y2.mjs');
|
|
131
131
|
let startedBy = void 0;
|
|
132
132
|
let model = null;
|
|
133
133
|
let resumeChatId = null;
|
|
@@ -173,9 +173,9 @@ async function spawnAndWaitForDaemon() {
|
|
|
173
173
|
}
|
|
174
174
|
return;
|
|
175
175
|
} else if (subcommand === "gemini") {
|
|
176
|
-
const { authAndSetupMachineIfNeeded } = await import('./auth-
|
|
177
|
-
const { isDaemonRunningCurrentlyInstalledHappyVersion } = await import('./controlClient-
|
|
178
|
-
const { spawnHappyCLI } = await import('./spawnHappyCLI-
|
|
176
|
+
const { authAndSetupMachineIfNeeded } = await import('./auth-BnEa31tI.mjs');
|
|
177
|
+
const { isDaemonRunningCurrentlyInstalledHappyVersion } = await import('./controlClient-VY0CGL8k.mjs');
|
|
178
|
+
const { spawnHappyCLI } = await import('./spawnHappyCLI-DlTg87jS.mjs').then(function (n) { return n.a; });
|
|
179
179
|
const geminiSubcommand = args[1];
|
|
180
180
|
if (geminiSubcommand === "model" && args[2] === "set" && args[3]) {
|
|
181
181
|
const modelName = args[3];
|
|
@@ -249,9 +249,9 @@ async function spawnAndWaitForDaemon() {
|
|
|
249
249
|
if (geminiSubcommand === "project" && args[2] === "set" && args[3]) {
|
|
250
250
|
const projectId = args[3];
|
|
251
251
|
try {
|
|
252
|
-
const { saveGoogleCloudProjectToConfig } = await import('./config-
|
|
253
|
-
const { readCredentials: readCredentials2 } = await import('./persistence-
|
|
254
|
-
const { ApiClient } = await import('./api-
|
|
252
|
+
const { saveGoogleCloudProjectToConfig } = await import('./config-C9hdBdfj.mjs');
|
|
253
|
+
const { readCredentials: readCredentials2 } = await import('./persistence-IdEuIeMz.mjs').then(function (n) { return n.F; });
|
|
254
|
+
const { ApiClient } = await import('./api-9wvM_aF-.mjs').then(function (n) { return n.m; });
|
|
255
255
|
let userEmail = void 0;
|
|
256
256
|
try {
|
|
257
257
|
const credentials = await readCredentials2();
|
|
@@ -282,7 +282,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
282
282
|
}
|
|
283
283
|
if (geminiSubcommand === "project" && args[2] === "get") {
|
|
284
284
|
try {
|
|
285
|
-
const { readGeminiLocalConfig } = await import('./config-
|
|
285
|
+
const { readGeminiLocalConfig } = await import('./config-C9hdBdfj.mjs');
|
|
286
286
|
const config = readGeminiLocalConfig();
|
|
287
287
|
if (config.googleCloudProject) {
|
|
288
288
|
console.log(`Current Google Cloud Project: ${config.googleCloudProject}`);
|
|
@@ -322,7 +322,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
322
322
|
process.exit(0);
|
|
323
323
|
}
|
|
324
324
|
try {
|
|
325
|
-
const { runGemini } = await import('./runGemini-
|
|
325
|
+
const { runGemini } = await import('./runGemini-Dh2JRfOJ.mjs');
|
|
326
326
|
let startedBy = void 0;
|
|
327
327
|
for (let i = 1; i < args.length; i++) {
|
|
328
328
|
if (args[i] === "--started-by") {
|
|
@@ -354,7 +354,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
354
354
|
return;
|
|
355
355
|
} else if (subcommand === "update") {
|
|
356
356
|
try {
|
|
357
|
-
const { handleUpdateCommand } = await import('./update-
|
|
357
|
+
const { handleUpdateCommand } = await import('./update-BiV4YqG3.mjs');
|
|
358
358
|
await handleUpdateCommand();
|
|
359
359
|
} catch (error) {
|
|
360
360
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -367,7 +367,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
367
367
|
} else if (subcommand === "logout") {
|
|
368
368
|
console.log(chalk.yellow('Note: "happy logout" is deprecated. Use "happy auth logout" instead.\n'));
|
|
369
369
|
try {
|
|
370
|
-
const { handleAuthCommand } = await import('./auth-
|
|
370
|
+
const { handleAuthCommand } = await import('./auth-DqAM-lIh.mjs');
|
|
371
371
|
await handleAuthCommand(["logout"]);
|
|
372
372
|
} catch (error) {
|
|
373
373
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -390,7 +390,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
390
390
|
return;
|
|
391
391
|
} else if (subcommand === "session") {
|
|
392
392
|
try {
|
|
393
|
-
const { handleSessionCommand } = await import('./session-
|
|
393
|
+
const { handleSessionCommand } = await import('./session-CwMxRPXS.mjs');
|
|
394
394
|
await handleSessionCommand(args.slice(1));
|
|
395
395
|
} catch (error) {
|
|
396
396
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -402,7 +402,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
402
402
|
return;
|
|
403
403
|
} else if (subcommand === "task") {
|
|
404
404
|
try {
|
|
405
|
-
const { handleTaskCommand } = await import('./task-
|
|
405
|
+
const { handleTaskCommand } = await import('./task-D9ZjWCcw.mjs');
|
|
406
406
|
await handleTaskCommand(args.slice(1));
|
|
407
407
|
} catch (error) {
|
|
408
408
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -450,7 +450,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
450
450
|
return;
|
|
451
451
|
} else if (subcommand === "evidence") {
|
|
452
452
|
try {
|
|
453
|
-
const { handleEvidenceCommand } = await import('./evidence-
|
|
453
|
+
const { handleEvidenceCommand } = await import('./evidence-BuYebdrN.mjs');
|
|
454
454
|
await handleEvidenceCommand(args.slice(1));
|
|
455
455
|
} catch (error) {
|
|
456
456
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -467,7 +467,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
467
467
|
process.exit(1);
|
|
468
468
|
}
|
|
469
469
|
try {
|
|
470
|
-
const { runMcpServe } = await import('./serve-
|
|
470
|
+
const { runMcpServe } = await import('./serve-C4dOQ0jP.mjs');
|
|
471
471
|
await runMcpServe();
|
|
472
472
|
} catch (error) {
|
|
473
473
|
process.stderr.write(`[happy-mcp] fatal: ${error instanceof Error ? error.message : "unknown error"}
|
|
@@ -481,7 +481,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
481
481
|
console.error(chalk.red("Error:"), 'Not authenticated. Run "happy auth" first.');
|
|
482
482
|
process.exit(1);
|
|
483
483
|
}
|
|
484
|
-
const { parseSshArgs, runOnDevice, sshDevice, sshPickAndConnect } = await import('./ssh-
|
|
484
|
+
const { parseSshArgs, runOnDevice, sshDevice, sshPickAndConnect } = await import('./ssh-DSVjanff.mjs');
|
|
485
485
|
const { target, command, timeoutMs, stream } = parseSshArgs(args.slice(1));
|
|
486
486
|
try {
|
|
487
487
|
if (command) {
|
|
@@ -489,7 +489,9 @@ async function spawnAndWaitForDaemon() {
|
|
|
489
489
|
console.error(chalk.red("Error:"), "Which device? Usage: happy ssh <device> -- <command>");
|
|
490
490
|
process.exit(1);
|
|
491
491
|
}
|
|
492
|
-
|
|
492
|
+
const exitCode = await runOnDevice(credentials, target, command, { timeoutMs, stream });
|
|
493
|
+
await Promise.all([process.stdout, process.stderr].map((out) => new Promise((resolve) => out.write("", resolve))));
|
|
494
|
+
process.exit(exitCode);
|
|
493
495
|
}
|
|
494
496
|
if (!target) {
|
|
495
497
|
process.exit(await sshPickAndConnect(credentials));
|
|
@@ -502,7 +504,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
502
504
|
} else if (subcommand === "device") {
|
|
503
505
|
const deviceSubcommand = args[1];
|
|
504
506
|
if (deviceSubcommand === "push") {
|
|
505
|
-
const { pushToDevice } = await import('./push-
|
|
507
|
+
const { pushToDevice } = await import('./push-tXs96IyG.mjs');
|
|
506
508
|
const credentials = await readCredentials();
|
|
507
509
|
if (!credentials) {
|
|
508
510
|
console.error(chalk.red("Error:"), 'Not authenticated. Run "happy auth" first.');
|
|
@@ -516,8 +518,8 @@ async function spawnAndWaitForDaemon() {
|
|
|
516
518
|
process.exit(await pushToDevice(credentials, target, localPath, remotePath));
|
|
517
519
|
}
|
|
518
520
|
if (deviceSubcommand === "enroll") {
|
|
519
|
-
const { enrollDevice } = await import('./enroll-
|
|
520
|
-
const { install } = await import('./install-
|
|
521
|
+
const { enrollDevice } = await import('./enroll-CyHWNKNt.mjs');
|
|
522
|
+
const { install } = await import('./install-eIXFuZbC.mjs');
|
|
521
523
|
const token = args[2];
|
|
522
524
|
if (!token) {
|
|
523
525
|
console.error(chalk.red("Error:"), "Missing enrollment token. Usage: happy device enroll <token>");
|
|
@@ -547,12 +549,12 @@ ${chalk.bold("Usage:")}
|
|
|
547
549
|
`);
|
|
548
550
|
process.exit(0);
|
|
549
551
|
} else if (subcommand === "daemon") {
|
|
550
|
-
const { startDaemon } = await import('./run-
|
|
551
|
-
const { install } = await import('./install-
|
|
552
|
-
const { uninstall } = await import('./uninstall-
|
|
553
|
-
const { runDoctorCommand } = await import('./doctor-
|
|
554
|
-
const { getLatestDaemonLog } = await import('./persistence-
|
|
555
|
-
const { listDaemonSessions, stopDaemonSession, stopDaemon } = await import('./controlClient-
|
|
552
|
+
const { startDaemon } = await import('./run-BvpCwXkt.mjs').then(function (n) { return n.r; });
|
|
553
|
+
const { install } = await import('./install-eIXFuZbC.mjs');
|
|
554
|
+
const { uninstall } = await import('./uninstall-Bo2uaLRP.mjs');
|
|
555
|
+
const { runDoctorCommand } = await import('./doctor-DQtQbfG-.mjs');
|
|
556
|
+
const { getLatestDaemonLog } = await import('./persistence-IdEuIeMz.mjs').then(function (n) { return n.E; });
|
|
557
|
+
const { listDaemonSessions, stopDaemonSession, stopDaemon } = await import('./controlClient-VY0CGL8k.mjs');
|
|
556
558
|
const daemonSubcommand = args[1];
|
|
557
559
|
if (daemonSubcommand === "list") {
|
|
558
560
|
try {
|
|
@@ -757,7 +759,7 @@ ${chalk.gray("\u2500".repeat(60))}
|
|
|
757
759
|
${chalk.bold.cyan("Claude Code Options (from `claude --help`):")}
|
|
758
760
|
`);
|
|
759
761
|
try {
|
|
760
|
-
const { claudeCliPath } = await import('./claudeLocal-
|
|
762
|
+
const { claudeCliPath } = await import('./claudeLocal-B5uxtoit.mjs').then(function (n) { return n.d; });
|
|
761
763
|
const claudeHelp = execFileSync(claudeCliPath, ["--help"], { encoding: "utf8" });
|
|
762
764
|
console.log(claudeHelp);
|
|
763
765
|
} catch (e) {
|
|
@@ -787,10 +789,10 @@ ${chalk.bold.cyan("Claude Code Options (from `claude --help`):")}
|
|
|
787
789
|
}
|
|
788
790
|
process.exit(0);
|
|
789
791
|
}
|
|
790
|
-
const { authAndSetupMachineIfNeeded } = await import('./auth-
|
|
791
|
-
const { isDaemonRunningCurrentlyInstalledHappyVersion } = await import('./controlClient-
|
|
792
|
-
const { spawnHappyCLI } = await import('./spawnHappyCLI-
|
|
793
|
-
const { runClaude } = await import('./runClaude-
|
|
792
|
+
const { authAndSetupMachineIfNeeded } = await import('./auth-BnEa31tI.mjs');
|
|
793
|
+
const { isDaemonRunningCurrentlyInstalledHappyVersion } = await import('./controlClient-VY0CGL8k.mjs');
|
|
794
|
+
const { spawnHappyCLI } = await import('./spawnHappyCLI-DlTg87jS.mjs').then(function (n) { return n.a; });
|
|
795
|
+
const { runClaude } = await import('./runClaude-BiVqZQOm.mjs');
|
|
794
796
|
const {
|
|
795
797
|
credentials
|
|
796
798
|
} = await authAndSetupMachineIfNeeded();
|
|
@@ -864,7 +866,7 @@ ${chalk.bold("Examples:")}
|
|
|
864
866
|
}
|
|
865
867
|
console.log(chalk.blue("\u{1F4F1} Sending push notification..."));
|
|
866
868
|
try {
|
|
867
|
-
const { ApiClient } = await import('./api-
|
|
869
|
+
const { ApiClient } = await import('./api-9wvM_aF-.mjs').then(function (n) { return n.m; });
|
|
868
870
|
const api = await ApiClient.create(credentials);
|
|
869
871
|
const notificationTitle = title || "Happy AI";
|
|
870
872
|
api.push().sendToAllDevices(
|
|
@@ -2,7 +2,7 @@ import { existsSync, mkdirSync, writeFileSync } from 'fs';
|
|
|
2
2
|
import { execSync } from 'child_process';
|
|
3
3
|
import os from 'os';
|
|
4
4
|
import { join } from 'path';
|
|
5
|
-
import { l as logger } from './persistence-
|
|
5
|
+
import { l as logger } from './persistence-IdEuIeMz.mjs';
|
|
6
6
|
import { t as trimIdent } from './trimIdent-BAjmv_TG.mjs';
|
|
7
7
|
import { p as projectPath } from './projectPath-BTBIMB57.mjs';
|
|
8
8
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var logger = require('./persistence-
|
|
4
|
-
var install$2 = require('./install-
|
|
3
|
+
var logger = require('./persistence-CNXsXPLm.cjs');
|
|
4
|
+
var install$2 = require('./install-C4cwObCN.cjs');
|
|
5
5
|
var fs = require('fs');
|
|
6
6
|
var child_process = require('child_process');
|
|
7
7
|
var path = require('path');
|
|
@@ -4,7 +4,7 @@ var fs = require('fs');
|
|
|
4
4
|
var child_process = require('child_process');
|
|
5
5
|
var os = require('os');
|
|
6
6
|
var path = require('path');
|
|
7
|
-
var logger = require('./persistence-
|
|
7
|
+
var logger = require('./persistence-CNXsXPLm.cjs');
|
|
8
8
|
var trimIdent = require('./trimIdent-4gvk9Wk6.cjs');
|
|
9
9
|
var projectPath = require('./projectPath-ChLhdOyt.cjs');
|
|
10
10
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { l as logger, r as readCredentials } from './persistence-
|
|
2
|
-
import { i as install$2 } from './install-
|
|
1
|
+
import { l as logger, r as readCredentials } from './persistence-IdEuIeMz.mjs';
|
|
2
|
+
import { i as install$2 } from './install-1Y6dAcMp.mjs';
|
|
3
3
|
import { existsSync, mkdirSync, writeFileSync } from 'fs';
|
|
4
4
|
import { execSync } from 'child_process';
|
|
5
5
|
import path from 'path';
|
package/dist/lib.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var api = require('./api-
|
|
4
|
-
var logger = require('./persistence-
|
|
3
|
+
var api = require('./api-BGc484qf.cjs');
|
|
4
|
+
var logger = require('./persistence-CNXsXPLm.cjs');
|
|
5
5
|
var types = require('./types-DWeB7aqh.cjs');
|
|
6
6
|
require('axios');
|
|
7
7
|
require('node:events');
|
|
@@ -11,10 +11,11 @@ require('./index-DBev4hhV.cjs');
|
|
|
11
11
|
require('@paralleldrive/cuid2');
|
|
12
12
|
require('./time-Bj2HRkKH.cjs');
|
|
13
13
|
require('node:crypto');
|
|
14
|
-
require('node:fs');
|
|
15
14
|
require('node:path');
|
|
16
|
-
require('node:
|
|
15
|
+
require('node:fs');
|
|
17
16
|
require('node:fs/promises');
|
|
17
|
+
require('node:readline');
|
|
18
|
+
require('node:child_process');
|
|
18
19
|
require('node:os');
|
|
19
20
|
require('node:util');
|
|
20
21
|
require('child_process');
|
|
@@ -28,9 +29,8 @@ require('ws');
|
|
|
28
29
|
require('crypto');
|
|
29
30
|
require('tweetnacl');
|
|
30
31
|
require('@stablelib/base64');
|
|
31
|
-
require('node:readline');
|
|
32
32
|
require('expo-server-sdk');
|
|
33
|
-
require('./sessionKeyCache-
|
|
33
|
+
require('./sessionKeyCache-JjjYAxdf.cjs');
|
|
34
34
|
require('chalk');
|
|
35
35
|
require('fs');
|
|
36
36
|
|
package/dist/lib.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { A as ApiClient, a as ApiSessionClient } from './api-
|
|
2
|
-
export { c as configuration, l as logger } from './persistence-
|
|
1
|
+
export { A as ApiClient, a as ApiSessionClient } from './api-9wvM_aF-.mjs';
|
|
2
|
+
export { c as configuration, l as logger } from './persistence-IdEuIeMz.mjs';
|
|
3
3
|
export { R as RawJSONLinesSchema } from './types-BoJh4Qfv.mjs';
|
|
4
4
|
import 'axios';
|
|
5
5
|
import 'node:events';
|
|
@@ -9,10 +9,11 @@ import './index-7P6T8CE4.mjs';
|
|
|
9
9
|
import '@paralleldrive/cuid2';
|
|
10
10
|
import './time-DgsBLJA_.mjs';
|
|
11
11
|
import 'node:crypto';
|
|
12
|
-
import 'node:fs';
|
|
13
12
|
import 'node:path';
|
|
14
|
-
import 'node:
|
|
13
|
+
import 'node:fs';
|
|
15
14
|
import 'node:fs/promises';
|
|
15
|
+
import 'node:readline';
|
|
16
|
+
import 'node:child_process';
|
|
16
17
|
import 'node:os';
|
|
17
18
|
import 'node:util';
|
|
18
19
|
import 'child_process';
|
|
@@ -26,8 +27,7 @@ import 'ws';
|
|
|
26
27
|
import 'crypto';
|
|
27
28
|
import 'tweetnacl';
|
|
28
29
|
import '@stablelib/base64';
|
|
29
|
-
import 'node:readline';
|
|
30
30
|
import 'expo-server-sdk';
|
|
31
|
-
import './sessionKeyCache-
|
|
31
|
+
import './sessionKeyCache-DDzTs7E5.mjs';
|
|
32
32
|
import 'chalk';
|
|
33
33
|
import 'fs';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
|
-
import { l as logger } from './persistence-
|
|
3
|
-
import { s as saveToolOutputRecord } from './api-
|
|
2
|
+
import { l as logger } from './persistence-IdEuIeMz.mjs';
|
|
3
|
+
import { s as saveToolOutputRecord } from './api-9wvM_aF-.mjs';
|
|
4
4
|
|
|
5
5
|
class BaseReasoningProcessor {
|
|
6
6
|
accumulator = "";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var node_crypto = require('node:crypto');
|
|
4
|
-
var logger = require('./persistence-
|
|
5
|
-
var api = require('./api-
|
|
4
|
+
var logger = require('./persistence-CNXsXPLm.cjs');
|
|
5
|
+
var api = require('./api-BGc484qf.cjs');
|
|
6
6
|
|
|
7
7
|
class BaseReasoningProcessor {
|
|
8
8
|
accumulator = "";
|
|
@@ -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-
|
|
6
|
-
var ssh = require('./ssh-
|
|
5
|
+
var logger = require('./persistence-CNXsXPLm.cjs');
|
|
6
|
+
var ssh = require('./ssh-D31o750w.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-
|
|
15
|
+
require('./deviceKeys-c_sN01Mm.cjs');
|
|
16
16
|
require('axios');
|
|
17
|
-
require('./auth-
|
|
17
|
+
require('./auth-B6vskzfm.cjs');
|
|
18
18
|
require('qrcode-terminal');
|
|
19
19
|
require('./time-Bj2HRkKH.cjs');
|
|
20
|
-
require('./browser-
|
|
20
|
+
require('./browser-CnxzD1lA.cjs');
|
|
21
21
|
require('open');
|
|
22
22
|
require('react');
|
|
23
23
|
require('ink');
|
|
24
|
-
require('./controlClient-
|
|
24
|
+
require('./controlClient-DWBW6jRF.cjs');
|
|
25
25
|
require('./projectPath-ChLhdOyt.cjs');
|
|
26
26
|
require('path');
|
|
27
27
|
require('url');
|
|
@@ -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-
|
|
4
|
-
import { resolveDeviceForCommand } from './ssh-
|
|
3
|
+
import { c as configuration, e as encodeBase64, f as encrypt, g as decrypt, h as decodeBase64 } from './persistence-IdEuIeMz.mjs';
|
|
4
|
+
import { resolveDeviceForCommand } from './ssh-DSVjanff.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-
|
|
13
|
+
import './deviceKeys-DvfaTff3.mjs';
|
|
14
14
|
import 'axios';
|
|
15
|
-
import './auth-
|
|
15
|
+
import './auth-BnEa31tI.mjs';
|
|
16
16
|
import 'qrcode-terminal';
|
|
17
17
|
import './time-DgsBLJA_.mjs';
|
|
18
|
-
import './browser-
|
|
18
|
+
import './browser-CkQP96Zi.mjs';
|
|
19
19
|
import 'open';
|
|
20
20
|
import 'react';
|
|
21
21
|
import 'ink';
|
|
22
|
-
import './controlClient-
|
|
22
|
+
import './controlClient-VY0CGL8k.mjs';
|
|
23
23
|
import './projectPath-BTBIMB57.mjs';
|
|
24
24
|
import 'path';
|
|
25
25
|
import 'url';
|
package/dist/{registerKillSessionHandler-DYhs41SE.cjs → registerKillSessionHandler-D9tmPdw5.cjs}
RENAMED
|
@@ -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-
|
|
11
|
-
var deviceKeys = require('./deviceKeys-
|
|
10
|
+
var logger = require('./persistence-CNXsXPLm.cjs');
|
|
11
|
+
var deviceKeys = require('./deviceKeys-c_sN01Mm.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-DBev4hhV.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-
|
|
21
|
+
require('./api-BGc484qf.cjs');
|
|
22
22
|
require('tweetnacl');
|
|
23
23
|
require('ws');
|
|
24
24
|
require('crypto');
|
package/dist/{registerKillSessionHandler-Due-xxRL.mjs → registerKillSessionHandler-vF5c8YZF.mjs}
RENAMED
|
@@ -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-
|
|
9
|
-
import { l as listDevices, d as deviceExec } from './deviceKeys-
|
|
8
|
+
import { c as configuration, l as logger, r as readCredentials } from './persistence-IdEuIeMz.mjs';
|
|
9
|
+
import { l as listDevices, d as deviceExec } from './deviceKeys-DvfaTff3.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-7P6T8CE4.mjs';
|
|
|
16
16
|
import { execSync } from 'node:child_process';
|
|
17
17
|
import 'node:events';
|
|
18
18
|
import 'socket.io-client';
|
|
19
|
-
import './api-
|
|
19
|
+
import './api-9wvM_aF-.mjs';
|
|
20
20
|
import 'tweetnacl';
|
|
21
21
|
import 'ws';
|
|
22
22
|
import 'crypto';
|
|
@@ -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-
|
|
7
|
-
var logger = require('./persistence-
|
|
8
|
-
var auth = require('./auth-
|
|
6
|
+
var api = require('./api-BGc484qf.cjs');
|
|
7
|
+
var logger = require('./persistence-CNXsXPLm.cjs');
|
|
8
|
+
var auth = require('./auth-B6vskzfm.cjs');
|
|
9
9
|
var child_process = require('child_process');
|
|
10
|
-
var doctor = require('./doctor-
|
|
11
|
-
var spawnHappyCLI = require('./spawnHappyCLI-
|
|
12
|
-
var controlClient = require('./controlClient-
|
|
13
|
-
var deviceKeys = require('./deviceKeys-
|
|
14
|
-
var install = require('./install-
|
|
10
|
+
var doctor = require('./doctor-CD46A-_Y.cjs');
|
|
11
|
+
var spawnHappyCLI = require('./spawnHappyCLI-BbMkZhMk.cjs');
|
|
12
|
+
var controlClient = require('./controlClient-DWBW6jRF.cjs');
|
|
13
|
+
var deviceKeys = require('./deviceKeys-c_sN01Mm.cjs');
|
|
14
|
+
var install = require('./install-C4cwObCN.cjs');
|
|
15
15
|
var fastify = require('fastify');
|
|
16
16
|
var fs = require('node:fs');
|
|
17
17
|
var promises = require('node:fs/promises');
|
|
@@ -2028,7 +2028,7 @@ ${error.message}
|
|
|
2028
2028
|
requestShutdown: () => requestShutdown("happy-cli"),
|
|
2029
2029
|
onHappySessionWebhook,
|
|
2030
2030
|
execOnDevice: async (deviceId, command, timeoutMs) => {
|
|
2031
|
-
if (!connectedMachine) {
|
|
2031
|
+
if (!connectedMachine?.rpcSocket.connected) {
|
|
2032
2032
|
throw new Error("Daemon is not connected yet");
|
|
2033
2033
|
}
|
|
2034
2034
|
const material = await deviceKeys.readCachedDeviceKey(deviceId);
|
|
@@ -2040,7 +2040,13 @@ ${error.message}
|
|
|
2040
2040
|
deviceKeyVariant: material.variant,
|
|
2041
2041
|
timeout: timeoutMs,
|
|
2042
2042
|
skipMachineLookup: true
|
|
2043
|
-
})
|
|
2043
|
+
}).catch((error) => ({
|
|
2044
|
+
success: false,
|
|
2045
|
+
stdout: "",
|
|
2046
|
+
stderr: "",
|
|
2047
|
+
exitCode: 1,
|
|
2048
|
+
error: error instanceof Error ? error.message : String(error)
|
|
2049
|
+
}));
|
|
2044
2050
|
}
|
|
2045
2051
|
});
|
|
2046
2052
|
const fileState = {
|
|
@@ -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-
|
|
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-
|
|
6
|
-
import { authAndSetupMachineIfNeeded } from './auth-
|
|
4
|
+
import { A as ApiClient } from './api-9wvM_aF-.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-IdEuIeMz.mjs';
|
|
6
|
+
import { authAndSetupMachineIfNeeded } from './auth-BnEa31tI.mjs';
|
|
7
7
|
import { spawn, execSync, exec } from 'child_process';
|
|
8
|
-
import { getEnvironmentInfo } from './doctor-
|
|
9
|
-
import { s as spawnHappyCLI } from './spawnHappyCLI-
|
|
10
|
-
import { isDaemonRunningCurrentlyInstalledHappyVersion, stopDaemon, cleanupDaemonState } from './controlClient-
|
|
11
|
-
import { a as readCachedDeviceKey, d as deviceExec } from './deviceKeys-
|
|
12
|
-
import { P as PLIST_LABEL } from './install-
|
|
8
|
+
import { getEnvironmentInfo } from './doctor-DQtQbfG-.mjs';
|
|
9
|
+
import { s as spawnHappyCLI } from './spawnHappyCLI-DlTg87jS.mjs';
|
|
10
|
+
import { isDaemonRunningCurrentlyInstalledHappyVersion, stopDaemon, cleanupDaemonState } from './controlClient-VY0CGL8k.mjs';
|
|
11
|
+
import { a as readCachedDeviceKey, d as deviceExec } from './deviceKeys-DvfaTff3.mjs';
|
|
12
|
+
import { P as PLIST_LABEL } from './install-1Y6dAcMp.mjs';
|
|
13
13
|
import fastify from 'fastify';
|
|
14
14
|
import { createReadStream } from 'node:fs';
|
|
15
15
|
import { stat } from 'node:fs/promises';
|
|
@@ -2007,7 +2007,7 @@ ${error.message}
|
|
|
2007
2007
|
requestShutdown: () => requestShutdown("happy-cli"),
|
|
2008
2008
|
onHappySessionWebhook,
|
|
2009
2009
|
execOnDevice: async (deviceId, command, timeoutMs) => {
|
|
2010
|
-
if (!connectedMachine) {
|
|
2010
|
+
if (!connectedMachine?.rpcSocket.connected) {
|
|
2011
2011
|
throw new Error("Daemon is not connected yet");
|
|
2012
2012
|
}
|
|
2013
2013
|
const material = await readCachedDeviceKey(deviceId);
|
|
@@ -2019,7 +2019,13 @@ ${error.message}
|
|
|
2019
2019
|
deviceKeyVariant: material.variant,
|
|
2020
2020
|
timeout: timeoutMs,
|
|
2021
2021
|
skipMachineLookup: true
|
|
2022
|
-
})
|
|
2022
|
+
}).catch((error) => ({
|
|
2023
|
+
success: false,
|
|
2024
|
+
stdout: "",
|
|
2025
|
+
stderr: "",
|
|
2026
|
+
exitCode: 1,
|
|
2027
|
+
error: error instanceof Error ? error.message : String(error)
|
|
2028
|
+
}));
|
|
2023
2029
|
}
|
|
2024
2030
|
});
|
|
2025
2031
|
const fileState = {
|