@zonease/happy 0.6.41 → 0.6.42
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-XeHlmApX.cjs → api-CIE4_cWd.cjs} +4 -4
- package/dist/{api-K2-jr9ar.mjs → api-Ew6xr81i.mjs} +4 -4
- package/dist/{auth-CjLkoM3m.mjs → auth-BzYevJo2.mjs} +4 -4
- package/dist/{auth-BbvPcnkY.cjs → auth-Dor79zTL.cjs} +4 -4
- package/dist/{auth-BQvEuSs5.cjs → auth-G9fZpVJ2.cjs} +2 -2
- package/dist/{auth-DS8fzlin.mjs → auth-Q2STUNI-.mjs} +2 -2
- package/dist/{browser-C05Ak6RL.mjs → browser-BI7s-V8E.mjs} +1 -1
- package/dist/{browser-C05SP_Tt.cjs → browser-qDIIAL7S.cjs} +1 -1
- package/dist/{claudeLocal-DJNRlHIC.mjs → claudeLocal-Db2tDC4X.mjs} +1 -1
- package/dist/{claudeLocal-CpDhLCcZ.cjs → claudeLocal-f4uBLJaM.cjs} +1 -1
- package/dist/{config-DWWtjKQx.mjs → config-CHjDs8AS.mjs} +1 -1
- package/dist/{config-B0mns9fF.cjs → config-CSBlEik9.cjs} +1 -1
- package/dist/{connect-BxCScVNX.cjs → connect-CJoTliii.cjs} +5 -5
- package/dist/{connect-DXQC1CJe.mjs → connect-O_nA5BOC.mjs} +5 -5
- package/dist/{controlClient-DgELDZgM.cjs → controlClient-CEz_p1zc.cjs} +1 -1
- package/dist/{controlClient-DgjVRN8D.mjs → controlClient-DoS9JqQC.mjs} +1 -1
- package/dist/cursorApprovalHook-B0v1kGa7.mjs +95 -0
- package/dist/cursorApprovalHook-DRAHfTXU.cjs +97 -0
- package/dist/cursorApprovalServer-DzY8yJlI.cjs +167 -0
- package/dist/cursorApprovalServer-JjPkdjGR.mjs +164 -0
- package/dist/{deviceKeys-CejCdWpw.mjs → deviceKeys-B4aqjnE6.mjs} +2 -2
- package/dist/{deviceKeys-BpIAWz13.cjs → deviceKeys-DyUn0bEx.cjs} +2 -2
- package/dist/{doctor-DznasgP3.cjs → doctor-BJSuVRUZ.cjs} +2 -2
- package/dist/{doctor-B-LCMVN9.mjs → doctor-DRnft_5-.mjs} +2 -2
- package/dist/{downloadImage-ia5SzlCV.mjs → downloadImage-BpVF7A79.mjs} +7 -40
- package/dist/{downloadImage-B_ygLAXY.cjs → downloadImage-Cijmufpr.cjs} +5 -39
- package/dist/{enroll-BvfpRUGJ.cjs → enroll-C2gunHdt.cjs} +3 -3
- package/dist/{enroll-HjUqyGnD.mjs → enroll-CysDL6ee.mjs} +3 -3
- package/dist/{evidence-BEQd1dCh.mjs → evidence-DPutCuUr.mjs} +1 -1
- package/dist/{evidence-CVgTjBrq.cjs → evidence-DsQ-h-_W.cjs} +1 -1
- package/dist/{formatImageMessage-DVs57t3x.mjs → formatImageMessage-6aV9YFWr.mjs} +1 -1
- package/dist/{formatImageMessage-CmJTP_hU.cjs → formatImageMessage-BPK_Ivfe.cjs} +1 -1
- package/dist/gitWorktree-C6jLoaMw.cjs +39 -0
- package/dist/gitWorktree-CzJDU2BV.mjs +37 -0
- package/dist/{index-CDTNgfUf.cjs → index-BeKrqPYR.cjs} +25 -1
- package/dist/{index-CPKdvi7J.mjs → index-DTV7drqs.mjs} +25 -1
- package/dist/index.cjs +91 -41
- package/dist/index.mjs +91 -41
- package/dist/{install-UTz_vYvB.mjs → install-BsTA2tZn.mjs} +2 -2
- package/dist/{install-B3mMGISS.mjs → install-DBg0xQ3g.mjs} +1 -1
- package/dist/{install-2Yl_L582.cjs → install-DlOppA-e.cjs} +2 -2
- package/dist/{install-Ck22tYHP.cjs → install-Tyhs6rUp.cjs} +1 -1
- package/dist/lib.cjs +4 -4
- package/dist/lib.d.cts +3 -2
- package/dist/lib.d.mts +3 -2
- package/dist/lib.mjs +4 -4
- package/dist/{loadableToolOutput-4EvraaNY.mjs → loadableToolOutput-2dMPAp4N.mjs} +3 -456
- package/dist/{loadableToolOutput-BZYlaqHn.cjs → loadableToolOutput-DPGTtKJM.cjs} +2 -458
- package/dist/{persistence-DrfN7TzY.cjs → persistence-BcQmjobZ.cjs} +7 -4
- package/dist/{persistence-CIUFyOwz.mjs → persistence-D9tMm6bj.mjs} +7 -4
- package/dist/{push-CCOXCcM_.cjs → push-Cnm6JQMD.cjs} +6 -6
- package/dist/{push-USXj_pv0.mjs → push-Dxsugkes.mjs} +6 -6
- package/dist/{run-Dy6KX6m-.mjs → run-BEflQaQ2.mjs} +12 -9
- package/dist/{run-D3CopmEb.cjs → run-CiPWWhXt.cjs} +12 -9
- package/dist/{runClaude-aHzvx6Ha.cjs → runClaude-BVXsyCHb.cjs} +19 -18
- package/dist/{runClaude-CWux2RDq.mjs → runClaude-sPkSqHWY.mjs} +16 -15
- package/dist/{runCodex-G-Aq531U.cjs → runCodex-BAwhdmSA.cjs} +19 -17
- package/dist/{runCodex-D0ZxSj3O.mjs → runCodex-C4rHkIyw.mjs} +16 -14
- package/dist/runCursor-CD5wC3gA.cjs +578 -0
- package/dist/runCursor-DiHLWMs8.mjs +576 -0
- package/dist/{runGemini-DZC2i6vA.mjs → runGemini-B-93gOqB.mjs} +18 -16
- package/dist/{runGemini-DxGgDAIM.cjs → runGemini-Cto-adir.cjs} +21 -19
- package/dist/{runOneShot-BgT-JNMA.cjs → runOneShot-BfIzE9W4.cjs} +3 -3
- package/dist/{runOneShot-cxlk7VKA.mjs → runOneShot-DGjlYVhR.mjs} +3 -3
- package/dist/{serve-Dr3wPrtK.cjs → serve-CqL6NWDr.cjs} +7 -7
- package/dist/{serve-CKyvJNs0.mjs → serve-ttlqF5jn.mjs} +7 -7
- package/dist/{session-dYzbOo_W.cjs → session-BZhGpQUJ.cjs} +5 -5
- package/dist/{session-vf2ZjFto.mjs → session-Co0REU9e.mjs} +5 -5
- package/dist/{sessionKeyCache-dDquDzn0.cjs → sessionKeyCache-BwFUGgMs.cjs} +1 -1
- package/dist/{sessionKeyCache-D2u3JUys.mjs → sessionKeyCache-pXTjpETo.mjs} +1 -1
- package/dist/{sessionList-C1k2PNg_.mjs → sessionList-DaufR-sA.mjs} +2 -2
- package/dist/{sessionList-DmmtC7uR.cjs → sessionList-fG5uAPzU.cjs} +2 -2
- package/dist/{sessionSummary-DGLoVOxd.cjs → sessionSummary-CjZPt6nr.cjs} +3 -3
- package/dist/{sessionSummary-5a1QtFVS.mjs → sessionSummary-Dv6dPABg.mjs} +3 -3
- package/dist/setupOfflineReconnection-B6coH9QN.cjs +461 -0
- package/dist/setupOfflineReconnection-DW5il97B.mjs +457 -0
- package/dist/{spawnHappyCLI-CarRI4GM.cjs → spawnHappyCLI-Cfu7C1uM.cjs} +1 -1
- package/dist/{spawnHappyCLI-D3EkTFIn.mjs → spawnHappyCLI-DhUeycct.mjs} +1 -1
- package/dist/{ssh-B0hvEYIl.mjs → ssh-8tPIKk-i.mjs} +5 -5
- package/dist/{ssh-CBgVwKsB.cjs → ssh-C4YTSHXL.cjs} +5 -5
- package/dist/{task-CRo6W-3_.mjs → task-CH-oidFy.mjs} +6 -6
- package/dist/{task-CMunPKCV.cjs → task-DFW-PecP.cjs} +6 -6
- package/dist/{uninstall-BALE2up0.mjs → uninstall-CeioRZNI.mjs} +2 -2
- package/dist/{uninstall-BJ3eEGM4.cjs → uninstall-yTSL3X6Y.cjs} +2 -2
- package/dist/{update-Bb3iijy8.cjs → update-Bju28vNP.cjs} +3 -3
- package/dist/{update-BfjtLrhO.mjs → update-Derd2hoX.mjs} +3 -3
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chalk = require('chalk');
|
|
4
|
-
var logger = require('./persistence-
|
|
4
|
+
var logger = require('./persistence-BcQmjobZ.cjs');
|
|
5
5
|
var z = require('zod');
|
|
6
6
|
var node_child_process = require('node:child_process');
|
|
7
7
|
require('node:fs/promises');
|
|
@@ -13,8 +13,8 @@ require('tweetnacl');
|
|
|
13
13
|
require('fs');
|
|
14
14
|
|
|
15
15
|
async function spawnAndWaitForDaemon() {
|
|
16
|
-
const { spawnHappyCLI } = await Promise.resolve().then(function () { return require('./spawnHappyCLI-
|
|
17
|
-
const { checkIfDaemonRunningAndCleanupStaleState } = await Promise.resolve().then(function () { return require('./controlClient-
|
|
16
|
+
const { spawnHappyCLI } = await Promise.resolve().then(function () { return require('./spawnHappyCLI-Cfu7C1uM.cjs'); }).then(function (n) { return n.spawnHappyCLI$1; });
|
|
17
|
+
const { checkIfDaemonRunningAndCleanupStaleState } = await Promise.resolve().then(function () { return require('./controlClient-CEz_p1zc.cjs'); });
|
|
18
18
|
const child = spawnHappyCLI(["daemon", "start-sync"], {
|
|
19
19
|
detached: true,
|
|
20
20
|
stdio: "ignore"
|
|
@@ -37,7 +37,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
37
37
|
if (!args.includes("--version")) ;
|
|
38
38
|
if (subcommand === "orchestrator-oneshot") {
|
|
39
39
|
try {
|
|
40
|
-
const { runOrchestratorOneShot } = await Promise.resolve().then(function () { return require('./runOneShot-
|
|
40
|
+
const { runOrchestratorOneShot } = await Promise.resolve().then(function () { return require('./runOneShot-BfIzE9W4.cjs'); });
|
|
41
41
|
const exitCode = await runOrchestratorOneShot(args.slice(1));
|
|
42
42
|
process.exit(exitCode);
|
|
43
43
|
} catch (error) {
|
|
@@ -50,7 +50,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
50
50
|
return;
|
|
51
51
|
} else if (subcommand === "doctor") {
|
|
52
52
|
const { killRunawayHappyProcesses } = await Promise.resolve().then(function () { return require('./doctor-C08m5Z9f.cjs'); });
|
|
53
|
-
const { runDoctorCommand } = await Promise.resolve().then(function () { return require('./doctor-
|
|
53
|
+
const { runDoctorCommand } = await Promise.resolve().then(function () { return require('./doctor-BJSuVRUZ.cjs'); });
|
|
54
54
|
if (args[1] === "clean") {
|
|
55
55
|
const result = await killRunawayHappyProcesses();
|
|
56
56
|
console.log(`Cleaned up ${result.killed} runaway processes`);
|
|
@@ -63,7 +63,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
63
63
|
return;
|
|
64
64
|
} else if (subcommand === "auth") {
|
|
65
65
|
try {
|
|
66
|
-
const { handleAuthCommand } = await Promise.resolve().then(function () { return require('./auth-
|
|
66
|
+
const { handleAuthCommand } = await Promise.resolve().then(function () { return require('./auth-Dor79zTL.cjs'); });
|
|
67
67
|
await handleAuthCommand(args.slice(1));
|
|
68
68
|
} catch (error) {
|
|
69
69
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -75,7 +75,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
75
75
|
return;
|
|
76
76
|
} else if (subcommand === "connect") {
|
|
77
77
|
try {
|
|
78
|
-
const { handleConnectCommand } = await Promise.resolve().then(function () { return require('./connect-
|
|
78
|
+
const { handleConnectCommand } = await Promise.resolve().then(function () { return require('./connect-CJoTliii.cjs'); });
|
|
79
79
|
await handleConnectCommand(args.slice(1));
|
|
80
80
|
} catch (error) {
|
|
81
81
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -86,11 +86,11 @@ async function spawnAndWaitForDaemon() {
|
|
|
86
86
|
}
|
|
87
87
|
return;
|
|
88
88
|
} else if (subcommand === "codex") {
|
|
89
|
-
const { authAndSetupMachineIfNeeded } = await Promise.resolve().then(function () { return require('./auth-
|
|
90
|
-
const { isDaemonRunningCurrentlyInstalledHappyVersion } = await Promise.resolve().then(function () { return require('./controlClient-
|
|
91
|
-
const { spawnHappyCLI } = await Promise.resolve().then(function () { return require('./spawnHappyCLI-
|
|
89
|
+
const { authAndSetupMachineIfNeeded } = await Promise.resolve().then(function () { return require('./auth-G9fZpVJ2.cjs'); });
|
|
90
|
+
const { isDaemonRunningCurrentlyInstalledHappyVersion } = await Promise.resolve().then(function () { return require('./controlClient-CEz_p1zc.cjs'); });
|
|
91
|
+
const { spawnHappyCLI } = await Promise.resolve().then(function () { return require('./spawnHappyCLI-Cfu7C1uM.cjs'); }).then(function (n) { return n.spawnHappyCLI$1; });
|
|
92
92
|
try {
|
|
93
|
-
const { runCodex } = await Promise.resolve().then(function () { return require('./runCodex-
|
|
93
|
+
const { runCodex } = await Promise.resolve().then(function () { return require('./runCodex-BAwhdmSA.cjs'); });
|
|
94
94
|
let startedBy = void 0;
|
|
95
95
|
for (let i = 1; i < args.length; i++) {
|
|
96
96
|
if (args[i] === "--started-by") {
|
|
@@ -120,10 +120,60 @@ async function spawnAndWaitForDaemon() {
|
|
|
120
120
|
process.exit(1);
|
|
121
121
|
}
|
|
122
122
|
return;
|
|
123
|
+
} else if (subcommand === "cursor-approval-hook") {
|
|
124
|
+
const { runCursorApprovalHook } = await Promise.resolve().then(function () { return require('./cursorApprovalHook-DRAHfTXU.cjs'); });
|
|
125
|
+
await runCursorApprovalHook();
|
|
126
|
+
return;
|
|
127
|
+
} else if (subcommand === "cursor") {
|
|
128
|
+
const { authAndSetupMachineIfNeeded } = await Promise.resolve().then(function () { return require('./auth-G9fZpVJ2.cjs'); });
|
|
129
|
+
const { isDaemonRunningCurrentlyInstalledHappyVersion } = await Promise.resolve().then(function () { return require('./controlClient-CEz_p1zc.cjs'); });
|
|
130
|
+
const { spawnHappyCLI } = await Promise.resolve().then(function () { return require('./spawnHappyCLI-Cfu7C1uM.cjs'); }).then(function (n) { return n.spawnHappyCLI$1; });
|
|
131
|
+
try {
|
|
132
|
+
const { runCursor } = await Promise.resolve().then(function () { return require('./runCursor-CD5wC3gA.cjs'); });
|
|
133
|
+
let startedBy = void 0;
|
|
134
|
+
let model = null;
|
|
135
|
+
const promptParts = [];
|
|
136
|
+
for (let i = 1; i < args.length; i++) {
|
|
137
|
+
if (args[i] === "--started-by") {
|
|
138
|
+
startedBy = args[++i];
|
|
139
|
+
} else if (args[i] === "--model") {
|
|
140
|
+
model = args[++i] ?? null;
|
|
141
|
+
} else if (args[i] === "--happy-starting-mode") {
|
|
142
|
+
i++;
|
|
143
|
+
} else {
|
|
144
|
+
promptParts.push(args[i]);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
const { credentials } = await authAndSetupMachineIfNeeded();
|
|
148
|
+
logger.logger.debug("Ensuring Happy background service is running & matches our version...");
|
|
149
|
+
if (!await isDaemonRunningCurrentlyInstalledHappyVersion()) {
|
|
150
|
+
logger.logger.debug("Starting Happy background service...");
|
|
151
|
+
const daemonProcess = spawnHappyCLI(["daemon", "start-sync"], {
|
|
152
|
+
detached: true,
|
|
153
|
+
stdio: "ignore",
|
|
154
|
+
env: process.env
|
|
155
|
+
});
|
|
156
|
+
daemonProcess.unref();
|
|
157
|
+
await new Promise((resolve) => setTimeout(resolve, 200));
|
|
158
|
+
}
|
|
159
|
+
await runCursor({
|
|
160
|
+
credentials,
|
|
161
|
+
startedBy,
|
|
162
|
+
model,
|
|
163
|
+
initialPrompt: promptParts.length > 0 ? promptParts.join(" ") : void 0
|
|
164
|
+
});
|
|
165
|
+
} catch (error) {
|
|
166
|
+
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
167
|
+
if (logger.isDebug()) {
|
|
168
|
+
console.error(error);
|
|
169
|
+
}
|
|
170
|
+
process.exit(1);
|
|
171
|
+
}
|
|
172
|
+
return;
|
|
123
173
|
} else if (subcommand === "gemini") {
|
|
124
|
-
const { authAndSetupMachineIfNeeded } = await Promise.resolve().then(function () { return require('./auth-
|
|
125
|
-
const { isDaemonRunningCurrentlyInstalledHappyVersion } = await Promise.resolve().then(function () { return require('./controlClient-
|
|
126
|
-
const { spawnHappyCLI } = await Promise.resolve().then(function () { return require('./spawnHappyCLI-
|
|
174
|
+
const { authAndSetupMachineIfNeeded } = await Promise.resolve().then(function () { return require('./auth-G9fZpVJ2.cjs'); });
|
|
175
|
+
const { isDaemonRunningCurrentlyInstalledHappyVersion } = await Promise.resolve().then(function () { return require('./controlClient-CEz_p1zc.cjs'); });
|
|
176
|
+
const { spawnHappyCLI } = await Promise.resolve().then(function () { return require('./spawnHappyCLI-Cfu7C1uM.cjs'); }).then(function (n) { return n.spawnHappyCLI$1; });
|
|
127
177
|
const geminiSubcommand = args[1];
|
|
128
178
|
if (geminiSubcommand === "model" && args[2] === "set" && args[3]) {
|
|
129
179
|
const modelName = args[3];
|
|
@@ -197,9 +247,9 @@ async function spawnAndWaitForDaemon() {
|
|
|
197
247
|
if (geminiSubcommand === "project" && args[2] === "set" && args[3]) {
|
|
198
248
|
const projectId = args[3];
|
|
199
249
|
try {
|
|
200
|
-
const { saveGoogleCloudProjectToConfig } = await Promise.resolve().then(function () { return require('./config-
|
|
201
|
-
const { readCredentials: readCredentials2 } = await Promise.resolve().then(function () { return require('./persistence-
|
|
202
|
-
const { ApiClient } = await Promise.resolve().then(function () { return require('./api-
|
|
250
|
+
const { saveGoogleCloudProjectToConfig } = await Promise.resolve().then(function () { return require('./config-CSBlEik9.cjs'); });
|
|
251
|
+
const { readCredentials: readCredentials2 } = await Promise.resolve().then(function () { return require('./persistence-BcQmjobZ.cjs'); }).then(function (n) { return n.persistence; });
|
|
252
|
+
const { ApiClient } = await Promise.resolve().then(function () { return require('./api-CIE4_cWd.cjs'); }).then(function (n) { return n.api; });
|
|
203
253
|
let userEmail = void 0;
|
|
204
254
|
try {
|
|
205
255
|
const credentials = await readCredentials2();
|
|
@@ -230,7 +280,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
230
280
|
}
|
|
231
281
|
if (geminiSubcommand === "project" && args[2] === "get") {
|
|
232
282
|
try {
|
|
233
|
-
const { readGeminiLocalConfig } = await Promise.resolve().then(function () { return require('./config-
|
|
283
|
+
const { readGeminiLocalConfig } = await Promise.resolve().then(function () { return require('./config-CSBlEik9.cjs'); });
|
|
234
284
|
const config = readGeminiLocalConfig();
|
|
235
285
|
if (config.googleCloudProject) {
|
|
236
286
|
console.log(`Current Google Cloud Project: ${config.googleCloudProject}`);
|
|
@@ -270,7 +320,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
270
320
|
process.exit(0);
|
|
271
321
|
}
|
|
272
322
|
try {
|
|
273
|
-
const { runGemini } = await Promise.resolve().then(function () { return require('./runGemini-
|
|
323
|
+
const { runGemini } = await Promise.resolve().then(function () { return require('./runGemini-Cto-adir.cjs'); });
|
|
274
324
|
let startedBy = void 0;
|
|
275
325
|
for (let i = 1; i < args.length; i++) {
|
|
276
326
|
if (args[i] === "--started-by") {
|
|
@@ -302,7 +352,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
302
352
|
return;
|
|
303
353
|
} else if (subcommand === "update") {
|
|
304
354
|
try {
|
|
305
|
-
const { handleUpdateCommand } = await Promise.resolve().then(function () { return require('./update-
|
|
355
|
+
const { handleUpdateCommand } = await Promise.resolve().then(function () { return require('./update-Bju28vNP.cjs'); });
|
|
306
356
|
await handleUpdateCommand();
|
|
307
357
|
} catch (error) {
|
|
308
358
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -315,7 +365,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
315
365
|
} else if (subcommand === "logout") {
|
|
316
366
|
console.log(chalk.yellow('Note: "happy logout" is deprecated. Use "happy auth logout" instead.\n'));
|
|
317
367
|
try {
|
|
318
|
-
const { handleAuthCommand } = await Promise.resolve().then(function () { return require('./auth-
|
|
368
|
+
const { handleAuthCommand } = await Promise.resolve().then(function () { return require('./auth-Dor79zTL.cjs'); });
|
|
319
369
|
await handleAuthCommand(["logout"]);
|
|
320
370
|
} catch (error) {
|
|
321
371
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -338,7 +388,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
338
388
|
return;
|
|
339
389
|
} else if (subcommand === "session") {
|
|
340
390
|
try {
|
|
341
|
-
const { handleSessionCommand } = await Promise.resolve().then(function () { return require('./session-
|
|
391
|
+
const { handleSessionCommand } = await Promise.resolve().then(function () { return require('./session-BZhGpQUJ.cjs'); });
|
|
342
392
|
await handleSessionCommand(args.slice(1));
|
|
343
393
|
} catch (error) {
|
|
344
394
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -350,7 +400,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
350
400
|
return;
|
|
351
401
|
} else if (subcommand === "task") {
|
|
352
402
|
try {
|
|
353
|
-
const { handleTaskCommand } = await Promise.resolve().then(function () { return require('./task-
|
|
403
|
+
const { handleTaskCommand } = await Promise.resolve().then(function () { return require('./task-DFW-PecP.cjs'); });
|
|
354
404
|
await handleTaskCommand(args.slice(1));
|
|
355
405
|
} catch (error) {
|
|
356
406
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -398,7 +448,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
398
448
|
return;
|
|
399
449
|
} else if (subcommand === "evidence") {
|
|
400
450
|
try {
|
|
401
|
-
const { handleEvidenceCommand } = await Promise.resolve().then(function () { return require('./evidence-
|
|
451
|
+
const { handleEvidenceCommand } = await Promise.resolve().then(function () { return require('./evidence-DsQ-h-_W.cjs'); });
|
|
402
452
|
await handleEvidenceCommand(args.slice(1));
|
|
403
453
|
} catch (error) {
|
|
404
454
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -415,7 +465,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
415
465
|
process.exit(1);
|
|
416
466
|
}
|
|
417
467
|
try {
|
|
418
|
-
const { runMcpServe } = await Promise.resolve().then(function () { return require('./serve-
|
|
468
|
+
const { runMcpServe } = await Promise.resolve().then(function () { return require('./serve-CqL6NWDr.cjs'); });
|
|
419
469
|
await runMcpServe();
|
|
420
470
|
} catch (error) {
|
|
421
471
|
process.stderr.write(`[happy-mcp] fatal: ${error instanceof Error ? error.message : "unknown error"}
|
|
@@ -429,7 +479,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
429
479
|
console.error(chalk.red("Error:"), 'Not authenticated. Run "happy auth" first.');
|
|
430
480
|
process.exit(1);
|
|
431
481
|
}
|
|
432
|
-
const { parseSshArgs, runOnDevice, sshDevice, sshPickAndConnect } = await Promise.resolve().then(function () { return require('./ssh-
|
|
482
|
+
const { parseSshArgs, runOnDevice, sshDevice, sshPickAndConnect } = await Promise.resolve().then(function () { return require('./ssh-C4YTSHXL.cjs'); });
|
|
433
483
|
const { target, command, timeoutMs, stream } = parseSshArgs(args.slice(1));
|
|
434
484
|
try {
|
|
435
485
|
if (command) {
|
|
@@ -450,7 +500,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
450
500
|
} else if (subcommand === "device") {
|
|
451
501
|
const deviceSubcommand = args[1];
|
|
452
502
|
if (deviceSubcommand === "push") {
|
|
453
|
-
const { pushToDevice } = await Promise.resolve().then(function () { return require('./push-
|
|
503
|
+
const { pushToDevice } = await Promise.resolve().then(function () { return require('./push-Cnm6JQMD.cjs'); });
|
|
454
504
|
const credentials = await logger.readCredentials();
|
|
455
505
|
if (!credentials) {
|
|
456
506
|
console.error(chalk.red("Error:"), 'Not authenticated. Run "happy auth" first.');
|
|
@@ -464,8 +514,8 @@ async function spawnAndWaitForDaemon() {
|
|
|
464
514
|
process.exit(await pushToDevice(credentials, target, localPath, remotePath));
|
|
465
515
|
}
|
|
466
516
|
if (deviceSubcommand === "enroll") {
|
|
467
|
-
const { enrollDevice } = await Promise.resolve().then(function () { return require('./enroll-
|
|
468
|
-
const { install } = await Promise.resolve().then(function () { return require('./install-
|
|
517
|
+
const { enrollDevice } = await Promise.resolve().then(function () { return require('./enroll-C2gunHdt.cjs'); });
|
|
518
|
+
const { install } = await Promise.resolve().then(function () { return require('./install-DlOppA-e.cjs'); });
|
|
469
519
|
const token = args[2];
|
|
470
520
|
if (!token) {
|
|
471
521
|
console.error(chalk.red("Error:"), "Missing enrollment token. Usage: happy device enroll <token>");
|
|
@@ -495,12 +545,12 @@ ${chalk.bold("Usage:")}
|
|
|
495
545
|
`);
|
|
496
546
|
process.exit(0);
|
|
497
547
|
} else if (subcommand === "daemon") {
|
|
498
|
-
const { startDaemon } = await Promise.resolve().then(function () { return require('./run-
|
|
499
|
-
const { install } = await Promise.resolve().then(function () { return require('./install-
|
|
500
|
-
const { uninstall } = await Promise.resolve().then(function () { return require('./uninstall-
|
|
501
|
-
const { runDoctorCommand } = await Promise.resolve().then(function () { return require('./doctor-
|
|
502
|
-
const { getLatestDaemonLog } = await Promise.resolve().then(function () { return require('./persistence-
|
|
503
|
-
const { listDaemonSessions, stopDaemonSession, stopDaemon } = await Promise.resolve().then(function () { return require('./controlClient-
|
|
548
|
+
const { startDaemon } = await Promise.resolve().then(function () { return require('./run-CiPWWhXt.cjs'); }).then(function (n) { return n.run; });
|
|
549
|
+
const { install } = await Promise.resolve().then(function () { return require('./install-DlOppA-e.cjs'); });
|
|
550
|
+
const { uninstall } = await Promise.resolve().then(function () { return require('./uninstall-yTSL3X6Y.cjs'); });
|
|
551
|
+
const { runDoctorCommand } = await Promise.resolve().then(function () { return require('./doctor-BJSuVRUZ.cjs'); });
|
|
552
|
+
const { getLatestDaemonLog } = await Promise.resolve().then(function () { return require('./persistence-BcQmjobZ.cjs'); }).then(function (n) { return n.logger$1; });
|
|
553
|
+
const { listDaemonSessions, stopDaemonSession, stopDaemon } = await Promise.resolve().then(function () { return require('./controlClient-CEz_p1zc.cjs'); });
|
|
504
554
|
const daemonSubcommand = args[1];
|
|
505
555
|
if (daemonSubcommand === "list") {
|
|
506
556
|
try {
|
|
@@ -705,7 +755,7 @@ ${chalk.gray("\u2500".repeat(60))}
|
|
|
705
755
|
${chalk.bold.cyan("Claude Code Options (from `claude --help`):")}
|
|
706
756
|
`);
|
|
707
757
|
try {
|
|
708
|
-
const { claudeCliPath } = await Promise.resolve().then(function () { return require('./claudeLocal-
|
|
758
|
+
const { claudeCliPath } = await Promise.resolve().then(function () { return require('./claudeLocal-f4uBLJaM.cjs'); }).then(function (n) { return n.claudeLocal$1; });
|
|
709
759
|
const claudeHelp = node_child_process.execFileSync(claudeCliPath, ["--help"], { encoding: "utf8" });
|
|
710
760
|
console.log(claudeHelp);
|
|
711
761
|
} catch (e) {
|
|
@@ -735,10 +785,10 @@ ${chalk.bold.cyan("Claude Code Options (from `claude --help`):")}
|
|
|
735
785
|
}
|
|
736
786
|
process.exit(0);
|
|
737
787
|
}
|
|
738
|
-
const { authAndSetupMachineIfNeeded } = await Promise.resolve().then(function () { return require('./auth-
|
|
739
|
-
const { isDaemonRunningCurrentlyInstalledHappyVersion } = await Promise.resolve().then(function () { return require('./controlClient-
|
|
740
|
-
const { spawnHappyCLI } = await Promise.resolve().then(function () { return require('./spawnHappyCLI-
|
|
741
|
-
const { runClaude } = await Promise.resolve().then(function () { return require('./runClaude-
|
|
788
|
+
const { authAndSetupMachineIfNeeded } = await Promise.resolve().then(function () { return require('./auth-G9fZpVJ2.cjs'); });
|
|
789
|
+
const { isDaemonRunningCurrentlyInstalledHappyVersion } = await Promise.resolve().then(function () { return require('./controlClient-CEz_p1zc.cjs'); });
|
|
790
|
+
const { spawnHappyCLI } = await Promise.resolve().then(function () { return require('./spawnHappyCLI-Cfu7C1uM.cjs'); }).then(function (n) { return n.spawnHappyCLI$1; });
|
|
791
|
+
const { runClaude } = await Promise.resolve().then(function () { return require('./runClaude-BVXsyCHb.cjs'); });
|
|
742
792
|
const {
|
|
743
793
|
credentials
|
|
744
794
|
} = await authAndSetupMachineIfNeeded();
|
|
@@ -812,7 +862,7 @@ ${chalk.bold("Examples:")}
|
|
|
812
862
|
}
|
|
813
863
|
console.log(chalk.blue("\u{1F4F1} Sending push notification..."));
|
|
814
864
|
try {
|
|
815
|
-
const { ApiClient } = await Promise.resolve().then(function () { return require('./api-
|
|
865
|
+
const { ApiClient } = await Promise.resolve().then(function () { return require('./api-CIE4_cWd.cjs'); }).then(function (n) { return n.api; });
|
|
816
866
|
const api = await ApiClient.create(credentials);
|
|
817
867
|
const notificationTitle = title || "Happy AI";
|
|
818
868
|
api.push().sendToAllDevices(
|
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-D9tMm6bj.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-DhUeycct.mjs').then(function (n) { return n.a; });
|
|
15
|
+
const { checkIfDaemonRunningAndCleanupStaleState } = await import('./controlClient-DoS9JqQC.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-DGjlYVhR.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-DRnft_5-.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-BzYevJo2.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-O_nA5BOC.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-Q2STUNI-.mjs');
|
|
88
|
+
const { isDaemonRunningCurrentlyInstalledHappyVersion } = await import('./controlClient-DoS9JqQC.mjs');
|
|
89
|
+
const { spawnHappyCLI } = await import('./spawnHappyCLI-DhUeycct.mjs').then(function (n) { return n.a; });
|
|
90
90
|
try {
|
|
91
|
-
const { runCodex } = await import('./runCodex-
|
|
91
|
+
const { runCodex } = await import('./runCodex-C4rHkIyw.mjs');
|
|
92
92
|
let startedBy = void 0;
|
|
93
93
|
for (let i = 1; i < args.length; i++) {
|
|
94
94
|
if (args[i] === "--started-by") {
|
|
@@ -118,10 +118,60 @@ async function spawnAndWaitForDaemon() {
|
|
|
118
118
|
process.exit(1);
|
|
119
119
|
}
|
|
120
120
|
return;
|
|
121
|
+
} else if (subcommand === "cursor-approval-hook") {
|
|
122
|
+
const { runCursorApprovalHook } = await import('./cursorApprovalHook-B0v1kGa7.mjs');
|
|
123
|
+
await runCursorApprovalHook();
|
|
124
|
+
return;
|
|
125
|
+
} else if (subcommand === "cursor") {
|
|
126
|
+
const { authAndSetupMachineIfNeeded } = await import('./auth-Q2STUNI-.mjs');
|
|
127
|
+
const { isDaemonRunningCurrentlyInstalledHappyVersion } = await import('./controlClient-DoS9JqQC.mjs');
|
|
128
|
+
const { spawnHappyCLI } = await import('./spawnHappyCLI-DhUeycct.mjs').then(function (n) { return n.a; });
|
|
129
|
+
try {
|
|
130
|
+
const { runCursor } = await import('./runCursor-DiHLWMs8.mjs');
|
|
131
|
+
let startedBy = void 0;
|
|
132
|
+
let model = null;
|
|
133
|
+
const promptParts = [];
|
|
134
|
+
for (let i = 1; i < args.length; i++) {
|
|
135
|
+
if (args[i] === "--started-by") {
|
|
136
|
+
startedBy = args[++i];
|
|
137
|
+
} else if (args[i] === "--model") {
|
|
138
|
+
model = args[++i] ?? null;
|
|
139
|
+
} else if (args[i] === "--happy-starting-mode") {
|
|
140
|
+
i++;
|
|
141
|
+
} else {
|
|
142
|
+
promptParts.push(args[i]);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
const { credentials } = await authAndSetupMachineIfNeeded();
|
|
146
|
+
logger.debug("Ensuring Happy background service is running & matches our version...");
|
|
147
|
+
if (!await isDaemonRunningCurrentlyInstalledHappyVersion()) {
|
|
148
|
+
logger.debug("Starting Happy background service...");
|
|
149
|
+
const daemonProcess = spawnHappyCLI(["daemon", "start-sync"], {
|
|
150
|
+
detached: true,
|
|
151
|
+
stdio: "ignore",
|
|
152
|
+
env: process.env
|
|
153
|
+
});
|
|
154
|
+
daemonProcess.unref();
|
|
155
|
+
await new Promise((resolve) => setTimeout(resolve, 200));
|
|
156
|
+
}
|
|
157
|
+
await runCursor({
|
|
158
|
+
credentials,
|
|
159
|
+
startedBy,
|
|
160
|
+
model,
|
|
161
|
+
initialPrompt: promptParts.length > 0 ? promptParts.join(" ") : void 0
|
|
162
|
+
});
|
|
163
|
+
} catch (error) {
|
|
164
|
+
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
165
|
+
if (isDebug()) {
|
|
166
|
+
console.error(error);
|
|
167
|
+
}
|
|
168
|
+
process.exit(1);
|
|
169
|
+
}
|
|
170
|
+
return;
|
|
121
171
|
} else if (subcommand === "gemini") {
|
|
122
|
-
const { authAndSetupMachineIfNeeded } = await import('./auth-
|
|
123
|
-
const { isDaemonRunningCurrentlyInstalledHappyVersion } = await import('./controlClient-
|
|
124
|
-
const { spawnHappyCLI } = await import('./spawnHappyCLI-
|
|
172
|
+
const { authAndSetupMachineIfNeeded } = await import('./auth-Q2STUNI-.mjs');
|
|
173
|
+
const { isDaemonRunningCurrentlyInstalledHappyVersion } = await import('./controlClient-DoS9JqQC.mjs');
|
|
174
|
+
const { spawnHappyCLI } = await import('./spawnHappyCLI-DhUeycct.mjs').then(function (n) { return n.a; });
|
|
125
175
|
const geminiSubcommand = args[1];
|
|
126
176
|
if (geminiSubcommand === "model" && args[2] === "set" && args[3]) {
|
|
127
177
|
const modelName = args[3];
|
|
@@ -195,9 +245,9 @@ async function spawnAndWaitForDaemon() {
|
|
|
195
245
|
if (geminiSubcommand === "project" && args[2] === "set" && args[3]) {
|
|
196
246
|
const projectId = args[3];
|
|
197
247
|
try {
|
|
198
|
-
const { saveGoogleCloudProjectToConfig } = await import('./config-
|
|
199
|
-
const { readCredentials: readCredentials2 } = await import('./persistence-
|
|
200
|
-
const { ApiClient } = await import('./api-
|
|
248
|
+
const { saveGoogleCloudProjectToConfig } = await import('./config-CHjDs8AS.mjs');
|
|
249
|
+
const { readCredentials: readCredentials2 } = await import('./persistence-D9tMm6bj.mjs').then(function (n) { return n.F; });
|
|
250
|
+
const { ApiClient } = await import('./api-Ew6xr81i.mjs').then(function (n) { return n.m; });
|
|
201
251
|
let userEmail = void 0;
|
|
202
252
|
try {
|
|
203
253
|
const credentials = await readCredentials2();
|
|
@@ -228,7 +278,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
228
278
|
}
|
|
229
279
|
if (geminiSubcommand === "project" && args[2] === "get") {
|
|
230
280
|
try {
|
|
231
|
-
const { readGeminiLocalConfig } = await import('./config-
|
|
281
|
+
const { readGeminiLocalConfig } = await import('./config-CHjDs8AS.mjs');
|
|
232
282
|
const config = readGeminiLocalConfig();
|
|
233
283
|
if (config.googleCloudProject) {
|
|
234
284
|
console.log(`Current Google Cloud Project: ${config.googleCloudProject}`);
|
|
@@ -268,7 +318,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
268
318
|
process.exit(0);
|
|
269
319
|
}
|
|
270
320
|
try {
|
|
271
|
-
const { runGemini } = await import('./runGemini-
|
|
321
|
+
const { runGemini } = await import('./runGemini-B-93gOqB.mjs');
|
|
272
322
|
let startedBy = void 0;
|
|
273
323
|
for (let i = 1; i < args.length; i++) {
|
|
274
324
|
if (args[i] === "--started-by") {
|
|
@@ -300,7 +350,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
300
350
|
return;
|
|
301
351
|
} else if (subcommand === "update") {
|
|
302
352
|
try {
|
|
303
|
-
const { handleUpdateCommand } = await import('./update-
|
|
353
|
+
const { handleUpdateCommand } = await import('./update-Derd2hoX.mjs');
|
|
304
354
|
await handleUpdateCommand();
|
|
305
355
|
} catch (error) {
|
|
306
356
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -313,7 +363,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
313
363
|
} else if (subcommand === "logout") {
|
|
314
364
|
console.log(chalk.yellow('Note: "happy logout" is deprecated. Use "happy auth logout" instead.\n'));
|
|
315
365
|
try {
|
|
316
|
-
const { handleAuthCommand } = await import('./auth-
|
|
366
|
+
const { handleAuthCommand } = await import('./auth-BzYevJo2.mjs');
|
|
317
367
|
await handleAuthCommand(["logout"]);
|
|
318
368
|
} catch (error) {
|
|
319
369
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -336,7 +386,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
336
386
|
return;
|
|
337
387
|
} else if (subcommand === "session") {
|
|
338
388
|
try {
|
|
339
|
-
const { handleSessionCommand } = await import('./session-
|
|
389
|
+
const { handleSessionCommand } = await import('./session-Co0REU9e.mjs');
|
|
340
390
|
await handleSessionCommand(args.slice(1));
|
|
341
391
|
} catch (error) {
|
|
342
392
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -348,7 +398,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
348
398
|
return;
|
|
349
399
|
} else if (subcommand === "task") {
|
|
350
400
|
try {
|
|
351
|
-
const { handleTaskCommand } = await import('./task-
|
|
401
|
+
const { handleTaskCommand } = await import('./task-CH-oidFy.mjs');
|
|
352
402
|
await handleTaskCommand(args.slice(1));
|
|
353
403
|
} catch (error) {
|
|
354
404
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -396,7 +446,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
396
446
|
return;
|
|
397
447
|
} else if (subcommand === "evidence") {
|
|
398
448
|
try {
|
|
399
|
-
const { handleEvidenceCommand } = await import('./evidence-
|
|
449
|
+
const { handleEvidenceCommand } = await import('./evidence-DPutCuUr.mjs');
|
|
400
450
|
await handleEvidenceCommand(args.slice(1));
|
|
401
451
|
} catch (error) {
|
|
402
452
|
console.error(chalk.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
@@ -413,7 +463,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
413
463
|
process.exit(1);
|
|
414
464
|
}
|
|
415
465
|
try {
|
|
416
|
-
const { runMcpServe } = await import('./serve-
|
|
466
|
+
const { runMcpServe } = await import('./serve-ttlqF5jn.mjs');
|
|
417
467
|
await runMcpServe();
|
|
418
468
|
} catch (error) {
|
|
419
469
|
process.stderr.write(`[happy-mcp] fatal: ${error instanceof Error ? error.message : "unknown error"}
|
|
@@ -427,7 +477,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
427
477
|
console.error(chalk.red("Error:"), 'Not authenticated. Run "happy auth" first.');
|
|
428
478
|
process.exit(1);
|
|
429
479
|
}
|
|
430
|
-
const { parseSshArgs, runOnDevice, sshDevice, sshPickAndConnect } = await import('./ssh-
|
|
480
|
+
const { parseSshArgs, runOnDevice, sshDevice, sshPickAndConnect } = await import('./ssh-8tPIKk-i.mjs');
|
|
431
481
|
const { target, command, timeoutMs, stream } = parseSshArgs(args.slice(1));
|
|
432
482
|
try {
|
|
433
483
|
if (command) {
|
|
@@ -448,7 +498,7 @@ async function spawnAndWaitForDaemon() {
|
|
|
448
498
|
} else if (subcommand === "device") {
|
|
449
499
|
const deviceSubcommand = args[1];
|
|
450
500
|
if (deviceSubcommand === "push") {
|
|
451
|
-
const { pushToDevice } = await import('./push-
|
|
501
|
+
const { pushToDevice } = await import('./push-Dxsugkes.mjs');
|
|
452
502
|
const credentials = await readCredentials();
|
|
453
503
|
if (!credentials) {
|
|
454
504
|
console.error(chalk.red("Error:"), 'Not authenticated. Run "happy auth" first.');
|
|
@@ -462,8 +512,8 @@ async function spawnAndWaitForDaemon() {
|
|
|
462
512
|
process.exit(await pushToDevice(credentials, target, localPath, remotePath));
|
|
463
513
|
}
|
|
464
514
|
if (deviceSubcommand === "enroll") {
|
|
465
|
-
const { enrollDevice } = await import('./enroll-
|
|
466
|
-
const { install } = await import('./install-
|
|
515
|
+
const { enrollDevice } = await import('./enroll-CysDL6ee.mjs');
|
|
516
|
+
const { install } = await import('./install-BsTA2tZn.mjs');
|
|
467
517
|
const token = args[2];
|
|
468
518
|
if (!token) {
|
|
469
519
|
console.error(chalk.red("Error:"), "Missing enrollment token. Usage: happy device enroll <token>");
|
|
@@ -493,12 +543,12 @@ ${chalk.bold("Usage:")}
|
|
|
493
543
|
`);
|
|
494
544
|
process.exit(0);
|
|
495
545
|
} else if (subcommand === "daemon") {
|
|
496
|
-
const { startDaemon } = await import('./run-
|
|
497
|
-
const { install } = await import('./install-
|
|
498
|
-
const { uninstall } = await import('./uninstall-
|
|
499
|
-
const { runDoctorCommand } = await import('./doctor-
|
|
500
|
-
const { getLatestDaemonLog } = await import('./persistence-
|
|
501
|
-
const { listDaemonSessions, stopDaemonSession, stopDaemon } = await import('./controlClient-
|
|
546
|
+
const { startDaemon } = await import('./run-BEflQaQ2.mjs').then(function (n) { return n.r; });
|
|
547
|
+
const { install } = await import('./install-BsTA2tZn.mjs');
|
|
548
|
+
const { uninstall } = await import('./uninstall-CeioRZNI.mjs');
|
|
549
|
+
const { runDoctorCommand } = await import('./doctor-DRnft_5-.mjs');
|
|
550
|
+
const { getLatestDaemonLog } = await import('./persistence-D9tMm6bj.mjs').then(function (n) { return n.E; });
|
|
551
|
+
const { listDaemonSessions, stopDaemonSession, stopDaemon } = await import('./controlClient-DoS9JqQC.mjs');
|
|
502
552
|
const daemonSubcommand = args[1];
|
|
503
553
|
if (daemonSubcommand === "list") {
|
|
504
554
|
try {
|
|
@@ -703,7 +753,7 @@ ${chalk.gray("\u2500".repeat(60))}
|
|
|
703
753
|
${chalk.bold.cyan("Claude Code Options (from `claude --help`):")}
|
|
704
754
|
`);
|
|
705
755
|
try {
|
|
706
|
-
const { claudeCliPath } = await import('./claudeLocal-
|
|
756
|
+
const { claudeCliPath } = await import('./claudeLocal-Db2tDC4X.mjs').then(function (n) { return n.d; });
|
|
707
757
|
const claudeHelp = execFileSync(claudeCliPath, ["--help"], { encoding: "utf8" });
|
|
708
758
|
console.log(claudeHelp);
|
|
709
759
|
} catch (e) {
|
|
@@ -733,10 +783,10 @@ ${chalk.bold.cyan("Claude Code Options (from `claude --help`):")}
|
|
|
733
783
|
}
|
|
734
784
|
process.exit(0);
|
|
735
785
|
}
|
|
736
|
-
const { authAndSetupMachineIfNeeded } = await import('./auth-
|
|
737
|
-
const { isDaemonRunningCurrentlyInstalledHappyVersion } = await import('./controlClient-
|
|
738
|
-
const { spawnHappyCLI } = await import('./spawnHappyCLI-
|
|
739
|
-
const { runClaude } = await import('./runClaude-
|
|
786
|
+
const { authAndSetupMachineIfNeeded } = await import('./auth-Q2STUNI-.mjs');
|
|
787
|
+
const { isDaemonRunningCurrentlyInstalledHappyVersion } = await import('./controlClient-DoS9JqQC.mjs');
|
|
788
|
+
const { spawnHappyCLI } = await import('./spawnHappyCLI-DhUeycct.mjs').then(function (n) { return n.a; });
|
|
789
|
+
const { runClaude } = await import('./runClaude-sPkSqHWY.mjs');
|
|
740
790
|
const {
|
|
741
791
|
credentials
|
|
742
792
|
} = await authAndSetupMachineIfNeeded();
|
|
@@ -810,7 +860,7 @@ ${chalk.bold("Examples:")}
|
|
|
810
860
|
}
|
|
811
861
|
console.log(chalk.blue("\u{1F4F1} Sending push notification..."));
|
|
812
862
|
try {
|
|
813
|
-
const { ApiClient } = await import('./api-
|
|
863
|
+
const { ApiClient } = await import('./api-Ew6xr81i.mjs').then(function (n) { return n.m; });
|
|
814
864
|
const api = await ApiClient.create(credentials);
|
|
815
865
|
const notificationTitle = title || "Happy AI";
|
|
816
866
|
api.push().sendToAllDevices(
|
|
@@ -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-D9tMm6bj.mjs';
|
|
2
|
+
import { i as install$2 } from './install-DBg0xQ3g.mjs';
|
|
3
3
|
import { existsSync, mkdirSync, writeFileSync } from 'fs';
|
|
4
4
|
import { execSync } from 'child_process';
|
|
5
5
|
import path from 'path';
|
|
@@ -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-D9tMm6bj.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-BcQmjobZ.cjs');
|
|
4
|
+
var install$2 = require('./install-Tyhs6rUp.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-BcQmjobZ.cjs');
|
|
8
8
|
var trimIdent = require('./trimIdent-4gvk9Wk6.cjs');
|
|
9
9
|
var projectPath = require('./projectPath-ChLhdOyt.cjs');
|
|
10
10
|
|