very-happy-cli 0.2.203 → 0.2.205
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-CAMuhS0Z.mjs → AcpBackend-BqkDMgcN.mjs} +3 -3
- package/dist/{AcpBackend-DReFgpYD.cjs → AcpBackend-Do37yiZg.cjs} +3 -3
- package/dist/{AcpSessionManager-BZKM-sCt.cjs → AcpSessionManager-BpQKu2_m.cjs} +2 -2
- package/dist/{AcpSessionManager-CJOxMFCF.mjs → AcpSessionManager-CvEO7Yex.mjs} +2 -2
- package/dist/{BasePermissionHandler-BgX73mQ5.mjs → BasePermissionHandler-BpaIn9ko.mjs} +1 -1
- package/dist/{BasePermissionHandler-BBR9Gkob.cjs → BasePermissionHandler-CUXi-tq4.cjs} +1 -1
- package/dist/{account-hy0rztXY.mjs → account-C1nsl3ij.mjs} +11 -11
- package/dist/{account-41PkJ9nx.cjs → account-SwG5Yefp.cjs} +11 -11
- package/dist/{accountService-DEpIq6CF.mjs → accountService-CqrWNH8K.mjs} +4 -4
- package/dist/{accountService-Cns8UYGI.cjs → accountService-SOeB_21A.cjs} +4 -4
- package/dist/{acpSessionResume-DmOPXKpC.cjs → acpSessionResume-BCEol11N.cjs} +1 -1
- package/dist/{acpSessionResume-5El4xksf.mjs → acpSessionResume-DvDKsJTV.mjs} +1 -1
- package/dist/{agentHome-BXaVMqHX.cjs → agentHome-8wzmbm0H.cjs} +4 -4
- package/dist/{agentHome-DUxArmak.mjs → agentHome-BuFxooEg.mjs} +4 -4
- package/dist/{api-D8ZDxBWw.mjs → api-20GbdpxY.mjs} +107 -18
- package/dist/{api-ChhFBuB0.cjs → api-BnTF8fkj.cjs} +107 -18
- package/dist/{apiMachine-qav2pnk5.mjs → apiMachine-C8NGJHHd.mjs} +105 -21
- package/dist/{apiMachine-MPwddFXq.cjs → apiMachine-cyDRM_S-.cjs} +105 -21
- package/dist/{attachmentContent-f5gwnv9J.cjs → attachmentContent-B7zz_LPF.cjs} +2 -2
- package/dist/{attachmentContent-BfSQxccA.mjs → attachmentContent-Coo9lUxK.mjs} +2 -2
- package/dist/{auth-BxNuFv_0.mjs → auth-75rP3vc0.mjs} +8 -8
- package/dist/{auth-xW7SDE_7.mjs → auth-BX6xrdHv.mjs} +5 -5
- package/dist/{auth-thi2T_T8.cjs → auth-By6u_iKB.cjs} +5 -5
- package/dist/{auth-DkPAHXLj.cjs → auth-w4UTRbIf.cjs} +8 -8
- package/dist/{auto-DmXTwayU.mjs → auto-BhmWtRvv.mjs} +18 -18
- package/dist/{auto-BiRlQ4tm.cjs → auto-xr_gqUoy.cjs} +18 -18
- package/dist/{bootstrap-EGhaCmXy.cjs → bootstrap-3ti7LXMz.cjs} +2 -2
- package/dist/{bootstrap-pGaFGbWO.mjs → bootstrap-Dn_VvHSt.mjs} +2 -2
- package/dist/{browser-DSxpOnPb.cjs → browser-C4PVyjGe.cjs} +1 -1
- package/dist/{browser-BYSYzXvP.mjs → browser-C4wWGXH7.mjs} +1 -1
- package/dist/{claudeAccountEnv-Btp39mfa.cjs → claudeAccountEnv-BTZjHTpF.cjs} +1 -1
- package/dist/{claudeAccountEnv-DowsOlDB.mjs → claudeAccountEnv-C6Wl-ZbT.mjs} +1 -1
- package/dist/{claudeLocal-bDarWqaU.mjs → claudeLocal-B8rOA-EB.mjs} +5 -5
- package/dist/{claudeLocal-ClqHmkk6.cjs → claudeLocal-DZALKVVc.cjs} +5 -5
- package/dist/{claudeLocalLauncher-Bxi0_eW9.cjs → claudeLocalLauncher-Bf5uj0EA.cjs} +10 -10
- package/dist/{claudeLocalLauncher-Ccpj2KgW.mjs → claudeLocalLauncher-CJPRSv3z.mjs} +10 -10
- package/dist/claudeLongContext-BR_zdjUp.cjs +239 -0
- package/dist/claudeLongContext-CZ60xo5p.mjs +219 -0
- package/dist/{claudeSessionFork-Cize0Y2T.mjs → claudeSessionFork-BK4U655i.mjs} +1 -1
- package/dist/{claudeSessionFork-nyNFjgaf.cjs → claudeSessionFork-unEBLW0t.cjs} +1 -1
- package/dist/{client-Cddb1dhi.cjs → client-BKjBr6pc.cjs} +2 -2
- package/dist/{client-Wr_BiOon.mjs → client-BbYds4AV.mjs} +16 -7
- package/dist/{client-CMKgB-76.cjs → client-Bh-y6cVc.cjs} +16 -7
- package/dist/{client-DO8DNDC3.mjs → client-BxtaglBR.mjs} +2 -2
- package/dist/{client-CgMVIP7v.mjs → client-CvLm25Wq.mjs} +2 -2
- package/dist/{client-6Y6O72Uq.cjs → client-DGsdLx8L.cjs} +2 -2
- package/dist/{client-CX8kRedW.mjs → client-m-K1b6Qa.mjs} +3 -3
- package/dist/{client-DP8FabOE.cjs → client-wMlUPnrV.cjs} +3 -3
- package/dist/codex/happyMcpStdioBridge.cjs +20 -19
- package/dist/codex/happyMcpStdioBridge.mjs +20 -19
- package/dist/{codexAccount-CieIQLOX.mjs → codexAccount-BPQ-lPhH.mjs} +1 -1
- package/dist/{codexAccount-D-OBY29W.cjs → codexAccount-BjaHvmKH.cjs} +1 -1
- package/dist/{codexAppServerClient-EzrHWYhX.cjs → codexAppServerClient-6aQelpRl.cjs} +3 -3
- package/dist/{codexAppServerClient-D-cD2Dfj.mjs → codexAppServerClient-BeRimnu9.mjs} +3 -3
- package/dist/{codexCommand-BMcXtvU3.cjs → codexCommand-CYVaGmhh.cjs} +67 -56
- package/dist/{codexCommand-D79GnRhB.mjs → codexCommand-CmGNDs45.mjs} +67 -56
- package/dist/{codexTermination-CF6xiFbb.cjs → codexTermination-B09HyYIB.cjs} +1 -1
- package/dist/{codexTermination-CK1MYJT7.mjs → codexTermination-Z18pGkkl.mjs} +1 -1
- package/dist/{config-Crn1mNgr.mjs → config-4b-sF37g.mjs} +3 -3
- package/dist/{config-F6zSRyk2.cjs → config-Dq_N615Z.cjs} +3 -3
- package/dist/{configuration-Cl9kOv09.cjs → configuration-Fx61b4MJ.cjs} +1 -1
- package/dist/{configuration-i9MVy0a5.mjs → configuration-H8q1sMwk.mjs} +1 -1
- package/dist/{connect-CiA13Xm4.mjs → connect-BwSwKPzI.mjs} +13 -13
- package/dist/{connect-ClklWmnI.cjs → connect-D54AnDIT.cjs} +13 -13
- package/dist/{context-DvdZsGgl.mjs → context-CM1Xd_HO.mjs} +1 -1
- package/dist/{context-BxODP3mG.cjs → context-D-QOcYuX.cjs} +1 -1
- package/dist/{controlClient-DxCQKfqe.cjs → controlClient-D04wXKoQ.cjs} +12 -3
- package/dist/{controlClient-D6vqMUfi.mjs → controlClient-D9DYqW02.mjs} +12 -4
- package/dist/{createSessionMetadata-BuAVB-xI.mjs → createSessionMetadata-CHa4pufa.mjs} +2 -2
- package/dist/{createSessionMetadata-B_NZvmhm.cjs → createSessionMetadata-Ce539QXK.cjs} +2 -2
- package/dist/{daemonAccounts-ciidbU2h.cjs → daemonAccounts-BOoI7-sw.cjs} +2 -2
- package/dist/{daemonAccounts-D5shoCLt.mjs → daemonAccounts-BtkmoJmC.mjs} +3 -3
- package/dist/{defaultPermissionMode-DgeiMMqy.mjs → defaultPermissionMode-CYQi7vqJ.mjs} +1 -1
- package/dist/{defaultPermissionMode-Cs_Tv83b.cjs → defaultPermissionMode-DmLYaaL8.cjs} +1 -1
- package/dist/{deterministicJson-B9XrEawW.mjs → deterministicJson-BEeXnWCF.mjs} +62 -20
- package/dist/{deterministicJson-kM2OdGZu.cjs → deterministicJson-D34CnNHO.cjs} +61 -19
- package/dist/{doctor-HHS4YegX.mjs → doctor-BI0Iywt_.mjs} +7 -7
- package/dist/{doctor-DiPRqsqg.cjs → doctor-BX8oWKZq.cjs} +7 -7
- package/dist/{downloadTarget-Cd8hx54t.mjs → downloadTarget-DX3m00OE.mjs} +6 -6
- package/dist/{downloadTarget-osB-mGh0.cjs → downloadTarget-TzXJEh6W.cjs} +6 -6
- package/dist/{ensureDaemonRunning-C0iDtuL7.mjs → ensureDaemonRunning-BBBqZ6vQ.mjs} +5 -5
- package/dist/{ensureDaemonRunning-CtBvPHVB.cjs → ensureDaemonRunning-Bvu-yyFn.cjs} +5 -5
- package/dist/exitNotice-M4UjtWkr.cjs +95 -0
- package/dist/exitNotice-gOAdDcL3.mjs +84 -0
- package/dist/{forkBackfill-DYIjlN1Z.mjs → forkBackfill-C9EfJ64O.mjs} +28 -2
- package/dist/{forkBackfill-8eLDeS73.cjs → forkBackfill-D2WW91fz.cjs} +28 -1
- package/dist/{format-B5V7ie8N.cjs → format-BEktLc45.cjs} +1 -1
- package/dist/{format-Dc5zMslz.mjs → format-BPAREVhi.mjs} +1 -1
- package/dist/{handleResumeCommand-vcD2qcAM.cjs → handleResumeCommand-6dYW_WOi.cjs} +5 -5
- package/dist/{handleResumeCommand-xrOAA1qI.mjs → handleResumeCommand-DziiqogX.mjs} +5 -5
- package/dist/{index-iFVMrlPo.mjs → index-BRq5iitn.mjs} +4 -4
- package/dist/{index-44o_qMvE.cjs → index-BYL_X3gP.cjs} +27 -6
- package/dist/{index-AyDwQ6FG.cjs → index-BmacwzcK.cjs} +45 -44
- package/dist/{index-D0rCXp-e.cjs → index-Cawt-fgZ.cjs} +4 -4
- package/dist/{index-C_ePuQwB.cjs → index-CoW4RNEb.cjs} +3 -3
- package/dist/{index-B7pKBIcn.mjs → index-CzBvl9py.mjs} +3 -3
- package/dist/{index-DIKJMfs2.mjs → index-DCvq8Cfw.mjs} +4 -4
- package/dist/{index-CiRMvS73.mjs → index-DWk-WTU-.mjs} +24 -7
- package/dist/{index-B7CXMlrz.mjs → index-UuWDafdi.mjs} +46 -45
- package/dist/{index-Cl-WkB_6.cjs → index-bVMcFi7v.cjs} +4 -4
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/dist/{install-yqS4y1cm.mjs → install-B4OVUIw5.mjs} +3 -3
- package/dist/{install-BgBgsOlS.cjs → install-BQc4Hwuo.cjs} +3 -3
- package/dist/{issue-D7liK6bR.cjs → issue-WpLZYxUQ.cjs} +8 -8
- package/dist/{issue-aKZd7J55.mjs → issue-h_BIrzLs.mjs} +8 -8
- package/dist/lib.cjs +12 -12
- package/dist/lib.d.cts +42 -1
- package/dist/lib.d.mts +42 -1
- package/dist/lib.mjs +12 -12
- package/dist/{localHappyAgentAuth-Dm9obisi.cjs → localHappyAgentAuth-DQRWBUxQ.cjs} +1 -1
- package/dist/{localHappyAgentAuth-B2JJxlE9.mjs → localHappyAgentAuth-DgLh3xzW.mjs} +1 -1
- package/dist/{logger-BiKmiREe.mjs → logger-BKAKIZdy.mjs} +2 -2
- package/dist/{logger-BtWBoP60.cjs → logger-DP35yx-C.cjs} +2 -2
- package/dist/{machineMetadata-C0-LyMsb.cjs → machineMetadata-CZj0XwM_.cjs} +3 -3
- package/dist/{machineMetadata-CiyO9wm-.mjs → machineMetadata-DTlMMhj_.mjs} +3 -3
- package/dist/{main-BP2TBnp5.mjs → main-BIE1zeaH.mjs} +48 -48
- package/dist/{main-C7hKf5hG.cjs → main-l_nP9IQq.cjs} +48 -48
- package/dist/{mcp-Cn4k-PXb.mjs → mcp-B5F6-_7o.mjs} +20 -18
- package/dist/{mcp-DO00rr9n.cjs → mcp-KQHODyR3.cjs} +20 -18
- package/dist/{mirrorProtocol-DDtEN49F.mjs → mirrorProtocol-DDOUSWqL.mjs} +3 -3
- package/dist/{mirrorProtocol-DwO8QgLM.cjs → mirrorProtocol-duXHJeBW.cjs} +3 -3
- package/dist/{package-Djdgx8nb.cjs → package-BCJfNMlt.cjs} +7 -7
- package/dist/{package-CIW5lwaN.mjs → package-CMmhJwSf.mjs} +7 -7
- package/dist/{panels-BpfVEvwF.mjs → panels-BWxZMb_x.mjs} +5 -5
- package/dist/{panels-DMLtEOtJ.cjs → panels-CBlIJIu8.cjs} +5 -5
- package/dist/{peerTools-fYuKq3ev.cjs → peerTools-C6Y28jqG.cjs} +5 -5
- package/dist/{peerTools-CQ60fUPp.mjs → peerTools-ZJzoM48N.mjs} +5 -5
- package/dist/{persistence-D_zVC4Xz.mjs → persistence-dLgWDclq.mjs} +2 -2
- package/dist/{persistence-BOEZtiKb.cjs → persistence-iiVFxhbt.cjs} +2 -2
- package/dist/{piRunnerArgs-DE_YXvS1.mjs → piRunnerArgs-DuWYye4f.mjs} +1 -1
- package/dist/{piRunnerArgs-Dz9P62db.cjs → piRunnerArgs-DxWxgOSZ.cjs} +1 -1
- package/dist/{piRuntime-Du62fjeU.cjs → piRuntime-6UnkPaS1.cjs} +1 -1
- package/dist/{piRuntime-8SbpRmNA.mjs → piRuntime-Cbwk6bN0.mjs} +1 -1
- package/dist/{piTerminal-CGAw7WDW.cjs → piTerminal-BaoUqlM0.cjs} +22 -20
- package/dist/{piTerminal-Cl45kac0.mjs → piTerminal-Dn0qN9nb.mjs} +22 -20
- package/dist/{pushNotifications-RVpbqrxR.mjs → pushNotifications-DD9Z0CoN.mjs} +17 -3
- package/dist/{pushNotifications-B19lT5mY.cjs → pushNotifications-gcQv61e6.cjs} +17 -3
- package/dist/{query-CNWdX2r5.cjs → query-12momZSq.cjs} +1 -1
- package/dist/{query-DBRR3TOO.mjs → query-CFdlRD7b.mjs} +1 -1
- package/dist/{rateLimitWindows-DX5y23x_.mjs → rateLimitWindows-CVS-btq-.mjs} +1 -1
- package/dist/{rateLimitWindows-mfdokrkQ.cjs → rateLimitWindows-D2Gmg7jU.cjs} +1 -1
- package/dist/{reconnectGate-B8ltzSJD.cjs → reconnectGate-BkSaZdIx.cjs} +1 -1
- package/dist/{reconnectGate-DSxYUCWy.mjs → reconnectGate-m81ySKhh.mjs} +1 -1
- package/dist/{registerCommonHandlers-Y2siJGwL.cjs → registerCommonHandlers-B5p3ZZmp.cjs} +2 -2
- package/dist/{registerCommonHandlers-CQDRKlkG.mjs → registerCommonHandlers-CqLHkmG2.mjs} +2 -2
- package/dist/{registerKillSessionHandler-B0pMZOdH.cjs → registerKillSessionHandler-Bf_Q9yii.cjs} +6 -6
- package/dist/{registerKillSessionHandler-U4Dxtohy.mjs → registerKillSessionHandler-jYSuGIP1.mjs} +6 -6
- package/dist/{registerSideQuestionHandler-DM1QqTxf.mjs → registerSideQuestionHandler-CPR29B9d.mjs} +4 -4
- package/dist/{registerSideQuestionHandler--ruKhCdY.cjs → registerSideQuestionHandler-DSIw3xPW.cjs} +4 -4
- package/dist/{remoteSessionClient-T-Raoiy6.mjs → remoteSessionClient-CLuxs0_y.mjs} +5 -5
- package/dist/{remoteSessionClient-CjINaEs_.cjs → remoteSessionClient-DX-60nto.cjs} +5 -5
- package/dist/{reportProgressTool-DDfL1OY7.cjs → reportProgressTool-D1XAxeY1.cjs} +5 -5
- package/dist/{reportProgressTool-Stg0xrjF.mjs → reportProgressTool-k3g3D6cX.mjs} +5 -5
- package/dist/{run-Dq48xBtw.mjs → run-BBJqaIoY.mjs} +200 -55
- package/dist/{run-BoSVfVCZ.cjs → run-DOb_agpA.cjs} +200 -55
- package/dist/{runClaude-D8ScJdJU.cjs → runClaude-BU3Lrd5o.cjs} +53 -38
- package/dist/{runClaude-CJe5atrS.mjs → runClaude-NTvReMNp.mjs} +44 -29
- package/dist/{runClaudeDeps-4RFRR4cY.cjs → runClaudeDeps-DQV-QdDi.cjs} +129 -61
- package/dist/{runClaudeDeps-CL3goCXG.mjs → runClaudeDeps-Dh2LVY2w.mjs} +125 -57
- package/dist/{runGemini-DZv6jPxV.mjs → runGemini-CGD4bqQ3.mjs} +36 -35
- package/dist/{runGemini-BcbNxgsA.cjs → runGemini-dk877ztP.cjs} +36 -35
- package/dist/{runOpenClaw-CRqCoj-_.mjs → runOpenClaw-6MAJ_tHi.mjs} +18 -18
- package/dist/{runOpenClaw-BeSivE0X.cjs → runOpenClaw-CQakHPPq.cjs} +18 -18
- package/dist/{sandbox-xflHChws.cjs → sandbox-8DeDre0R.cjs} +4 -4
- package/dist/{sandbox-DAvJJZcV.mjs → sandbox-B3YMD9I6.mjs} +4 -4
- package/dist/selfCheck-BCKIF6ST.mjs +89 -0
- package/dist/{selfCheck-DZwdgBg0.cjs → selfCheck-BpvUNBmv.cjs} +40 -40
- package/dist/{send-ConAuYqL.cjs → send-Bym_IU4n.cjs} +8 -8
- package/dist/{send-Co_l_Nmg.mjs → send-DgrbVZzC.mjs} +8 -8
- package/dist/{server-by6kezmM.cjs → server-BY-FubRe.cjs} +6 -6
- package/dist/{server-D1Qrmxl7.mjs → server-CmAgeEhS.mjs} +4 -4
- package/dist/{sessionLock-DFrwAnwR.mjs → sessionLock-BMtAQ4bW.mjs} +21 -4
- package/dist/{sessionLock-Db_uQcUP.cjs → sessionLock-WXtjQC9q.cjs} +22 -3
- package/dist/{sessionOps-CptDjoZi.cjs → sessionOps-BEVzE38e.cjs} +4 -4
- package/dist/{sessionOps-C7nps7qG.mjs → sessionOps-BxLhHEhM.mjs} +4 -4
- package/dist/{sessionProvider-BaJq1AnY.mjs → sessionProvider-B1tL5K5f.mjs} +10 -10
- package/dist/{sessionProvider-D9nsAE14.cjs → sessionProvider-DCnZFxwe.cjs} +10 -10
- package/dist/{sessionScanner-BOb33NVJ.mjs → sessionScanner-Ctm9w-AJ.mjs} +3 -3
- package/dist/{sessionScanner-C6OVO0Ne.cjs → sessionScanner-eX2f-j0u.cjs} +3 -3
- package/dist/{sessions-qVHDXJa6.cjs → sessions-BG8r7uht.cjs} +10 -10
- package/dist/{sessions-GCql_3Dl.mjs → sessions-BuxOqRcc.mjs} +10 -10
- package/dist/{setupOfflineReconnection-B8QKqc9a.cjs → setupOfflineReconnection-65k1yEFn.cjs} +2 -2
- package/dist/{setupOfflineReconnection-lu0YbS7m.mjs → setupOfflineReconnection-Dd4NCN9i.mjs} +2 -2
- package/dist/{spawn-tL-724RS.cjs → spawn-0YaC-DQg.cjs} +15 -15
- package/dist/{spawn-C9NSlg99.mjs → spawn-wys_MPgK.mjs} +15 -15
- package/dist/{spawnAgents-BclZYkov.mjs → spawnAgents-CcFKtKdX.mjs} +2 -1
- package/dist/{spawnAgents-DvbEDCIq.cjs → spawnAgents-D4lR468W.cjs} +2 -1
- package/dist/{spawnHappyCLI-D7EO8s4E.cjs → spawnHappyCLI-Bf_N42fi.cjs} +1 -1
- package/dist/{spawnHappyCLI-jXUKLUT5.mjs → spawnHappyCLI-EvPb0jB3.mjs} +1 -1
- package/dist/{startFileWatcher-C7eFs4hA.mjs → startFileWatcher-GF4BNFA1.mjs} +1 -1
- package/dist/{startFileWatcher-6NpLGxg5.cjs → startFileWatcher-ikipjpDk.cjs} +1 -1
- package/dist/{startupSessionCreate-C5wdvraY.cjs → startupSessionCreate-CHU23k6u.cjs} +3 -3
- package/dist/{startupSessionCreate-D3ph1DtL.mjs → startupSessionCreate-Dp3_kvi_.mjs} +3 -3
- package/dist/{store-Cpb1LMNW.cjs → store-DGMILdMn.cjs} +1 -1
- package/dist/{store-DWmjM4Ex.mjs → store-Fge1h9wy.mjs} +1 -1
- package/dist/{streamRelay-DdGOsW8v.mjs → streamRelay-MaaYNNuh.mjs} +1 -1
- package/dist/{streamRelay-4XiiNB3N.cjs → streamRelay-keuifCPQ.cjs} +1 -1
- package/dist/{sync-BIXH8ijr.mjs → sync-Co0wRhGu.mjs} +1 -1
- package/dist/{sync-ni64k2OI.cjs → sync-Dm6GaS8P.cjs} +1 -1
- package/dist/{systemPrompt-B_vnlIr1.mjs → systemPrompt-5cZbY0sf.mjs} +2 -2
- package/dist/{systemPrompt-DuoULaqr.cjs → systemPrompt-Ds7HcfDZ.cjs} +2 -2
- package/dist/{teams-CsR_8p3Q.mjs → teams-DBWFUOC3.mjs} +20 -9
- package/dist/{teams-DLfcbOMh.cjs → teams-nrcZL-1X.cjs} +20 -9
- package/dist/{template-3fV9bi0X.cjs → template-ChUotPTL.cjs} +1 -1
- package/dist/{template-CtRLg2PG.mjs → template-D8fzlO58.mjs} +1 -1
- package/dist/{time-Che8GhII.mjs → time-Cn0mV-di.mjs} +1 -1
- package/dist/{time-BMCY7zJL.cjs → time-NSglRbyr.cjs} +1 -1
- package/dist/{titleGenerator-HVEN1e7o.cjs → titleGenerator-CMIUB04_.cjs} +3 -3
- package/dist/{titleGenerator-B9LckLDq.mjs → titleGenerator-hmxUR3rU.mjs} +2 -2
- package/dist/{todo-bc7db5NN.mjs → todo-CDdBityL.mjs} +8 -8
- package/dist/{todo-B8byb_cy.cjs → todo-D5BoNMb7.cjs} +8 -8
- package/dist/{tools-BAMaBbbP.mjs → tools-BmQbzAfY.mjs} +1 -1
- package/dist/{tools--RN1SFkD.cjs → tools-CLkNfafW.cjs} +1 -1
- package/dist/{uninstall-UC0Q8YTj.cjs → uninstall-DCx_qNMZ.cjs} +3 -3
- package/dist/{uninstall-Dv4C-W9z.mjs → uninstall-DE0SH2qs.mjs} +3 -3
- package/dist/{wrapperAccount-nGGMJDBF.cjs → wrapperAccount-BHMM9I6g.cjs} +2 -2
- package/dist/{wrapperAccount-z8Swrd08.mjs → wrapperAccount-CwaA-n1S.mjs} +2 -2
- package/package.json +7 -7
- package/dist/permissionMode-CH4FoZfU.mjs +0 -80
- package/dist/permissionMode-CrV-XuMs.cjs +0 -87
- package/dist/selfCheck-BKOIROoJ.mjs +0 -89
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
var chalk = require('chalk');
|
|
4
4
|
var os = require('os');
|
|
5
5
|
var require$$1 = require('path');
|
|
6
|
-
var persistence = require('./persistence-
|
|
7
|
-
var api = require('./api-
|
|
8
|
-
var configuration = require('./configuration-
|
|
6
|
+
var persistence = require('./persistence-iiVFxhbt.cjs');
|
|
7
|
+
var api = require('./api-BnTF8fkj.cjs');
|
|
8
|
+
var configuration = require('./configuration-Fx61b4MJ.cjs');
|
|
9
9
|
var http = require('http');
|
|
10
10
|
var require$$3 = require('crypto');
|
|
11
|
-
var browser = require('./browser-
|
|
11
|
+
var browser = require('./browser-C4PVyjGe.cjs');
|
|
12
12
|
var child_process = require('child_process');
|
|
13
13
|
var util = require('util');
|
|
14
14
|
require('node:fs/promises');
|
|
@@ -17,29 +17,29 @@ require('zod');
|
|
|
17
17
|
require('./authRelay-Dy1qU9td.cjs');
|
|
18
18
|
require('node:crypto');
|
|
19
19
|
require('tweetnacl');
|
|
20
|
-
require('./logger-
|
|
20
|
+
require('./logger-DP35yx-C.cjs');
|
|
21
21
|
require('node:util');
|
|
22
22
|
require('node:path');
|
|
23
23
|
require('axios');
|
|
24
|
-
require('./pushNotifications-
|
|
25
|
-
require('./index-
|
|
24
|
+
require('./pushNotifications-gcQv61e6.cjs');
|
|
25
|
+
require('./index-BYL_X3gP.cjs');
|
|
26
26
|
require('@paralleldrive/cuid2');
|
|
27
27
|
require('./contentLogMetadata-ZSFk_NjQ.cjs');
|
|
28
|
-
require('./reconnectGate-
|
|
28
|
+
require('./reconnectGate-BkSaZdIx.cjs');
|
|
29
29
|
require('node:events');
|
|
30
30
|
require('socket.io-client');
|
|
31
31
|
require('./limits-C-a7gr04.cjs');
|
|
32
|
-
require('./time-
|
|
33
|
-
require('./registerCommonHandlers-
|
|
32
|
+
require('./time-NSglRbyr.cjs');
|
|
33
|
+
require('./registerCommonHandlers-B5p3ZZmp.cjs');
|
|
34
34
|
require('fs/promises');
|
|
35
35
|
require('cross-spawn');
|
|
36
36
|
require('./projectPath-C3ioB4Bu.cjs');
|
|
37
37
|
require('url');
|
|
38
|
-
require('./sync-
|
|
38
|
+
require('./sync-Dm6GaS8P.cjs');
|
|
39
39
|
require('./backgroundTaskActivity-CBvUdj39.cjs');
|
|
40
|
-
require('./controlClient-
|
|
40
|
+
require('./controlClient-D04wXKoQ.cjs');
|
|
41
41
|
require('node:os');
|
|
42
|
-
require('./package-
|
|
42
|
+
require('./package-BCJfNMlt.cjs');
|
|
43
43
|
require('open');
|
|
44
44
|
|
|
45
45
|
const CLIENT_ID$2 = "app_EMoamEEZ73f0CkXaXp7hrann";
|
|
@@ -3,7 +3,7 @@ import { constants } from 'node:fs';
|
|
|
3
3
|
import { isAbsolute, join, dirname } from 'node:path';
|
|
4
4
|
import { randomUUID } from 'node:crypto';
|
|
5
5
|
import { z } from 'zod';
|
|
6
|
-
import { n as normalizeHttpEndpoint, c as configuration } from './configuration-
|
|
6
|
+
import { n as normalizeHttpEndpoint, c as configuration } from './configuration-H8q1sMwk.mjs';
|
|
7
7
|
|
|
8
8
|
const TeamScopeSchema = z.object({
|
|
9
9
|
serverUrl: z.string(),
|
|
@@ -5,7 +5,7 @@ var node_fs = require('node:fs');
|
|
|
5
5
|
var path = require('node:path');
|
|
6
6
|
var node_crypto = require('node:crypto');
|
|
7
7
|
var z = require('zod');
|
|
8
|
-
var configuration = require('./configuration-
|
|
8
|
+
var configuration = require('./configuration-Fx61b4MJ.cjs');
|
|
9
9
|
|
|
10
10
|
const TeamScopeSchema = z.z.object({
|
|
11
11
|
serverUrl: z.z.string(),
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var logger = require('./logger-
|
|
4
|
-
var persistence = require('./persistence-
|
|
5
|
-
var configuration = require('./configuration-
|
|
3
|
+
var logger = require('./logger-DP35yx-C.cjs');
|
|
4
|
+
var persistence = require('./persistence-iiVFxhbt.cjs');
|
|
5
|
+
var configuration = require('./configuration-Fx61b4MJ.cjs');
|
|
6
6
|
|
|
7
7
|
function daemonControlHeaders(controlToken) {
|
|
8
8
|
return {
|
|
@@ -132,6 +132,14 @@ async function restartDaemonSession(sessionId) {
|
|
|
132
132
|
if (result?.success === true && typeof result.sessionId === "string") return { success: true, sessionId: result.sessionId };
|
|
133
133
|
return { success: false, error: "unexpected daemon response" };
|
|
134
134
|
}
|
|
135
|
+
async function exitDaemonTeamMode(sessionId) {
|
|
136
|
+
const result = await daemonPost("/team-exit-session", { sessionId });
|
|
137
|
+
if (result?.error) {
|
|
138
|
+
const raw = String(result.error);
|
|
139
|
+
return { success: false, error: ROUTE_NOT_FOUND_RE.test(raw) ? "daemon too old to exit team mode; upgrade very-happy-cli and run `very-happy daemon start`" : raw.replace(/^Request failed: \/team-exit-session, /, "") };
|
|
140
|
+
}
|
|
141
|
+
return result?.success === true ? result : { success: false, error: "unexpected daemon response" };
|
|
142
|
+
}
|
|
135
143
|
async function notifyDaemonSessionEvent(sessionId, event, spawnedBy) {
|
|
136
144
|
return daemonPost("/session-event", { sessionId, event, spawnedBy });
|
|
137
145
|
}
|
|
@@ -314,6 +322,7 @@ async function checkDaemonHibernation(body) {
|
|
|
314
322
|
exports.checkDaemonHibernation = checkDaemonHibernation;
|
|
315
323
|
exports.checkIfDaemonRunningAndCleanupStaleState = checkIfDaemonRunningAndCleanupStaleState;
|
|
316
324
|
exports.cleanupDaemonState = cleanupDaemonState;
|
|
325
|
+
exports.exitDaemonTeamMode = exitDaemonTeamMode;
|
|
317
326
|
exports.getDaemonAgentProfiles = getDaemonAgentProfiles;
|
|
318
327
|
exports.isDaemonRunningCurrentlyInstalledHappyVersion = isDaemonRunningCurrentlyInstalledHappyVersion;
|
|
319
328
|
exports.listDaemonPeers = listDaemonPeers;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { l as logger } from './logger-
|
|
2
|
-
import { d as readDaemonState, f as clearDaemonState } from './persistence-
|
|
3
|
-
import { c as configuration } from './configuration-
|
|
1
|
+
import { l as logger } from './logger-BKAKIZdy.mjs';
|
|
2
|
+
import { d as readDaemonState, f as clearDaemonState } from './persistence-dLgWDclq.mjs';
|
|
3
|
+
import { c as configuration } from './configuration-H8q1sMwk.mjs';
|
|
4
4
|
|
|
5
5
|
function daemonControlHeaders(controlToken) {
|
|
6
6
|
return {
|
|
@@ -130,6 +130,14 @@ async function restartDaemonSession(sessionId) {
|
|
|
130
130
|
if (result?.success === true && typeof result.sessionId === "string") return { success: true, sessionId: result.sessionId };
|
|
131
131
|
return { success: false, error: "unexpected daemon response" };
|
|
132
132
|
}
|
|
133
|
+
async function exitDaemonTeamMode(sessionId) {
|
|
134
|
+
const result = await daemonPost("/team-exit-session", { sessionId });
|
|
135
|
+
if (result?.error) {
|
|
136
|
+
const raw = String(result.error);
|
|
137
|
+
return { success: false, error: ROUTE_NOT_FOUND_RE.test(raw) ? "daemon too old to exit team mode; upgrade very-happy-cli and run `very-happy daemon start`" : raw.replace(/^Request failed: \/team-exit-session, /, "") };
|
|
138
|
+
}
|
|
139
|
+
return result?.success === true ? result : { success: false, error: "unexpected daemon response" };
|
|
140
|
+
}
|
|
133
141
|
async function notifyDaemonSessionEvent(sessionId, event, spawnedBy) {
|
|
134
142
|
return daemonPost("/session-event", { sessionId, event, spawnedBy });
|
|
135
143
|
}
|
|
@@ -309,4 +317,4 @@ async function checkDaemonHibernation(body) {
|
|
|
309
317
|
};
|
|
310
318
|
}
|
|
311
319
|
|
|
312
|
-
export { checkIfDaemonRunningAndCleanupStaleState as a, pushFilePreviewViaDaemon as b, checkDaemonHibernation as c, setTerminalTitleViaDaemon as d, spawnDaemonSession as e, stopDaemonSession as f, getDaemonAgentProfiles as g,
|
|
320
|
+
export { checkIfDaemonRunningAndCleanupStaleState as a, pushFilePreviewViaDaemon as b, checkDaemonHibernation as c, setTerminalTitleViaDaemon as d, spawnDaemonSession as e, stopDaemonSession as f, getDaemonAgentProfiles as g, exitDaemonTeamMode as h, isDaemonRunningCurrentlyInstalledHappyVersion as i, listDaemonPeers as j, resumeDaemonSession as k, listDaemonSessions as l, reportRateLimitsToDaemon as m, notifyDaemonSessionStarted as n, listDaemonSessionsWithInfo as o, pushClipboardViaDaemon as p, reportSessionEditToDaemon as q, restartDaemonSession as r, stopDaemon as s, notifyDaemonTurnEvent as t, notifyDaemonBackgroundTasks as u, notifyDaemonSessionEvent as v, notifyDaemonClaudeAuthFailed as w, cleanupDaemonState as x };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import os from 'node:os';
|
|
2
2
|
import { resolve, isAbsolute, dirname } from 'node:path';
|
|
3
|
-
import { c as configuration } from './configuration-
|
|
3
|
+
import { c as configuration } from './configuration-H8q1sMwk.mjs';
|
|
4
4
|
import { p as projectPath } from './projectPath-BTBIMB57.mjs';
|
|
5
|
-
import { p as packageJson } from './package-
|
|
5
|
+
import { p as packageJson } from './package-CMmhJwSf.mjs';
|
|
6
6
|
import { existsSync, readFileSync, statSync } from 'node:fs';
|
|
7
7
|
|
|
8
8
|
const realFs = {
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
var os = require('node:os');
|
|
4
4
|
var path = require('node:path');
|
|
5
|
-
var configuration = require('./configuration-
|
|
5
|
+
var configuration = require('./configuration-Fx61b4MJ.cjs');
|
|
6
6
|
var projectPath = require('./projectPath-C3ioB4Bu.cjs');
|
|
7
|
-
var _package = require('./package-
|
|
7
|
+
var _package = require('./package-BCJfNMlt.cjs');
|
|
8
8
|
var node_fs = require('node:fs');
|
|
9
9
|
|
|
10
10
|
const realFs = {
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
var node_fs = require('node:fs');
|
|
4
4
|
var pty = require('node-pty');
|
|
5
|
-
var store = require('./store-
|
|
5
|
+
var store = require('./store-DGMILdMn.cjs');
|
|
6
6
|
require('node:os');
|
|
7
7
|
require('node:path');
|
|
8
|
-
require('./index-
|
|
8
|
+
require('./index-BYL_X3gP.cjs');
|
|
9
9
|
require('zod');
|
|
10
10
|
require('@paralleldrive/cuid2');
|
|
11
11
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { watchFile, unwatchFile } from 'node:fs';
|
|
2
2
|
import * as pty from 'node-pty';
|
|
3
|
-
import { g as accountsPath, p as providersPath } from './store-
|
|
4
|
-
export { S as SPAWN_ACCOUNT_ENV } from './store-
|
|
3
|
+
import { g as accountsPath, p as providersPath } from './store-Fge1h9wy.mjs';
|
|
4
|
+
export { S as SPAWN_ACCOUNT_ENV } from './store-Fge1h9wy.mjs';
|
|
5
5
|
import 'node:os';
|
|
6
6
|
import 'node:path';
|
|
7
|
-
import './index-
|
|
7
|
+
import './index-DWk-WTU-.mjs';
|
|
8
8
|
import 'zod';
|
|
9
9
|
import '@paralleldrive/cuid2';
|
|
10
10
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { u as RUN_INTENT_RPC, v as RunIntentRequestSchema, w as nextRunIntents, x as readEffortIntent, y as readModelIntent } from './index-
|
|
1
|
+
import { u as RUN_INTENT_RPC, v as RunIntentRequestSchema, w as nextRunIntents, x as readEffortIntent, y as readModelIntent } from './index-DWk-WTU-.mjs';
|
|
2
2
|
|
|
3
3
|
function currentRunIntents(metadata) {
|
|
4
4
|
return {
|
|
@@ -1,34 +1,35 @@
|
|
|
1
|
-
import { l as logger } from './logger-
|
|
1
|
+
import { l as logger } from './logger-BKAKIZdy.mjs';
|
|
2
2
|
import { p as prependToMessage, b as buildDigestLine, a as buildFirstTurnPrefix } from './prompt-QHuFx9j6.mjs';
|
|
3
|
-
import { P as ProjectsUnsupportedError } from './client-
|
|
4
|
-
import { s as sharedIssuesClient, I as IssuesUnsupportedError } from './client-
|
|
3
|
+
import { P as ProjectsUnsupportedError } from './client-BxtaglBR.mjs';
|
|
4
|
+
import { s as sharedIssuesClient, I as IssuesUnsupportedError } from './client-m-K1b6Qa.mjs';
|
|
5
5
|
import { r as readSessionIssueMetadata } from './sessionMetadata-C1eoAi89.mjs';
|
|
6
|
-
import { c as configuration, f as ensurePrivateDirectorySync, w as writePrivateFileSync } from './configuration-
|
|
6
|
+
import { c as configuration, f as ensurePrivateDirectorySync, w as writePrivateFileSync } from './configuration-H8q1sMwk.mjs';
|
|
7
7
|
import { join, dirname } from 'node:path';
|
|
8
|
-
import { readdirSync, statSync, unlinkSync, readFileSync, constants } from 'node:fs';
|
|
9
|
-
import {
|
|
8
|
+
import { readdirSync, statSync, unlinkSync, readFileSync, existsSync, constants } from 'node:fs';
|
|
9
|
+
import { r as readTeamExitMarker, T as TEAM_LANGUAGE_RULE_HEADING, a as teamLanguageRule, b as TEAM_LANGUAGES, c as teamLanguageReminder, d as detectTeamUserLanguage, e as createTeamExitNotice } from './exitNotice-gOAdDcL3.mjs';
|
|
10
|
+
import { d as createSelfReportState, A as AUTOMATION_TOOL_NAMES, P as PROJECT_TOOL_NAMES, I as ISSUE_TOOL_NAMES, r as registerAutomationTools, a as registerProjectTools, e as createProjectToolExecutor, b as registerIssueTools, f as createIssueToolExecutor, c as registerReportProgressTool, n as normalizeAttention, g as normalizePhase, h as normalizeProgress, s as shouldAcceptSelfReport } from './reportProgressTool-k3g3D6cX.mjs';
|
|
10
11
|
import { homedir } from 'node:os';
|
|
11
12
|
import { z } from 'zod';
|
|
12
13
|
import { p as piAgentDir } from './pi-CqyoZMjI.mjs';
|
|
13
14
|
import { unlink, mkdir, open, rename } from 'node:fs/promises';
|
|
14
15
|
import { randomUUID, createHash } from 'node:crypto';
|
|
15
|
-
import { T as TeamConnectionPreflightError, S as SessionInOtherTeamError, c as createTeamsClient, t as teamRequest } from './client-
|
|
16
|
-
import { t as teamScopePath, r as readTeamScope } from './context-
|
|
17
|
-
import { g as waitForSessionKey, e as sendUserMessage } from './sessionOps-
|
|
16
|
+
import { T as TeamConnectionPreflightError, S as SessionInOtherTeamError, c as createTeamsClient, t as teamRequest } from './client-BbYds4AV.mjs';
|
|
17
|
+
import { t as teamScopePath, r as readTeamScope } from './context-CM1Xd_HO.mjs';
|
|
18
|
+
import { g as waitForSessionKey, e as sendUserMessage } from './sessionOps-BxLhHEhM.mjs';
|
|
18
19
|
import { T as TEAM_SKILL, a as TEAM_LEAD_PLAYBOOK } from './resources-CLP_MpK4.mjs';
|
|
19
|
-
import { T as TEAM_TOOL_NAMES, r as registerTeamsTools } from './tools-
|
|
20
|
-
import { S as SESSION_PEER_TOOL_NAMES, r as registerSessionPeerTools, a as createSessionPeerToolExecutor } from './peerTools-
|
|
20
|
+
import { T as TEAM_TOOL_NAMES, r as registerTeamsTools } from './tools-BmQbzAfY.mjs';
|
|
21
|
+
import { S as SESSION_PEER_TOOL_NAMES, r as registerSessionPeerTools, a as createSessionPeerToolExecutor } from './peerTools-ZJzoM48N.mjs';
|
|
21
22
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
22
23
|
import { createServer } from 'node:http';
|
|
23
24
|
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
24
25
|
import { C as CLIPBOARD_TOOL_NAME, a as CLIPBOARD_TOOL_TITLE, b as CLIPBOARD_TOOL_DESCRIPTION, c as CLIPBOARD_MAX_BYTES } from './limits-DIo7rEBR.mjs';
|
|
25
|
-
import { A as ASSISTANT_TOOL_NAMES, a as registerAssistantTools, c as checkDownloadTarget } from './downloadTarget-
|
|
26
|
+
import { A as ASSISTANT_TOOL_NAMES, a as registerAssistantTools, c as checkDownloadTarget } from './downloadTarget-DX3m00OE.mjs';
|
|
26
27
|
import { P as PREVIEW_TOOL_NAME, R as REPORT_PROGRESS_TOOL_NAME, a as PREVIEW_TOOL_TITLE, b as PREVIEW_TOOL_DESCRIPTION, c as PREVIEW_DOWNLOAD_PARAM_DESCRIPTION } from './agentGuidance-BDYt2Qy2.mjs';
|
|
27
28
|
import { n as normalizeWebPanels, w as webPanelPath } from './webPanels-B2_C2-3g.mjs';
|
|
28
|
-
import { b as readCredentialsForConfiguredRelay, r as readSettings } from './persistence-
|
|
29
|
-
import { g as getSessionNotificationBody } from './pushNotifications-
|
|
29
|
+
import { b as readCredentialsForConfiguredRelay, r as readSettings } from './persistence-dLgWDclq.mjs';
|
|
30
|
+
import { g as getSessionNotificationBody } from './pushNotifications-DD9Z0CoN.mjs';
|
|
30
31
|
import { c as checkPreviewPath } from './previewPath-CXN4Vag0.mjs';
|
|
31
|
-
import {
|
|
32
|
+
import { a7 as ATTENTION_DISABLED_ERROR, a8 as ATTENTION_LIMITS, a9 as ownerBoardPostToRest, aa as isAttentionBoardLocalId, ab as OwnerBoardPostInputSchema, ac as OwnerBoardUpdateInputSchema, ad as OwnerBoardResolveInputSchema, ae as OwnerBoardListInputSchema, af as ATTENTION_SESSION_CAPABILITY } from './index-DWk-WTU-.mjs';
|
|
32
33
|
import { createHash as createHash$1 } from 'crypto';
|
|
33
34
|
|
|
34
35
|
function buildIssueDigestLine(issue, entries) {
|
|
@@ -48,14 +49,14 @@ function buildIssueDigestLine(issue, entries) {
|
|
|
48
49
|
if (!parts.length) return null;
|
|
49
50
|
return `[Issue ${issue.key} ${parts.join("; ")}]`;
|
|
50
51
|
}
|
|
51
|
-
const SESSION_ID = /^[A-Za-z0-9_-]{1,128}$/;
|
|
52
|
+
const SESSION_ID$1 = /^[A-Za-z0-9_-]{1,128}$/;
|
|
52
53
|
const ISSUE_DIGEST_CURSOR_TTL_MS = 30 * 24 * 36e5;
|
|
53
54
|
function fileIssueDigestCursorStore(home, now = Date.now) {
|
|
54
55
|
const dir = join(home, "issues", "digest");
|
|
55
56
|
let pruned = false;
|
|
56
57
|
return {
|
|
57
58
|
read(sessionId) {
|
|
58
|
-
if (!SESSION_ID.test(sessionId)) return null;
|
|
59
|
+
if (!SESSION_ID$1.test(sessionId)) return null;
|
|
59
60
|
try {
|
|
60
61
|
const asOf = JSON.parse(readFileSync(join(dir, `${sessionId}.json`), "utf8")).asOf;
|
|
61
62
|
return typeof asOf === "number" && Number.isFinite(asOf) ? asOf : null;
|
|
@@ -64,7 +65,7 @@ function fileIssueDigestCursorStore(home, now = Date.now) {
|
|
|
64
65
|
}
|
|
65
66
|
},
|
|
66
67
|
write(sessionId, asOf) {
|
|
67
|
-
if (!SESSION_ID.test(sessionId)) return;
|
|
68
|
+
if (!SESSION_ID$1.test(sessionId)) return;
|
|
68
69
|
try {
|
|
69
70
|
ensurePrivateDirectorySync(dir);
|
|
70
71
|
writePrivateFileSync(join(dir, `${sessionId}.json`), JSON.stringify({ asOf }));
|
|
@@ -122,6 +123,39 @@ function createIssueDigest(deps) {
|
|
|
122
123
|
};
|
|
123
124
|
}
|
|
124
125
|
|
|
126
|
+
const SESSION_ID = /^[a-zA-Z0-9_-]{1,128}$/;
|
|
127
|
+
const ENVELOPE = "[Very Happy team message ";
|
|
128
|
+
const BOARD_LINE = /^\[Briefing board\].*\n?/gm;
|
|
129
|
+
function teamLanguageMarkerPath(home, sessionId) {
|
|
130
|
+
return join(home, "teams", "language", `${sessionId}.json`);
|
|
131
|
+
}
|
|
132
|
+
function backfillLanguage(message) {
|
|
133
|
+
if (message.includes(ENVELOPE)) return TEAM_LANGUAGES.find((language) => message.includes(teamLanguageReminder(language))) ?? null;
|
|
134
|
+
return detectTeamUserLanguage(message.replace(BOARD_LINE, ""));
|
|
135
|
+
}
|
|
136
|
+
function createTeamLanguageBackfill(deps) {
|
|
137
|
+
const home = deps.home ?? configuration.happyHomeDir;
|
|
138
|
+
const scopeFile = deps.scopeFile ?? ((sid) => process.env.VH_TEAM_SCOPE_FILE || join(home, "teams", "scopes", `${sid}.json`));
|
|
139
|
+
return {
|
|
140
|
+
/** `source` is the message before other injections: their text says nothing about the user's language. */
|
|
141
|
+
decorate(message, source) {
|
|
142
|
+
const sid = deps.sessionId();
|
|
143
|
+
if (!sid || !SESSION_ID.test(sid)) return message;
|
|
144
|
+
const marker = teamLanguageMarkerPath(home, sid);
|
|
145
|
+
if (existsSync(marker) || !existsSync(scopeFile(sid)) || readTeamExitMarker(home, sid)) return message;
|
|
146
|
+
const hasRule = source.includes(TEAM_LANGUAGE_RULE_HEADING);
|
|
147
|
+
try {
|
|
148
|
+
ensurePrivateDirectorySync(join(home, "teams", "language"));
|
|
149
|
+
writePrivateFileSync(marker, JSON.stringify({ at: Date.now(), via: hasRule ? "prompt" : "backfill" }));
|
|
150
|
+
} catch (error) {
|
|
151
|
+
logger.debug(`[teams] language rule not recorded, skipping it: ${String(error)}`);
|
|
152
|
+
return message;
|
|
153
|
+
}
|
|
154
|
+
return hasRule ? message : prependToMessage(message, teamLanguageRule(backfillLanguage(source)));
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
|
|
125
159
|
function createProjectInjector(deps) {
|
|
126
160
|
const timeoutMs = deps.timeoutMs ?? 1500;
|
|
127
161
|
const now = deps.now ?? Date.now;
|
|
@@ -132,6 +166,8 @@ function createProjectInjector(deps) {
|
|
|
132
166
|
let lastPresenceVersion = null;
|
|
133
167
|
const label = (id) => titles.get(id) ?? id.slice(0, 8);
|
|
134
168
|
const issueDigest = deps.issueDigest === void 0 ? createIssueDigest({ sessionId: deps.sessionId, metadata: () => deps.metadata?.() ?? null, timeoutMs }) : deps.issueDigest;
|
|
169
|
+
const teamExitNotice = deps.teamExitNotice === void 0 ? createTeamExitNotice({ sessionId: deps.sessionId }) : deps.teamExitNotice;
|
|
170
|
+
const teamLanguageBackfill = deps.teamLanguageBackfill === void 0 ? createTeamLanguageBackfill({ sessionId: deps.sessionId }) : deps.teamLanguageBackfill;
|
|
135
171
|
function withTimeout(p) {
|
|
136
172
|
return Promise.race([p, new Promise((_, reject) => setTimeout(() => reject(new Error("project injection timeout")), timeoutMs).unref?.())]);
|
|
137
173
|
}
|
|
@@ -203,7 +239,11 @@ function createProjectInjector(deps) {
|
|
|
203
239
|
},
|
|
204
240
|
async decorate(message) {
|
|
205
241
|
if (typeof message !== "string") return message;
|
|
206
|
-
const withIssue = async (text) =>
|
|
242
|
+
const withIssue = async (text) => {
|
|
243
|
+
const digested = issueDigest ? await issueDigest.decorate(text) : text;
|
|
244
|
+
const noticed = teamExitNotice ? teamExitNotice.decorate(digested) : digested;
|
|
245
|
+
return teamLanguageBackfill ? teamLanguageBackfill.decorate(noticed, message) : noticed;
|
|
246
|
+
};
|
|
207
247
|
const sid = deps.sessionId();
|
|
208
248
|
if (!sid || deps.client.isDisabled()) return await withIssue(message);
|
|
209
249
|
let out = message;
|
|
@@ -362,7 +402,9 @@ function createTeamAdoption(sessionId) {
|
|
|
362
402
|
|
|
363
403
|
This session is now connected as the team lead. Call team_inspect to read the authoritative state before continuing the user's goal. Do not call team_create or team_join again.
|
|
364
404
|
|
|
365
|
-
${TEAM_LEAD_PLAYBOOK}
|
|
405
|
+
${TEAM_LEAD_PLAYBOOK}
|
|
406
|
+
|
|
407
|
+
${teamLanguageRule(null)}`;
|
|
366
408
|
if (!intent.guidanceDelivered) {
|
|
367
409
|
const key = await waitForSessionKey(sessionId, 1e4);
|
|
368
410
|
await sendUserMessage(sessionId, key, instructions, "teams", { localId: `teams-adopt-${input.requestId}`, sentFrom: "team" });
|
|
@@ -1,36 +1,37 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var logger = require('./logger-
|
|
3
|
+
var logger = require('./logger-DP35yx-C.cjs');
|
|
4
4
|
var prompt = require('./prompt-Bof2aQkI.cjs');
|
|
5
|
-
var client$1 = require('./client-
|
|
6
|
-
var client = require('./client-
|
|
5
|
+
var client$1 = require('./client-BKjBr6pc.cjs');
|
|
6
|
+
var client = require('./client-wMlUPnrV.cjs');
|
|
7
7
|
var sessionMetadata = require('./sessionMetadata-B44cL4Xj.cjs');
|
|
8
|
-
var configuration = require('./configuration-
|
|
8
|
+
var configuration = require('./configuration-Fx61b4MJ.cjs');
|
|
9
9
|
var path = require('node:path');
|
|
10
10
|
var node_fs = require('node:fs');
|
|
11
|
-
var
|
|
11
|
+
var exitNotice = require('./exitNotice-M4UjtWkr.cjs');
|
|
12
|
+
var reportProgressTool = require('./reportProgressTool-D1XAxeY1.cjs');
|
|
12
13
|
var os = require('node:os');
|
|
13
14
|
var z = require('zod');
|
|
14
15
|
var pi = require('./pi-DlsrPCTa.cjs');
|
|
15
16
|
var promises = require('node:fs/promises');
|
|
16
17
|
var node_crypto = require('node:crypto');
|
|
17
|
-
var client$2 = require('./client-
|
|
18
|
-
var context = require('./context-
|
|
19
|
-
var sessionOps = require('./sessionOps-
|
|
18
|
+
var client$2 = require('./client-Bh-y6cVc.cjs');
|
|
19
|
+
var context = require('./context-D-QOcYuX.cjs');
|
|
20
|
+
var sessionOps = require('./sessionOps-BEVzE38e.cjs');
|
|
20
21
|
var resources = require('./resources-BZ_Be0qM.cjs');
|
|
21
|
-
var tools = require('./tools
|
|
22
|
-
var peerTools = require('./peerTools-
|
|
22
|
+
var tools = require('./tools-CLkNfafW.cjs');
|
|
23
|
+
var peerTools = require('./peerTools-C6Y28jqG.cjs');
|
|
23
24
|
var mcp_js = require('@modelcontextprotocol/sdk/server/mcp.js');
|
|
24
25
|
var node_http = require('node:http');
|
|
25
26
|
var streamableHttp_js = require('@modelcontextprotocol/sdk/server/streamableHttp.js');
|
|
26
27
|
var limits = require('./limits-C-a7gr04.cjs');
|
|
27
|
-
var downloadTarget = require('./downloadTarget-
|
|
28
|
+
var downloadTarget = require('./downloadTarget-TzXJEh6W.cjs');
|
|
28
29
|
var agentGuidance = require('./agentGuidance-BtBx2xxE.cjs');
|
|
29
30
|
var webPanels = require('./webPanels-FCgFKvVe.cjs');
|
|
30
|
-
var persistence = require('./persistence-
|
|
31
|
-
var pushNotifications = require('./pushNotifications-
|
|
31
|
+
var persistence = require('./persistence-iiVFxhbt.cjs');
|
|
32
|
+
var pushNotifications = require('./pushNotifications-gcQv61e6.cjs');
|
|
32
33
|
var previewPath = require('./previewPath-B0rBdhy1.cjs');
|
|
33
|
-
var index = require('./index-
|
|
34
|
+
var index = require('./index-BYL_X3gP.cjs');
|
|
34
35
|
var require$$3 = require('crypto');
|
|
35
36
|
|
|
36
37
|
function buildIssueDigestLine(issue, entries) {
|
|
@@ -50,14 +51,14 @@ function buildIssueDigestLine(issue, entries) {
|
|
|
50
51
|
if (!parts.length) return null;
|
|
51
52
|
return `[Issue ${issue.key} ${parts.join("; ")}]`;
|
|
52
53
|
}
|
|
53
|
-
const SESSION_ID = /^[A-Za-z0-9_-]{1,128}$/;
|
|
54
|
+
const SESSION_ID$1 = /^[A-Za-z0-9_-]{1,128}$/;
|
|
54
55
|
const ISSUE_DIGEST_CURSOR_TTL_MS = 30 * 24 * 36e5;
|
|
55
56
|
function fileIssueDigestCursorStore(home, now = Date.now) {
|
|
56
57
|
const dir = path.join(home, "issues", "digest");
|
|
57
58
|
let pruned = false;
|
|
58
59
|
return {
|
|
59
60
|
read(sessionId) {
|
|
60
|
-
if (!SESSION_ID.test(sessionId)) return null;
|
|
61
|
+
if (!SESSION_ID$1.test(sessionId)) return null;
|
|
61
62
|
try {
|
|
62
63
|
const asOf = JSON.parse(node_fs.readFileSync(path.join(dir, `${sessionId}.json`), "utf8")).asOf;
|
|
63
64
|
return typeof asOf === "number" && Number.isFinite(asOf) ? asOf : null;
|
|
@@ -66,7 +67,7 @@ function fileIssueDigestCursorStore(home, now = Date.now) {
|
|
|
66
67
|
}
|
|
67
68
|
},
|
|
68
69
|
write(sessionId, asOf) {
|
|
69
|
-
if (!SESSION_ID.test(sessionId)) return;
|
|
70
|
+
if (!SESSION_ID$1.test(sessionId)) return;
|
|
70
71
|
try {
|
|
71
72
|
configuration.ensurePrivateDirectorySync(dir);
|
|
72
73
|
configuration.writePrivateFileSync(path.join(dir, `${sessionId}.json`), JSON.stringify({ asOf }));
|
|
@@ -124,6 +125,39 @@ function createIssueDigest(deps) {
|
|
|
124
125
|
};
|
|
125
126
|
}
|
|
126
127
|
|
|
128
|
+
const SESSION_ID = /^[a-zA-Z0-9_-]{1,128}$/;
|
|
129
|
+
const ENVELOPE = "[Very Happy team message ";
|
|
130
|
+
const BOARD_LINE = /^\[Briefing board\].*\n?/gm;
|
|
131
|
+
function teamLanguageMarkerPath(home, sessionId) {
|
|
132
|
+
return path.join(home, "teams", "language", `${sessionId}.json`);
|
|
133
|
+
}
|
|
134
|
+
function backfillLanguage(message) {
|
|
135
|
+
if (message.includes(ENVELOPE)) return exitNotice.TEAM_LANGUAGES.find((language) => message.includes(exitNotice.teamLanguageReminder(language))) ?? null;
|
|
136
|
+
return exitNotice.detectTeamUserLanguage(message.replace(BOARD_LINE, ""));
|
|
137
|
+
}
|
|
138
|
+
function createTeamLanguageBackfill(deps) {
|
|
139
|
+
const home = deps.home ?? configuration.configuration.happyHomeDir;
|
|
140
|
+
const scopeFile = deps.scopeFile ?? ((sid) => process.env.VH_TEAM_SCOPE_FILE || path.join(home, "teams", "scopes", `${sid}.json`));
|
|
141
|
+
return {
|
|
142
|
+
/** `source` is the message before other injections: their text says nothing about the user's language. */
|
|
143
|
+
decorate(message, source) {
|
|
144
|
+
const sid = deps.sessionId();
|
|
145
|
+
if (!sid || !SESSION_ID.test(sid)) return message;
|
|
146
|
+
const marker = teamLanguageMarkerPath(home, sid);
|
|
147
|
+
if (node_fs.existsSync(marker) || !node_fs.existsSync(scopeFile(sid)) || exitNotice.readTeamExitMarker(home, sid)) return message;
|
|
148
|
+
const hasRule = source.includes(exitNotice.TEAM_LANGUAGE_RULE_HEADING);
|
|
149
|
+
try {
|
|
150
|
+
configuration.ensurePrivateDirectorySync(path.join(home, "teams", "language"));
|
|
151
|
+
configuration.writePrivateFileSync(marker, JSON.stringify({ at: Date.now(), via: hasRule ? "prompt" : "backfill" }));
|
|
152
|
+
} catch (error) {
|
|
153
|
+
logger.logger.debug(`[teams] language rule not recorded, skipping it: ${String(error)}`);
|
|
154
|
+
return message;
|
|
155
|
+
}
|
|
156
|
+
return hasRule ? message : prompt.prependToMessage(message, exitNotice.teamLanguageRule(backfillLanguage(source)));
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
|
|
127
161
|
function createProjectInjector(deps) {
|
|
128
162
|
const timeoutMs = deps.timeoutMs ?? 1500;
|
|
129
163
|
const now = deps.now ?? Date.now;
|
|
@@ -134,6 +168,8 @@ function createProjectInjector(deps) {
|
|
|
134
168
|
let lastPresenceVersion = null;
|
|
135
169
|
const label = (id) => titles.get(id) ?? id.slice(0, 8);
|
|
136
170
|
const issueDigest = deps.issueDigest === void 0 ? createIssueDigest({ sessionId: deps.sessionId, metadata: () => deps.metadata?.() ?? null, timeoutMs }) : deps.issueDigest;
|
|
171
|
+
const teamExitNotice = deps.teamExitNotice === void 0 ? exitNotice.createTeamExitNotice({ sessionId: deps.sessionId }) : deps.teamExitNotice;
|
|
172
|
+
const teamLanguageBackfill = deps.teamLanguageBackfill === void 0 ? createTeamLanguageBackfill({ sessionId: deps.sessionId }) : deps.teamLanguageBackfill;
|
|
137
173
|
function withTimeout(p) {
|
|
138
174
|
return Promise.race([p, new Promise((_, reject) => setTimeout(() => reject(new Error("project injection timeout")), timeoutMs).unref?.())]);
|
|
139
175
|
}
|
|
@@ -205,7 +241,11 @@ function createProjectInjector(deps) {
|
|
|
205
241
|
},
|
|
206
242
|
async decorate(message) {
|
|
207
243
|
if (typeof message !== "string") return message;
|
|
208
|
-
const withIssue = async (text) =>
|
|
244
|
+
const withIssue = async (text) => {
|
|
245
|
+
const digested = issueDigest ? await issueDigest.decorate(text) : text;
|
|
246
|
+
const noticed = teamExitNotice ? teamExitNotice.decorate(digested) : digested;
|
|
247
|
+
return teamLanguageBackfill ? teamLanguageBackfill.decorate(noticed, message) : noticed;
|
|
248
|
+
};
|
|
209
249
|
const sid = deps.sessionId();
|
|
210
250
|
if (!sid || deps.client.isDisabled()) return await withIssue(message);
|
|
211
251
|
let out = message;
|
|
@@ -364,7 +404,9 @@ function createTeamAdoption(sessionId) {
|
|
|
364
404
|
|
|
365
405
|
This session is now connected as the team lead. Call team_inspect to read the authoritative state before continuing the user's goal. Do not call team_create or team_join again.
|
|
366
406
|
|
|
367
|
-
${resources.TEAM_LEAD_PLAYBOOK}
|
|
407
|
+
${resources.TEAM_LEAD_PLAYBOOK}
|
|
408
|
+
|
|
409
|
+
${exitNotice.teamLanguageRule(null)}`;
|
|
368
410
|
if (!intent.guidanceDelivered) {
|
|
369
411
|
const key = await sessionOps.waitForSessionKey(sessionId, 1e4);
|
|
370
412
|
await sessionOps.sendUserMessage(sessionId, key, instructions, "teams", { localId: `teams-adopt-${input.requestId}`, sentFrom: "team" });
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
|
-
import { c as configuration } from './configuration-
|
|
3
|
-
import { r as readSettings, g as readCredentials, d as readDaemonState } from './persistence-
|
|
4
|
-
import { a as checkIfDaemonRunningAndCleanupStaleState } from './controlClient-
|
|
2
|
+
import { c as configuration } from './configuration-H8q1sMwk.mjs';
|
|
3
|
+
import { r as readSettings, g as readCredentials, d as readDaemonState } from './persistence-dLgWDclq.mjs';
|
|
4
|
+
import { a as checkIfDaemonRunningAndCleanupStaleState } from './controlClient-D9DYqW02.mjs';
|
|
5
5
|
import { findAllHappyProcesses } from './doctor-GN5mPOn5.mjs';
|
|
6
6
|
import { statSync, realpathSync, existsSync, readdirSync } from 'node:fs';
|
|
7
7
|
import { isAbsolute, resolve, dirname, basename, delimiter, join } from 'node:path';
|
|
8
8
|
import { p as projectPath } from './projectPath-BTBIMB57.mjs';
|
|
9
|
-
import { p as packageJson } from './package-
|
|
9
|
+
import { p as packageJson } from './package-CMmhJwSf.mjs';
|
|
10
10
|
import { s as shareableSettingsSummary, c as collectRuntimeReadiness, S as SUPPORTED_NODE_LABEL, r as resolveClaudeCredentialReadiness, a as toolProbeLabel, b as daemonReadiness, d as daemonEndpointsMatch } from './doctorReadiness-C208SMN9.mjs';
|
|
11
11
|
import { c as credentialRelayProblem } from './authRelay-DhQhkBvX.mjs';
|
|
12
12
|
import { d as deriveLocalCliUpdateSummary } from './cliUpdate-Y34VGe9Y.mjs';
|
|
13
13
|
import { spawnSync } from 'node:child_process';
|
|
14
|
-
import { p as piInstallCommand } from './piRunnerArgs-
|
|
14
|
+
import { p as piInstallCommand } from './piRunnerArgs-DuWYye4f.mjs';
|
|
15
15
|
|
|
16
16
|
function shareSafeProcessLine(process2) {
|
|
17
17
|
return `PID ${process2.pid}: command arguments hidden for privacy`;
|
|
@@ -311,8 +311,8 @@ ${typeLabels[type] || type}:`));
|
|
|
311
311
|
}
|
|
312
312
|
console.log(chalk.gray(" An external claude command is only needed for native terminal/mirror use."));
|
|
313
313
|
try {
|
|
314
|
-
const { resolveAgentHomesForCli } = await import('./agentHome-
|
|
315
|
-
const { describeAgentHome } = await import('./index-
|
|
314
|
+
const { resolveAgentHomesForCli } = await import('./agentHome-BuFxooEg.mjs');
|
|
315
|
+
const { describeAgentHome } = await import('./index-DCvq8Cfw.mjs');
|
|
316
316
|
const homes = await resolveAgentHomesForCli();
|
|
317
317
|
console.log(chalk.green(`\u2713 Claude config dir: ${describeAgentHome(homes.claudeConfigDir)}`));
|
|
318
318
|
console.log(chalk.green(`\u2713 Codex home: ${describeAgentHome(homes.codexHome)}`));
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chalk = require('chalk');
|
|
4
|
-
var configuration = require('./configuration-
|
|
5
|
-
var persistence = require('./persistence-
|
|
6
|
-
var controlClient = require('./controlClient-
|
|
4
|
+
var configuration = require('./configuration-Fx61b4MJ.cjs');
|
|
5
|
+
var persistence = require('./persistence-iiVFxhbt.cjs');
|
|
6
|
+
var controlClient = require('./controlClient-D04wXKoQ.cjs');
|
|
7
7
|
var doctor$1 = require('./doctor-CJpFhHoK.cjs');
|
|
8
8
|
var node_fs = require('node:fs');
|
|
9
9
|
var path = require('node:path');
|
|
10
10
|
var projectPath = require('./projectPath-C3ioB4Bu.cjs');
|
|
11
|
-
var _package = require('./package-
|
|
11
|
+
var _package = require('./package-BCJfNMlt.cjs');
|
|
12
12
|
var doctorReadiness = require('./doctorReadiness-Dl6yRQCy.cjs');
|
|
13
13
|
var authRelay = require('./authRelay-Dy1qU9td.cjs');
|
|
14
14
|
var cliUpdate = require('./cliUpdate-DsKXPFYp.cjs');
|
|
15
15
|
var node_child_process = require('node:child_process');
|
|
16
|
-
var piRunnerArgs = require('./piRunnerArgs-
|
|
16
|
+
var piRunnerArgs = require('./piRunnerArgs-DxWxgOSZ.cjs');
|
|
17
17
|
|
|
18
18
|
function shareSafeProcessLine(process2) {
|
|
19
19
|
return `PID ${process2.pid}: command arguments hidden for privacy`;
|
|
@@ -313,8 +313,8 @@ ${typeLabels[type] || type}:`));
|
|
|
313
313
|
}
|
|
314
314
|
console.log(chalk.gray(" An external claude command is only needed for native terminal/mirror use."));
|
|
315
315
|
try {
|
|
316
|
-
const { resolveAgentHomesForCli } = await Promise.resolve().then(function () { return require('./agentHome-
|
|
317
|
-
const { describeAgentHome } = await Promise.resolve().then(function () { return require('./index-
|
|
316
|
+
const { resolveAgentHomesForCli } = await Promise.resolve().then(function () { return require('./agentHome-8wzmbm0H.cjs'); });
|
|
317
|
+
const { describeAgentHome } = await Promise.resolve().then(function () { return require('./index-bVMcFi7v.cjs'); });
|
|
318
318
|
const homes = await resolveAgentHomesForCli();
|
|
319
319
|
console.log(chalk.green(`\u2713 Claude config dir: ${describeAgentHome(homes.claudeConfigDir)}`));
|
|
320
320
|
console.log(chalk.green(`\u2713 Codex home: ${describeAgentHome(homes.codexHome)}`));
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { readFile, writeFile, appendFile, stat } from 'node:fs/promises';
|
|
2
2
|
import os from 'node:os';
|
|
3
3
|
import { z } from 'zod';
|
|
4
|
-
import { l as logger } from './logger-
|
|
5
|
-
import { c as readPersistedSessions } from './persistence-
|
|
6
|
-
import { e as spawnDaemonSession } from './controlClient-
|
|
7
|
-
import { a as listSessions, r as readSessionTranscript, s as sessionWebUrl, g as waitForSessionKey, e as sendUserMessage, b as stopSession, d as archiveSession } from './sessionOps-
|
|
8
|
-
import { r as readRemoteTranscript, s as sendRemoteMessage, d as deliverToSession, R as RemoteSessionOpsError } from './remoteSessionClient-
|
|
4
|
+
import { l as logger } from './logger-BKAKIZdy.mjs';
|
|
5
|
+
import { c as readPersistedSessions } from './persistence-dLgWDclq.mjs';
|
|
6
|
+
import { e as spawnDaemonSession } from './controlClient-D9DYqW02.mjs';
|
|
7
|
+
import { a as listSessions, r as readSessionTranscript, s as sessionWebUrl, g as waitForSessionKey, e as sendUserMessage, b as stopSession, d as archiveSession } from './sessionOps-BxLhHEhM.mjs';
|
|
8
|
+
import { r as readRemoteTranscript, s as sendRemoteMessage, d as deliverToSession, R as RemoteSessionOpsError } from './remoteSessionClient-CLuxs0_y.mjs';
|
|
9
9
|
import { i as isValidSessionId, a as isValidTerminalId } from './ids-DU6sLx4C.mjs';
|
|
10
10
|
import { l as listVhTerminals, r as readVhTerminal, s as sendToVhTerminal } from './terminals-Dc38XmZv.mjs';
|
|
11
|
-
import { bootstrapAssistantHome, assistantPersonalMemoryPath } from './bootstrap-
|
|
11
|
+
import { bootstrapAssistantHome, assistantPersonalMemoryPath } from './bootstrap-Dn_VvHSt.mjs';
|
|
12
12
|
import { join, isAbsolute, normalize } from 'node:path';
|
|
13
13
|
|
|
14
14
|
const PERSONAL_MEMORY_SOFT_LIMIT_CHARS = 2e3;
|