@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.
Files changed (87) hide show
  1. package/dist/{api-XeHlmApX.cjs → api-CIE4_cWd.cjs} +4 -4
  2. package/dist/{api-K2-jr9ar.mjs → api-Ew6xr81i.mjs} +4 -4
  3. package/dist/{auth-CjLkoM3m.mjs → auth-BzYevJo2.mjs} +4 -4
  4. package/dist/{auth-BbvPcnkY.cjs → auth-Dor79zTL.cjs} +4 -4
  5. package/dist/{auth-BQvEuSs5.cjs → auth-G9fZpVJ2.cjs} +2 -2
  6. package/dist/{auth-DS8fzlin.mjs → auth-Q2STUNI-.mjs} +2 -2
  7. package/dist/{browser-C05Ak6RL.mjs → browser-BI7s-V8E.mjs} +1 -1
  8. package/dist/{browser-C05SP_Tt.cjs → browser-qDIIAL7S.cjs} +1 -1
  9. package/dist/{claudeLocal-DJNRlHIC.mjs → claudeLocal-Db2tDC4X.mjs} +1 -1
  10. package/dist/{claudeLocal-CpDhLCcZ.cjs → claudeLocal-f4uBLJaM.cjs} +1 -1
  11. package/dist/{config-DWWtjKQx.mjs → config-CHjDs8AS.mjs} +1 -1
  12. package/dist/{config-B0mns9fF.cjs → config-CSBlEik9.cjs} +1 -1
  13. package/dist/{connect-BxCScVNX.cjs → connect-CJoTliii.cjs} +5 -5
  14. package/dist/{connect-DXQC1CJe.mjs → connect-O_nA5BOC.mjs} +5 -5
  15. package/dist/{controlClient-DgELDZgM.cjs → controlClient-CEz_p1zc.cjs} +1 -1
  16. package/dist/{controlClient-DgjVRN8D.mjs → controlClient-DoS9JqQC.mjs} +1 -1
  17. package/dist/cursorApprovalHook-B0v1kGa7.mjs +95 -0
  18. package/dist/cursorApprovalHook-DRAHfTXU.cjs +97 -0
  19. package/dist/cursorApprovalServer-DzY8yJlI.cjs +167 -0
  20. package/dist/cursorApprovalServer-JjPkdjGR.mjs +164 -0
  21. package/dist/{deviceKeys-CejCdWpw.mjs → deviceKeys-B4aqjnE6.mjs} +2 -2
  22. package/dist/{deviceKeys-BpIAWz13.cjs → deviceKeys-DyUn0bEx.cjs} +2 -2
  23. package/dist/{doctor-DznasgP3.cjs → doctor-BJSuVRUZ.cjs} +2 -2
  24. package/dist/{doctor-B-LCMVN9.mjs → doctor-DRnft_5-.mjs} +2 -2
  25. package/dist/{downloadImage-ia5SzlCV.mjs → downloadImage-BpVF7A79.mjs} +7 -40
  26. package/dist/{downloadImage-B_ygLAXY.cjs → downloadImage-Cijmufpr.cjs} +5 -39
  27. package/dist/{enroll-BvfpRUGJ.cjs → enroll-C2gunHdt.cjs} +3 -3
  28. package/dist/{enroll-HjUqyGnD.mjs → enroll-CysDL6ee.mjs} +3 -3
  29. package/dist/{evidence-BEQd1dCh.mjs → evidence-DPutCuUr.mjs} +1 -1
  30. package/dist/{evidence-CVgTjBrq.cjs → evidence-DsQ-h-_W.cjs} +1 -1
  31. package/dist/{formatImageMessage-DVs57t3x.mjs → formatImageMessage-6aV9YFWr.mjs} +1 -1
  32. package/dist/{formatImageMessage-CmJTP_hU.cjs → formatImageMessage-BPK_Ivfe.cjs} +1 -1
  33. package/dist/gitWorktree-C6jLoaMw.cjs +39 -0
  34. package/dist/gitWorktree-CzJDU2BV.mjs +37 -0
  35. package/dist/{index-CDTNgfUf.cjs → index-BeKrqPYR.cjs} +25 -1
  36. package/dist/{index-CPKdvi7J.mjs → index-DTV7drqs.mjs} +25 -1
  37. package/dist/index.cjs +91 -41
  38. package/dist/index.mjs +91 -41
  39. package/dist/{install-UTz_vYvB.mjs → install-BsTA2tZn.mjs} +2 -2
  40. package/dist/{install-B3mMGISS.mjs → install-DBg0xQ3g.mjs} +1 -1
  41. package/dist/{install-2Yl_L582.cjs → install-DlOppA-e.cjs} +2 -2
  42. package/dist/{install-Ck22tYHP.cjs → install-Tyhs6rUp.cjs} +1 -1
  43. package/dist/lib.cjs +4 -4
  44. package/dist/lib.d.cts +3 -2
  45. package/dist/lib.d.mts +3 -2
  46. package/dist/lib.mjs +4 -4
  47. package/dist/{loadableToolOutput-4EvraaNY.mjs → loadableToolOutput-2dMPAp4N.mjs} +3 -456
  48. package/dist/{loadableToolOutput-BZYlaqHn.cjs → loadableToolOutput-DPGTtKJM.cjs} +2 -458
  49. package/dist/{persistence-DrfN7TzY.cjs → persistence-BcQmjobZ.cjs} +7 -4
  50. package/dist/{persistence-CIUFyOwz.mjs → persistence-D9tMm6bj.mjs} +7 -4
  51. package/dist/{push-CCOXCcM_.cjs → push-Cnm6JQMD.cjs} +6 -6
  52. package/dist/{push-USXj_pv0.mjs → push-Dxsugkes.mjs} +6 -6
  53. package/dist/{run-Dy6KX6m-.mjs → run-BEflQaQ2.mjs} +12 -9
  54. package/dist/{run-D3CopmEb.cjs → run-CiPWWhXt.cjs} +12 -9
  55. package/dist/{runClaude-aHzvx6Ha.cjs → runClaude-BVXsyCHb.cjs} +19 -18
  56. package/dist/{runClaude-CWux2RDq.mjs → runClaude-sPkSqHWY.mjs} +16 -15
  57. package/dist/{runCodex-G-Aq531U.cjs → runCodex-BAwhdmSA.cjs} +19 -17
  58. package/dist/{runCodex-D0ZxSj3O.mjs → runCodex-C4rHkIyw.mjs} +16 -14
  59. package/dist/runCursor-CD5wC3gA.cjs +578 -0
  60. package/dist/runCursor-DiHLWMs8.mjs +576 -0
  61. package/dist/{runGemini-DZC2i6vA.mjs → runGemini-B-93gOqB.mjs} +18 -16
  62. package/dist/{runGemini-DxGgDAIM.cjs → runGemini-Cto-adir.cjs} +21 -19
  63. package/dist/{runOneShot-BgT-JNMA.cjs → runOneShot-BfIzE9W4.cjs} +3 -3
  64. package/dist/{runOneShot-cxlk7VKA.mjs → runOneShot-DGjlYVhR.mjs} +3 -3
  65. package/dist/{serve-Dr3wPrtK.cjs → serve-CqL6NWDr.cjs} +7 -7
  66. package/dist/{serve-CKyvJNs0.mjs → serve-ttlqF5jn.mjs} +7 -7
  67. package/dist/{session-dYzbOo_W.cjs → session-BZhGpQUJ.cjs} +5 -5
  68. package/dist/{session-vf2ZjFto.mjs → session-Co0REU9e.mjs} +5 -5
  69. package/dist/{sessionKeyCache-dDquDzn0.cjs → sessionKeyCache-BwFUGgMs.cjs} +1 -1
  70. package/dist/{sessionKeyCache-D2u3JUys.mjs → sessionKeyCache-pXTjpETo.mjs} +1 -1
  71. package/dist/{sessionList-C1k2PNg_.mjs → sessionList-DaufR-sA.mjs} +2 -2
  72. package/dist/{sessionList-DmmtC7uR.cjs → sessionList-fG5uAPzU.cjs} +2 -2
  73. package/dist/{sessionSummary-DGLoVOxd.cjs → sessionSummary-CjZPt6nr.cjs} +3 -3
  74. package/dist/{sessionSummary-5a1QtFVS.mjs → sessionSummary-Dv6dPABg.mjs} +3 -3
  75. package/dist/setupOfflineReconnection-B6coH9QN.cjs +461 -0
  76. package/dist/setupOfflineReconnection-DW5il97B.mjs +457 -0
  77. package/dist/{spawnHappyCLI-CarRI4GM.cjs → spawnHappyCLI-Cfu7C1uM.cjs} +1 -1
  78. package/dist/{spawnHappyCLI-D3EkTFIn.mjs → spawnHappyCLI-DhUeycct.mjs} +1 -1
  79. package/dist/{ssh-B0hvEYIl.mjs → ssh-8tPIKk-i.mjs} +5 -5
  80. package/dist/{ssh-CBgVwKsB.cjs → ssh-C4YTSHXL.cjs} +5 -5
  81. package/dist/{task-CRo6W-3_.mjs → task-CH-oidFy.mjs} +6 -6
  82. package/dist/{task-CMunPKCV.cjs → task-DFW-PecP.cjs} +6 -6
  83. package/dist/{uninstall-BALE2up0.mjs → uninstall-CeioRZNI.mjs} +2 -2
  84. package/dist/{uninstall-BJ3eEGM4.cjs → uninstall-yTSL3X6Y.cjs} +2 -2
  85. package/dist/{update-Bb3iijy8.cjs → update-Bju28vNP.cjs} +3 -3
  86. package/dist/{update-BfjtLrhO.mjs → update-Derd2hoX.mjs} +3 -3
  87. 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-DrfN7TzY.cjs');
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-CarRI4GM.cjs'); }).then(function (n) { return n.spawnHappyCLI$1; });
17
- const { checkIfDaemonRunningAndCleanupStaleState } = await Promise.resolve().then(function () { return require('./controlClient-DgELDZgM.cjs'); });
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-BgT-JNMA.cjs'); });
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-DznasgP3.cjs'); });
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-BbvPcnkY.cjs'); });
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-BxCScVNX.cjs'); });
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-BQvEuSs5.cjs'); });
90
- const { isDaemonRunningCurrentlyInstalledHappyVersion } = await Promise.resolve().then(function () { return require('./controlClient-DgELDZgM.cjs'); });
91
- const { spawnHappyCLI } = await Promise.resolve().then(function () { return require('./spawnHappyCLI-CarRI4GM.cjs'); }).then(function (n) { return n.spawnHappyCLI$1; });
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-G-Aq531U.cjs'); });
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-BQvEuSs5.cjs'); });
125
- const { isDaemonRunningCurrentlyInstalledHappyVersion } = await Promise.resolve().then(function () { return require('./controlClient-DgELDZgM.cjs'); });
126
- const { spawnHappyCLI } = await Promise.resolve().then(function () { return require('./spawnHappyCLI-CarRI4GM.cjs'); }).then(function (n) { return n.spawnHappyCLI$1; });
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-B0mns9fF.cjs'); });
201
- const { readCredentials: readCredentials2 } = await Promise.resolve().then(function () { return require('./persistence-DrfN7TzY.cjs'); }).then(function (n) { return n.persistence; });
202
- const { ApiClient } = await Promise.resolve().then(function () { return require('./api-XeHlmApX.cjs'); }).then(function (n) { return n.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-B0mns9fF.cjs'); });
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-DxGgDAIM.cjs'); });
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-Bb3iijy8.cjs'); });
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-BbvPcnkY.cjs'); });
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-dYzbOo_W.cjs'); });
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-CMunPKCV.cjs'); });
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-CVgTjBrq.cjs'); });
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-Dr3wPrtK.cjs'); });
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-CBgVwKsB.cjs'); });
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-CCOXCcM_.cjs'); });
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-BvfpRUGJ.cjs'); });
468
- const { install } = await Promise.resolve().then(function () { return require('./install-2Yl_L582.cjs'); });
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-D3CopmEb.cjs'); }).then(function (n) { return n.run; });
499
- const { install } = await Promise.resolve().then(function () { return require('./install-2Yl_L582.cjs'); });
500
- const { uninstall } = await Promise.resolve().then(function () { return require('./uninstall-BJ3eEGM4.cjs'); });
501
- const { runDoctorCommand } = await Promise.resolve().then(function () { return require('./doctor-DznasgP3.cjs'); });
502
- const { getLatestDaemonLog } = await Promise.resolve().then(function () { return require('./persistence-DrfN7TzY.cjs'); }).then(function (n) { return n.logger$1; });
503
- const { listDaemonSessions, stopDaemonSession, stopDaemon } = await Promise.resolve().then(function () { return require('./controlClient-DgELDZgM.cjs'); });
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-CpDhLCcZ.cjs'); }).then(function (n) { return n.claudeLocal$1; });
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-BQvEuSs5.cjs'); });
739
- const { isDaemonRunningCurrentlyInstalledHappyVersion } = await Promise.resolve().then(function () { return require('./controlClient-DgELDZgM.cjs'); });
740
- const { spawnHappyCLI } = await Promise.resolve().then(function () { return require('./spawnHappyCLI-CarRI4GM.cjs'); }).then(function (n) { return n.spawnHappyCLI$1; });
741
- const { runClaude } = await Promise.resolve().then(function () { return require('./runClaude-aHzvx6Ha.cjs'); });
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-XeHlmApX.cjs'); }).then(function (n) { return n.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-CIUFyOwz.mjs';
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-D3EkTFIn.mjs').then(function (n) { return n.a; });
15
- const { checkIfDaemonRunningAndCleanupStaleState } = await import('./controlClient-DgjVRN8D.mjs');
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-cxlk7VKA.mjs');
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-B-LCMVN9.mjs');
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-CjLkoM3m.mjs');
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-DXQC1CJe.mjs');
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-DS8fzlin.mjs');
88
- const { isDaemonRunningCurrentlyInstalledHappyVersion } = await import('./controlClient-DgjVRN8D.mjs');
89
- const { spawnHappyCLI } = await import('./spawnHappyCLI-D3EkTFIn.mjs').then(function (n) { return n.a; });
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-D0ZxSj3O.mjs');
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-DS8fzlin.mjs');
123
- const { isDaemonRunningCurrentlyInstalledHappyVersion } = await import('./controlClient-DgjVRN8D.mjs');
124
- const { spawnHappyCLI } = await import('./spawnHappyCLI-D3EkTFIn.mjs').then(function (n) { return n.a; });
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-DWWtjKQx.mjs');
199
- const { readCredentials: readCredentials2 } = await import('./persistence-CIUFyOwz.mjs').then(function (n) { return n.F; });
200
- const { ApiClient } = await import('./api-K2-jr9ar.mjs').then(function (n) { return n.m; });
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-DWWtjKQx.mjs');
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-DZC2i6vA.mjs');
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-BfjtLrhO.mjs');
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-CjLkoM3m.mjs');
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-vf2ZjFto.mjs');
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-CRo6W-3_.mjs');
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-BEQd1dCh.mjs');
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-CKyvJNs0.mjs');
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-B0hvEYIl.mjs');
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-USXj_pv0.mjs');
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-HjUqyGnD.mjs');
466
- const { install } = await import('./install-UTz_vYvB.mjs');
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-Dy6KX6m-.mjs').then(function (n) { return n.r; });
497
- const { install } = await import('./install-UTz_vYvB.mjs');
498
- const { uninstall } = await import('./uninstall-BALE2up0.mjs');
499
- const { runDoctorCommand } = await import('./doctor-B-LCMVN9.mjs');
500
- const { getLatestDaemonLog } = await import('./persistence-CIUFyOwz.mjs').then(function (n) { return n.E; });
501
- const { listDaemonSessions, stopDaemonSession, stopDaemon } = await import('./controlClient-DgjVRN8D.mjs');
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-DJNRlHIC.mjs').then(function (n) { return n.d; });
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-DS8fzlin.mjs');
737
- const { isDaemonRunningCurrentlyInstalledHappyVersion } = await import('./controlClient-DgjVRN8D.mjs');
738
- const { spawnHappyCLI } = await import('./spawnHappyCLI-D3EkTFIn.mjs').then(function (n) { return n.a; });
739
- const { runClaude } = await import('./runClaude-CWux2RDq.mjs');
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-K2-jr9ar.mjs').then(function (n) { return n.m; });
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-CIUFyOwz.mjs';
2
- import { i as install$2 } from './install-B3mMGISS.mjs';
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-CIUFyOwz.mjs';
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-DrfN7TzY.cjs');
4
- var install$2 = require('./install-Ck22tYHP.cjs');
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-DrfN7TzY.cjs');
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