very-happy-cli 0.2.196 → 0.2.197
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-RqGkFeeY.mjs → AcpBackend-B-CD1MrV.mjs} +3 -3
- package/dist/{AcpBackend-tL_g_UJ5.cjs → AcpBackend-CqDg1GgF.cjs} +3 -3
- package/dist/{AcpSessionManager-C-R6yHXc.mjs → AcpSessionManager-CgomFAjk.mjs} +1 -1
- package/dist/{AcpSessionManager-CFB24qBh.cjs → AcpSessionManager-Cv1KTldV.cjs} +1 -1
- package/dist/{BasePermissionHandler-C0JS37Jt.cjs → BasePermissionHandler-BxUjjHiI.cjs} +1 -1
- package/dist/{BasePermissionHandler-CgHLVNKT.mjs → BasePermissionHandler-D6-fZvtx.mjs} +1 -1
- package/dist/{account-DOil1Hn8.cjs → account-Bexqa-vj.cjs} +5 -5
- package/dist/{account-EzL-zwwE.mjs → account-CnN-iHFd.mjs} +5 -5
- package/dist/{acpSessionResume-B01oHWDS.cjs → acpSessionResume-CfEw8L26.cjs} +1 -1
- package/dist/{acpSessionResume-DEOIZUuj.mjs → acpSessionResume-DzFELzTU.mjs} +1 -1
- package/dist/{agentHome-BulDO_1K.cjs → agentHome-CBYL4J4Q.cjs} +4 -4
- package/dist/{agentHome-DucTue1n.mjs → agentHome-CmSA7hBC.mjs} +4 -4
- package/dist/{api-fuwEEEkT.cjs → api-CB3tLbbj.cjs} +9 -9
- package/dist/{api-CiNezCys.mjs → api-Do7MUIrP.mjs} +9 -9
- package/dist/{apiMachine-DCmKjms1.mjs → apiMachine-CytFlPdl.mjs} +96 -25
- package/dist/{apiMachine-CxmiSa2-.cjs → apiMachine-guUGAifI.cjs} +96 -25
- package/dist/{attachmentContent-CiY3MvdO.mjs → attachmentContent-B8Lg7kgp.mjs} +2 -2
- package/dist/{attachmentContent-Cehh7ClR.cjs → attachmentContent-errR84kh.cjs} +2 -2
- package/dist/{auth-DHqHrs5d.mjs → auth-B-1T6w1U.mjs} +8 -8
- package/dist/{auth-tlMcvk2Y.cjs → auth-BhM0lHLA.cjs} +8 -8
- package/dist/{auth-DVsH_a8J.mjs → auth-Dnu0Mocz.mjs} +5 -5
- package/dist/{auth-DHlbjtf7.cjs → auth-ZKJNs8AK.cjs} +5 -5
- package/dist/{auto-Cnn8luKk.mjs → auto-CFSmWudH.mjs} +14 -14
- package/dist/{auto-DNAa8xDZ.cjs → auto-eimPZ4gm.cjs} +14 -14
- package/dist/{bootstrap-PeTZ2sAn.cjs → bootstrap-B7mwfud6.cjs} +2 -2
- package/dist/{bootstrap-C2XSEyOe.mjs → bootstrap-C2JyiPax.mjs} +2 -2
- package/dist/{browser-Bm24RiFU.cjs → browser-B3VVAWcC.cjs} +1 -1
- package/dist/{browser-CWWyaf8_.mjs → browser-Cnk2N81e.mjs} +1 -1
- package/dist/{claudeLocal-BDWy2pFt.cjs → claudeLocal-CvZ5Sfq_.cjs} +4 -4
- package/dist/{claudeLocal-CRG-Q7kS.mjs → claudeLocal-gDpGeteK.mjs} +4 -4
- package/dist/{claudeLocalLauncher-DmSLoHlw.cjs → claudeLocalLauncher-CFSxFln_.cjs} +9 -9
- package/dist/{claudeLocalLauncher-B5cOrszW.mjs → claudeLocalLauncher-e_DkguJW.mjs} +9 -9
- package/dist/{claudeSessionFork-OffWLYgd.cjs → claudeSessionFork--_RtwhC2.cjs} +1 -1
- package/dist/{claudeSessionFork-BqV6E0ep.mjs → claudeSessionFork-BMMJmfxX.mjs} +1 -1
- package/dist/{client-B3lOol4f.mjs → client-Bav5WI8p.mjs} +3 -3
- package/dist/{client-Cg_cuQb1.mjs → client-BeEAF2yn.mjs} +2 -2
- package/dist/{client-CfTeXnYS.mjs → client-CkiWUkm6.mjs} +2 -2
- package/dist/{client-B9fcSMXP.cjs → client-DH_mgm2T.cjs} +2 -2
- package/dist/{client-Ckic3nxZ.cjs → client-DmO89_dS.cjs} +2 -2
- package/dist/{client-YFvImdwH.cjs → client-TZ1BY7kn.cjs} +3 -3
- package/dist/codex/happyMcpStdioBridge.cjs +15 -15
- package/dist/codex/happyMcpStdioBridge.mjs +15 -15
- package/dist/{codexAppServerClient-aV5m-FpZ.mjs → codexAppServerClient-AcMiUjlK.mjs} +3 -3
- package/dist/{codexAppServerClient-C-UwVMUN.cjs → codexAppServerClient-C4FYS9D9.cjs} +3 -3
- package/dist/{codexCommand-5nWT7F8A.cjs → codexCommand-BkF16_aL.cjs} +42 -42
- package/dist/{codexCommand-CI2NTyIF.mjs → codexCommand-CuteJvKE.mjs} +42 -42
- package/dist/{codexTermination-CLjDP6Ja.mjs → codexTermination-CjHWp1C_.mjs} +1 -1
- package/dist/{codexTermination-D18IHgLP.cjs → codexTermination-DGgKsMxj.cjs} +1 -1
- package/dist/{config-B7YtrHi0.cjs → config-BklFo_Cs.cjs} +3 -3
- package/dist/{config-BfwjfFSC.mjs → config-CUvb7oaW.mjs} +3 -3
- package/dist/{configuration-C8r6uD9k.mjs → configuration-BIh6P6kB.mjs} +1 -1
- package/dist/{configuration-CWRKSOyj.cjs → configuration-BL_fxboH.cjs} +1 -1
- package/dist/{connect-DALX1hGB.cjs → connect-Bi7cRXtj.cjs} +12 -12
- package/dist/{connect-K5HBcM56.mjs → connect-KIJsx0iT.mjs} +12 -12
- package/dist/{context-BqhlGL3u.cjs → context-BYcZIvKn.cjs} +1 -1
- package/dist/{context-CtMY-M8T.mjs → context-Ct__7RAS.mjs} +1 -1
- package/dist/{controlClient-DYQ1g2ar.mjs → controlClient-CPZkMKsH.mjs} +3 -3
- package/dist/{controlClient-DyNgxNl7.cjs → controlClient-DMtkGpc3.cjs} +3 -3
- package/dist/{createSessionMetadata-C4WN8pVK.cjs → createSessionMetadata-BWr0XT-Y.cjs} +2 -2
- package/dist/{createSessionMetadata-CZuEDo2v.mjs → createSessionMetadata-DkkddlJa.mjs} +2 -2
- package/dist/{deterministicJson-r4zhG546.cjs → deterministicJson-BO6ZUUiV.cjs} +12 -12
- package/dist/{deterministicJson-Dg_0QJAR.mjs → deterministicJson-Dm3yDrwj.mjs} +12 -12
- package/dist/{doctor-0gLGzwz6.cjs → doctor-DHK-5Hxm.cjs} +7 -7
- package/dist/{doctor-COeFzPpz.mjs → doctor-TK49jR60.mjs} +7 -7
- package/dist/{downloadTarget-CbuUiS5p.mjs → downloadTarget-C2XcfMXb.mjs} +7 -7
- package/dist/{downloadTarget-8ovVpDv1.cjs → downloadTarget-QP5nnKsW.cjs} +7 -7
- package/dist/{ensureDaemonRunning-CwlujXmV.mjs → ensureDaemonRunning-Bi-PF5LL.mjs} +5 -5
- package/dist/{ensureDaemonRunning-Bq-n6xTt.cjs → ensureDaemonRunning-pg-EYmG0.cjs} +5 -5
- package/dist/{handleResumeCommand-B5GgmPm_.mjs → handleResumeCommand-B69L6W80.mjs} +5 -5
- package/dist/{handleResumeCommand-muSrYA5y.cjs → handleResumeCommand-CMLpVjkl.cjs} +5 -5
- package/dist/{index-DKCmDned.mjs → index-BM14YD9K.mjs} +4 -4
- package/dist/{index-BZCIkrFj.mjs → index-BSSAKD4Q.mjs} +4 -4
- package/dist/{index-BRH0XYSO.mjs → index-CwwDV02T.mjs} +40 -40
- package/dist/{index-BUOd8bNd.cjs → index-DC_XlLAD.cjs} +4 -4
- package/dist/{index-CnY74Dae.cjs → index-DgnbOqH_.cjs} +3 -3
- package/dist/{index-D0V-seiN.mjs → index-P6modcWo.mjs} +3 -3
- package/dist/{index-CQZg9jKx.cjs → index-XeWmi_Wt.cjs} +4 -4
- package/dist/{index-Dt_YE-zw.cjs → index-sXThJ-ic.cjs} +39 -39
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/dist/{install-CooQf1oU.mjs → install-B6vD9h4Z.mjs} +3 -3
- package/dist/{install-BlW2kkPl.cjs → install-Cyb1ZsOO.cjs} +3 -3
- package/dist/lib.cjs +11 -11
- package/dist/lib.d.cts +9 -0
- package/dist/lib.d.mts +9 -0
- package/dist/lib.mjs +11 -11
- package/dist/{lidState-VZ1j_QYw.cjs → lidState-DXy1ymL0.cjs} +1 -1
- package/dist/{lidState-BflRFw38.mjs → lidState-nbXgabCS.mjs} +1 -1
- package/dist/{localHappyAgentAuth-BAK_nqMG.mjs → localHappyAgentAuth-BupJnMMB.mjs} +1 -1
- package/dist/{localHappyAgentAuth-oxhpgJOb.cjs → localHappyAgentAuth-Dxl6itKW.cjs} +1 -1
- package/dist/{logger-D1hb3CG8.mjs → logger-CahcyjlK.mjs} +2 -2
- package/dist/{logger-HQ9yDb8R.cjs → logger-CtweAuKq.cjs} +2 -2
- package/dist/{machineMetadata-Dxng45Uh.mjs → machineMetadata-jOqz4fn8.mjs} +3 -3
- package/dist/{machineMetadata-Dzwn-HjN.cjs → machineMetadata-thOCcaSv.cjs} +3 -3
- package/dist/{main-D7qre-pa.cjs → main-CTIbEEsd.cjs} +47 -47
- package/dist/{main-BP0iY2vQ.mjs → main-bCGlXj7y.mjs} +47 -47
- package/dist/{mcp-D3yzLkh8.cjs → mcp-BOS5msHd.cjs} +16 -16
- package/dist/{mcp-BmDGyj7k.mjs → mcp-dtmpWc-Y.mjs} +16 -16
- package/dist/{mirrorProtocol-Cv2otcvM.cjs → mirrorProtocol-CFDn3zfT.cjs} +11 -3
- package/dist/{mirrorProtocol-C9Zc6GFT.mjs → mirrorProtocol-OJPFNpbq.mjs} +11 -4
- package/dist/{package-CpmoMPuj.mjs → package-DUKnh8UF.mjs} +7 -7
- package/dist/{package-Dn7zZkY1.cjs → package-DdYN77UN.cjs} +7 -7
- package/dist/{panels-CQobcX5w.mjs → panels-DQs5x77X.mjs} +5 -5
- package/dist/{panels-D59PlNoD.cjs → panels-DZZTavkP.cjs} +5 -5
- package/dist/{peerTools-D417O7d-.cjs → peerTools-03MimWe-.cjs} +5 -5
- package/dist/{peerTools-CNzlwuL7.mjs → peerTools-ByJiL-w1.mjs} +5 -5
- package/dist/{persistence-CagHeZ-f.mjs → persistence-CPIj3Iha.mjs} +2 -2
- package/dist/{persistence-BiyvEYaR.cjs → persistence-CWEaFv6R.cjs} +2 -2
- package/dist/{piRunnerArgs-kTaNYd23.cjs → piRunnerArgs-Aqs-zKLm.cjs} +1 -1
- package/dist/{piRunnerArgs-DKU5LoWu.mjs → piRunnerArgs-DxbuKnFC.mjs} +1 -1
- package/dist/{piRuntime-BI4KNAUY.cjs → piRuntime-BFMV2Hlg.cjs} +1 -1
- package/dist/{piRuntime-BV4fQyZD.mjs → piRuntime-KJn9G3Ax.mjs} +1 -1
- package/dist/{piTerminal-WPUtDJAV.cjs → piTerminal-DFzQb38E.cjs} +18 -18
- package/dist/{piTerminal-oObkl3WJ.mjs → piTerminal-DhVFk2Hc.mjs} +18 -18
- package/dist/{pushNotifications-DRDWUnP-.cjs → pushNotifications-BhnrQa32.cjs} +15 -2
- package/dist/{pushNotifications-4sNESDMv.mjs → pushNotifications-CD5-W90c.mjs} +15 -2
- package/dist/{query-6OWHW1U1.mjs → query-BRTHwQ1m.mjs} +1 -1
- package/dist/{query-qIbeJ2-r.cjs → query-BRvDJTUF.cjs} +1 -1
- package/dist/{rateLimitWindows-4uhuwKnU.mjs → rateLimitWindows-BAfkXSck.mjs} +1 -1
- package/dist/{rateLimitWindows-U4fc1-_6.cjs → rateLimitWindows-_KfSDJdB.cjs} +1 -1
- package/dist/{registerCommonHandlers-PTJ8TBj9.mjs → registerCommonHandlers-Anq6Ma1d.mjs} +2 -2
- package/dist/{registerCommonHandlers-CEV9KUsq.cjs → registerCommonHandlers-CsMpXP1_.cjs} +2 -2
- package/dist/{registerKillSessionHandler-C6F1sjoo.cjs → registerKillSessionHandler-DnES0UnY.cjs} +5 -5
- package/dist/{registerKillSessionHandler-D4SSwQj8.mjs → registerKillSessionHandler-DvA-f_D4.mjs} +5 -5
- package/dist/{registerSideQuestionHandler-4mRv0Msq.mjs → registerSideQuestionHandler-B6EgCzBZ.mjs} +4 -4
- package/dist/{registerSideQuestionHandler-ByUnjI3V.cjs → registerSideQuestionHandler-GIzcFczo.cjs} +4 -4
- package/dist/{remoteSessionClient-CUk6haD7.cjs → remoteSessionClient-BsXgrMSP.cjs} +5 -5
- package/dist/{remoteSessionClient-CfYDFlKm.mjs → remoteSessionClient-DYTwJSZR.mjs} +5 -5
- package/dist/{reportProgressTool-C1JOvo6T.cjs → reportProgressTool-DhTM7qvk.cjs} +2 -2
- package/dist/{reportProgressTool-BCn5oG52.mjs → reportProgressTool-DzmnFItq.mjs} +2 -2
- package/dist/{run-DC8BIklA.mjs → run-Cuz34V0P.mjs} +33 -33
- package/dist/{run-D2SlfZPP.cjs → run-D0nDSvGo.cjs} +33 -33
- package/dist/{runClaude-BE-5GgIZ.cjs → runClaude-DHHDBtKG.cjs} +20 -20
- package/dist/{runClaude-D6fqN9PD.mjs → runClaude-ySgHmPJg.mjs} +20 -20
- package/dist/{runClaudeDeps-W0nv2vHL.cjs → runClaudeDeps-Cfeci4al.cjs} +37 -37
- package/dist/{runClaudeDeps-BmdwskeI.mjs → runClaudeDeps-k-QAN7Em.mjs} +43 -43
- package/dist/{runGemini-C3Ipeu1i.mjs → runGemini-BpiHwTGj.mjs} +34 -34
- package/dist/{runGemini-Da_d-2kV.cjs → runGemini-Dob7MFa2.cjs} +34 -34
- package/dist/{runOpenClaw-af5qDNU0.cjs → runOpenClaw-B-BGCcbD.cjs} +17 -17
- package/dist/{runOpenClaw-BoI6nbKB.mjs → runOpenClaw-B_7LblMr.mjs} +17 -17
- package/dist/{sandbox-CjoyUSGa.mjs → sandbox-D4UmUYIM.mjs} +4 -4
- package/dist/{sandbox-UGF68GrE.cjs → sandbox-D9xs3oeT.cjs} +4 -4
- package/dist/{selfCheck-Cr8eAw4m.cjs → selfCheck-B1ueapb2.cjs} +38 -38
- package/dist/selfCheck-BrC9vuGH.mjs +88 -0
- package/dist/{send-gqX0-i4p.mjs → send-BZoS0m6-.mjs} +8 -8
- package/dist/{send-CVSht9s_.cjs → send-CgIeqwqq.cjs} +8 -8
- package/dist/{server-DxlNqWJo.mjs → server-C5zdUyIu.mjs} +4 -4
- package/dist/{server-BPgVv-BG.cjs → server-XgEG5D8c.cjs} +6 -6
- package/dist/{sessionLock-BfvR9BGB.mjs → sessionLock-C4zRSYwt.mjs} +3 -3
- package/dist/{sessionLock-D2usWXAg.cjs → sessionLock-CbIB9WAp.cjs} +3 -3
- package/dist/{sessionOps-JRyQhF5s.cjs → sessionOps-flaRRzdo.cjs} +4 -4
- package/dist/{sessionOps-OmRqUFm4.mjs → sessionOps-fuLJNyOT.mjs} +4 -4
- package/dist/{sessionProvider-DTEdidBc.mjs → sessionProvider-DPwRzcbT.mjs} +5 -5
- package/dist/{sessionProvider-BpscgwwC.cjs → sessionProvider-DlWrak_l.cjs} +5 -5
- package/dist/{sessionScanner-BlAOpqMh.mjs → sessionScanner-BX7ZBVzX.mjs} +3 -3
- package/dist/{sessionScanner-C_qVc1ok.cjs → sessionScanner-I6fGycPd.cjs} +3 -3
- package/dist/{sessions-7iyjxti9.cjs → sessions-Cr0jIQ9r.cjs} +10 -10
- package/dist/{sessions-CnjHHllR.mjs → sessions-Csz0_dnz.mjs} +10 -10
- package/dist/{setupOfflineReconnection-BCbJa5mT.cjs → setupOfflineReconnection-BawiOCUA.cjs} +2 -2
- package/dist/{setupOfflineReconnection-IKEI7fLJ.mjs → setupOfflineReconnection-Pxsr7M_B.mjs} +2 -2
- package/dist/{spawn-CxEl0Dyz.cjs → spawn-Bfw10V7R.cjs} +12 -12
- package/dist/{spawn-CbfcClhj.mjs → spawn-C3wiREei.mjs} +12 -12
- package/dist/{spawnHappyCLI-C8gMHJu5.mjs → spawnHappyCLI-C9dzdAh0.mjs} +1 -1
- package/dist/{spawnHappyCLI-CHSlXWUe.cjs → spawnHappyCLI-D4_Ij_BB.cjs} +1 -1
- package/dist/{startFileWatcher-BGpYPz6L.cjs → startFileWatcher-905w_JCn.cjs} +1 -1
- package/dist/{startFileWatcher-6hslFu_B.mjs → startFileWatcher-FjvRihwq.mjs} +1 -1
- package/dist/{startupSessionCreate-B7jrCZUD.mjs → startupSessionCreate-B-QHA-nQ.mjs} +3 -3
- package/dist/{startupSessionCreate-CltDtCEF.cjs → startupSessionCreate-WY7c74aG.cjs} +3 -3
- package/dist/{sync-DtzoF9sw.mjs → sync-CHU9HM9N.mjs} +1 -1
- package/dist/{sync-DfI78smj.cjs → sync-Dz_U1UHu.cjs} +1 -1
- package/dist/{systemPrompt-HZNR9rjt.cjs → systemPrompt-NTIxM2Ss.cjs} +1 -1
- package/dist/{systemPrompt-B1Xd99hK.mjs → systemPrompt-PHD2Va2G.mjs} +1 -1
- package/dist/{teams-Vk75H6BZ.mjs → teams-CgT1c65s.mjs} +6 -6
- package/dist/{teams-fFX-L_ms.cjs → teams-CqoSWbrQ.cjs} +6 -6
- package/dist/{terminals-Dlg0x3nY.mjs → terminals-Dc38XmZv.mjs} +9 -5
- package/dist/{terminals-B_bfC9c2.cjs → terminals-dK3Lrjfp.cjs} +9 -5
- package/dist/{time-BqPZjTpo.cjs → time-BTXLicT9.cjs} +1 -1
- package/dist/{time-CgAwVt5R.mjs → time-DZ7wPlsL.mjs} +1 -1
- package/dist/{titleGenerator-D2UB7Uyr.mjs → titleGenerator-BOcHO0fW.mjs} +1 -1
- package/dist/{titleGenerator-ijVOuv3J.cjs → titleGenerator-DxSLdXjL.cjs} +2 -2
- package/dist/tmuxSocket-BmZyixRM.mjs +29 -0
- package/dist/{tmuxSocket-D-Xt6Vn-.cjs → tmuxSocket-Dg11Olx0.cjs} +12 -0
- package/dist/{todo-vCzaIwNp.cjs → todo-CqD6H2Bt.cjs} +5 -5
- package/dist/{todo-CCuqtD0O.mjs → todo-kBweG4H9.mjs} +5 -5
- package/dist/{tools-CL8h3fqh.cjs → tools-C7SRJVwy.cjs} +1 -1
- package/dist/{tools-DthGQoo3.mjs → tools-DuXYIUTD.mjs} +1 -1
- package/dist/{uninstall-CIvThBvI.cjs → uninstall-DHdOrwHT.cjs} +3 -3
- package/dist/{uninstall-DCJh4UoO.mjs → uninstall-WJYYM27v.mjs} +3 -3
- package/package.json +7 -7
- package/dist/selfCheck-CNrOZgBv.mjs +0 -88
- package/dist/tmuxSocket-B8Yx20sT.mjs +0 -19
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { spawn } from 'node:child_process';
|
|
2
2
|
import { ndJsonStream, ClientSideConnection } from '@agentclientprotocol/sdk';
|
|
3
3
|
import { randomUUID } from 'node:crypto';
|
|
4
|
-
import { l as logger } from './logger-
|
|
5
|
-
import { d as delay } from './time-
|
|
4
|
+
import { l as logger } from './logger-CahcyjlK.mjs';
|
|
5
|
+
import { d as delay } from './time-DZ7wPlsL.mjs';
|
|
6
6
|
import { c as contentLogMetadata, e as errorLogMetadata } from './contentLogMetadata-BlWI0egu.mjs';
|
|
7
7
|
import { r as readableStderrTail, a as appendStderrRing, s as stopProcessGracefully, k as killProcessTree } from './processTree-CP5IvQ2Z.mjs';
|
|
8
|
-
import { p as packageJson } from './package-
|
|
8
|
+
import { p as packageJson } from './package-DUKnh8UF.mjs';
|
|
9
9
|
|
|
10
10
|
function acpImageBlocks(attachments, supportsImages) {
|
|
11
11
|
return attachments.filter((file) => ["image/jpeg", "image/png", "image/gif", "image/webp"].includes(file.mimeType)).map((file) => {
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
var node_child_process = require('node:child_process');
|
|
4
4
|
var sdk = require('@agentclientprotocol/sdk');
|
|
5
5
|
var node_crypto = require('node:crypto');
|
|
6
|
-
var logger = require('./logger-
|
|
7
|
-
var time = require('./time-
|
|
6
|
+
var logger = require('./logger-CtweAuKq.cjs');
|
|
7
|
+
var time = require('./time-BTXLicT9.cjs');
|
|
8
8
|
var contentLogMetadata = require('./contentLogMetadata-ZSFk_NjQ.cjs');
|
|
9
9
|
var processTree = require('./processTree-CMHWlVse.cjs');
|
|
10
|
-
var _package = require('./package-
|
|
10
|
+
var _package = require('./package-DdYN77UN.cjs');
|
|
11
11
|
|
|
12
12
|
function acpImageBlocks(attachments, supportsImages) {
|
|
13
13
|
return attachments.filter((file) => ["image/jpeg", "image/png", "image/gif", "image/webp"].includes(file.mimeType)).map((file) => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createId } from '@paralleldrive/cuid2';
|
|
2
2
|
import { s as streamKeyOf, k as createEnvelope } from './index-C27JFCbe.mjs';
|
|
3
|
-
import { t as textResultPayload, b as toolResultPayload } from './api-
|
|
3
|
+
import { t as textResultPayload, b as toolResultPayload } from './api-Do7MUIrP.mjs';
|
|
4
4
|
|
|
5
5
|
function turnOptions(turnId, time) {
|
|
6
6
|
return turnId ? { turn: turnId, time } : { time };
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var cuid2 = require('@paralleldrive/cuid2');
|
|
4
4
|
var index = require('./index-D9Hidq-g.cjs');
|
|
5
|
-
var api = require('./api-
|
|
5
|
+
var api = require('./api-CB3tLbbj.cjs');
|
|
6
6
|
|
|
7
7
|
function turnOptions(turnId, time) {
|
|
8
8
|
return turnId ? { turn: turnId, time } : { time };
|
|
@@ -2,17 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
var chalk = require('chalk');
|
|
4
4
|
var promises = require('node:readline/promises');
|
|
5
|
-
var configuration = require('./configuration-
|
|
6
|
-
var controlClient = require('./controlClient-
|
|
5
|
+
var configuration = require('./configuration-BL_fxboH.cjs');
|
|
6
|
+
var controlClient = require('./controlClient-DMtkGpc3.cjs');
|
|
7
7
|
var accountService = require('./accountService-DL6xhVUa.cjs');
|
|
8
8
|
require('node:fs');
|
|
9
9
|
require('node:os');
|
|
10
10
|
require('node:path');
|
|
11
|
-
require('./package-
|
|
11
|
+
require('./package-DdYN77UN.cjs');
|
|
12
12
|
require('node:fs/promises');
|
|
13
|
-
require('./logger-
|
|
13
|
+
require('./logger-CtweAuKq.cjs');
|
|
14
14
|
require('node:util');
|
|
15
|
-
require('./persistence-
|
|
15
|
+
require('./persistence-CWEaFv6R.cjs');
|
|
16
16
|
require('zod');
|
|
17
17
|
require('./authRelay-Dy1qU9td.cjs');
|
|
18
18
|
require('node:crypto');
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import { createInterface } from 'node:readline/promises';
|
|
3
|
-
import { c as configuration } from './configuration-
|
|
4
|
-
import { g as getDaemonAgentProfiles, r as restartDaemonSession, l as listDaemonSessions } from './controlClient-
|
|
3
|
+
import { c as configuration } from './configuration-BIh6P6kB.mjs';
|
|
4
|
+
import { g as getDaemonAgentProfiles, r as restartDaemonSession, l as listDaemonSessions } from './controlClient-CPZkMKsH.mjs';
|
|
5
5
|
import { A as AccountService, b as bindResultMessages, a as AccountError, l as localRestartFailure } from './accountService-DQ21IlBs.mjs';
|
|
6
6
|
import 'node:fs';
|
|
7
7
|
import 'node:os';
|
|
8
8
|
import 'node:path';
|
|
9
|
-
import './package-
|
|
9
|
+
import './package-DUKnh8UF.mjs';
|
|
10
10
|
import 'node:fs/promises';
|
|
11
|
-
import './logger-
|
|
11
|
+
import './logger-CahcyjlK.mjs';
|
|
12
12
|
import 'node:util';
|
|
13
|
-
import './persistence-
|
|
13
|
+
import './persistence-CPIj3Iha.mjs';
|
|
14
14
|
import 'zod';
|
|
15
15
|
import './authRelay-DhQhkBvX.mjs';
|
|
16
16
|
import 'node:crypto';
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var node_fs = require('node:fs');
|
|
4
4
|
var path = require('node:path');
|
|
5
|
-
var configuration = require('./configuration-
|
|
5
|
+
var configuration = require('./configuration-BL_fxboH.cjs');
|
|
6
6
|
|
|
7
7
|
const SESSION_MODE_DIR = "session-modes";
|
|
8
8
|
const ACP_PERMISSION_MODES = ["default", "acceptEdits", "plan", "bypassPermissions"];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { mkdirSync, renameSync, existsSync, unlinkSync } from 'node:fs';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
|
-
import { w as writePrivateFileSync, c as configuration } from './configuration-
|
|
3
|
+
import { w as writePrivateFileSync, c as configuration } from './configuration-BIh6P6kB.mjs';
|
|
4
4
|
|
|
5
5
|
const SESSION_MODE_DIR = "session-modes";
|
|
6
6
|
const ACP_PERMISSION_MODES = ["default", "acceptEdits", "plan", "bypassPermissions"];
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
var chalk = require('chalk');
|
|
4
4
|
var os = require('node:os');
|
|
5
|
-
var persistence = require('./persistence-
|
|
5
|
+
var persistence = require('./persistence-CWEaFv6R.cjs');
|
|
6
6
|
require('node:fs');
|
|
7
|
-
require('./logger-
|
|
7
|
+
require('./logger-CtweAuKq.cjs');
|
|
8
8
|
var loginShellEnv = require('./loginShellEnv-BkuYtExZ.cjs');
|
|
9
9
|
require('node:fs/promises');
|
|
10
|
-
require('./configuration-
|
|
10
|
+
require('./configuration-BL_fxboH.cjs');
|
|
11
11
|
require('node:path');
|
|
12
|
-
require('./package-
|
|
12
|
+
require('./package-DdYN77UN.cjs');
|
|
13
13
|
require('zod');
|
|
14
14
|
require('./authRelay-Dy1qU9td.cjs');
|
|
15
15
|
require('node:crypto');
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import { homedir } from 'node:os';
|
|
3
|
-
import { r as readSettings, u as updateSettings } from './persistence-
|
|
3
|
+
import { r as readSettings, u as updateSettings } from './persistence-CPIj3Iha.mjs';
|
|
4
4
|
import 'node:fs';
|
|
5
|
-
import './logger-
|
|
5
|
+
import './logger-CahcyjlK.mjs';
|
|
6
6
|
import { d as describeAgentHome, p as probeLoginShellEnv, r as resolveAgentHomes, e as expandHomePath, A as AGENT_HOME_ENV_NAMES } from './loginShellEnv-Dw8M7tkI.mjs';
|
|
7
7
|
import 'node:fs/promises';
|
|
8
|
-
import './configuration-
|
|
8
|
+
import './configuration-BIh6P6kB.mjs';
|
|
9
9
|
import 'node:path';
|
|
10
|
-
import './package-
|
|
10
|
+
import './package-DUKnh8UF.mjs';
|
|
11
11
|
import 'zod';
|
|
12
12
|
import './authRelay-DhQhkBvX.mjs';
|
|
13
13
|
import 'node:crypto';
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var axios = require('axios');
|
|
4
|
-
var logger = require('./logger-
|
|
5
|
-
var pushNotifications = require('./pushNotifications-
|
|
6
|
-
var lidState = require('./lidState-
|
|
4
|
+
var logger = require('./logger-CtweAuKq.cjs');
|
|
5
|
+
var pushNotifications = require('./pushNotifications-BhnrQa32.cjs');
|
|
6
|
+
var lidState = require('./lidState-DXy1ymL0.cjs');
|
|
7
7
|
var node_events = require('node:events');
|
|
8
8
|
var socket_ioClient = require('socket.io-client');
|
|
9
9
|
var authRelay = require('./authRelay-Dy1qU9td.cjs');
|
|
10
10
|
var limits = require('./limits-C-a7gr04.cjs');
|
|
11
|
-
var time = require('./time-
|
|
12
|
-
var configuration = require('./configuration-
|
|
11
|
+
var time = require('./time-BTXLicT9.cjs');
|
|
12
|
+
var configuration = require('./configuration-BL_fxboH.cjs');
|
|
13
13
|
var node_crypto = require('node:crypto');
|
|
14
14
|
var index = require('./index-D9Hidq-g.cjs');
|
|
15
|
-
var registerCommonHandlers = require('./registerCommonHandlers-
|
|
15
|
+
var registerCommonHandlers = require('./registerCommonHandlers-CsMpXP1_.cjs');
|
|
16
16
|
var cuid2 = require('@paralleldrive/cuid2');
|
|
17
|
-
var sync = require('./sync-
|
|
17
|
+
var sync = require('./sync-Dz_U1UHu.cjs');
|
|
18
18
|
var backgroundTaskActivity = require('./backgroundTaskActivity-CBvUdj39.cjs');
|
|
19
|
-
var controlClient = require('./controlClient-
|
|
19
|
+
var controlClient = require('./controlClient-DMtkGpc3.cjs');
|
|
20
20
|
var chalk = require('chalk');
|
|
21
21
|
|
|
22
22
|
async function hmac_sha512(key, data) {
|
|
@@ -3108,7 +3108,7 @@ class ApiClient {
|
|
|
3108
3108
|
return new ApiSessionClient(this.credential.token, session, opts);
|
|
3109
3109
|
}
|
|
3110
3110
|
async machineSyncClient(machine) {
|
|
3111
|
-
const { ApiMachineClient } = await Promise.resolve().then(function () { return require('./apiMachine-
|
|
3111
|
+
const { ApiMachineClient } = await Promise.resolve().then(function () { return require('./apiMachine-guUGAifI.cjs'); });
|
|
3112
3112
|
return new ApiMachineClient(this.credential.token, machine);
|
|
3113
3113
|
}
|
|
3114
3114
|
push() {
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
|
-
import { l as logger, r as redactLogValue } from './logger-
|
|
3
|
-
import { A as AsyncLock, S as SESSION_SUPERSEDED_ERROR, a as agentInstanceAuth, b as MAX_CHAT_ATTACHMENT_ENCRYPTED_BYTES, U as UserMessageSchema, F as FileEventMessageSchema, P as PushNotificationClient } from './pushNotifications-
|
|
4
|
-
import { R as RpcHandlerManager, a as answerSocketRequest, c as connectGuarded, s as socketConnectGuard, d as describeSocketAckDrop, b as safeAck, i as isRateQuotaCode, p as pauseForRateQuota, e as shouldReconnect } from './lidState-
|
|
2
|
+
import { l as logger, r as redactLogValue } from './logger-CahcyjlK.mjs';
|
|
3
|
+
import { A as AsyncLock, S as SESSION_SUPERSEDED_ERROR, a as agentInstanceAuth, b as MAX_CHAT_ATTACHMENT_ENCRYPTED_BYTES, U as UserMessageSchema, F as FileEventMessageSchema, P as PushNotificationClient } from './pushNotifications-CD5-W90c.mjs';
|
|
4
|
+
import { R as RpcHandlerManager, a as answerSocketRequest, c as connectGuarded, s as socketConnectGuard, d as describeSocketAckDrop, b as safeAck, i as isRateQuotaCode, p as pauseForRateQuota, e as shouldReconnect } from './lidState-nbXgabCS.mjs';
|
|
5
5
|
import { EventEmitter } from 'node:events';
|
|
6
6
|
import { io } from 'socket.io-client';
|
|
7
7
|
import { h as decrypt, d as decodeBase64, i as decryptBlob, e as encodeBase64, g as encrypt, l as libsodiumEncryptForPublicKey, j as libsodiumPublicKeyFromSecretKey, k as getRandomBytes } from './authRelay-DhQhkBvX.mjs';
|
|
8
8
|
import { p as prepareClipboardText, d as prepareClipboardHistoryText } from './limits-DIo7rEBR.mjs';
|
|
9
|
-
import { b as backoff, d as delay, e as exponentialBackoffDelay } from './time-
|
|
10
|
-
import { c as configuration } from './configuration-
|
|
9
|
+
import { b as backoff, d as delay, e as exponentialBackoffDelay } from './time-DZ7wPlsL.mjs';
|
|
10
|
+
import { c as configuration } from './configuration-BIh6P6kB.mjs';
|
|
11
11
|
import { createHmac, randomUUID } from 'node:crypto';
|
|
12
12
|
import { k as createEnvelope, s as streamKeyOf, a3 as ReleaseDrainNoticeSchema, a4 as RelayAssignmentResponseSchema } from './index-C27JFCbe.mjs';
|
|
13
|
-
import { r as registerCommonHandlers } from './registerCommonHandlers-
|
|
13
|
+
import { r as registerCommonHandlers } from './registerCommonHandlers-Anq6Ma1d.mjs';
|
|
14
14
|
import { createId } from '@paralleldrive/cuid2';
|
|
15
|
-
import { I as InvalidateSync } from './sync-
|
|
15
|
+
import { I as InvalidateSync } from './sync-CHU9HM9N.mjs';
|
|
16
16
|
import { B as BackgroundTaskReporter } from './backgroundTaskActivity-8PdPxrvy.mjs';
|
|
17
|
-
import { q as notifyDaemonTurnEvent, t as notifyDaemonBackgroundTasks } from './controlClient-
|
|
17
|
+
import { q as notifyDaemonTurnEvent, t as notifyDaemonBackgroundTasks } from './controlClient-CPZkMKsH.mjs';
|
|
18
18
|
import chalk from 'chalk';
|
|
19
19
|
|
|
20
20
|
async function hmac_sha512(key, data) {
|
|
@@ -3106,7 +3106,7 @@ class ApiClient {
|
|
|
3106
3106
|
return new ApiSessionClient(this.credential.token, session, opts);
|
|
3107
3107
|
}
|
|
3108
3108
|
async machineSyncClient(machine) {
|
|
3109
|
-
const { ApiMachineClient } = await import('./apiMachine-
|
|
3109
|
+
const { ApiMachineClient } = await import('./apiMachine-CytFlPdl.mjs');
|
|
3110
3110
|
return new ApiMachineClient(this.credential.token, machine);
|
|
3111
3111
|
}
|
|
3112
3112
|
push() {
|
|
@@ -1,45 +1,45 @@
|
|
|
1
1
|
import { io } from 'socket.io-client';
|
|
2
2
|
import { a as webPanelsSignature } from './webPanels-B2_C2-3g.mjs';
|
|
3
|
-
import { l as logger } from './logger-
|
|
4
|
-
import { R as RpcHandlerManager, i as isRateQuotaCode, p as pauseForRateQuota, s as socketConnectGuard, c as connectGuarded, a as answerSocketRequest, e as shouldReconnect, d as describeSocketAckDrop } from './lidState-
|
|
5
|
-
import { i as isClaudeSessionId, s as stableVersion, a as sanitizeTagList, p as pickMirrorForTerminal, l as liveSnapshotChanged,
|
|
6
|
-
import { c as configuration } from './configuration-
|
|
3
|
+
import { l as logger } from './logger-CahcyjlK.mjs';
|
|
4
|
+
import { R as RpcHandlerManager, i as isRateQuotaCode, p as pauseForRateQuota, s as socketConnectGuard, c as connectGuarded, a as answerSocketRequest, e as shouldReconnect, d as describeSocketAckDrop } from './lidState-nbXgabCS.mjs';
|
|
5
|
+
import { i as isClaudeSessionId, s as stableVersion, a as sanitizeTagList, p as projectField, b as pickMirrorForTerminal, l as liveSnapshotChanged, c as sanitizeLiveSnapshot, d as serializeLiveSnapshot, r as registerWorktreeHandlers, e as configureWorktreeService, f as summarizeSpawnSessionForLog, g as parseMirrorSendParams } from './mirrorProtocol-OJPFNpbq.mjs';
|
|
6
|
+
import { c as configuration } from './configuration-BIh6P6kB.mjs';
|
|
7
7
|
import { w as withCurrentCliUpdateState } from './cliUpdate-Y34VGe9Y.mjs';
|
|
8
|
-
import { r as registerCommonHandlers } from './registerCommonHandlers-
|
|
8
|
+
import { r as registerCommonHandlers } from './registerCommonHandlers-Anq6Ma1d.mjs';
|
|
9
9
|
import { stat, readdir, lstat, open, readFile, rm, mkdir, chmod, writeFile, rename } from 'node:fs/promises';
|
|
10
10
|
import { join, isAbsolute, resolve } from 'node:path';
|
|
11
11
|
import os, { homedir } from 'node:os';
|
|
12
12
|
import { f as fsMkdir } from './fsMkdir-DumgLTzR.mjs';
|
|
13
13
|
import { spawn, execFile, spawnSync } from 'node:child_process';
|
|
14
|
-
import { r as readSettings, c as readPersistedSessions, p as readTrackedClaudeSessionIds, q as readTrackedCodexThreadIds } from './persistence-
|
|
14
|
+
import { r as readSettings, c as readPersistedSessions, p as readTrackedClaudeSessionIds, q as readTrackedCodexThreadIds } from './persistence-CPIj3Iha.mjs';
|
|
15
15
|
import { M as ModelConfigError } from './fileStore-5qpetZS0.mjs';
|
|
16
16
|
import { a8 as AGENT_PROFILE_RPC, a9 as RelayCandidatesResponseSchema, a4 as RelayAssignmentResponseSchema, a3 as ReleaseDrainNoticeSchema } from './index-C27JFCbe.mjs';
|
|
17
17
|
import { a as AccountError } from './accountService-DQ21IlBs.mjs';
|
|
18
18
|
import { e as encodeBase64, g as encrypt, h as decrypt, d as decodeBase64 } from './authRelay-DhQhkBvX.mjs';
|
|
19
19
|
import { p as prepareClipboardText, d as prepareClipboardHistoryText } from './limits-DIo7rEBR.mjs';
|
|
20
|
-
import { b as backoff, d as delay } from './time-
|
|
20
|
+
import { b as backoff, d as delay } from './time-DZ7wPlsL.mjs';
|
|
21
21
|
import * as pty from 'node-pty';
|
|
22
|
-
import { a as attachStartupCommand, v as validateTerminalTags, d as deriveAutoTitle, T as TMUX_SESSION_ID_RE, i as isSafeTmuxSessionName, b as isVhSessionName, U as USER_SESSIONS_FORMAT, p as parseUserSessions, L as LIST_SESSIONS_FORMAT, c as parseSessionListLine, e as LIST_FIELD_SEP, s as sendToVhTerminal } from './terminals-
|
|
23
|
-
import { t as tmuxArgs, V as VH_TMUX_SOCKET_ENV, a as scrubTmuxClientEnv } from './tmuxSocket-
|
|
24
|
-
import { locateClaudeConversation, refreshAgentHomes } from './index-
|
|
22
|
+
import { a as attachStartupCommand, v as validateTerminalTags, d as deriveAutoTitle, T as TMUX_SESSION_ID_RE, i as isSafeTmuxSessionName, b as isVhSessionName, U as USER_SESSIONS_FORMAT, p as parseUserSessions, L as LIST_SESSIONS_FORMAT, c as parseSessionListLine, e as LIST_FIELD_SEP, s as sendToVhTerminal } from './terminals-Dc38XmZv.mjs';
|
|
23
|
+
import { t as tmuxArgs, V as VH_TMUX_SOCKET_ENV, v as validateTerminalProjectId, a as scrubTmuxClientEnv } from './tmuxSocket-BmZyixRM.mjs';
|
|
24
|
+
import { locateClaudeConversation, refreshAgentHomes } from './index-BSSAKD4Q.mjs';
|
|
25
25
|
import { randomBytes } from 'node:crypto';
|
|
26
26
|
import { readdirSync, unlinkSync, existsSync, mkdirSync, writeFileSync, readFileSync, statSync, chmodSync, renameSync, rmSync, accessSync, constants } from 'node:fs';
|
|
27
27
|
import axios from 'axios';
|
|
28
28
|
import { p as projectPath } from './projectPath-BTBIMB57.mjs';
|
|
29
29
|
import { a as isValidTerminalId } from './ids-DU6sLx4C.mjs';
|
|
30
30
|
import { d as detectCLIAvailability } from './detectCLI-CSGMlV51.mjs';
|
|
31
|
-
import { d as detectResumeSupport } from './localHappyAgentAuth-
|
|
31
|
+
import { d as detectResumeSupport } from './localHappyAgentAuth-BupJnMMB.mjs';
|
|
32
32
|
import { g as getProjectPath, a as getClaudeProjectsRoot } from './path-D2wdaNSk.mjs';
|
|
33
33
|
import { i as isVeryHappyOneShotPrompt } from './oneShotPrompts-DT4p6RNd.mjs';
|
|
34
|
-
import { f as forkSession, F as ForkSourceMissingError, d as discardForkedSession, l as listClaudeRewindPoints, b as forkAndTruncateSession, c as ForkTruncateUuidNotFoundError, e as forkBeforeUserMessage, a as forkCompletedTurns } from './claudeSessionFork-
|
|
35
|
-
import { C as CodexAppServerClient } from './codexAppServerClient-
|
|
34
|
+
import { f as forkSession, F as ForkSourceMissingError, d as discardForkedSession, l as listClaudeRewindPoints, b as forkAndTruncateSession, c as ForkTruncateUuidNotFoundError, e as forkBeforeUserMessage, a as forkCompletedTurns } from './claudeSessionFork-BMMJmfxX.mjs';
|
|
35
|
+
import { C as CodexAppServerClient } from './codexAppServerClient-AcMiUjlK.mjs';
|
|
36
36
|
import { f as forkCodexThread, C as CodexForkRewindPointNotFoundError, l as listCodexRewindPoints, b as forkCodexBeforeUserMessage, a as forkCodexCompletedTurns } from './codexThreadFork-CVzAqELg.mjs';
|
|
37
|
-
import { p as planRateLimitWrite, m as mergeRateLimitReports } from './rateLimitWindows-
|
|
37
|
+
import { p as planRateLimitWrite, m as mergeRateLimitReports } from './rateLimitWindows-BAfkXSck.mjs';
|
|
38
38
|
import 'chalk';
|
|
39
39
|
import 'node:util';
|
|
40
40
|
import 'os';
|
|
41
41
|
import 'child_process';
|
|
42
|
-
import './package-
|
|
42
|
+
import './package-DUKnh8UF.mjs';
|
|
43
43
|
import 'util';
|
|
44
44
|
import 'fs/promises';
|
|
45
45
|
import 'crypto';
|
|
@@ -465,6 +465,7 @@ function planTerminalRestore(record, facts) {
|
|
|
465
465
|
title: record.title ?? record.attachTmux,
|
|
466
466
|
manual: true,
|
|
467
467
|
tags: record.tags,
|
|
468
|
+
...record.projectId ? { projectId: record.projectId } : {},
|
|
468
469
|
command: attachStartupCommand(matches[0].id, facts.attachSocket),
|
|
469
470
|
attachTmux: record.attachTmux,
|
|
470
471
|
...recordGeometry(record)
|
|
@@ -479,6 +480,7 @@ function planTerminalRestore(record, facts) {
|
|
|
479
480
|
title: record.title,
|
|
480
481
|
manual: record.manual === true,
|
|
481
482
|
tags: record.tags,
|
|
483
|
+
...record.projectId ? { projectId: record.projectId } : {},
|
|
482
484
|
...resumable ? { command: `claude --resume ${record.claudeSessionId}` } : {},
|
|
483
485
|
...recordGeometry(record)
|
|
484
486
|
};
|
|
@@ -6031,6 +6033,7 @@ function selectAutoRestore(candidates, opts) {
|
|
|
6031
6033
|
terminalId: c.id,
|
|
6032
6034
|
...c.tags !== void 0 ? { tags: c.tags } : {},
|
|
6033
6035
|
...c.manual ? { manual: true } : {},
|
|
6036
|
+
...c.projectId ? { projectId: c.projectId } : {},
|
|
6034
6037
|
...c.cols !== void 0 && c.rows !== void 0 ? { cols: c.cols, rows: c.rows } : {},
|
|
6035
6038
|
cwd: c.cwd,
|
|
6036
6039
|
title: c.title,
|
|
@@ -6080,7 +6083,7 @@ function sanitizeClosedTerminals(raw, max = CLOSED_TERMINALS_MAX) {
|
|
|
6080
6083
|
const out = [];
|
|
6081
6084
|
for (const item of raw) {
|
|
6082
6085
|
if (!item || typeof item !== "object") continue;
|
|
6083
|
-
const { id, title, cwd, mirrorSessionId, claudeSessionId, reason, closedAt, tags, manual, attachTmux } = item;
|
|
6086
|
+
const { id, title, cwd, mirrorSessionId, claudeSessionId, reason, closedAt, tags, manual, attachTmux, projectId } = item;
|
|
6084
6087
|
if (typeof id !== "string" || id.length === 0 || typeof closedAt !== "number") continue;
|
|
6085
6088
|
if (seen.has(id)) continue;
|
|
6086
6089
|
seen.add(id);
|
|
@@ -6095,6 +6098,7 @@ function sanitizeClosedTerminals(raw, max = CLOSED_TERMINALS_MAX) {
|
|
|
6095
6098
|
...tagList !== void 0 ? { tags: tagList } : {},
|
|
6096
6099
|
...manual === true ? { manual: true } : {},
|
|
6097
6100
|
...typeof attachTmux === "string" && attachTmux ? { attachTmux } : {},
|
|
6101
|
+
...projectField(projectId),
|
|
6098
6102
|
closedAt
|
|
6099
6103
|
});
|
|
6100
6104
|
}
|
|
@@ -6111,6 +6115,7 @@ function directTerminalItems(sessions, tmuxIds) {
|
|
|
6111
6115
|
id: s.id,
|
|
6112
6116
|
...title ? { title } : {},
|
|
6113
6117
|
tags: s.direct.tags ?? [],
|
|
6118
|
+
projectId: s.direct.projectId ?? null,
|
|
6114
6119
|
...s.direct.manual ? { manual: true } : {},
|
|
6115
6120
|
cwd: s.direct.cwd,
|
|
6116
6121
|
createdAt: s.direct.createdAt,
|
|
@@ -6858,7 +6863,7 @@ function startupInjectionArgs(tmuxSession, command) {
|
|
|
6858
6863
|
];
|
|
6859
6864
|
}
|
|
6860
6865
|
function seenInfoOf(t) {
|
|
6861
|
-
return { title: t.title, cwd: t.cwd, tags: t.tags, manual: t.manual, attachTmux: t.attachTmux, ...seenGeometry(t.paneCols, t.paneRows) };
|
|
6866
|
+
return { title: t.title, cwd: t.cwd, tags: t.tags, manual: t.manual, attachTmux: t.attachTmux, ...t.projectId ? { projectId: t.projectId } : {}, ...seenGeometry(t.paneCols, t.paneRows) };
|
|
6862
6867
|
}
|
|
6863
6868
|
function seenGeometry(cols, rows) {
|
|
6864
6869
|
return cols !== void 0 && rows !== void 0 ? { cols, rows } : {};
|
|
@@ -6878,7 +6883,9 @@ function terminalListSignature(items) {
|
|
|
6878
6883
|
// list, or the web never learns the toggle became available.
|
|
6879
6884
|
t.mirrorSessionId ?? "",
|
|
6880
6885
|
t.attachTmux ?? "",
|
|
6881
|
-
t.direct ? 1 : 0
|
|
6886
|
+
t.direct ? 1 : 0,
|
|
6887
|
+
// B-868: moving a terminal between projects must push at once.
|
|
6888
|
+
t.projectId ?? ""
|
|
6882
6889
|
]);
|
|
6883
6890
|
return JSON.stringify(canon);
|
|
6884
6891
|
}
|
|
@@ -7730,6 +7737,7 @@ class WebTerminalManager {
|
|
|
7730
7737
|
tags: info.tags,
|
|
7731
7738
|
manual: info.manual,
|
|
7732
7739
|
...info.attachTmux ? { attachTmux: info.attachTmux } : {},
|
|
7740
|
+
...info.projectId ? { projectId: info.projectId } : {},
|
|
7733
7741
|
...seenGeometry(info.cols, info.rows),
|
|
7734
7742
|
// Live binding first (authoritative while it exists), persisted
|
|
7735
7743
|
// metadata as the fallback once the mirror has been torn down.
|
|
@@ -7785,6 +7793,7 @@ class WebTerminalManager {
|
|
|
7785
7793
|
tags: info.tags,
|
|
7786
7794
|
manual: info.manual,
|
|
7787
7795
|
...info.attachTmux ? { attachTmux: info.attachTmux } : {},
|
|
7796
|
+
...info.projectId ? { projectId: info.projectId } : {},
|
|
7788
7797
|
...seenGeometry(info.cols, info.rows),
|
|
7789
7798
|
mirrorSessionId: mirror?.sessionId,
|
|
7790
7799
|
claudeSessionId: mirror?.claudeSessionId,
|
|
@@ -7798,6 +7807,7 @@ class WebTerminalManager {
|
|
|
7798
7807
|
cwd: info.cwd,
|
|
7799
7808
|
tags: info.tags,
|
|
7800
7809
|
manual: info.manual,
|
|
7810
|
+
...info.projectId ? { projectId: info.projectId } : {},
|
|
7801
7811
|
...seenGeometry(info.cols, info.rows),
|
|
7802
7812
|
seenAt: info.seenAt,
|
|
7803
7813
|
claudeSessionId: mirror?.claudeSessionId
|
|
@@ -7988,6 +7998,14 @@ class WebTerminalManager {
|
|
|
7988
7998
|
{ stdio: "ignore", timeout: TMUX_PROBE_TIMEOUT_MS, env }
|
|
7989
7999
|
);
|
|
7990
8000
|
}
|
|
8001
|
+
const projectId = validateTerminalProjectId(plan.projectId);
|
|
8002
|
+
if (projectId) {
|
|
8003
|
+
spawnSync(
|
|
8004
|
+
"tmux",
|
|
8005
|
+
tmuxArgs(["set-option", "-t", `=${name}:`, "@vh_project", projectId]),
|
|
8006
|
+
{ stdio: "ignore", timeout: TMUX_PROBE_TIMEOUT_MS, env }
|
|
8007
|
+
);
|
|
8008
|
+
}
|
|
7991
8009
|
if (plan.command) {
|
|
7992
8010
|
const command = withTerminalHooks(plan.command, plan.terminalId, this.claudeVersion.current());
|
|
7993
8011
|
for (const argv of startupInjectionArgs(name, command)) {
|
|
@@ -8001,7 +8019,7 @@ class WebTerminalManager {
|
|
|
8001
8019
|
* would care about changed (see liveSnapshotChanged). */
|
|
8002
8020
|
persistLiveSnapshot(live, now) {
|
|
8003
8021
|
const candidate = /* @__PURE__ */ new Map();
|
|
8004
|
-
for (const [id, info] of live) candidate.set(id, { title: info.title, cwd: info.cwd, tags: info.tags, manual: info.manual, ...info.attachTmux ? { attachTmux: info.attachTmux } : {}, ...seenGeometry(info.cols, info.rows), seenAt: now });
|
|
8022
|
+
for (const [id, info] of live) candidate.set(id, { title: info.title, cwd: info.cwd, tags: info.tags, manual: info.manual, ...info.attachTmux ? { attachTmux: info.attachTmux } : {}, ...info.projectId ? { projectId: info.projectId } : {}, ...seenGeometry(info.cols, info.rows), seenAt: now });
|
|
8005
8023
|
if (!liveSnapshotChanged(this.lastPersistedSnapshot, candidate)) return;
|
|
8006
8024
|
this.lastPersistedSnapshot = candidate;
|
|
8007
8025
|
saveLiveSnapshot(candidate);
|
|
@@ -8222,7 +8240,7 @@ class WebTerminalManager {
|
|
|
8222
8240
|
}
|
|
8223
8241
|
}
|
|
8224
8242
|
if (createdNew) {
|
|
8225
|
-
attachedTmux = this.injectIntoCreated(tmuxSession, attachTarget, opts.startupCommand, env);
|
|
8243
|
+
attachedTmux = this.injectIntoCreated(tmuxSession, attachTarget, opts.startupCommand, env, opts.projectId);
|
|
8226
8244
|
} else if (opts.attachTmux && !attachOnly) {
|
|
8227
8245
|
const stored = spawnSync(
|
|
8228
8246
|
"tmux",
|
|
@@ -8245,7 +8263,7 @@ class WebTerminalManager {
|
|
|
8245
8263
|
{ stdio: "ignore", timeout: TMUX_CREATE_TIMEOUT_MS, env }
|
|
8246
8264
|
);
|
|
8247
8265
|
createdNew = retry.status === 0;
|
|
8248
|
-
if (createdNew) attachedTmux = this.injectIntoCreated(tmuxSession, attachTarget, opts.startupCommand, env);
|
|
8266
|
+
if (createdNew) attachedTmux = this.injectIntoCreated(tmuxSession, attachTarget, opts.startupCommand, env, opts.projectId);
|
|
8249
8267
|
}
|
|
8250
8268
|
}
|
|
8251
8269
|
if (!attachOnly && !createdNew) {
|
|
@@ -8324,7 +8342,8 @@ class WebTerminalManager {
|
|
|
8324
8342
|
}
|
|
8325
8343
|
}
|
|
8326
8344
|
const created = new TerminalSession(id, { kind: "pty", pty: proc }, void 0, cols, rows);
|
|
8327
|
-
|
|
8345
|
+
const createProject = validateTerminalProjectId(opts.projectId);
|
|
8346
|
+
created.direct = { cwd, createdAt: Date.now(), ...createProject ? { projectId: createProject } : {} };
|
|
8328
8347
|
created.onTitleChange((title) => {
|
|
8329
8348
|
if (created.direct && !created.direct.manual) created.direct.title = deriveAutoTitle(title, os.hostname(), created.direct.cwd);
|
|
8330
8349
|
});
|
|
@@ -8372,7 +8391,14 @@ class WebTerminalManager {
|
|
|
8372
8391
|
* records / restore and types the attach line; otherwise the ordinary
|
|
8373
8392
|
* startup command runs. Returns what to echo as `attachedTmux`.
|
|
8374
8393
|
*/
|
|
8375
|
-
injectIntoCreated(tmuxSession, attachTarget, startupCommand, env) {
|
|
8394
|
+
injectIntoCreated(tmuxSession, attachTarget, startupCommand, env, projectId) {
|
|
8395
|
+
const project = validateTerminalProjectId(projectId);
|
|
8396
|
+
if (project) {
|
|
8397
|
+
try {
|
|
8398
|
+
spawnSync("tmux", tmuxArgs(["set-option", "-t", `=${tmuxSession}:`, "@vh_project", project]), { stdio: "ignore", timeout: TMUX_PROBE_TIMEOUT_MS, env });
|
|
8399
|
+
} catch {
|
|
8400
|
+
}
|
|
8401
|
+
}
|
|
8376
8402
|
if (attachTarget) {
|
|
8377
8403
|
for (const a of [
|
|
8378
8404
|
["set-option", "-t", `=${tmuxSession}:`, "@vh_title", attachTarget.name],
|
|
@@ -8693,6 +8719,7 @@ class WebTerminalManager {
|
|
|
8693
8719
|
cwd: liveDirect.direct.cwd,
|
|
8694
8720
|
tags: liveDirect.direct.tags ?? [],
|
|
8695
8721
|
...liveDirect.direct.manual ? { manual: true } : {},
|
|
8722
|
+
...liveDirect.direct.projectId ? { projectId: liveDirect.direct.projectId } : {},
|
|
8696
8723
|
reason: "closed",
|
|
8697
8724
|
closedAt: Date.now()
|
|
8698
8725
|
});
|
|
@@ -8736,6 +8763,7 @@ class WebTerminalManager {
|
|
|
8736
8763
|
tags: info.tags,
|
|
8737
8764
|
manual: info.manual,
|
|
8738
8765
|
...info.attachTmux ? { attachTmux: info.attachTmux } : {},
|
|
8766
|
+
...info.projectId ? { projectId: info.projectId } : {},
|
|
8739
8767
|
...seenGeometry(info.cols, info.rows),
|
|
8740
8768
|
mirrorSessionId: this.mirrorResolver?.(terminalId) ?? mirror?.sessionId,
|
|
8741
8769
|
claudeSessionId: mirror?.claudeSessionId,
|
|
@@ -8826,6 +8854,7 @@ class WebTerminalManager {
|
|
|
8826
8854
|
title,
|
|
8827
8855
|
// Always include [] so Web can feature-detect tag support.
|
|
8828
8856
|
tags: s.tags,
|
|
8857
|
+
projectId: s.projectId,
|
|
8829
8858
|
cwd: s.cwd,
|
|
8830
8859
|
createdAt: s.created,
|
|
8831
8860
|
// tmux last-activity (epoch s) → ms; optional so old daemons
|
|
@@ -9066,6 +9095,34 @@ class WebTerminalManager {
|
|
|
9066
9095
|
return false;
|
|
9067
9096
|
}
|
|
9068
9097
|
}
|
|
9098
|
+
/** B-868: put the terminal in a Very Happy project, or take it out (null).
|
|
9099
|
+
* Only the id is stored (`@vh_project`); the web resolves it against the
|
|
9100
|
+
* account's projects. Nothing is ever injected into the terminal. */
|
|
9101
|
+
setProject(terminalId, projectId) {
|
|
9102
|
+
const direct = this.terminals.get(terminalId)?.direct;
|
|
9103
|
+
if (!direct && !isTmuxAvailable()) return false;
|
|
9104
|
+
if (!/^[a-zA-Z0-9_-]{1,64}$/.test(terminalId)) return false;
|
|
9105
|
+
const valid = validateTerminalProjectId(projectId);
|
|
9106
|
+
if (valid === void 0) return false;
|
|
9107
|
+
if (direct) {
|
|
9108
|
+
if (valid) direct.projectId = valid;
|
|
9109
|
+
else delete direct.projectId;
|
|
9110
|
+
this.kickListRefresh();
|
|
9111
|
+
return true;
|
|
9112
|
+
}
|
|
9113
|
+
const target = `=vh-${terminalId}:`;
|
|
9114
|
+
try {
|
|
9115
|
+
const r = spawnSync("tmux", tmuxArgs(valid ? ["set-option", "-t", target, "@vh_project", valid] : ["set-option", "-u", "-t", target, "@vh_project"]), {
|
|
9116
|
+
stdio: "ignore",
|
|
9117
|
+
env: ptyEnv()
|
|
9118
|
+
});
|
|
9119
|
+
if (r.status !== 0) return false;
|
|
9120
|
+
this.kickListRefresh();
|
|
9121
|
+
return true;
|
|
9122
|
+
} catch {
|
|
9123
|
+
return false;
|
|
9124
|
+
}
|
|
9125
|
+
}
|
|
9069
9126
|
}
|
|
9070
9127
|
|
|
9071
9128
|
const UUID_RE$4 = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
@@ -10914,7 +10971,7 @@ class ApiMachineClient {
|
|
|
10914
10971
|
this.syncResumeSessionRpcRegistration();
|
|
10915
10972
|
this.syncRestartSessionRpcRegistration();
|
|
10916
10973
|
this.rpcHandlerManager.registerHandler("open-terminal", async (params) => {
|
|
10917
|
-
const { terminalId, cols, rows, cwd, fromSeq, encStream, startupCommand, resub, attachOnly, streamMode, attachTmux } = params || {};
|
|
10974
|
+
const { terminalId, cols, rows, cwd, fromSeq, encStream, startupCommand, resub, attachOnly, streamMode, attachTmux, projectId } = params || {};
|
|
10918
10975
|
const attach = attachTmux && typeof attachTmux === "object" && typeof attachTmux.id === "string" && typeof attachTmux.name === "string" ? { id: attachTmux.id, name: attachTmux.name } : void 0;
|
|
10919
10976
|
const result = await this.webTerminal.open({
|
|
10920
10977
|
terminalId,
|
|
@@ -10926,7 +10983,9 @@ class ApiMachineClient {
|
|
|
10926
10983
|
resub,
|
|
10927
10984
|
attachOnly,
|
|
10928
10985
|
streamMode: streamMode === "lines" ? "lines" : void 0,
|
|
10929
|
-
...attach ? { attachTmux: attach } : {}
|
|
10986
|
+
...attach ? { attachTmux: attach } : {},
|
|
10987
|
+
// B-868: create-only; validated inside open().
|
|
10988
|
+
...typeof projectId === "string" ? { projectId } : {}
|
|
10930
10989
|
});
|
|
10931
10990
|
if (encStream) {
|
|
10932
10991
|
this.encTerminals.add(result.terminalId);
|
|
@@ -11024,6 +11083,16 @@ class ApiMachineClient {
|
|
|
11024
11083
|
}
|
|
11025
11084
|
return { type: "success" };
|
|
11026
11085
|
});
|
|
11086
|
+
this.rpcHandlerManager.registerHandler("set-terminal-project", async (params) => {
|
|
11087
|
+
const { terminalId, projectId } = params || {};
|
|
11088
|
+
if (typeof terminalId !== "string" || !terminalId || projectId === void 0) {
|
|
11089
|
+
throw new Error("terminalId and projectId are required");
|
|
11090
|
+
}
|
|
11091
|
+
if (!this.webTerminal.setProject(terminalId, projectId)) {
|
|
11092
|
+
throw new Error("Failed to set terminal project (invalid id, tmux unavailable, or session gone)");
|
|
11093
|
+
}
|
|
11094
|
+
return { type: "success" };
|
|
11095
|
+
});
|
|
11027
11096
|
this.rpcHandlerManager.registerHandler("stop-session", (params) => {
|
|
11028
11097
|
const { sessionId } = params || {};
|
|
11029
11098
|
if (!sessionId) {
|
|
@@ -11537,6 +11606,8 @@ class ApiMachineClient {
|
|
|
11537
11606
|
codexHistory: { rpcAvailable: true, detectedAt: now },
|
|
11538
11607
|
// B-549 capability flag: `history-search` (same restamp discipline).
|
|
11539
11608
|
historySearch: { rpcAvailable: true, detectedAt: now },
|
|
11609
|
+
// B-868 capability flag: `set-terminal-project` (same restamp discipline).
|
|
11610
|
+
terminalProjects: { rpcAvailable: true, detectedAt: now },
|
|
11540
11611
|
// B-084: closed records survive daemon restarts (persisted
|
|
11541
11612
|
// in closed-terminals.json), so the connect snapshot ships
|
|
11542
11613
|
// them too — not just the incremental pushes.
|