very-happy-cli 0.2.179 → 0.2.180
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/{AcpBackend-CHp3y7cb.mjs → AcpBackend-B8Zi30Zh.mjs} +3 -3
- package/dist/{AcpBackend-DFipFF7-.cjs → AcpBackend-DfRDtMcG.cjs} +3 -3
- package/dist/{AcpSessionManager-0zpvRJXc.cjs → AcpSessionManager-CASKOnOj.cjs} +1 -1
- package/dist/{AcpSessionManager-d2-rKWWa.mjs → AcpSessionManager-i8Rab0xT.mjs} +1 -1
- package/dist/{BasePermissionHandler-DdZBYIR4.mjs → BasePermissionHandler-26fKbRCm.mjs} +1 -1
- package/dist/{BasePermissionHandler-CH3zuEkA.cjs → BasePermissionHandler-BlM_tfej.cjs} +1 -1
- package/dist/{acpSessionResume-DTGmAPLt.mjs → acpSessionResume-B9l54P-X.mjs} +1 -1
- package/dist/{acpSessionResume-oiCBnAVA.cjs → acpSessionResume-CR5pmgVo.cjs} +1 -1
- package/dist/{agentHome-BWcz8mz0.cjs → agentHome-C7Sb7-Tz.cjs} +4 -4
- package/dist/{agentHome-CghLvL_1.mjs → agentHome-CmGy0NWv.mjs} +4 -4
- package/dist/{api-Cmjfr8Z7.cjs → api-DM7b1OKj.cjs} +20 -12
- package/dist/{api-CzwFpJQc.mjs → api-Hov8p7CA.mjs} +21 -13
- package/dist/{apiMachine-DJkTEiqy.mjs → apiMachine-CwGEhQDT.mjs} +33 -14
- package/dist/{apiMachine-G6OogT08.cjs → apiMachine-DkGRj-Ai.cjs} +35 -16
- package/dist/{attachmentContent-Bo0UAsSu.cjs → attachmentContent-CEm13_gF.cjs} +2 -2
- package/dist/{attachmentContent-B2os4HbA.mjs → attachmentContent-CIn4iPEk.mjs} +2 -2
- package/dist/{auth-BS6PaOOG.mjs → auth-BG1DY0gj.mjs} +5 -5
- package/dist/{auth-D6bBUwZa.cjs → auth-CBXnm-Mj.cjs} +5 -5
- package/dist/{auth-HEhRaNgL.cjs → auth-Dawj7pP5.cjs} +8 -8
- package/dist/{auth-DMX0xPNK.mjs → auth-rggxMpEE.mjs} +8 -8
- package/dist/{auto-Cl1SEDcD.mjs → auto-CXXLXGeL.mjs} +17 -17
- package/dist/{auto-C6I55iOh.cjs → auto-CbYOfoPS.cjs} +17 -17
- package/dist/{backgroundTaskActivity-BVwJBl02.mjs → backgroundTaskActivity-8PdPxrvy.mjs} +1 -1
- package/dist/{bootstrap-exVucYav.cjs → bootstrap-DoA7okld.cjs} +2 -2
- package/dist/{bootstrap-iuyufnp3.mjs → bootstrap-Dt5I1SOl.mjs} +2 -2
- package/dist/{browser-CSYum7xH.mjs → browser-DUNetFT4.mjs} +1 -1
- package/dist/{browser-BohJK12g.cjs → browser-DZ6qRtfH.cjs} +1 -1
- package/dist/{claudeCliPath-U4HHmV4r.cjs → claudeCliPath-GaP3UUz1.cjs} +1 -1
- package/dist/{claudeLocal-re4yjSTx.cjs → claudeLocal--DNyMOSv.cjs} +7 -7
- package/dist/{claudeLocal-Dq_R3Ax_.mjs → claudeLocal-OHWQigCl.mjs} +5 -5
- package/dist/{claudeLocalLauncher-CN67lN7-.mjs → claudeLocalLauncher-BStvfa7M.mjs} +10 -10
- package/dist/{claudeLocalLauncher-B4hJHpCA.cjs → claudeLocalLauncher-BhvPbcyH.cjs} +12 -12
- package/dist/{claudeSessionFork-DiSMYerV.cjs → claudeSessionFork-Be16vzGc.cjs} +1 -1
- package/dist/{claudeSessionFork-BihfD0Ik.mjs → claudeSessionFork-GAVWhiKG.mjs} +1 -1
- package/dist/{client-CuVdN6PP.cjs → client-BWjaHKtj.cjs} +2 -2
- package/dist/{client-BhoEBnuN.mjs → client-Ca5Pcgy_.mjs} +2 -2
- package/dist/{client-wo9nbxuf.mjs → client-CnB7kRCT.mjs} +2 -2
- package/dist/{client-DuTDwWSQ.mjs → client-D4uPb1uu.mjs} +3 -3
- package/dist/{client-ZjOsn6nZ.cjs → client-DJplzPjD.cjs} +2 -2
- package/dist/{client-BKcK1Bi-.cjs → client-D_loZ9IK.cjs} +3 -3
- package/dist/codex/happyMcpStdioBridge.cjs +16 -16
- package/dist/codex/happyMcpStdioBridge.mjs +17 -17
- package/dist/{codexAppServerClient-BK3zra_1.mjs → codexAppServerClient-CO4G6OS4.mjs} +3 -3
- package/dist/{codexAppServerClient-Dt5zxrun.cjs → codexAppServerClient-PE-12AsW.cjs} +3 -3
- package/dist/{codexCommand-CAZ1SLjg.cjs → codexCommand-BNoD1t1C.cjs} +80 -74
- package/dist/{codexCommand-B6pY7CMh.mjs → codexCommand-B_xUH79E.mjs} +54 -48
- package/dist/{codexTermination-DmGbHxcD.cjs → codexTermination-BmBbizFK.cjs} +7 -2
- package/dist/{codexTermination-Cd1Eon_4.mjs → codexTermination-Dx48ma6e.mjs} +7 -2
- package/dist/{config-B0uK6K7n.cjs → config-CtwEUxUP.cjs} +26 -26
- package/dist/{config-2oMG_fEI.mjs → config-DSu0Blos.mjs} +3 -3
- package/dist/{configuration-CMHZnp6G.cjs → configuration-CYO-kPOS.cjs} +1 -1
- package/dist/{configuration-WMi4idBB.mjs → configuration-PxzEJumr.mjs} +1 -1
- package/dist/{connect-BLVHhHzA.mjs → connect-BQrg3TB6.mjs} +14 -14
- package/dist/{connect-uaglGrde.cjs → connect-Dq7wndzR.cjs} +27 -27
- package/dist/{context-DXzU5bFM.cjs → context-6TP-iz_c.cjs} +1 -1
- package/dist/{context-DploEcoN.mjs → context-CJGRRGWW.mjs} +1 -1
- package/dist/{controlClient-C-5qCt8W.cjs → controlClient-Bqv5v5OM.cjs} +3 -3
- package/dist/{controlClient-BWUJrj3t.mjs → controlClient-DoeYovwP.mjs} +4 -4
- package/dist/{createSessionMetadata-3uXrJgOW.mjs → createSessionMetadata-DDIChCx8.mjs} +2 -2
- package/dist/{createSessionMetadata-BkIzHALd.cjs → createSessionMetadata-xz767pcG.cjs} +3 -3
- package/dist/{defaultPermissionMode-pS3vmiSg.cjs → defaultPermissionMode-PkZGsQDk.cjs} +2 -2
- package/dist/{defaultPermissionMode-BzxLh20a.mjs → defaultPermissionMode-i5KzdK09.mjs} +2 -2
- package/dist/{detectCLI-DR9ZaN6B.cjs → detectCLI-BuYR_Qxe.cjs} +4 -4
- package/dist/{deterministicJson-D_whDMFd.mjs → deterministicJson-CTEJDqtS.mjs} +12 -12
- package/dist/{deterministicJson-B8z2GPi9.cjs → deterministicJson-xqA6DaOm.cjs} +14 -14
- package/dist/{doctor-Br1Kcy2J.cjs → doctor-BrgSlfXn.cjs} +9 -9
- package/dist/{doctor-CmtSsR2-.mjs → doctor-IctjVh9T.mjs} +8 -8
- package/dist/{doctorReadiness-BCZGcN0a.cjs → doctorReadiness-Dl6yRQCy.cjs} +1 -1
- package/dist/{downloadTarget-BQJK_6oH.cjs → downloadTarget-CEb9che-.cjs} +6 -6
- package/dist/{downloadTarget-BoNwTIH_.mjs → downloadTarget-jbOz1egC.mjs} +6 -6
- package/dist/{ensureDaemonRunning-BRUmsq6J.cjs → ensureDaemonRunning-D-HyjGIX.cjs} +6 -6
- package/dist/{ensureDaemonRunning-Czo9IHJQ.mjs → ensureDaemonRunning-b1e8LCSM.mjs} +5 -5
- package/dist/{handleResumeCommand-tKD_Hpxc.cjs → handleResumeCommand-BvWVuRwH.cjs} +7 -7
- package/dist/{handleResumeCommand-C8thKjqf.mjs → handleResumeCommand-DpaZvm2c.mjs} +6 -6
- package/dist/{index-DMqDMT1Q.cjs → index-B2p2Mut7.cjs} +42 -41
- package/dist/{index-BTxHphpV.mjs → index-BUNnpGFF.mjs} +42 -41
- package/dist/{index-CdQI0C9p.mjs → index-Bsvbgh9e.mjs} +4 -4
- package/dist/{index-B0UjHlAe.cjs → index-C64Ufj4D.cjs} +4 -4
- package/dist/{index-DPOa4NhL.mjs → index-C6Vn5Eac.mjs} +2 -0
- package/dist/{index-BiyC7cZ3.mjs → index-CMf5VbzG.mjs} +4 -4
- package/dist/{index-CUuc6iCn.cjs → index-DmTlDRSL.cjs} +4 -4
- package/dist/{index-C6O2vVjm.cjs → index-Dv0Q48P3.cjs} +2 -0
- package/dist/{index-D09T1m8Y.cjs → index-F2UejqYs.cjs} +3 -3
- package/dist/{index-D3bidoG8.mjs → index-wCbtF4BK.mjs} +3 -3
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/dist/{install-CYRZxS87.cjs → install-C0ANcEAW.cjs} +7 -7
- package/dist/{install-hnve_9vq.mjs → install-CdzSV7qO.mjs} +3 -3
- package/dist/{installPiTools-BKnXjrVu.cjs → installPiTools-CL_axh_6.cjs} +1 -1
- package/dist/{installTerminalHooks-BQZbvxsZ.cjs → installTerminalHooks-BETLKAtd.cjs} +3 -3
- package/dist/lib.cjs +13 -13
- package/dist/lib.d.cts +177 -1
- package/dist/lib.d.mts +177 -1
- package/dist/lib.mjs +13 -13
- package/dist/{lidState-Dv2wwFTj.cjs → lidState-DWGnm2H4.cjs} +1 -1
- package/dist/{lidState-Bb8fgXg3.mjs → lidState-bBrmaQd2.mjs} +1 -1
- package/dist/{localHappyAgentAuth-DjYvkXvV.cjs → localHappyAgentAuth-DZHQnIW9.cjs} +1 -1
- package/dist/{localHappyAgentAuth-NEU7fax7.mjs → localHappyAgentAuth-Dn1jYDpt.mjs} +1 -1
- package/dist/{logger-BtVhHnD8.mjs → logger-BUngm5Xg.mjs} +2 -2
- package/dist/{logger-C1GWx3gi.cjs → logger-CphW5nUE.cjs} +2 -2
- package/dist/machineMetadata-BQm9YTcI.cjs +79 -0
- package/dist/machineMetadata-BXN_bKU3.mjs +68 -0
- package/dist/{main-CWhSsbtU.cjs → main-B2UV51nK.cjs} +99 -132
- package/dist/{main-B2LWV8DI.mjs → main-DGkdYfEq.mjs} +93 -126
- package/dist/{mcp-CARUsXHV.cjs → mcp-BFvAEIRz.cjs} +15 -15
- package/dist/{mcp-ext92q3Y.mjs → mcp-CbTtbs0f.mjs} +15 -15
- package/dist/{mirrorProtocol-BwYibqry.mjs → mirrorProtocol-BR4luBC0.mjs} +148 -7
- package/dist/{mirrorProtocol-DEy2g1CB.cjs → mirrorProtocol-HKPivs5o.cjs} +150 -4
- package/dist/{package-BPPebGQF.mjs → package-7Ld1YMhh.mjs} +8 -7
- package/dist/{package-SgqTYsjn.cjs → package-KhLqBDX9.cjs} +8 -7
- package/dist/{panels-BZ0_Tt7B.mjs → panels-C7IVqpJk.mjs} +5 -5
- package/dist/{panels-D1c7q2dD.cjs → panels-Njf6GelF.cjs} +5 -5
- package/dist/{peerTools-CWKzcQ7u.mjs → peerTools-BOlDRyhi.mjs} +5 -5
- package/dist/{peerTools-DRQETXaz.cjs → peerTools-DQNlrcqM.cjs} +5 -5
- package/dist/{persistence-BegE7NPa.cjs → persistence-9BMYspxG.cjs} +2 -2
- package/dist/{persistence-Cr-wutZ4.mjs → persistence-BFUOHW5h.mjs} +2 -2
- package/dist/{piRunnerArgs-Cs-378Vz.cjs → piRunnerArgs-DGaq6VYM.cjs} +1 -1
- package/dist/{piRunnerArgs-DwvM_yWA.mjs → piRunnerArgs-H2pgpA5z.mjs} +1 -1
- package/dist/{piRuntime-BG-1td_n.cjs → piRuntime-CT5xv_3h.cjs} +1 -1
- package/dist/{piRuntime-Bue5mnlc.mjs → piRuntime-CdN0JAsa.mjs} +1 -1
- package/dist/{piTerminal-G4z-xVyy.cjs → piTerminal-0FBtXTHK.cjs} +17 -17
- package/dist/{piTerminal-B5x9X5yV.mjs → piTerminal-C4m9YXAV.mjs} +17 -17
- package/dist/projectPath-C3ioB4Bu.cjs +13 -0
- package/dist/{pushNotifications-BdFjDjQe.mjs → pushNotifications-DCiBEVeC.mjs} +7 -3
- package/dist/{pushNotifications-DaLQUyi0.cjs → pushNotifications-DI92havG.cjs} +7 -3
- package/dist/{query-Ctfg-5gy.cjs → query-BETKBrnz.cjs} +1 -1
- package/dist/{query-DYP_W1wp.mjs → query-ywZbQUzR.mjs} +1 -1
- package/dist/{rateLimitWindows-CuEqk_0g.mjs → rateLimitWindows-BkfuUB1a.mjs} +1 -1
- package/dist/{rateLimitWindows-Dj_8voBK.cjs → rateLimitWindows-YRIYVdo4.cjs} +1 -1
- package/dist/{registerCommonHandlers-Cj084Sg7.cjs → registerCommonHandlers-C7a_dUWs.cjs} +30 -30
- package/dist/{registerCommonHandlers-BAlP7SGc.mjs → registerCommonHandlers-CTkCvjxt.mjs} +2 -2
- package/dist/{registerKillSessionHandler-qMju0ZfF.cjs → registerKillSessionHandler-CIsvBrVe.cjs} +6 -6
- package/dist/{registerKillSessionHandler-PD0jWtQo.mjs → registerKillSessionHandler-CaqqRYq6.mjs} +6 -6
- package/dist/{remoteSessionClient-B7i7MkYV.cjs → remoteSessionClient-D843fkzL.cjs} +5 -5
- package/dist/{remoteSessionClient-Bn2qu5C5.mjs → remoteSessionClient-PP-mOKmw.mjs} +5 -5
- package/dist/{reportProgressTool-CM1JFAHg.cjs → reportProgressTool-14AXr959.cjs} +3 -3
- package/dist/{reportProgressTool-gHItlSzz.mjs → reportProgressTool-ZOCNjWHr.mjs} +3 -3
- package/dist/{run-CNXwIe0A.cjs → run-CAOCYYfT.cjs} +2650 -90
- package/dist/{run-BM4TxiyN.mjs → run-Dajw2E5j.mjs} +2644 -84
- package/dist/{runClaude-C_3I8hvR.mjs → runClaude-C6oxWYbp.mjs} +34 -28
- package/dist/{runClaude-CWhj2V4Q.cjs → runClaude-CRRKt-tm.cjs} +35 -29
- package/dist/{runClaudeDeps-B81cOKnH.cjs → runClaudeDeps-B1ysqTvx.cjs} +54 -119
- package/dist/{runClaudeDeps-QGrOeDe2.mjs → runClaudeDeps-BcZ68cX3.mjs} +47 -111
- package/dist/{runGemini-BEdWEZLR.mjs → runGemini-D7yKc4wD.mjs} +35 -35
- package/dist/{runGemini-CgRLYbt5.cjs → runGemini-DtKFXqf-.cjs} +63 -63
- package/dist/{runOpenClaw-DdQZAYj1.mjs → runOpenClaw-C8ilyLP9.mjs} +19 -19
- package/dist/{runOpenClaw-C1NVmzOL.cjs → runOpenClaw-Cq29mryb.cjs} +20 -20
- package/dist/{sandbox-DjQUdCMG.mjs → sandbox-CbCutma4.mjs} +4 -4
- package/dist/{sandbox-nocIjliq.cjs → sandbox-gIj-EuF4.cjs} +4 -4
- package/dist/{selfCheck-DCt4Uzbq.cjs → selfCheck-BTGBVthv.cjs} +39 -39
- package/dist/selfCheck-Smt-5Xiq.mjs +85 -0
- package/dist/{send-Dydf_hwZ.cjs → send-CZf5lLw_.cjs} +8 -8
- package/dist/{send-Ct7X4pPU.mjs → send-YZRMQvMJ.mjs} +9 -9
- package/dist/{server-DTQGZMxh.mjs → server-BqwXRzFZ.mjs} +4 -4
- package/dist/{server-CosABFbd.cjs → server-CknFq6xG.cjs} +6 -6
- package/dist/sessionExitLifecycle-CzkLIgNZ.mjs +142 -0
- package/dist/sessionExitLifecycle-DFltxXU8.cjs +148 -0
- package/dist/{sessionLock-DokGab2R.cjs → sessionLock-DRZUcKHT.cjs} +25 -5
- package/dist/{sessionLock-WYIyaVO4.mjs → sessionLock-nBXdJxJm.mjs} +24 -5
- package/dist/{sessionOps-S-qPBLFf.cjs → sessionOps-BrGiU9-s.cjs} +4 -4
- package/dist/{sessionOps-BIGgRube.mjs → sessionOps-C58iDeD5.mjs} +5 -5
- package/dist/{sessionScanner-o5hnMi5e.mjs → sessionScanner-Bm57LEXe.mjs} +3 -3
- package/dist/{sessionScanner-CIMM2hvZ.cjs → sessionScanner-CaO8bLaG.cjs} +3 -3
- package/dist/{sessions-BJHEZpi2.mjs → sessions-BXyBHo8n.mjs} +11 -11
- package/dist/{sessions-JchI1w3z.cjs → sessions-uzqPCc37.cjs} +10 -10
- package/dist/{setupOfflineReconnection-DMiBO2y9.mjs → setupOfflineReconnection-1Qlek3wl.mjs} +2 -2
- package/dist/{setupOfflineReconnection-CNiAt5ZP.cjs → setupOfflineReconnection-DvvVX3TB.cjs} +2 -2
- package/dist/{spawn-6PD7nnoC.cjs → spawn-DBkodJEO.cjs} +15 -15
- package/dist/{spawn-DgvUNYEo.mjs → spawn-vn93PhYL.mjs} +15 -15
- package/dist/{spawnAgents-P006Hqio.mjs → spawnAgents-CgPMWexP.mjs} +1 -1
- package/dist/{spawnAgents-DsXgegHM.cjs → spawnAgents-DLNMlhWJ.cjs} +1 -1
- package/dist/{spawnHappyCLI-CCOrEtf9.mjs → spawnHappyCLI-BjFZc_7V.mjs} +1 -1
- package/dist/{spawnHappyCLI-Dywezwk6.cjs → spawnHappyCLI-DnUZv0X2.cjs} +2 -2
- package/dist/{specialCommands-QxPpkGKf.cjs → specialCommands-BRufxlqe.cjs} +3 -3
- package/dist/{specialCommands-DPcd9edP.mjs → specialCommands-D3ND9bdg.mjs} +3 -3
- package/dist/{startFileWatcher-RECH5qY8.cjs → startFileWatcher-D9cYzZOq.cjs} +1 -1
- package/dist/{startFileWatcher-DghDOCO4.mjs → startFileWatcher-DXJ7yB5v.mjs} +1 -1
- package/dist/startupSessionCreate-kdr3m1uX.cjs +26 -0
- package/dist/startupSessionCreate-uZ6BM0ty.mjs +24 -0
- package/dist/{streamRelay-DMV_TXfS.mjs → streamRelay-DnMCMMfV.mjs} +1 -1
- package/dist/{streamRelay-DlUWKUpo.cjs → streamRelay-Dy6amlzx.cjs} +1 -1
- package/dist/{sync-D23jbqVa.cjs → sync-Bn-idAoy.cjs} +1 -1
- package/dist/{sync-CSe0Rf45.mjs → sync-BvVhDO40.mjs} +1 -1
- package/dist/{systemPrompt-CFNKnh65.mjs → systemPrompt-CIZcJuJF.mjs} +2 -2
- package/dist/{systemPrompt-BOy4kU4P.cjs → systemPrompt-DlyEk35T.cjs} +2 -2
- package/dist/{teams-Ov2BDT-A.cjs → teams-BLeRpDxv.cjs} +6 -6
- package/dist/{teams-DyY669f0.mjs → teams-DLY3B5yi.mjs} +6 -6
- package/dist/{time-CrwIMHta.cjs → time-Cjv0zxQO.cjs} +1 -1
- package/dist/{time-65DcU6Jx.mjs → time-D3ETL7Jb.mjs} +1 -1
- package/dist/{titleGenerator-CS_rh2_J.cjs → titleGenerator-Cgp5ihFb.cjs} +3 -3
- package/dist/{titleGenerator-CiAMxf7s.mjs → titleGenerator-Uzbd4utr.mjs} +1 -1
- package/dist/{todo-BDONw0sK.mjs → todo-C9Ga-oEM.mjs} +6 -6
- package/dist/{todo-KY-okGii.cjs → todo-pOMcEECE.cjs} +6 -6
- package/dist/{tools-_w52DZG6.cjs → tools-BL7Byl_x.cjs} +1 -1
- package/dist/{tools-D8-PnZEG.mjs → tools-Cho7iIWf.mjs} +1 -1
- package/dist/{uninstall-8vnLN-IE.cjs → uninstall-CbayEVoV.cjs} +6 -6
- package/dist/{uninstall-_fjGRP9b.mjs → uninstall-CvZHVY9C.mjs} +3 -3
- package/package.json +8 -7
- package/dist/machineMetadata-CLHS9sv_.cjs +0 -42
- package/dist/machineMetadata-D-g--oU_.mjs +0 -39
- package/dist/messageBuffer-BWlGgR3A.mjs +0 -71
- package/dist/messageBuffer-fJMH6uY8.cjs +0 -73
- package/dist/projectPath-ChLhdOyt.cjs +0 -13
- package/dist/selfCheck-CjCF4C3v.mjs +0 -85
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { p as packageJson } from './package-
|
|
1
|
+
import { p as packageJson } from './package-7Ld1YMhh.mjs';
|
|
2
2
|
import module$1 from 'node:module';
|
|
3
3
|
import { existsSync } from 'node:fs';
|
|
4
4
|
import { readdir, rm } from 'node:fs/promises';
|
|
@@ -57,10 +57,10 @@ async function pruneStaleCompileCaches(happyHomeDir, cliVersion) {
|
|
|
57
57
|
async function run(args) {
|
|
58
58
|
enableCompileCacheIfPossible(packageJson.version);
|
|
59
59
|
if (isStandaloneVersionRequest(args) || isSelfCheckRequest(args)) {
|
|
60
|
-
const { selfCheckMain } = await import('./selfCheck-
|
|
60
|
+
const { selfCheckMain } = await import('./selfCheck-Smt-5Xiq.mjs');
|
|
61
61
|
process.exit(await selfCheckMain({ verbose: isSelfCheckRequest(args) }));
|
|
62
62
|
}
|
|
63
|
-
const { main } = await import('./main-
|
|
63
|
+
const { main } = await import('./main-DGkdYfEq.mjs');
|
|
64
64
|
await main();
|
|
65
65
|
}
|
|
66
66
|
void run(process.argv.slice(2));
|
package/dist/index.cjs
CHANGED
package/dist/index.mjs
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var logger = require('./logger-
|
|
4
|
-
var
|
|
3
|
+
var logger = require('./logger-CphW5nUE.cjs');
|
|
4
|
+
var require$$0 = require('fs');
|
|
5
5
|
var child_process = require('child_process');
|
|
6
6
|
var trimIdent = require('./trimIdent-4gvk9Wk6.cjs');
|
|
7
7
|
var os = require('os');
|
|
8
8
|
require('chalk');
|
|
9
9
|
require('node:util');
|
|
10
|
-
require('./configuration-
|
|
10
|
+
require('./configuration-CYO-kPOS.cjs');
|
|
11
11
|
require('node:fs');
|
|
12
12
|
require('node:os');
|
|
13
13
|
require('node:path');
|
|
14
|
-
require('./package-
|
|
14
|
+
require('./package-KhLqBDX9.cjs');
|
|
15
15
|
require('node:fs/promises');
|
|
16
16
|
|
|
17
17
|
const PLIST_LABEL = "com.happy-cli.daemon";
|
|
18
18
|
const PLIST_FILE = `/Library/LaunchDaemons/${PLIST_LABEL}.plist`;
|
|
19
19
|
async function install$1() {
|
|
20
20
|
try {
|
|
21
|
-
if (
|
|
21
|
+
if (require$$0.existsSync(PLIST_FILE)) {
|
|
22
22
|
logger.logger.info("Daemon plist already exists. Uninstalling first...");
|
|
23
23
|
child_process.execSync(`launchctl unload ${PLIST_FILE}`, { stdio: "inherit" });
|
|
24
24
|
}
|
|
@@ -62,8 +62,8 @@ async function install$1() {
|
|
|
62
62
|
</dict>
|
|
63
63
|
</plist>
|
|
64
64
|
`);
|
|
65
|
-
|
|
66
|
-
|
|
65
|
+
require$$0.writeFileSync(PLIST_FILE, plistContent);
|
|
66
|
+
require$$0.chmodSync(PLIST_FILE, 420);
|
|
67
67
|
logger.logger.info(`Created daemon plist at ${PLIST_FILE}`);
|
|
68
68
|
child_process.execSync(`launchctl load ${PLIST_FILE}`, { stdio: "inherit" });
|
|
69
69
|
logger.logger.info("Daemon installed and started successfully");
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { l as logger } from './logger-
|
|
1
|
+
import { l as logger } from './logger-BUngm5Xg.mjs';
|
|
2
2
|
import { existsSync, writeFileSync, chmodSync } from 'fs';
|
|
3
3
|
import { execSync } from 'child_process';
|
|
4
4
|
import { t as trimIdent } from './trimIdent-BAjmv_TG.mjs';
|
|
5
5
|
import os from 'os';
|
|
6
6
|
import 'chalk';
|
|
7
7
|
import 'node:util';
|
|
8
|
-
import './configuration-
|
|
8
|
+
import './configuration-PxzEJumr.mjs';
|
|
9
9
|
import 'node:fs';
|
|
10
10
|
import 'node:os';
|
|
11
11
|
import 'node:path';
|
|
12
|
-
import './package-
|
|
12
|
+
import './package-7Ld1YMhh.mjs';
|
|
13
13
|
import 'node:fs/promises';
|
|
14
14
|
|
|
15
15
|
const PLIST_LABEL = "com.happy-cli.daemon";
|
|
@@ -5,7 +5,7 @@ var os = require('node:os');
|
|
|
5
5
|
var path = require('node:path');
|
|
6
6
|
var node_url = require('node:url');
|
|
7
7
|
var node_crypto = require('node:crypto');
|
|
8
|
-
var projectPath = require('./projectPath-
|
|
8
|
+
var projectPath = require('./projectPath-C3ioB4Bu.cjs');
|
|
9
9
|
require('path');
|
|
10
10
|
require('url');
|
|
11
11
|
|
|
@@ -5,11 +5,11 @@ var path = require('node:path');
|
|
|
5
5
|
var os = require('node:os');
|
|
6
6
|
var node_child_process = require('node:child_process');
|
|
7
7
|
var chalk = require('chalk');
|
|
8
|
-
var projectPath = require('./projectPath-
|
|
9
|
-
var doctorReadiness = require('./doctorReadiness-
|
|
8
|
+
var projectPath = require('./projectPath-C3ioB4Bu.cjs');
|
|
9
|
+
var doctorReadiness = require('./doctorReadiness-Dl6yRQCy.cjs');
|
|
10
10
|
require('path');
|
|
11
11
|
require('url');
|
|
12
|
-
require('./detectCLI-
|
|
12
|
+
require('./detectCLI-BuYR_Qxe.cjs');
|
|
13
13
|
require('child_process');
|
|
14
14
|
require('os');
|
|
15
15
|
require('fs');
|
package/dist/lib.cjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var api = require('./api-
|
|
4
|
-
var logger = require('./logger-
|
|
5
|
-
var configuration = require('./configuration-
|
|
3
|
+
var api = require('./api-DM7b1OKj.cjs');
|
|
4
|
+
var logger = require('./logger-CphW5nUE.cjs');
|
|
5
|
+
var configuration = require('./configuration-CYO-kPOS.cjs');
|
|
6
6
|
var types = require('./types-CRS-srZK.cjs');
|
|
7
7
|
require('axios');
|
|
8
|
-
require('./lidState-
|
|
8
|
+
require('./lidState-DWGnm2H4.cjs');
|
|
9
9
|
require('./authRelay-Dy1qU9td.cjs');
|
|
10
10
|
require('node:crypto');
|
|
11
11
|
require('tweetnacl');
|
|
@@ -13,32 +13,32 @@ require('os');
|
|
|
13
13
|
require('child_process');
|
|
14
14
|
require('node:events');
|
|
15
15
|
require('socket.io-client');
|
|
16
|
-
require('./pushNotifications-
|
|
16
|
+
require('./pushNotifications-DI92havG.cjs');
|
|
17
17
|
require('zod');
|
|
18
|
-
require('./index-
|
|
18
|
+
require('./index-Dv0Q48P3.cjs');
|
|
19
19
|
require('@paralleldrive/cuid2');
|
|
20
20
|
require('./contentLogMetadata-ZSFk_NjQ.cjs');
|
|
21
21
|
require('./limits-C-a7gr04.cjs');
|
|
22
|
-
require('./time-
|
|
23
|
-
require('./registerCommonHandlers-
|
|
22
|
+
require('./time-Cjv0zxQO.cjs');
|
|
23
|
+
require('./registerCommonHandlers-C7a_dUWs.cjs');
|
|
24
24
|
require('util');
|
|
25
25
|
require('fs/promises');
|
|
26
26
|
require('crypto');
|
|
27
27
|
require('path');
|
|
28
28
|
require('cross-spawn');
|
|
29
|
-
require('./projectPath-
|
|
29
|
+
require('./projectPath-C3ioB4Bu.cjs');
|
|
30
30
|
require('url');
|
|
31
|
-
require('./sync-
|
|
31
|
+
require('./sync-Bn-idAoy.cjs');
|
|
32
32
|
require('./backgroundTaskActivity-CBvUdj39.cjs');
|
|
33
|
-
require('./controlClient-
|
|
34
|
-
require('./persistence-
|
|
33
|
+
require('./controlClient-Bqv5v5OM.cjs');
|
|
34
|
+
require('./persistence-9BMYspxG.cjs');
|
|
35
35
|
require('node:fs/promises');
|
|
36
36
|
require('node:fs');
|
|
37
37
|
require('chalk');
|
|
38
38
|
require('node:util');
|
|
39
39
|
require('node:path');
|
|
40
40
|
require('node:os');
|
|
41
|
-
require('./package-
|
|
41
|
+
require('./package-KhLqBDX9.cjs');
|
|
42
42
|
|
|
43
43
|
|
|
44
44
|
|
package/dist/lib.d.cts
CHANGED
|
@@ -367,7 +367,9 @@ type Session = {
|
|
|
367
367
|
declare const MachineMetadataSchema: z$1.ZodObject<{
|
|
368
368
|
teamsVersion: z$1.ZodOptional<z$1.ZodNumber>;
|
|
369
369
|
teamLaunchVersion: z$1.ZodOptional<z$1.ZodNumber>;
|
|
370
|
+
teamRetryVersion: z$1.ZodOptional<z$1.ZodNumber>;
|
|
370
371
|
worktreeVersion: z$1.ZodOptional<z$1.ZodNumber>;
|
|
372
|
+
modelConfigVersion: z$1.ZodOptional<z$1.ZodNumber>;
|
|
371
373
|
host: z$1.ZodString;
|
|
372
374
|
platform: z$1.ZodString;
|
|
373
375
|
happyCliVersion: z$1.ZodString;
|
|
@@ -757,6 +759,18 @@ type Metadata = {
|
|
|
757
759
|
idleMs: number;
|
|
758
760
|
v: 1;
|
|
759
761
|
};
|
|
762
|
+
/**
|
|
763
|
+
* B-679: written by a wrapper that went OFFLINE (SIGTERM / SIGINT: `sessions
|
|
764
|
+
* stop`, daemon stop / upgrade, shutdown); cleared by the next wrapper on
|
|
765
|
+
* reconnect. `seq` = its message cursor — user input stored above it (sent
|
|
766
|
+
* to the offline session) was never routed and is replayed on resume. Old
|
|
767
|
+
* clients ignore it.
|
|
768
|
+
*/
|
|
769
|
+
exitCursor?: {
|
|
770
|
+
at: number;
|
|
771
|
+
seq: number;
|
|
772
|
+
v: 1;
|
|
773
|
+
};
|
|
760
774
|
/** B-587: user opted this session out of idle hibernation (web ⋯ menu). */
|
|
761
775
|
keepAwake?: boolean;
|
|
762
776
|
flavor?: string;
|
|
@@ -1283,7 +1297,9 @@ declare class ApiSessionClient extends EventEmitter {
|
|
|
1283
1297
|
* session down. Needs no socket; POSTs through the same session-message
|
|
1284
1298
|
* channel so the web receives it identically to a cancel-button tombstone.
|
|
1285
1299
|
*/
|
|
1286
|
-
cancelUndeliveredQueuedInputs(
|
|
1300
|
+
cancelUndeliveredQueuedInputs(opts?: {
|
|
1301
|
+
maxSeq?: number;
|
|
1302
|
+
}): Promise<void>;
|
|
1287
1303
|
/**
|
|
1288
1304
|
* Send a message to session
|
|
1289
1305
|
* @param body - Message body (can be MessageContent or raw content for agent messages)
|
|
@@ -1488,6 +1504,24 @@ interface WebPanel {
|
|
|
1488
1504
|
embed: boolean;
|
|
1489
1505
|
}
|
|
1490
1506
|
|
|
1507
|
+
/**
|
|
1508
|
+
* B-689: why a daemon-spawned wrapper died before it reported its session.
|
|
1509
|
+
*
|
|
1510
|
+
* The wrapper runs with `stdio: 'ignore'`, so the daemon cannot read its
|
|
1511
|
+
* stderr; the wrapper's own log file is the record (utils/exitReason.ts writes
|
|
1512
|
+
* an `[EXIT] …` line on every non-zero exit). Older wrappers have no `[EXIT]`
|
|
1513
|
+
* line — fall back to the last logged error.
|
|
1514
|
+
*/
|
|
1515
|
+
type StartupExit = {
|
|
1516
|
+
/** The process is confirmed gone (exited, or stopped after the timeout). */
|
|
1517
|
+
exited: boolean;
|
|
1518
|
+
code: number | null;
|
|
1519
|
+
signal: string | null;
|
|
1520
|
+
/** No session report within the spawn window; the daemon stopped it. */
|
|
1521
|
+
timedOut?: boolean;
|
|
1522
|
+
reason?: string;
|
|
1523
|
+
};
|
|
1524
|
+
|
|
1491
1525
|
/**
|
|
1492
1526
|
* The backends the daemon can spawn as a remote session.
|
|
1493
1527
|
*
|
|
@@ -1584,8 +1618,148 @@ type SpawnSessionResult = {
|
|
|
1584
1618
|
} | {
|
|
1585
1619
|
type: 'error';
|
|
1586
1620
|
errorMessage: string;
|
|
1621
|
+
startupExit?: StartupExit;
|
|
1587
1622
|
};
|
|
1588
1623
|
|
|
1624
|
+
/**
|
|
1625
|
+
* B-688 wire shapes for the `model-config-*` machine RPCs
|
|
1626
|
+
* (spec specs/2026-10-custom-models.md). Mirrored by the web in
|
|
1627
|
+
* packages/happy-web-v2/src/sync/modelConfigTypes.ts — keep both in step.
|
|
1628
|
+
*
|
|
1629
|
+
* Patch convention: a field left `undefined` keeps the file's value; `null`
|
|
1630
|
+
* or '' removes the key Very Happy manages. Secrets never come back: reads
|
|
1631
|
+
* return `SecretView`, never the value.
|
|
1632
|
+
*/
|
|
1633
|
+
|
|
1634
|
+
declare const MODEL_CONFIG_CAPABILITY_VERSION = 1;
|
|
1635
|
+
type HarnessId = 'claude' | 'codex' | 'gemini' | 'pi';
|
|
1636
|
+
interface SecretView {
|
|
1637
|
+
/** none: nothing configured; command: a helper/command the user wrote (not shown). */
|
|
1638
|
+
mode: 'none' | 'literal' | 'env' | 'command';
|
|
1639
|
+
/** `sk-a…9f3c` / `••••` for literal; never the value. */
|
|
1640
|
+
masked?: string;
|
|
1641
|
+
envName?: string;
|
|
1642
|
+
/** Whether the daemon's environment (inherited by sessions) defines envName. */
|
|
1643
|
+
envPresent?: boolean;
|
|
1644
|
+
}
|
|
1645
|
+
interface ConfigWarning {
|
|
1646
|
+
code: string;
|
|
1647
|
+
message: string;
|
|
1648
|
+
}
|
|
1649
|
+
interface FileView {
|
|
1650
|
+
role: string;
|
|
1651
|
+
path: string;
|
|
1652
|
+
exists: boolean;
|
|
1653
|
+
error?: {
|
|
1654
|
+
code: string;
|
|
1655
|
+
message: string;
|
|
1656
|
+
};
|
|
1657
|
+
}
|
|
1658
|
+
interface BackupView {
|
|
1659
|
+
id: string;
|
|
1660
|
+
createdAt: number;
|
|
1661
|
+
reason: string;
|
|
1662
|
+
files: string[];
|
|
1663
|
+
}
|
|
1664
|
+
/** Per-harness current values, already masked. Shape depends on the harness. */
|
|
1665
|
+
interface HarnessCurrent {
|
|
1666
|
+
baseUrl?: string | null;
|
|
1667
|
+
apiKey?: SecretView;
|
|
1668
|
+
authHeader?: 'bearer' | 'x-api-key';
|
|
1669
|
+
model?: string | null;
|
|
1670
|
+
opusModel?: string | null;
|
|
1671
|
+
sonnetModel?: string | null;
|
|
1672
|
+
haikuModel?: string | null;
|
|
1673
|
+
pickerModels?: string[];
|
|
1674
|
+
providerId?: string | null;
|
|
1675
|
+
providerName?: string | null;
|
|
1676
|
+
api?: string | null;
|
|
1677
|
+
models?: string[];
|
|
1678
|
+
defaultModel?: string | null;
|
|
1679
|
+
/** codex/pi: provider currently selected by the harness. */
|
|
1680
|
+
activeProvider?: string | null;
|
|
1681
|
+
active?: boolean;
|
|
1682
|
+
}
|
|
1683
|
+
interface HarnessConfigView {
|
|
1684
|
+
harness: HarnessId;
|
|
1685
|
+
/** Harness binary found on the daemon's PATH. */
|
|
1686
|
+
installed: boolean;
|
|
1687
|
+
files: FileView[];
|
|
1688
|
+
/** sha256 over all files; `apply`/`restore` refuse when the disk moved on. */
|
|
1689
|
+
baseHash: string;
|
|
1690
|
+
current: HarnessCurrent;
|
|
1691
|
+
/** codex/pi: user-defined provider ids in the file. */
|
|
1692
|
+
providers?: string[];
|
|
1693
|
+
/** Model keys the web should offer in this harness's composer picker. */
|
|
1694
|
+
pickerModels: string[];
|
|
1695
|
+
backups: BackupView[];
|
|
1696
|
+
warnings: ConfigWarning[];
|
|
1697
|
+
}
|
|
1698
|
+
interface ModelConfigReadResult {
|
|
1699
|
+
version: typeof MODEL_CONFIG_CAPABILITY_VERSION;
|
|
1700
|
+
harnesses: HarnessConfigView[];
|
|
1701
|
+
}
|
|
1702
|
+
interface FileDiff {
|
|
1703
|
+
path: string;
|
|
1704
|
+
/** Unified diff with secrets masked; '' when unchanged. */
|
|
1705
|
+
diff: string;
|
|
1706
|
+
created: boolean;
|
|
1707
|
+
deleted: boolean;
|
|
1708
|
+
}
|
|
1709
|
+
interface ModelConfigApplyResult {
|
|
1710
|
+
harness: HarnessId;
|
|
1711
|
+
dryRun: boolean;
|
|
1712
|
+
changed: boolean;
|
|
1713
|
+
baseHash: string;
|
|
1714
|
+
files: FileDiff[];
|
|
1715
|
+
warnings: ConfigWarning[];
|
|
1716
|
+
backup?: BackupView;
|
|
1717
|
+
/** Fresh view after a real write. */
|
|
1718
|
+
config?: HarnessConfigView;
|
|
1719
|
+
}
|
|
1720
|
+
|
|
1721
|
+
interface ModelConfigServiceOptions {
|
|
1722
|
+
/** The home the harnesses resolve `~` against (the daemon user's). */
|
|
1723
|
+
home: string;
|
|
1724
|
+
/** The daemon's environment: harness dir overrides + env-reference presence. */
|
|
1725
|
+
env: NodeJS.ProcessEnv;
|
|
1726
|
+
/** Very Happy home; backups and the audit log live under it. */
|
|
1727
|
+
happyHomeDir: string;
|
|
1728
|
+
isInstalled?: (binary: string) => boolean;
|
|
1729
|
+
/** Called after a successful write (e.g. re-run the Claude auth preflight). */
|
|
1730
|
+
onChanged?: (harness: HarnessId) => void;
|
|
1731
|
+
now?: () => number;
|
|
1732
|
+
}
|
|
1733
|
+
declare class ModelConfigService {
|
|
1734
|
+
private readonly opts;
|
|
1735
|
+
private readonly backups;
|
|
1736
|
+
private readonly auditPath;
|
|
1737
|
+
private chain;
|
|
1738
|
+
constructor(opts: ModelConfigServiceOptions);
|
|
1739
|
+
private get ctx();
|
|
1740
|
+
private serialize;
|
|
1741
|
+
private loadFiles;
|
|
1742
|
+
readOne(harness: HarnessId, providerId?: string): Promise<HarnessConfigView>;
|
|
1743
|
+
read(params?: {
|
|
1744
|
+
harness?: unknown;
|
|
1745
|
+
providerId?: unknown;
|
|
1746
|
+
}): Promise<ModelConfigReadResult>;
|
|
1747
|
+
private diffs;
|
|
1748
|
+
private write;
|
|
1749
|
+
private audit;
|
|
1750
|
+
apply(params: {
|
|
1751
|
+
patch?: unknown;
|
|
1752
|
+
baseHash?: unknown;
|
|
1753
|
+
dryRun?: unknown;
|
|
1754
|
+
}): Promise<ModelConfigApplyResult>;
|
|
1755
|
+
restore(params: {
|
|
1756
|
+
harness?: unknown;
|
|
1757
|
+
backupId?: unknown;
|
|
1758
|
+
baseHash?: unknown;
|
|
1759
|
+
dryRun?: unknown;
|
|
1760
|
+
}): Promise<ModelConfigApplyResult>;
|
|
1761
|
+
}
|
|
1762
|
+
|
|
1589
1763
|
/** Agent-specific visible-screen adapters. Unknown is deliberately not idle. */
|
|
1590
1764
|
type CodingAgentKind = 'claude' | 'codex' | 'pi';
|
|
1591
1765
|
|
|
@@ -1827,6 +2001,8 @@ declare class ApiMachineClient {
|
|
|
1827
2001
|
}>;
|
|
1828
2002
|
setStore: (store: 'auto' | 'file') => Promise<ClaudeAuthState>;
|
|
1829
2003
|
}): void;
|
|
2004
|
+
/** B-688 machine RPCs `model-config-*` (modules/modelConfig/modelConfigRpc.ts). */
|
|
2005
|
+
setModelConfigService(service: ModelConfigService): void;
|
|
1830
2006
|
/**
|
|
1831
2007
|
* B-506: the five `sessions.*` methods a CLI on ANOTHER machine of this
|
|
1832
2008
|
* account calls to read / message sessions this daemon spawned. Plaintext
|
package/dist/lib.d.mts
CHANGED
|
@@ -367,7 +367,9 @@ type Session = {
|
|
|
367
367
|
declare const MachineMetadataSchema: z$1.ZodObject<{
|
|
368
368
|
teamsVersion: z$1.ZodOptional<z$1.ZodNumber>;
|
|
369
369
|
teamLaunchVersion: z$1.ZodOptional<z$1.ZodNumber>;
|
|
370
|
+
teamRetryVersion: z$1.ZodOptional<z$1.ZodNumber>;
|
|
370
371
|
worktreeVersion: z$1.ZodOptional<z$1.ZodNumber>;
|
|
372
|
+
modelConfigVersion: z$1.ZodOptional<z$1.ZodNumber>;
|
|
371
373
|
host: z$1.ZodString;
|
|
372
374
|
platform: z$1.ZodString;
|
|
373
375
|
happyCliVersion: z$1.ZodString;
|
|
@@ -757,6 +759,18 @@ type Metadata = {
|
|
|
757
759
|
idleMs: number;
|
|
758
760
|
v: 1;
|
|
759
761
|
};
|
|
762
|
+
/**
|
|
763
|
+
* B-679: written by a wrapper that went OFFLINE (SIGTERM / SIGINT: `sessions
|
|
764
|
+
* stop`, daemon stop / upgrade, shutdown); cleared by the next wrapper on
|
|
765
|
+
* reconnect. `seq` = its message cursor — user input stored above it (sent
|
|
766
|
+
* to the offline session) was never routed and is replayed on resume. Old
|
|
767
|
+
* clients ignore it.
|
|
768
|
+
*/
|
|
769
|
+
exitCursor?: {
|
|
770
|
+
at: number;
|
|
771
|
+
seq: number;
|
|
772
|
+
v: 1;
|
|
773
|
+
};
|
|
760
774
|
/** B-587: user opted this session out of idle hibernation (web ⋯ menu). */
|
|
761
775
|
keepAwake?: boolean;
|
|
762
776
|
flavor?: string;
|
|
@@ -1283,7 +1297,9 @@ declare class ApiSessionClient extends EventEmitter {
|
|
|
1283
1297
|
* session down. Needs no socket; POSTs through the same session-message
|
|
1284
1298
|
* channel so the web receives it identically to a cancel-button tombstone.
|
|
1285
1299
|
*/
|
|
1286
|
-
cancelUndeliveredQueuedInputs(
|
|
1300
|
+
cancelUndeliveredQueuedInputs(opts?: {
|
|
1301
|
+
maxSeq?: number;
|
|
1302
|
+
}): Promise<void>;
|
|
1287
1303
|
/**
|
|
1288
1304
|
* Send a message to session
|
|
1289
1305
|
* @param body - Message body (can be MessageContent or raw content for agent messages)
|
|
@@ -1488,6 +1504,24 @@ interface WebPanel {
|
|
|
1488
1504
|
embed: boolean;
|
|
1489
1505
|
}
|
|
1490
1506
|
|
|
1507
|
+
/**
|
|
1508
|
+
* B-689: why a daemon-spawned wrapper died before it reported its session.
|
|
1509
|
+
*
|
|
1510
|
+
* The wrapper runs with `stdio: 'ignore'`, so the daemon cannot read its
|
|
1511
|
+
* stderr; the wrapper's own log file is the record (utils/exitReason.ts writes
|
|
1512
|
+
* an `[EXIT] …` line on every non-zero exit). Older wrappers have no `[EXIT]`
|
|
1513
|
+
* line — fall back to the last logged error.
|
|
1514
|
+
*/
|
|
1515
|
+
type StartupExit = {
|
|
1516
|
+
/** The process is confirmed gone (exited, or stopped after the timeout). */
|
|
1517
|
+
exited: boolean;
|
|
1518
|
+
code: number | null;
|
|
1519
|
+
signal: string | null;
|
|
1520
|
+
/** No session report within the spawn window; the daemon stopped it. */
|
|
1521
|
+
timedOut?: boolean;
|
|
1522
|
+
reason?: string;
|
|
1523
|
+
};
|
|
1524
|
+
|
|
1491
1525
|
/**
|
|
1492
1526
|
* The backends the daemon can spawn as a remote session.
|
|
1493
1527
|
*
|
|
@@ -1584,8 +1618,148 @@ type SpawnSessionResult = {
|
|
|
1584
1618
|
} | {
|
|
1585
1619
|
type: 'error';
|
|
1586
1620
|
errorMessage: string;
|
|
1621
|
+
startupExit?: StartupExit;
|
|
1587
1622
|
};
|
|
1588
1623
|
|
|
1624
|
+
/**
|
|
1625
|
+
* B-688 wire shapes for the `model-config-*` machine RPCs
|
|
1626
|
+
* (spec specs/2026-10-custom-models.md). Mirrored by the web in
|
|
1627
|
+
* packages/happy-web-v2/src/sync/modelConfigTypes.ts — keep both in step.
|
|
1628
|
+
*
|
|
1629
|
+
* Patch convention: a field left `undefined` keeps the file's value; `null`
|
|
1630
|
+
* or '' removes the key Very Happy manages. Secrets never come back: reads
|
|
1631
|
+
* return `SecretView`, never the value.
|
|
1632
|
+
*/
|
|
1633
|
+
|
|
1634
|
+
declare const MODEL_CONFIG_CAPABILITY_VERSION = 1;
|
|
1635
|
+
type HarnessId = 'claude' | 'codex' | 'gemini' | 'pi';
|
|
1636
|
+
interface SecretView {
|
|
1637
|
+
/** none: nothing configured; command: a helper/command the user wrote (not shown). */
|
|
1638
|
+
mode: 'none' | 'literal' | 'env' | 'command';
|
|
1639
|
+
/** `sk-a…9f3c` / `••••` for literal; never the value. */
|
|
1640
|
+
masked?: string;
|
|
1641
|
+
envName?: string;
|
|
1642
|
+
/** Whether the daemon's environment (inherited by sessions) defines envName. */
|
|
1643
|
+
envPresent?: boolean;
|
|
1644
|
+
}
|
|
1645
|
+
interface ConfigWarning {
|
|
1646
|
+
code: string;
|
|
1647
|
+
message: string;
|
|
1648
|
+
}
|
|
1649
|
+
interface FileView {
|
|
1650
|
+
role: string;
|
|
1651
|
+
path: string;
|
|
1652
|
+
exists: boolean;
|
|
1653
|
+
error?: {
|
|
1654
|
+
code: string;
|
|
1655
|
+
message: string;
|
|
1656
|
+
};
|
|
1657
|
+
}
|
|
1658
|
+
interface BackupView {
|
|
1659
|
+
id: string;
|
|
1660
|
+
createdAt: number;
|
|
1661
|
+
reason: string;
|
|
1662
|
+
files: string[];
|
|
1663
|
+
}
|
|
1664
|
+
/** Per-harness current values, already masked. Shape depends on the harness. */
|
|
1665
|
+
interface HarnessCurrent {
|
|
1666
|
+
baseUrl?: string | null;
|
|
1667
|
+
apiKey?: SecretView;
|
|
1668
|
+
authHeader?: 'bearer' | 'x-api-key';
|
|
1669
|
+
model?: string | null;
|
|
1670
|
+
opusModel?: string | null;
|
|
1671
|
+
sonnetModel?: string | null;
|
|
1672
|
+
haikuModel?: string | null;
|
|
1673
|
+
pickerModels?: string[];
|
|
1674
|
+
providerId?: string | null;
|
|
1675
|
+
providerName?: string | null;
|
|
1676
|
+
api?: string | null;
|
|
1677
|
+
models?: string[];
|
|
1678
|
+
defaultModel?: string | null;
|
|
1679
|
+
/** codex/pi: provider currently selected by the harness. */
|
|
1680
|
+
activeProvider?: string | null;
|
|
1681
|
+
active?: boolean;
|
|
1682
|
+
}
|
|
1683
|
+
interface HarnessConfigView {
|
|
1684
|
+
harness: HarnessId;
|
|
1685
|
+
/** Harness binary found on the daemon's PATH. */
|
|
1686
|
+
installed: boolean;
|
|
1687
|
+
files: FileView[];
|
|
1688
|
+
/** sha256 over all files; `apply`/`restore` refuse when the disk moved on. */
|
|
1689
|
+
baseHash: string;
|
|
1690
|
+
current: HarnessCurrent;
|
|
1691
|
+
/** codex/pi: user-defined provider ids in the file. */
|
|
1692
|
+
providers?: string[];
|
|
1693
|
+
/** Model keys the web should offer in this harness's composer picker. */
|
|
1694
|
+
pickerModels: string[];
|
|
1695
|
+
backups: BackupView[];
|
|
1696
|
+
warnings: ConfigWarning[];
|
|
1697
|
+
}
|
|
1698
|
+
interface ModelConfigReadResult {
|
|
1699
|
+
version: typeof MODEL_CONFIG_CAPABILITY_VERSION;
|
|
1700
|
+
harnesses: HarnessConfigView[];
|
|
1701
|
+
}
|
|
1702
|
+
interface FileDiff {
|
|
1703
|
+
path: string;
|
|
1704
|
+
/** Unified diff with secrets masked; '' when unchanged. */
|
|
1705
|
+
diff: string;
|
|
1706
|
+
created: boolean;
|
|
1707
|
+
deleted: boolean;
|
|
1708
|
+
}
|
|
1709
|
+
interface ModelConfigApplyResult {
|
|
1710
|
+
harness: HarnessId;
|
|
1711
|
+
dryRun: boolean;
|
|
1712
|
+
changed: boolean;
|
|
1713
|
+
baseHash: string;
|
|
1714
|
+
files: FileDiff[];
|
|
1715
|
+
warnings: ConfigWarning[];
|
|
1716
|
+
backup?: BackupView;
|
|
1717
|
+
/** Fresh view after a real write. */
|
|
1718
|
+
config?: HarnessConfigView;
|
|
1719
|
+
}
|
|
1720
|
+
|
|
1721
|
+
interface ModelConfigServiceOptions {
|
|
1722
|
+
/** The home the harnesses resolve `~` against (the daemon user's). */
|
|
1723
|
+
home: string;
|
|
1724
|
+
/** The daemon's environment: harness dir overrides + env-reference presence. */
|
|
1725
|
+
env: NodeJS.ProcessEnv;
|
|
1726
|
+
/** Very Happy home; backups and the audit log live under it. */
|
|
1727
|
+
happyHomeDir: string;
|
|
1728
|
+
isInstalled?: (binary: string) => boolean;
|
|
1729
|
+
/** Called after a successful write (e.g. re-run the Claude auth preflight). */
|
|
1730
|
+
onChanged?: (harness: HarnessId) => void;
|
|
1731
|
+
now?: () => number;
|
|
1732
|
+
}
|
|
1733
|
+
declare class ModelConfigService {
|
|
1734
|
+
private readonly opts;
|
|
1735
|
+
private readonly backups;
|
|
1736
|
+
private readonly auditPath;
|
|
1737
|
+
private chain;
|
|
1738
|
+
constructor(opts: ModelConfigServiceOptions);
|
|
1739
|
+
private get ctx();
|
|
1740
|
+
private serialize;
|
|
1741
|
+
private loadFiles;
|
|
1742
|
+
readOne(harness: HarnessId, providerId?: string): Promise<HarnessConfigView>;
|
|
1743
|
+
read(params?: {
|
|
1744
|
+
harness?: unknown;
|
|
1745
|
+
providerId?: unknown;
|
|
1746
|
+
}): Promise<ModelConfigReadResult>;
|
|
1747
|
+
private diffs;
|
|
1748
|
+
private write;
|
|
1749
|
+
private audit;
|
|
1750
|
+
apply(params: {
|
|
1751
|
+
patch?: unknown;
|
|
1752
|
+
baseHash?: unknown;
|
|
1753
|
+
dryRun?: unknown;
|
|
1754
|
+
}): Promise<ModelConfigApplyResult>;
|
|
1755
|
+
restore(params: {
|
|
1756
|
+
harness?: unknown;
|
|
1757
|
+
backupId?: unknown;
|
|
1758
|
+
baseHash?: unknown;
|
|
1759
|
+
dryRun?: unknown;
|
|
1760
|
+
}): Promise<ModelConfigApplyResult>;
|
|
1761
|
+
}
|
|
1762
|
+
|
|
1589
1763
|
/** Agent-specific visible-screen adapters. Unknown is deliberately not idle. */
|
|
1590
1764
|
type CodingAgentKind = 'claude' | 'codex' | 'pi';
|
|
1591
1765
|
|
|
@@ -1827,6 +2001,8 @@ declare class ApiMachineClient {
|
|
|
1827
2001
|
}>;
|
|
1828
2002
|
setStore: (store: 'auto' | 'file') => Promise<ClaudeAuthState>;
|
|
1829
2003
|
}): void;
|
|
2004
|
+
/** B-688 machine RPCs `model-config-*` (modules/modelConfig/modelConfigRpc.ts). */
|
|
2005
|
+
setModelConfigService(service: ModelConfigService): void;
|
|
1830
2006
|
/**
|
|
1831
2007
|
* B-506: the five `sessions.*` methods a CLI on ANOTHER machine of this
|
|
1832
2008
|
* account calls to read / message sessions this daemon spawned. Plaintext
|
package/dist/lib.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export { A as ApiClient, a as ApiSessionClient } from './api-
|
|
2
|
-
export { l as logger } from './logger-
|
|
3
|
-
export { c as configuration } from './configuration-
|
|
1
|
+
export { A as ApiClient, a as ApiSessionClient } from './api-Hov8p7CA.mjs';
|
|
2
|
+
export { l as logger } from './logger-BUngm5Xg.mjs';
|
|
3
|
+
export { c as configuration } from './configuration-PxzEJumr.mjs';
|
|
4
4
|
export { R as RawJSONLinesSchema } from './types-CkqAACXx.mjs';
|
|
5
5
|
import 'axios';
|
|
6
|
-
import './lidState-
|
|
6
|
+
import './lidState-bBrmaQd2.mjs';
|
|
7
7
|
import './authRelay-DhQhkBvX.mjs';
|
|
8
8
|
import 'node:crypto';
|
|
9
9
|
import 'tweetnacl';
|
|
@@ -11,14 +11,14 @@ import 'os';
|
|
|
11
11
|
import 'child_process';
|
|
12
12
|
import 'node:events';
|
|
13
13
|
import 'socket.io-client';
|
|
14
|
-
import './pushNotifications-
|
|
14
|
+
import './pushNotifications-DCiBEVeC.mjs';
|
|
15
15
|
import 'zod';
|
|
16
|
-
import './index-
|
|
16
|
+
import './index-C6Vn5Eac.mjs';
|
|
17
17
|
import '@paralleldrive/cuid2';
|
|
18
18
|
import './contentLogMetadata-BlWI0egu.mjs';
|
|
19
19
|
import './limits-DIo7rEBR.mjs';
|
|
20
|
-
import './time-
|
|
21
|
-
import './registerCommonHandlers-
|
|
20
|
+
import './time-D3ETL7Jb.mjs';
|
|
21
|
+
import './registerCommonHandlers-CTkCvjxt.mjs';
|
|
22
22
|
import 'util';
|
|
23
23
|
import 'fs/promises';
|
|
24
24
|
import 'crypto';
|
|
@@ -26,14 +26,14 @@ import 'path';
|
|
|
26
26
|
import 'cross-spawn';
|
|
27
27
|
import './projectPath-BTBIMB57.mjs';
|
|
28
28
|
import 'url';
|
|
29
|
-
import './sync-
|
|
30
|
-
import './backgroundTaskActivity-
|
|
31
|
-
import './controlClient-
|
|
32
|
-
import './persistence-
|
|
29
|
+
import './sync-BvVhDO40.mjs';
|
|
30
|
+
import './backgroundTaskActivity-8PdPxrvy.mjs';
|
|
31
|
+
import './controlClient-DoeYovwP.mjs';
|
|
32
|
+
import './persistence-BFUOHW5h.mjs';
|
|
33
33
|
import 'node:fs/promises';
|
|
34
34
|
import 'node:fs';
|
|
35
35
|
import 'chalk';
|
|
36
36
|
import 'node:util';
|
|
37
37
|
import 'node:path';
|
|
38
38
|
import 'node:os';
|
|
39
|
-
import './package-
|
|
39
|
+
import './package-7Ld1YMhh.mjs';
|