very-happy-cli 0.2.179 → 0.2.181
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-DFipFF7-.cjs → AcpBackend-CgHb_ya5.cjs} +3 -3
- package/dist/{AcpBackend-CHp3y7cb.mjs → AcpBackend-DZGCSuXF.mjs} +3 -3
- package/dist/{AcpSessionManager-0zpvRJXc.cjs → AcpSessionManager-CacC2EVn.cjs} +1 -1
- package/dist/{AcpSessionManager-d2-rKWWa.mjs → AcpSessionManager-DwuPzWBh.mjs} +1 -1
- package/dist/{BasePermissionHandler-CH3zuEkA.cjs → BasePermissionHandler-DCP8ZEB4.cjs} +1 -1
- package/dist/{BasePermissionHandler-DdZBYIR4.mjs → BasePermissionHandler-Uo-GUjbb.mjs} +1 -1
- package/dist/{acpSessionResume-DTGmAPLt.mjs → acpSessionResume-9OLTD6kT.mjs} +1 -1
- package/dist/{acpSessionResume-oiCBnAVA.cjs → acpSessionResume-BaVMD80f.cjs} +1 -1
- package/dist/{agentHome-CghLvL_1.mjs → agentHome-B1BsKeqD.mjs} +4 -4
- package/dist/{agentHome-BWcz8mz0.cjs → agentHome-BtUmGcPX.cjs} +4 -4
- package/dist/{api-Cmjfr8Z7.cjs → api-COHFAkb_.cjs} +20 -12
- package/dist/{api-CzwFpJQc.mjs → api-Dr3wXL_7.mjs} +21 -13
- package/dist/{apiMachine-DJkTEiqy.mjs → apiMachine-CHEzPQdS.mjs} +73 -32
- package/dist/{apiMachine-G6OogT08.cjs → apiMachine-D8H7CXaz.cjs} +75 -34
- package/dist/{attachmentContent-B2os4HbA.mjs → attachmentContent-1YwtKgWl.mjs} +2 -2
- package/dist/{attachmentContent-Bo0UAsSu.cjs → attachmentContent-mIhbtRKl.cjs} +2 -2
- package/dist/{auth-DMX0xPNK.mjs → auth-CbZkcMAb.mjs} +8 -8
- package/dist/{auth-D6bBUwZa.cjs → auth-CgQP7d0q.cjs} +5 -5
- package/dist/{auth-BS6PaOOG.mjs → auth-DZsthtSk.mjs} +5 -5
- package/dist/{auth-HEhRaNgL.cjs → auth-Fg8fLadK.cjs} +8 -8
- package/dist/{auto-C6I55iOh.cjs → auto-BB7kqSh5.cjs} +19 -19
- package/dist/{auto-Cl1SEDcD.mjs → auto-_T-Ud-z5.mjs} +19 -19
- package/dist/{backgroundTaskActivity-BVwJBl02.mjs → backgroundTaskActivity-8PdPxrvy.mjs} +1 -1
- package/dist/{bootstrap-iuyufnp3.mjs → bootstrap-B6EkZh4u.mjs} +2 -2
- package/dist/{bootstrap-exVucYav.cjs → bootstrap-CYtOtbi7.cjs} +2 -2
- package/dist/{browser-CSYum7xH.mjs → browser-C2qhUHSE.mjs} +1 -1
- package/dist/{browser-BohJK12g.cjs → browser-DjNNQQk2.cjs} +1 -1
- package/dist/{claudeCliPath-U4HHmV4r.cjs → claudeCliPath-GaP3UUz1.cjs} +1 -1
- package/dist/{claudeLocal-Dq_R3Ax_.mjs → claudeLocal-BAFjWhZ8.mjs} +6 -6
- package/dist/{claudeLocal-re4yjSTx.cjs → claudeLocal-O_w7-fBh.cjs} +8 -8
- package/dist/{claudeLocalLauncher-CN67lN7-.mjs → claudeLocalLauncher-CWn30LZR.mjs} +11 -11
- package/dist/{claudeLocalLauncher-B4hJHpCA.cjs → claudeLocalLauncher-Df3zg1q0.cjs} +13 -13
- package/dist/{claudeSessionFork-BihfD0Ik.mjs → claudeSessionFork-2ZkSTOGn.mjs} +1 -1
- package/dist/{claudeSessionFork-DiSMYerV.cjs → claudeSessionFork-pwcKqB-e.cjs} +1 -1
- package/dist/{client-BhoEBnuN.mjs → client-BKyU66lg.mjs} +2 -2
- package/dist/{client-BKcK1Bi-.cjs → client-CUO3ItoB.cjs} +34 -8
- package/dist/{client-wo9nbxuf.mjs → client-CXOnzuOy.mjs} +2 -2
- package/dist/{client-ZjOsn6nZ.cjs → client-DWs6k041.cjs} +2 -2
- package/dist/{client-CuVdN6PP.cjs → client-D_U2VjO3.cjs} +2 -2
- package/dist/{client-DuTDwWSQ.mjs → client-DsQcxVUV.mjs} +34 -9
- package/dist/codex/happyMcpStdioBridge.cjs +17 -17
- package/dist/codex/happyMcpStdioBridge.mjs +18 -18
- package/dist/{codexAppServerClient-Dt5zxrun.cjs → codexAppServerClient-BRX3JZ_5.cjs} +3 -3
- package/dist/{codexAppServerClient-BK3zra_1.mjs → codexAppServerClient-C3JO3pwM.mjs} +3 -3
- package/dist/{codexCommand-B6pY7CMh.mjs → codexCommand-BZIAAqKS.mjs} +59 -51
- package/dist/{codexCommand-CAZ1SLjg.cjs → codexCommand-dKOc5iQl.cjs} +85 -77
- package/dist/{codexTermination-DmGbHxcD.cjs → codexTermination-BVR9HeVI.cjs} +7 -2
- package/dist/{codexTermination-Cd1Eon_4.mjs → codexTermination-ztFkwHrG.mjs} +7 -2
- package/dist/{config-2oMG_fEI.mjs → config-NbHjx8ge.mjs} +3 -3
- package/dist/{config-B0uK6K7n.cjs → config-cftYxLC7.cjs} +26 -26
- package/dist/{configuration-WMi4idBB.mjs → configuration-BPrfb17M.mjs} +1 -1
- package/dist/{configuration-CMHZnp6G.cjs → configuration-C8JgseHy.cjs} +1 -1
- package/dist/{connect-uaglGrde.cjs → connect-Br8VMrK1.cjs} +27 -27
- package/dist/{connect-BLVHhHzA.mjs → connect-CLD1ai0k.mjs} +14 -14
- package/dist/{context-DXzU5bFM.cjs → context-D1lgQTJC.cjs} +1 -1
- package/dist/{context-DploEcoN.mjs → context-_YGq8xdH.mjs} +1 -1
- package/dist/{controlClient-BWUJrj3t.mjs → controlClient-CkNpT5zS.mjs} +4 -4
- package/dist/{controlClient-C-5qCt8W.cjs → controlClient-D68Zj7Q-.cjs} +3 -3
- package/dist/{createSessionMetadata-3uXrJgOW.mjs → createSessionMetadata-3WAj3_xl.mjs} +2 -2
- package/dist/{createSessionMetadata-BkIzHALd.cjs → createSessionMetadata-DNIbKLHg.cjs} +3 -3
- package/dist/{defaultPermissionMode-pS3vmiSg.cjs → defaultPermissionMode-BmvjP32v.cjs} +2 -2
- package/dist/{defaultPermissionMode-BzxLh20a.mjs → defaultPermissionMode-DXMznl8v.mjs} +2 -2
- package/dist/{detectCLI-DR9ZaN6B.cjs → detectCLI-BuYR_Qxe.cjs} +4 -4
- package/dist/{deterministicJson-B8z2GPi9.cjs → deterministicJson-BS7D7URE.cjs} +89 -24
- package/dist/{deterministicJson-D_whDMFd.mjs → deterministicJson-BcBIKKf1.mjs} +87 -24
- package/dist/{doctor-Br1Kcy2J.cjs → doctor-Be7zC0AF.cjs} +10 -9
- package/dist/{doctor-CmtSsR2-.mjs → doctor-CoOaPq6w.mjs} +8 -8
- package/dist/{doctorReadiness-BCZGcN0a.cjs → doctorReadiness-Dl6yRQCy.cjs} +1 -1
- package/dist/{downloadTarget-BoNwTIH_.mjs → downloadTarget-CeaAXdJj.mjs} +6 -6
- package/dist/{downloadTarget-BQJK_6oH.cjs → downloadTarget-LyOiucn_.cjs} +6 -6
- package/dist/{ensureDaemonRunning-Czo9IHJQ.mjs → ensureDaemonRunning--98j7-17.mjs} +5 -5
- package/dist/{ensureDaemonRunning-BRUmsq6J.cjs → ensureDaemonRunning-B8z37VKD.cjs} +6 -6
- package/dist/fileStore-5qpetZS0.mjs +146 -0
- package/dist/fileStore-7qhnbs6N.cjs +152 -0
- package/dist/{handleResumeCommand-tKD_Hpxc.cjs → handleResumeCommand-BFZlrFVH.cjs} +7 -7
- package/dist/{handleResumeCommand-C8thKjqf.mjs → handleResumeCommand-gO8I4keP.mjs} +6 -6
- package/dist/{index-DMqDMT1Q.cjs → index-B5PXbZjW.cjs} +80 -62
- package/dist/{index-D09T1m8Y.cjs → index-BRMq9gOe.cjs} +3 -3
- package/dist/{index-B0UjHlAe.cjs → index-BkluinoS.cjs} +4 -4
- package/dist/{index-CdQI0C9p.mjs → index-CO0n9ue6.mjs} +4 -4
- package/dist/{index-DPOa4NhL.mjs → index-CeRXrGnH.mjs} +41 -6
- package/dist/{index-C6O2vVjm.cjs → index-Df2eHm3O.cjs} +42 -6
- package/dist/{index-BTxHphpV.mjs → index-DneHoQXf.mjs} +80 -62
- package/dist/{index-BiyC7cZ3.mjs → index-WUj3954m.mjs} +4 -4
- package/dist/{index-D3bidoG8.mjs → index-hQ8LP1C2.mjs} +3 -3
- package/dist/{index-CUuc6iCn.cjs → index-jF2t3ACW.cjs} +4 -4
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/dist/{install-BX3lv3NO.mjs → install-D0inLCv-.mjs} +1 -1
- package/dist/{install-BXvf2E3o.cjs → install-D2NCbeJ-.cjs} +1 -1
- package/dist/{install-hnve_9vq.mjs → install-DkYFiVK4.mjs} +3 -3
- package/dist/{install-CYRZxS87.cjs → install-FqkSUjPC.cjs} +7 -7
- 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 +216 -2
- package/dist/lib.d.mts +216 -2
- package/dist/lib.mjs +13 -13
- package/dist/{lidState-Bb8fgXg3.mjs → lidState-DghbfRbr.mjs} +1 -1
- package/dist/{lidState-Dv2wwFTj.cjs → lidState-x8cJ8J_9.cjs} +1 -1
- package/dist/{localHappyAgentAuth-DjYvkXvV.cjs → localHappyAgentAuth-DZ2kb9uq.cjs} +1 -1
- package/dist/{localHappyAgentAuth-NEU7fax7.mjs → localHappyAgentAuth-IKmeRpuQ.mjs} +1 -1
- package/dist/{logger-C1GWx3gi.cjs → logger-DgBwUSgS.cjs} +2 -2
- package/dist/{logger-BtVhHnD8.mjs → logger-LFr8iPgl.mjs} +2 -2
- package/dist/machineMetadata-BglCsfvf.mjs +75 -0
- package/dist/machineMetadata-DB03ez4K.cjs +87 -0
- package/dist/{main-CWhSsbtU.cjs → main-YQ-Vkakw.cjs} +99 -132
- package/dist/{main-B2LWV8DI.mjs → main-_1LSzlLv.mjs} +93 -126
- package/dist/{mcp-CARUsXHV.cjs → mcp-BIY80jSc.cjs} +15 -15
- package/dist/{mcp-ext92q3Y.mjs → mcp-Csj-mT5Y.mjs} +15 -15
- package/dist/{mirrorProtocol-DEy2g1CB.cjs → mirrorProtocol-BphKIAK9.cjs} +15 -6
- package/dist/{mirrorProtocol-BwYibqry.mjs → mirrorProtocol-CAxOMBkb.mjs} +15 -6
- package/dist/{package-BPPebGQF.mjs → package-DYGwlmXl.mjs} +9 -8
- package/dist/{package-SgqTYsjn.cjs → package-NoD8QOOM.cjs} +9 -8
- package/dist/{panels-BZ0_Tt7B.mjs → panels-B8zRm7_d.mjs} +5 -5
- package/dist/{panels-D1c7q2dD.cjs → panels-DYEc1NyQ.cjs} +5 -5
- package/dist/{peerTools-CWKzcQ7u.mjs → peerTools-CK3JYu1k.mjs} +5 -5
- package/dist/{peerTools-DRQETXaz.cjs → peerTools-CP-x-Peu.cjs} +5 -5
- package/dist/{persistence-BegE7NPa.cjs → persistence-BY-D00wT.cjs} +2 -2
- package/dist/{persistence-Cr-wutZ4.mjs → persistence-D2Djrf7t.mjs} +2 -2
- package/dist/pi-CqyoZMjI.mjs +380 -0
- package/dist/pi-DlsrPCTa.cjs +400 -0
- package/dist/{piRunnerArgs-DwvM_yWA.mjs → piRunnerArgs-IZLoL7TG.mjs} +1 -1
- package/dist/{piRunnerArgs-Cs-378Vz.cjs → piRunnerArgs-gxLYIZH4.cjs} +1 -1
- package/dist/{piRuntime-Bue5mnlc.mjs → piRuntime-D7Y4oHVL.mjs} +2 -2
- package/dist/{piRuntime-BG-1td_n.cjs → piRuntime-o5L8uX-W.cjs} +2 -2
- package/dist/{piTerminal-G4z-xVyy.cjs → piTerminal-C_-JDkLN.cjs} +18 -18
- package/dist/{piTerminal-B5x9X5yV.mjs → piTerminal-Kphx8Uhw.mjs} +18 -18
- package/dist/projectPath-C3ioB4Bu.cjs +13 -0
- package/dist/{prompt-lgF9IE82.cjs → prompt-Bof2aQkI.cjs} +7 -2
- package/dist/{prompt-BOouDaTM.mjs → prompt-QHuFx9j6.mjs} +7 -2
- package/dist/{pushNotifications-DaLQUyi0.cjs → pushNotifications-BXoOSq_G.cjs} +14 -4
- package/dist/{pushNotifications-BdFjDjQe.mjs → pushNotifications-DXGIhE-A.mjs} +14 -4
- package/dist/{query-DYP_W1wp.mjs → query-CcA6DVZK.mjs} +1 -1
- package/dist/{query-Ctfg-5gy.cjs → query-CdCxzuaB.cjs} +1 -1
- package/dist/{rateLimitWindows-Dj_8voBK.cjs → rateLimitWindows-OpAmdOtC.cjs} +1 -1
- package/dist/{rateLimitWindows-CuEqk_0g.mjs → rateLimitWindows-ZtHZHe-l.mjs} +1 -1
- package/dist/{registerCommonHandlers-Cj084Sg7.cjs → registerCommonHandlers-CRjBoJLK.cjs} +30 -30
- package/dist/{registerCommonHandlers-BAlP7SGc.mjs → registerCommonHandlers-DF6bdDtd.mjs} +2 -2
- package/dist/{registerKillSessionHandler-qMju0ZfF.cjs → registerKillSessionHandler-7fOm6ooh.cjs} +6 -6
- package/dist/{registerKillSessionHandler-PD0jWtQo.mjs → registerKillSessionHandler-DDCKL3wf.mjs} +6 -6
- package/dist/{remoteSessionClient-Bn2qu5C5.mjs → remoteSessionClient-B2POSKFT.mjs} +5 -5
- package/dist/{remoteSessionClient-B7i7MkYV.cjs → remoteSessionClient-CFCn42bs.cjs} +5 -5
- package/dist/{reportProgressTool-gHItlSzz.mjs → reportProgressTool-tPxEvh6x.mjs} +4 -4
- package/dist/{reportProgressTool-CM1JFAHg.cjs → reportProgressTool-th4trcET.cjs} +4 -4
- package/dist/{resources-CvIlkzpP.cjs → resources-BPyN59Iv.cjs} +23 -2
- package/dist/{resources-y9jfyO-_.mjs → resources-CH1iP6Cv.mjs} +22 -3
- package/dist/{run-CNXwIe0A.cjs → run-C_FumCQk.cjs} +2767 -183
- package/dist/{run-BM4TxiyN.mjs → run-cKQBbVi4.mjs} +2762 -178
- package/dist/{runClaude-C_3I8hvR.mjs → runClaude-CYnM6krL.mjs} +34 -28
- package/dist/{runClaude-CWhj2V4Q.cjs → runClaude-z_2YC_aa.cjs} +35 -29
- package/dist/{runClaudeDeps-B81cOKnH.cjs → runClaudeDeps-CLubzWnA.cjs} +59 -122
- package/dist/{runClaudeDeps-QGrOeDe2.mjs → runClaudeDeps-duS06Pb4.mjs} +52 -114
- package/dist/{runGemini-BEdWEZLR.mjs → runGemini-C_Pc2EhH.mjs} +39 -37
- package/dist/{runGemini-CgRLYbt5.cjs → runGemini-vEoXV6qT.cjs} +67 -65
- package/dist/{runOpenClaw-C1NVmzOL.cjs → runOpenClaw-CXJCtMgB.cjs} +20 -20
- package/dist/{runOpenClaw-DdQZAYj1.mjs → runOpenClaw-Cxun1qLC.mjs} +19 -19
- package/dist/{sandbox-nocIjliq.cjs → sandbox-CO46H2tK.cjs} +4 -4
- package/dist/{sandbox-DjQUdCMG.mjs → sandbox-CsvPnTmz.mjs} +4 -4
- package/dist/{selfCheck-DCt4Uzbq.cjs → selfCheck-DIr7Gc0i.cjs} +39 -39
- package/dist/selfCheck-NamtBHVB.mjs +85 -0
- package/dist/{send-Ct7X4pPU.mjs → send-DMoFg6F1.mjs} +9 -9
- package/dist/{send-Dydf_hwZ.cjs → send-X2mfVEyr.cjs} +8 -8
- package/dist/{server-CosABFbd.cjs → server-BwTEdbkr.cjs} +6 -6
- package/dist/{server-DTQGZMxh.mjs → server-CkqQ0sRH.mjs} +4 -4
- package/dist/sessionExitLifecycle-CzkLIgNZ.mjs +142 -0
- package/dist/sessionExitLifecycle-DFltxXU8.cjs +148 -0
- package/dist/{sessionLock-DokGab2R.cjs → sessionLock-CdIRJlHH.cjs} +25 -5
- package/dist/{sessionLock-WYIyaVO4.mjs → sessionLock-JIfwCqMk.mjs} +24 -5
- package/dist/{sessionOps-S-qPBLFf.cjs → sessionOps-DVA-00nR.cjs} +4 -4
- package/dist/{sessionOps-BIGgRube.mjs → sessionOps-DqlftXxe.mjs} +5 -5
- package/dist/{sessionScanner-o5hnMi5e.mjs → sessionScanner-BI0Vo1xT.mjs} +3 -3
- package/dist/{sessionScanner-CIMM2hvZ.cjs → sessionScanner-BMwgGAhY.cjs} +3 -3
- package/dist/{sessions-BJHEZpi2.mjs → sessions-D6IimX7b.mjs} +11 -11
- package/dist/{sessions-JchI1w3z.cjs → sessions-DjgEcHaT.cjs} +10 -10
- package/dist/{setupOfflineReconnection-CNiAt5ZP.cjs → setupOfflineReconnection-CjuCiKY3.cjs} +2 -2
- package/dist/{setupOfflineReconnection-DMiBO2y9.mjs → setupOfflineReconnection-DgJK_4m1.mjs} +2 -2
- package/dist/{spawn-DgvUNYEo.mjs → spawn-Dvzy-tzc.mjs} +15 -15
- package/dist/{spawn-6PD7nnoC.cjs → spawn-rhF28shY.cjs} +15 -15
- package/dist/{spawnAgents-P006Hqio.mjs → spawnAgents-CCnlq-FI.mjs} +1 -1
- package/dist/{spawnAgents-DsXgegHM.cjs → spawnAgents-iwuqrgR9.cjs} +1 -1
- package/dist/{spawnHappyCLI-Dywezwk6.cjs → spawnHappyCLI-DnKmIsEt.cjs} +2 -2
- package/dist/{spawnHappyCLI-CCOrEtf9.mjs → spawnHappyCLI-Dq3LLXLb.mjs} +1 -1
- package/dist/{specialCommands-DPcd9edP.mjs → specialCommands-CcyZ1hGA.mjs} +3 -3
- package/dist/{specialCommands-QxPpkGKf.cjs → specialCommands-Zwr2C6A2.cjs} +3 -3
- package/dist/{startFileWatcher-DghDOCO4.mjs → startFileWatcher-4thXDK9d.mjs} +1 -1
- package/dist/{startFileWatcher-RECH5qY8.cjs → startFileWatcher-K6hJSyiR.cjs} +1 -1
- package/dist/startupSessionCreate-BfByJ16A.mjs +24 -0
- package/dist/startupSessionCreate-CKEbq0tL.cjs +26 -0
- package/dist/{streamRelay-DlUWKUpo.cjs → streamRelay-Gy8Xfnon.cjs} +1 -1
- package/dist/{streamRelay-DMV_TXfS.mjs → streamRelay-LcDvyEjK.mjs} +1 -1
- package/dist/{sync-D23jbqVa.cjs → sync-1hQ5KHpL.cjs} +1 -1
- package/dist/{sync-CSe0Rf45.mjs → sync-DO-2PU45.mjs} +1 -1
- package/dist/{systemPrompt-CFNKnh65.mjs → systemPrompt-BctLfMZs.mjs} +3 -3
- package/dist/{systemPrompt-BOy4kU4P.cjs → systemPrompt-Dj7pgkMK.cjs} +3 -3
- package/dist/{teams-DyY669f0.mjs → teams-Bu8YeOoF.mjs} +8 -8
- package/dist/{teams-Ov2BDT-A.cjs → teams-uQxUlyyz.cjs} +8 -8
- package/dist/{time-65DcU6Jx.mjs → time-BcoJaG8E.mjs} +1 -1
- package/dist/{time-CrwIMHta.cjs → time-nqa9shu8.cjs} +1 -1
- package/dist/{titleGenerator-CS_rh2_J.cjs → titleGenerator-D09XyYYG.cjs} +3 -3
- package/dist/{titleGenerator-CiAMxf7s.mjs → titleGenerator-D5r06bhf.mjs} +1 -1
- package/dist/{todo-KY-okGii.cjs → todo-CCOnL7pT.cjs} +6 -6
- package/dist/{todo-BDONw0sK.mjs → todo-D1q8146q.mjs} +6 -6
- package/dist/{tools-D8-PnZEG.mjs → tools-D2E--n1x.mjs} +3 -3
- package/dist/{tools-_w52DZG6.cjs → tools-DiCXnAC5.cjs} +3 -3
- package/dist/{uninstall-8vnLN-IE.cjs → uninstall-BrNwwwSD.cjs} +6 -6
- package/dist/{uninstall-_fjGRP9b.mjs → uninstall-CtwXi1Rt.mjs} +3 -3
- package/package.json +9 -8
- 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,17 +1,23 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var z = require('zod');
|
|
4
|
-
var index = require('./index-
|
|
4
|
+
var index = require('./index-Df2eHm3O.cjs');
|
|
5
5
|
var axios = require('axios');
|
|
6
|
-
var logger = require('./logger-
|
|
7
|
-
var configuration = require('./configuration-
|
|
6
|
+
var logger = require('./logger-DgBwUSgS.cjs');
|
|
7
|
+
var configuration = require('./configuration-C8JgseHy.cjs');
|
|
8
8
|
var contentLogMetadata = require('./contentLogMetadata-ZSFk_NjQ.cjs');
|
|
9
9
|
|
|
10
10
|
z.z.object({
|
|
11
11
|
teamsVersion: z.z.number().int().positive().optional(),
|
|
12
12
|
teamLaunchVersion: z.z.number().int().positive().optional(),
|
|
13
|
+
/** B-689: daemon acts on the owner's team `retry-operation`. Absent on old daemons. */
|
|
14
|
+
teamRetryVersion: z.z.number().int().positive().optional(),
|
|
13
15
|
/** B-586: daemon serves the `worktree-*` RPCs. Absent on old daemons. */
|
|
14
16
|
worktreeVersion: z.z.number().int().positive().optional(),
|
|
17
|
+
/** B-688: daemon serves the `model-config-*` RPCs (harness model/provider config). */
|
|
18
|
+
modelConfigVersion: z.z.number().int().positive().optional(),
|
|
19
|
+
/** B-719: daemon serves `harness-install` (Install / Update buttons for coding-agent CLIs). */
|
|
20
|
+
harnessInstallVersion: z.z.number().int().positive().optional(),
|
|
15
21
|
host: z.z.string(),
|
|
16
22
|
platform: z.z.string(),
|
|
17
23
|
happyCliVersion: z.z.string(),
|
|
@@ -76,7 +82,11 @@ const CliUpdateStateSchema = z.z.object({
|
|
|
76
82
|
version: z.z.string().nullable(),
|
|
77
83
|
detail: z.z.string().optional(),
|
|
78
84
|
at: z.z.number()
|
|
79
|
-
}).nullable().optional()
|
|
85
|
+
}).nullable().optional(),
|
|
86
|
+
/** B-718: the machine-level `cliAutoUpdate` setting (absent = not read yet / old daemon). */
|
|
87
|
+
autoUpdateEnabled: z.z.boolean().optional(),
|
|
88
|
+
/** B-718: the last install this machine completed, carried across its handover. */
|
|
89
|
+
lastInstall: z.z.object({ from: z.z.string(), to: z.z.string(), at: z.z.number(), source: z.z.string() }).nullable().optional()
|
|
80
90
|
});
|
|
81
91
|
const WebTerminalListItemSchema = z.z.object({
|
|
82
92
|
id: z.z.string(),
|
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { p as AgentVersionsSchema } from './index-
|
|
2
|
+
import { p as AgentVersionsSchema } from './index-CeRXrGnH.mjs';
|
|
3
3
|
import axios from 'axios';
|
|
4
|
-
import { l as logger } from './logger-
|
|
5
|
-
import { c as configuration } from './configuration-
|
|
4
|
+
import { l as logger } from './logger-LFr8iPgl.mjs';
|
|
5
|
+
import { c as configuration } from './configuration-BPrfb17M.mjs';
|
|
6
6
|
import { c as contentLogMetadata } from './contentLogMetadata-BlWI0egu.mjs';
|
|
7
7
|
|
|
8
8
|
z.object({
|
|
9
9
|
teamsVersion: z.number().int().positive().optional(),
|
|
10
10
|
teamLaunchVersion: z.number().int().positive().optional(),
|
|
11
|
+
/** B-689: daemon acts on the owner's team `retry-operation`. Absent on old daemons. */
|
|
12
|
+
teamRetryVersion: z.number().int().positive().optional(),
|
|
11
13
|
/** B-586: daemon serves the `worktree-*` RPCs. Absent on old daemons. */
|
|
12
14
|
worktreeVersion: z.number().int().positive().optional(),
|
|
15
|
+
/** B-688: daemon serves the `model-config-*` RPCs (harness model/provider config). */
|
|
16
|
+
modelConfigVersion: z.number().int().positive().optional(),
|
|
17
|
+
/** B-719: daemon serves `harness-install` (Install / Update buttons for coding-agent CLIs). */
|
|
18
|
+
harnessInstallVersion: z.number().int().positive().optional(),
|
|
13
19
|
host: z.string(),
|
|
14
20
|
platform: z.string(),
|
|
15
21
|
happyCliVersion: z.string(),
|
|
@@ -74,7 +80,11 @@ const CliUpdateStateSchema = z.object({
|
|
|
74
80
|
version: z.string().nullable(),
|
|
75
81
|
detail: z.string().optional(),
|
|
76
82
|
at: z.number()
|
|
77
|
-
}).nullable().optional()
|
|
83
|
+
}).nullable().optional(),
|
|
84
|
+
/** B-718: the machine-level `cliAutoUpdate` setting (absent = not read yet / old daemon). */
|
|
85
|
+
autoUpdateEnabled: z.boolean().optional(),
|
|
86
|
+
/** B-718: the last install this machine completed, carried across its handover. */
|
|
87
|
+
lastInstall: z.object({ from: z.string(), to: z.string(), at: z.number(), source: z.string() }).nullable().optional()
|
|
78
88
|
});
|
|
79
89
|
const WebTerminalListItemSchema = z.object({
|
|
80
90
|
id: z.string(),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { query as query$1 } from '@anthropic-ai/claude-agent-sdk';
|
|
2
2
|
import { p as pinSmallFastModel, e as ensureLocalProxyBypass } from './smallFastModel-BLNgMrwR.mjs';
|
|
3
|
-
import { l as logger } from './logger-
|
|
3
|
+
import { l as logger } from './logger-LFr8iPgl.mjs';
|
|
4
4
|
import { s as snapshotTree, k as killSurvivors } from './processTreeSnapshot-CuLJDNC-.mjs';
|
|
5
5
|
|
|
6
6
|
const HAPPY_DEFAULT_ENTRYPOINT = "remote_mobile";
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var claudeAgentSdk = require('@anthropic-ai/claude-agent-sdk');
|
|
4
4
|
var smallFastModel = require('./smallFastModel-D_uxGMo3.cjs');
|
|
5
|
-
var logger = require('./logger-
|
|
5
|
+
var logger = require('./logger-DgBwUSgS.cjs');
|
|
6
6
|
var processTreeSnapshot = require('./processTreeSnapshot-mDbnuojn.cjs');
|
|
7
7
|
|
|
8
8
|
const HAPPY_DEFAULT_ENTRYPOINT = "remote_mobile";
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var logger = require('./logger-
|
|
3
|
+
var logger = require('./logger-DgBwUSgS.cjs');
|
|
4
4
|
var child_process = require('child_process');
|
|
5
5
|
var util = require('util');
|
|
6
6
|
var fs = require('fs/promises');
|
|
7
|
-
var
|
|
8
|
-
var
|
|
7
|
+
var require$$3 = require('crypto');
|
|
8
|
+
var require$$1 = require('path');
|
|
9
9
|
var spawn = require('cross-spawn');
|
|
10
|
-
var projectPath = require('./projectPath-
|
|
10
|
+
var projectPath = require('./projectPath-C3ioB4Bu.cjs');
|
|
11
11
|
var os = require('os');
|
|
12
|
-
var configuration = require('./configuration-
|
|
12
|
+
var configuration = require('./configuration-C8JgseHy.cjs');
|
|
13
13
|
|
|
14
14
|
function run$1(args, options) {
|
|
15
|
-
const RUNNER_PATH =
|
|
15
|
+
const RUNNER_PATH = require$$1.resolve(require$$1.join(projectPath.projectPath(), "scripts", "ripgrep_launcher.cjs"));
|
|
16
16
|
return new Promise((resolve2, reject) => {
|
|
17
17
|
const child = spawn.spawn("node", [RUNNER_PATH, JSON.stringify(args)], {
|
|
18
18
|
stdio: ["pipe", "pipe", "pipe"],
|
|
@@ -43,7 +43,7 @@ function run$1(args, options) {
|
|
|
43
43
|
function getBinaryPath() {
|
|
44
44
|
const platformName = os.platform();
|
|
45
45
|
const binaryName = platformName === "win32" ? "difft.exe" : "difft";
|
|
46
|
-
return
|
|
46
|
+
return require$$1.resolve(require$$1.join(projectPath.projectPath(), "tools", "unpacked", binaryName));
|
|
47
47
|
}
|
|
48
48
|
function run(args, options) {
|
|
49
49
|
const binaryPath = getBinaryPath();
|
|
@@ -80,9 +80,9 @@ function run(args, options) {
|
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
function validatePath(targetPath, workingDirectory) {
|
|
83
|
-
const resolvedTarget =
|
|
84
|
-
const resolvedWorkingDir =
|
|
85
|
-
if (!resolvedTarget.startsWith(resolvedWorkingDir +
|
|
83
|
+
const resolvedTarget = require$$1.resolve(workingDirectory, targetPath);
|
|
84
|
+
const resolvedWorkingDir = require$$1.resolve(workingDirectory);
|
|
85
|
+
if (!resolvedTarget.startsWith(resolvedWorkingDir + require$$1.sep) && resolvedTarget !== resolvedWorkingDir) {
|
|
86
86
|
return {
|
|
87
87
|
valid: false,
|
|
88
88
|
resolvedPath: resolvedTarget,
|
|
@@ -155,9 +155,9 @@ function createUploadFileHandlers(happyHomeDir, now = Date.now, pathQuoteStyle =
|
|
|
155
155
|
const entries = await fs.readdir(dir, { withFileTypes: true }).catch(() => []);
|
|
156
156
|
await Promise.all(entries.map(async (entry) => {
|
|
157
157
|
if (!entry.isFile() || !/^\..+\.[A-Za-z0-9_-]{8,80}\.part$/.test(entry.name)) return;
|
|
158
|
-
const path
|
|
159
|
-
const fileStat = await fs.stat(path
|
|
160
|
-
if (fileStat && fileStat.mtimeMs < cutoff) await fs.unlink(path
|
|
158
|
+
const path = require$$1.join(dir, entry.name);
|
|
159
|
+
const fileStat = await fs.stat(path).catch(() => null);
|
|
160
|
+
if (fileStat && fileStat.mtimeMs < cutoff) await fs.unlink(path).catch(() => {
|
|
161
161
|
});
|
|
162
162
|
}));
|
|
163
163
|
};
|
|
@@ -165,12 +165,12 @@ function createUploadFileHandlers(happyHomeDir, now = Date.now, pathQuoteStyle =
|
|
|
165
165
|
let tempPath = null;
|
|
166
166
|
try {
|
|
167
167
|
const buffer = decodeUploadBase64(data.content, MAX_USER_UPLOAD_BYTES);
|
|
168
|
-
const dir =
|
|
168
|
+
const dir = require$$1.join(happyHomeDir, "uploads", safeSegment(data.subdir, "misc", 80));
|
|
169
169
|
await fs.mkdir(dir, { recursive: true });
|
|
170
170
|
const name = safeFileName(data.name);
|
|
171
|
-
const token =
|
|
172
|
-
const target =
|
|
173
|
-
tempPath =
|
|
171
|
+
const token = require$$3.randomUUID().replace(/-/g, "").slice(0, 12);
|
|
172
|
+
const target = require$$1.join(dir, uniqueFileName(name, token));
|
|
173
|
+
tempPath = require$$1.join(dir, `.${name}.legacy_${require$$3.randomUUID().replace(/-/g, "")}.part`);
|
|
174
174
|
await fs.writeFile(tempPath, buffer, { flag: "wx" });
|
|
175
175
|
await fs.rename(tempPath, target);
|
|
176
176
|
tempPath = null;
|
|
@@ -191,12 +191,12 @@ function createUploadFileHandlers(happyHomeDir, now = Date.now, pathQuoteStyle =
|
|
|
191
191
|
}
|
|
192
192
|
if (active.has(uploadId)) throw new Error("Upload id is already active");
|
|
193
193
|
if (active.size >= MAX_ACTIVE_UPLOADS) throw new Error("Too many active uploads");
|
|
194
|
-
const dir =
|
|
194
|
+
const dir = require$$1.join(happyHomeDir, "uploads", safeSegment(data.subdir, "misc", 80));
|
|
195
195
|
await fs.mkdir(dir, { recursive: true });
|
|
196
196
|
await sweepExpiredFiles(dir);
|
|
197
197
|
const name = safeFileName(data.name);
|
|
198
|
-
const targetPath =
|
|
199
|
-
const tempPath =
|
|
198
|
+
const targetPath = require$$1.join(dir, uniqueFileName(name, require$$3.randomUUID().replace(/-/g, "").slice(0, 12)));
|
|
199
|
+
const tempPath = require$$1.join(dir, `.${name}.${uploadId}.part`);
|
|
200
200
|
await fs.writeFile(tempPath, Buffer.alloc(0), { flag: "wx" });
|
|
201
201
|
active.set(uploadId, { tempPath, targetPath, totalSize: data.totalSize, received: 0, touchedAt: now() });
|
|
202
202
|
return { success: true, size: 0 };
|
|
@@ -333,7 +333,7 @@ function registerCommonHandlers(rpcHandlerManager, workingDirectory) {
|
|
|
333
333
|
if (data.expectedHash !== null && data.expectedHash !== void 0) {
|
|
334
334
|
try {
|
|
335
335
|
const existingBuffer = await fs.readFile(validation.resolvedPath);
|
|
336
|
-
const existingHash =
|
|
336
|
+
const existingHash = require$$3.createHash("sha256").update(existingBuffer).digest("hex");
|
|
337
337
|
if (existingHash !== data.expectedHash) {
|
|
338
338
|
return {
|
|
339
339
|
success: false,
|
|
@@ -366,7 +366,7 @@ function registerCommonHandlers(rpcHandlerManager, workingDirectory) {
|
|
|
366
366
|
}
|
|
367
367
|
const buffer = Buffer.from(data.content, "base64");
|
|
368
368
|
await fs.writeFile(validation.resolvedPath, buffer);
|
|
369
|
-
const hash =
|
|
369
|
+
const hash = require$$3.createHash("sha256").update(buffer).digest("hex");
|
|
370
370
|
return { success: true, hash };
|
|
371
371
|
} catch (error) {
|
|
372
372
|
logger.logger.debug("Failed to write file:", error);
|
|
@@ -387,7 +387,7 @@ function registerCommonHandlers(rpcHandlerManager, workingDirectory) {
|
|
|
387
387
|
const entries = await fs.readdir(directoryPath, { withFileTypes: true });
|
|
388
388
|
const directoryEntries = await Promise.all(
|
|
389
389
|
entries.map(async (entry) => {
|
|
390
|
-
const fullPath =
|
|
390
|
+
const fullPath = require$$1.join(directoryPath, entry.name);
|
|
391
391
|
let type = "other";
|
|
392
392
|
let size;
|
|
393
393
|
let modified;
|
|
@@ -428,26 +428,26 @@ function registerCommonHandlers(rpcHandlerManager, workingDirectory) {
|
|
|
428
428
|
if (!validation.valid) {
|
|
429
429
|
return { success: false, error: validation.error };
|
|
430
430
|
}
|
|
431
|
-
async function buildTree(path
|
|
431
|
+
async function buildTree(path, name, currentDepth) {
|
|
432
432
|
try {
|
|
433
|
-
const stats = await fs.stat(path
|
|
433
|
+
const stats = await fs.stat(path);
|
|
434
434
|
const node = {
|
|
435
435
|
name,
|
|
436
|
-
path
|
|
436
|
+
path,
|
|
437
437
|
type: stats.isDirectory() ? "directory" : "file",
|
|
438
438
|
size: stats.size,
|
|
439
439
|
modified: stats.mtime.getTime()
|
|
440
440
|
};
|
|
441
441
|
if (stats.isDirectory() && currentDepth < data.maxDepth) {
|
|
442
|
-
const entries = await fs.readdir(path
|
|
442
|
+
const entries = await fs.readdir(path, { withFileTypes: true });
|
|
443
443
|
const children = [];
|
|
444
444
|
await Promise.all(
|
|
445
445
|
entries.map(async (entry) => {
|
|
446
446
|
if (entry.isSymbolicLink()) {
|
|
447
|
-
logger.logger.debug(`Skipping symlink: ${
|
|
447
|
+
logger.logger.debug(`Skipping symlink: ${require$$1.join(path, entry.name)}`);
|
|
448
448
|
return;
|
|
449
449
|
}
|
|
450
|
-
const childPath =
|
|
450
|
+
const childPath = require$$1.join(path, entry.name);
|
|
451
451
|
const childNode = await buildTree(childPath, entry.name, currentDepth + 1);
|
|
452
452
|
if (childNode) {
|
|
453
453
|
children.push(childNode);
|
|
@@ -463,7 +463,7 @@ function registerCommonHandlers(rpcHandlerManager, workingDirectory) {
|
|
|
463
463
|
}
|
|
464
464
|
return node;
|
|
465
465
|
} catch (error) {
|
|
466
|
-
logger.logger.debug(`Failed to process ${path
|
|
466
|
+
logger.logger.debug(`Failed to process ${path}:`, error instanceof Error ? error.message : String(error));
|
|
467
467
|
return null;
|
|
468
468
|
}
|
|
469
469
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { l as logger } from './logger-
|
|
1
|
+
import { l as logger } from './logger-LFr8iPgl.mjs';
|
|
2
2
|
import { spawn as spawn$1, exec } from 'child_process';
|
|
3
3
|
import { promisify } from 'util';
|
|
4
4
|
import { mkdir, writeFile, appendFile, stat, rename, unlink, readdir, readFile } from 'fs/promises';
|
|
@@ -7,7 +7,7 @@ import { resolve, join, sep } from 'path';
|
|
|
7
7
|
import { spawn } from 'cross-spawn';
|
|
8
8
|
import { p as projectPath } from './projectPath-BTBIMB57.mjs';
|
|
9
9
|
import { platform } from 'os';
|
|
10
|
-
import { c as configuration } from './configuration-
|
|
10
|
+
import { c as configuration } from './configuration-BPrfb17M.mjs';
|
|
11
11
|
|
|
12
12
|
function run$1(args, options) {
|
|
13
13
|
const RUNNER_PATH = resolve(join(projectPath(), "scripts", "ripgrep_launcher.cjs"));
|
package/dist/{registerKillSessionHandler-qMju0ZfF.cjs → registerKillSessionHandler-7fOm6ooh.cjs}
RENAMED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var logger = require('./logger-
|
|
3
|
+
var logger = require('./logger-DgBwUSgS.cjs');
|
|
4
4
|
require('axios');
|
|
5
5
|
require('node:events');
|
|
6
6
|
require('socket.io-client');
|
|
7
|
-
require('./pushNotifications-
|
|
7
|
+
require('./pushNotifications-BXoOSq_G.cjs');
|
|
8
8
|
require('node:crypto');
|
|
9
9
|
require('tweetnacl');
|
|
10
|
-
require('./configuration-
|
|
11
|
-
require('./index-
|
|
12
|
-
require('./registerCommonHandlers-
|
|
10
|
+
require('./configuration-C8JgseHy.cjs');
|
|
11
|
+
require('./index-Df2eHm3O.cjs');
|
|
12
|
+
require('./registerCommonHandlers-CRjBoJLK.cjs');
|
|
13
13
|
require('os');
|
|
14
14
|
require('child_process');
|
|
15
15
|
require('@paralleldrive/cuid2');
|
|
16
|
-
require('./persistence-
|
|
16
|
+
require('./persistence-BY-D00wT.cjs');
|
|
17
17
|
require('chalk');
|
|
18
18
|
require('./types-CRS-srZK.cjs');
|
|
19
19
|
|
package/dist/{registerKillSessionHandler-PD0jWtQo.mjs → registerKillSessionHandler-DDCKL3wf.mjs}
RENAMED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import { l as logger } from './logger-
|
|
1
|
+
import { l as logger } from './logger-LFr8iPgl.mjs';
|
|
2
2
|
import 'axios';
|
|
3
3
|
import 'node:events';
|
|
4
4
|
import 'socket.io-client';
|
|
5
|
-
import './pushNotifications-
|
|
5
|
+
import './pushNotifications-DXGIhE-A.mjs';
|
|
6
6
|
import 'node:crypto';
|
|
7
7
|
import 'tweetnacl';
|
|
8
|
-
import './configuration-
|
|
9
|
-
import './index-
|
|
10
|
-
import './registerCommonHandlers-
|
|
8
|
+
import './configuration-BPrfb17M.mjs';
|
|
9
|
+
import './index-CeRXrGnH.mjs';
|
|
10
|
+
import './registerCommonHandlers-DF6bdDtd.mjs';
|
|
11
11
|
import 'os';
|
|
12
12
|
import 'child_process';
|
|
13
13
|
import '@paralleldrive/cuid2';
|
|
14
|
-
import './persistence-
|
|
14
|
+
import './persistence-D2Djrf7t.mjs';
|
|
15
15
|
import 'chalk';
|
|
16
16
|
import './types-CkqAACXx.mjs';
|
|
17
17
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { h as resumeDaemonSession, l as listDaemonSessions } from './controlClient-
|
|
2
|
-
import { d as archiveSession, u as unarchiveSession, h as sessionLiveness, e as sendUserMessage, i as readSessionState, o as openUserScopedSocket } from './sessionOps-
|
|
3
|
-
import { d as delay } from './time-
|
|
1
|
+
import { h as resumeDaemonSession, l as listDaemonSessions } from './controlClient-CkNpT5zS.mjs';
|
|
2
|
+
import { d as archiveSession, u as unarchiveSession, h as sessionLiveness, e as sendUserMessage, i as readSessionState, o as openUserScopedSocket } from './sessionOps-DqlftXxe.mjs';
|
|
3
|
+
import { d as delay } from './time-BcoJaG8E.mjs';
|
|
4
4
|
import axios from 'axios';
|
|
5
5
|
import { hostname } from 'node:os';
|
|
6
|
-
import { c as configuration } from './configuration-
|
|
7
|
-
import { r as readSettings, b as readCredentialsForConfiguredRelay } from './persistence-
|
|
6
|
+
import { c as configuration } from './configuration-BPrfb17M.mjs';
|
|
7
|
+
import { r as readSettings, b as readCredentialsForConfiguredRelay } from './persistence-D2Djrf7t.mjs';
|
|
8
8
|
import { randomUUID } from 'node:crypto';
|
|
9
9
|
|
|
10
10
|
const ACTIVE_FRESH_WINDOW_MS = 15 * 60 * 1e3;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var controlClient = require('./controlClient-
|
|
4
|
-
var sessionOps = require('./sessionOps-
|
|
5
|
-
var time = require('./time-
|
|
3
|
+
var controlClient = require('./controlClient-D68Zj7Q-.cjs');
|
|
4
|
+
var sessionOps = require('./sessionOps-DVA-00nR.cjs');
|
|
5
|
+
var time = require('./time-nqa9shu8.cjs');
|
|
6
6
|
var axios = require('axios');
|
|
7
7
|
var os = require('node:os');
|
|
8
|
-
var configuration = require('./configuration-
|
|
9
|
-
var persistence = require('./persistence-
|
|
8
|
+
var configuration = require('./configuration-C8JgseHy.cjs');
|
|
9
|
+
var persistence = require('./persistence-BY-D00wT.cjs');
|
|
10
10
|
var node_crypto = require('node:crypto');
|
|
11
11
|
|
|
12
12
|
const ACTIVE_FRESH_WINDOW_MS = 15 * 60 * 1e3;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { k as AutomationNameSchema, c as AutomationPrecheckSchema, l as AutomationConcurrencySchema, m as AutomationActionSchema, o as AutomationTriggerSchema } from './index-
|
|
3
|
-
import { a as authenticatedAutomationsClient, b as automationRunIdFromEnv } from './client-
|
|
2
|
+
import { k as AutomationNameSchema, c as AutomationPrecheckSchema, l as AutomationConcurrencySchema, m as AutomationActionSchema, o as AutomationTriggerSchema } from './index-CeRXrGnH.mjs';
|
|
3
|
+
import { a as authenticatedAutomationsClient, b as automationRunIdFromEnv } from './client-CXOnzuOy.mjs';
|
|
4
4
|
import { u as updateAutomationChecked, c as createAutomationChecked } from './precheckCompat-DeEbilbr.mjs';
|
|
5
|
-
import { P as ProjectsUnsupportedError, a as ProjectRequestError, s as sharedProjectsClient } from './client-
|
|
6
|
-
import { f as formatContextForTool } from './prompt-
|
|
5
|
+
import { P as ProjectsUnsupportedError, a as ProjectRequestError, s as sharedProjectsClient } from './client-BKyU66lg.mjs';
|
|
6
|
+
import { f as formatContextForTool } from './prompt-QHuFx9j6.mjs';
|
|
7
7
|
import { R as REPORT_PROGRESS_TOOL_NAME, d as REPORT_PROGRESS_TOOL_TITLE, e as REPORT_PROGRESS_TOOL_DESCRIPTION } from './agentGuidance-BDYt2Qy2.mjs';
|
|
8
8
|
|
|
9
9
|
const AUTOMATION_TOOL_NAMES = [
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var z = require('zod');
|
|
4
|
-
var index = require('./index-
|
|
5
|
-
var client = require('./client-
|
|
4
|
+
var index = require('./index-Df2eHm3O.cjs');
|
|
5
|
+
var client = require('./client-D_U2VjO3.cjs');
|
|
6
6
|
var precheckCompat = require('./precheckCompat-CWOi5c9L.cjs');
|
|
7
|
-
var client$1 = require('./client-
|
|
8
|
-
var prompt = require('./prompt-
|
|
7
|
+
var client$1 = require('./client-DWs6k041.cjs');
|
|
8
|
+
var prompt = require('./prompt-Bof2aQkI.cjs');
|
|
9
9
|
var agentGuidance = require('./agentGuidance-BtBx2xxE.cjs');
|
|
10
10
|
|
|
11
11
|
const AUTOMATION_TOOL_NAMES = [
|
|
@@ -11,7 +11,7 @@ Use the team_* tools in a managed Very Happy session. If absent, explain that th
|
|
|
11
11
|
|
|
12
12
|
Start with team_inspect if already assigned. Otherwise team_create or team_join connects the current session. A scoped worker cannot create another root identity or use account-wide tools to bypass its scope.
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
A team lead delegates by default (see the lead playbook). A member works itself when delegation would add needless overhead. Delegate independent work with a clear goal and acceptance criteria. When delegating within your assignment, pass its parentTaskId. Members may delegate further within their existing authority. After delegating child work, wait for those results instead of continuing parallel edits yourself. Waiting parents yield their execution slot to their children; the team limit counts progressing leaf assignments, not OS processes.
|
|
15
15
|
|
|
16
16
|
Name exactly one integrator for each team. Workers edit only their assigned worktrees; they must not merge main, publish releases, change global daemon or npm installations, or allocate shared backlog IDs. The integrator serializes these operations. Across teams, the owner coordinates shared resources: a worktree is not a global lock.
|
|
17
17
|
|
|
@@ -25,6 +25,17 @@ A root member may create a persistent schedule for itself with the schedule tool
|
|
|
25
25
|
|
|
26
26
|
On restart inspect authoritative state and messages before taking new actions. Do not invent completed work from a previous context. Scope credentials are runtime-owned; never read, print, or copy them into prompts.
|
|
27
27
|
`;
|
|
28
|
+
const TEAM_LEAD_PLAYBOOK = `## Lead playbook
|
|
29
|
+
You coordinate; members do the work. Follow these defaults unless the user says otherwise.
|
|
30
|
+
1. Delegate first. You split, assign, decide, review and report. Do not write code yourself; only tiny bookkeeping edits are yours. Every file you read or edit spends the context you need to coordinate.
|
|
31
|
+
2. Run work in parallel. Delegate independent pieces to different members at the same time, within the team's parallel limit (team_inspect shows maxParallel). Accept or return submissions promptly to free slots. Give follow-up work to the member who already worked on that area (assigneeBotId); it keeps the context.
|
|
32
|
+
3. Prevent conflicts. Before delegating, name the files or modules each task will touch. Give work on the same area to one member in sequence, or agree the boundary and who rebases onto whom before both start. Relay overlaps between members yourself. Merges are serialized and yours.
|
|
33
|
+
4. Keep the team context. When the user gives a new instruction, or you make a decision, assign work, accept or return a result, or agree a conflict rule, record it at once with mcp__happy__project_note (kind decision, finding or handoff) in the team's project. After a context compaction or restart, read mcp__happy__project_context (full=true) and team_inspect before acting. If it answers "not in a project", ask the user to link this team to a project on the team page.
|
|
34
|
+
5. Write complete task briefs. Each goal states the background with the user's own words, what to do, acceptance criteria, boundaries (no merging, releasing or touching production unless the user authorized it), and the evidence to hand back (tests, screenshots, CI).
|
|
35
|
+
6. Review before accepting. A submission is not completion: check its evidence before team_accept. With team_return, say exactly what is wrong and how to fix it. Have a different member re-review security-sensitive changes. An idle member is neither done nor stuck; run team_inspect before chasing it.
|
|
36
|
+
7. Communicate briefly. Set recipientBotId on every team_message; without it the message goes to the task's assignee. Report to the user conclusion first, with only what they must decide or know.
|
|
37
|
+
8. Never create a team to recover. If a team tool says this session has no team or no team scope, do not call team_create or team_join: run team_inspect, or tell the user and wait.`;
|
|
38
|
+
const TEAM_MEMBER_RULES = `Before starting, read the team's project context with mcp__happy__project_context; it returns "not in a project" when the team has none. Do only what your task asks. If your work overlaps another member's or needs a wider scope, tell your lead with team_message (recipientBotId = the lead) before going further. Submit with evidence: commands and results, artifact paths, screenshots or CI links.`;
|
|
28
39
|
const PI_TEAMS_EXTENSION = `// Managed by Very Happy Agent Teams.
|
|
29
40
|
export default async function(pi) {
|
|
30
41
|
const managed = !!process.env.HAPPY_MCP_URL;
|
|
@@ -45,7 +56,15 @@ export default async function(pi) {
|
|
|
45
56
|
const usage = ctx.getContextUsage?.();
|
|
46
57
|
const contextWindow = usage?.contextWindow ?? ctx.model?.contextWindow;
|
|
47
58
|
if (!(contextWindow > 0)) return;
|
|
48
|
-
|
|
59
|
+
// B-727: model + same-id registry entries let the wrapper tell pi's 128k default from a configured window.
|
|
60
|
+
const model = typeof ctx.model?.id === 'string' ? ctx.model.id.slice(0, 200) : null;
|
|
61
|
+
const provider = typeof ctx.model?.provider === 'string' ? ctx.model.provider.slice(0, 200) : null;
|
|
62
|
+
let peers = [];
|
|
63
|
+
try {
|
|
64
|
+
const bare = model ? model.split('/').pop() : null;
|
|
65
|
+
peers = (ctx.modelRegistry?.getAll?.() || []).filter(m => m && m.provider !== provider && (m.id === model || m.id === bare) && m.contextWindow > 0).slice(0, 8).map(m => ({provider:String(m.provider).slice(0, 200), contextWindow:m.contextWindow}));
|
|
66
|
+
} catch {}
|
|
67
|
+
const snapshot = {source:'pi', tokens:usage?.tokens ?? null, contextWindow, model, provider, event:name, peers};
|
|
49
68
|
reporting = reporting.catch(() => {}).then(async () => {
|
|
50
69
|
try { await fetch(contextEndpoint, {method:'POST', redirect:'error', headers:{'content-type':'application/json'}, body:JSON.stringify(snapshot), signal:AbortSignal.timeout(2000)}); } catch {}
|
|
51
70
|
});
|
|
@@ -147,4 +166,6 @@ export default async function(pi) {
|
|
|
147
166
|
`;
|
|
148
167
|
|
|
149
168
|
exports.PI_TEAMS_EXTENSION = PI_TEAMS_EXTENSION;
|
|
169
|
+
exports.TEAM_LEAD_PLAYBOOK = TEAM_LEAD_PLAYBOOK;
|
|
170
|
+
exports.TEAM_MEMBER_RULES = TEAM_MEMBER_RULES;
|
|
150
171
|
exports.TEAM_SKILL = TEAM_SKILL;
|
|
@@ -9,7 +9,7 @@ Use the team_* tools in a managed Very Happy session. If absent, explain that th
|
|
|
9
9
|
|
|
10
10
|
Start with team_inspect if already assigned. Otherwise team_create or team_join connects the current session. A scoped worker cannot create another root identity or use account-wide tools to bypass its scope.
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
A team lead delegates by default (see the lead playbook). A member works itself when delegation would add needless overhead. Delegate independent work with a clear goal and acceptance criteria. When delegating within your assignment, pass its parentTaskId. Members may delegate further within their existing authority. After delegating child work, wait for those results instead of continuing parallel edits yourself. Waiting parents yield their execution slot to their children; the team limit counts progressing leaf assignments, not OS processes.
|
|
13
13
|
|
|
14
14
|
Name exactly one integrator for each team. Workers edit only their assigned worktrees; they must not merge main, publish releases, change global daemon or npm installations, or allocate shared backlog IDs. The integrator serializes these operations. Across teams, the owner coordinates shared resources: a worktree is not a global lock.
|
|
15
15
|
|
|
@@ -23,6 +23,17 @@ A root member may create a persistent schedule for itself with the schedule tool
|
|
|
23
23
|
|
|
24
24
|
On restart inspect authoritative state and messages before taking new actions. Do not invent completed work from a previous context. Scope credentials are runtime-owned; never read, print, or copy them into prompts.
|
|
25
25
|
`;
|
|
26
|
+
const TEAM_LEAD_PLAYBOOK = `## Lead playbook
|
|
27
|
+
You coordinate; members do the work. Follow these defaults unless the user says otherwise.
|
|
28
|
+
1. Delegate first. You split, assign, decide, review and report. Do not write code yourself; only tiny bookkeeping edits are yours. Every file you read or edit spends the context you need to coordinate.
|
|
29
|
+
2. Run work in parallel. Delegate independent pieces to different members at the same time, within the team's parallel limit (team_inspect shows maxParallel). Accept or return submissions promptly to free slots. Give follow-up work to the member who already worked on that area (assigneeBotId); it keeps the context.
|
|
30
|
+
3. Prevent conflicts. Before delegating, name the files or modules each task will touch. Give work on the same area to one member in sequence, or agree the boundary and who rebases onto whom before both start. Relay overlaps between members yourself. Merges are serialized and yours.
|
|
31
|
+
4. Keep the team context. When the user gives a new instruction, or you make a decision, assign work, accept or return a result, or agree a conflict rule, record it at once with mcp__happy__project_note (kind decision, finding or handoff) in the team's project. After a context compaction or restart, read mcp__happy__project_context (full=true) and team_inspect before acting. If it answers "not in a project", ask the user to link this team to a project on the team page.
|
|
32
|
+
5. Write complete task briefs. Each goal states the background with the user's own words, what to do, acceptance criteria, boundaries (no merging, releasing or touching production unless the user authorized it), and the evidence to hand back (tests, screenshots, CI).
|
|
33
|
+
6. Review before accepting. A submission is not completion: check its evidence before team_accept. With team_return, say exactly what is wrong and how to fix it. Have a different member re-review security-sensitive changes. An idle member is neither done nor stuck; run team_inspect before chasing it.
|
|
34
|
+
7. Communicate briefly. Set recipientBotId on every team_message; without it the message goes to the task's assignee. Report to the user conclusion first, with only what they must decide or know.
|
|
35
|
+
8. Never create a team to recover. If a team tool says this session has no team or no team scope, do not call team_create or team_join: run team_inspect, or tell the user and wait.`;
|
|
36
|
+
const TEAM_MEMBER_RULES = `Before starting, read the team's project context with mcp__happy__project_context; it returns "not in a project" when the team has none. Do only what your task asks. If your work overlaps another member's or needs a wider scope, tell your lead with team_message (recipientBotId = the lead) before going further. Submit with evidence: commands and results, artifact paths, screenshots or CI links.`;
|
|
26
37
|
const PI_TEAMS_EXTENSION = `// Managed by Very Happy Agent Teams.
|
|
27
38
|
export default async function(pi) {
|
|
28
39
|
const managed = !!process.env.HAPPY_MCP_URL;
|
|
@@ -43,7 +54,15 @@ export default async function(pi) {
|
|
|
43
54
|
const usage = ctx.getContextUsage?.();
|
|
44
55
|
const contextWindow = usage?.contextWindow ?? ctx.model?.contextWindow;
|
|
45
56
|
if (!(contextWindow > 0)) return;
|
|
46
|
-
|
|
57
|
+
// B-727: model + same-id registry entries let the wrapper tell pi's 128k default from a configured window.
|
|
58
|
+
const model = typeof ctx.model?.id === 'string' ? ctx.model.id.slice(0, 200) : null;
|
|
59
|
+
const provider = typeof ctx.model?.provider === 'string' ? ctx.model.provider.slice(0, 200) : null;
|
|
60
|
+
let peers = [];
|
|
61
|
+
try {
|
|
62
|
+
const bare = model ? model.split('/').pop() : null;
|
|
63
|
+
peers = (ctx.modelRegistry?.getAll?.() || []).filter(m => m && m.provider !== provider && (m.id === model || m.id === bare) && m.contextWindow > 0).slice(0, 8).map(m => ({provider:String(m.provider).slice(0, 200), contextWindow:m.contextWindow}));
|
|
64
|
+
} catch {}
|
|
65
|
+
const snapshot = {source:'pi', tokens:usage?.tokens ?? null, contextWindow, model, provider, event:name, peers};
|
|
47
66
|
reporting = reporting.catch(() => {}).then(async () => {
|
|
48
67
|
try { await fetch(contextEndpoint, {method:'POST', redirect:'error', headers:{'content-type':'application/json'}, body:JSON.stringify(snapshot), signal:AbortSignal.timeout(2000)}); } catch {}
|
|
49
68
|
});
|
|
@@ -144,4 +163,4 @@ export default async function(pi) {
|
|
|
144
163
|
}
|
|
145
164
|
`;
|
|
146
165
|
|
|
147
|
-
export { PI_TEAMS_EXTENSION as P, TEAM_SKILL as T };
|
|
166
|
+
export { PI_TEAMS_EXTENSION as P, TEAM_SKILL as T, TEAM_LEAD_PLAYBOOK as a, TEAM_MEMBER_RULES as b };
|