@dylanpiercey/work 0.0.126 → 0.0.128
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/{_BJcBOXUi.js → _B30PhyQg.js} +2 -2
- package/dist/{_DOBRRnfU.js → _BerH0QBf.js} +177 -31
- package/dist/_Bhd3BMas.js +2 -0
- package/dist/{_BbeyxI4D.js → _C4XjaPFG.js} +45 -44
- package/dist/{_930ti7l4.js → _ClRtSKMs.js} +4 -4
- package/dist/{_DN0yiF9R.js → _DJysod1h.js} +2 -2
- package/dist/_DLULQXOg.js +2 -0
- package/dist/_PwfoxOUv.js +2 -0
- package/dist/index.mjs +122 -121
- package/dist/public/assets/{_DoKPYHor.js → _2atN5_49.js} +1 -1
- package/dist/public/assets/_2atN5_49.js.br +0 -0
- package/dist/public/assets/{_Cm_EGitm.js → _45gudOGb.js} +1 -1
- package/dist/public/assets/_45gudOGb.js.br +0 -0
- package/dist/public/assets/{_B-r654rs.js → _4_dv9RRR.js} +1 -1
- package/dist/public/assets/_4_dv9RRR.js.br +0 -0
- package/dist/public/assets/{_QMEB-AJI.js → _7kXhmJzF.js} +1 -1
- package/dist/public/assets/_7kXhmJzF.js.br +0 -0
- package/dist/public/assets/{_DiQE2eC7.js → _Ahv_8VxS.js} +1 -1
- package/dist/public/assets/_Ahv_8VxS.js.br +0 -0
- package/dist/public/assets/{_Dlh45sdA.js → _B2-WH45q.js} +1 -1
- package/dist/public/assets/_B2-WH45q.js.br +0 -0
- package/dist/public/assets/{_B_xvbOWX.js → _B9GPNr6t.js} +1 -1
- package/dist/public/assets/_B9GPNr6t.js.br +0 -0
- package/dist/public/assets/{_svshX-aQ.js → _BE_GmyLg.js} +1 -1
- package/dist/public/assets/_BE_GmyLg.js.br +0 -0
- package/dist/public/assets/{_gpk_PSVn.js → _BHpVlnjy.js} +5 -5
- package/dist/public/assets/_BHpVlnjy.js.br +0 -0
- package/dist/public/assets/{_BALGRv43.js → _BIsGKHRI.js} +1 -1
- package/dist/public/assets/_BIsGKHRI.js.br +0 -0
- package/dist/public/assets/{_BqbAh5gK.js → _BJwrkhab.js} +1 -1
- package/dist/public/assets/_BJwrkhab.js.br +0 -0
- package/dist/public/assets/{_wtUaV484.js → _BK786sc5.js} +1 -1
- package/dist/public/assets/_BK786sc5.js.br +0 -0
- package/dist/public/assets/{_Ba-sjk5f2.js → _BT-WHXi-2.js} +1 -1
- package/dist/public/assets/_BT-WHXi-2.js.br +0 -0
- package/dist/public/assets/{_ootO_6Al.js → _BX4ihukl.js} +1 -1
- package/dist/public/assets/_BX4ihukl.js.br +0 -0
- package/dist/public/assets/{_Co35m3IZ.js → _BYPJjekI.js} +1 -1
- package/dist/public/assets/_BYPJjekI.js.br +0 -0
- package/dist/public/assets/{_DFaA-2NW.js → _BZkIKlo9.js} +1 -1
- package/dist/public/assets/_BZkIKlo9.js.br +0 -0
- package/dist/public/assets/{_BZ0Oaoke.js → _BZtvfQNh.js} +1 -1
- package/dist/public/assets/_BZtvfQNh.js.br +0 -0
- package/dist/public/assets/{_4Sc0xkpv2.js → _BaDP9nyN2.js} +1 -1
- package/dist/public/assets/_BaDP9nyN2.js.br +0 -0
- package/dist/public/assets/{_aehLxum1.js → _BbtbhUn0.js} +1 -1
- package/dist/public/assets/_BbtbhUn0.js.br +0 -0
- package/dist/public/assets/{_EE2Ozl5q2.js → _BfaOytXn2.js} +1 -1
- package/dist/public/assets/_BfaOytXn2.js.br +0 -0
- package/dist/public/assets/{_DXXIdX5L.js → _BgEOilHW.js} +1 -1
- package/dist/public/assets/_BgEOilHW.js.br +0 -0
- package/dist/public/assets/{_Cm3QOMjp.js → _BlRiCpMu.js} +1 -1
- package/dist/public/assets/{_BjWfza3x2.js → _BmwsHLtR2.js} +1 -1
- package/dist/public/assets/_BmwsHLtR2.js.br +0 -0
- package/dist/public/assets/{_DxAipRKA.js → _BnC6SotZ.js} +1 -1
- package/dist/public/assets/_BnC6SotZ.js.br +0 -0
- package/dist/public/assets/{_Br-gbTtE.js → _BoyJqppG.js} +1 -1
- package/dist/public/assets/_BoyJqppG.js.br +0 -0
- package/dist/public/assets/{_COqj49mb2.js → _Bt7ajZa02.js} +1 -1
- package/dist/public/assets/_Bt7ajZa02.js.br +0 -0
- package/dist/public/assets/{_CzFtzpPJ.js → _BxRq_o5C.js} +1 -1
- package/dist/public/assets/_BxRq_o5C.js.br +0 -0
- package/dist/public/assets/{_D6h_nzqN2.js → _BymCgkEL2.js} +1 -1
- package/dist/public/assets/_BymCgkEL2.js.br +0 -0
- package/dist/public/assets/_C-5IEE_0.js +89 -0
- package/dist/public/assets/_C-5IEE_0.js.br +0 -0
- package/dist/public/assets/{_DSjWzxBS.js → _C3Y3Xepe.js} +1 -1
- package/dist/public/assets/_C3Y3Xepe.js.br +0 -0
- package/dist/public/assets/{_3BRA7txp.js → _CAhy9Y_G.js} +1 -1
- package/dist/public/assets/_CAhy9Y_G.js.br +0 -0
- package/dist/public/assets/{_BwHsR4Hu2.js → _CDbnWoy92.js} +1 -1
- package/dist/public/assets/_CDbnWoy92.js.br +0 -0
- package/dist/public/assets/{_CsOy-9EE.js → _CHC4edhn.js} +1 -1
- package/dist/public/assets/_CHC4edhn.js.br +0 -0
- package/dist/public/assets/{_BI1oLg382.js → _CNAHynbS2.js} +1 -1
- package/dist/public/assets/_CNAHynbS2.js.br +0 -0
- package/dist/public/assets/{_BEl3PsaU.js → _CPbJSdgB.js} +1 -1
- package/dist/public/assets/_CPbJSdgB.js.br +0 -0
- package/dist/public/assets/{_BrQeyKxO.js → _CPpvCMKJ.js} +1 -1
- package/dist/public/assets/_CPpvCMKJ.js.br +0 -0
- package/dist/public/assets/{_BGCxGXkk2.js → _CVhLvJ0M2.js} +1 -1
- package/dist/public/assets/_CVhLvJ0M2.js.br +0 -0
- package/dist/public/assets/{_W45rYmoq2.js → _CYuZNuvX2.js} +1 -1
- package/dist/public/assets/_CYuZNuvX2.js.br +0 -0
- package/dist/public/assets/{_DFgDIu2Y.js → _Cd-JExoS.js} +1 -1
- package/dist/public/assets/_Cd-JExoS.js.br +0 -0
- package/dist/public/assets/{_LM3iN9-P.js → _CehN_YUB.js} +1 -1
- package/dist/public/assets/_CehN_YUB.js.br +0 -0
- package/dist/public/assets/{_CSVGMOm7.js → _CjTpnHgq.js} +1 -1
- package/dist/public/assets/_CjTpnHgq.js.br +0 -0
- package/dist/public/assets/{_BzEJqCpG.js → _Cn_XylXM.js} +1 -1
- package/dist/public/assets/_Cn_XylXM.js.br +0 -0
- package/dist/public/assets/{_CEHp689i.js → _Cp3roUf7.js} +1 -1
- package/dist/public/assets/_Cp3roUf7.js.br +0 -0
- package/dist/public/assets/{_DvXw6uys.js → _CrhyDYV-.js} +1 -1
- package/dist/public/assets/_CrhyDYV-.js.br +0 -0
- package/dist/public/assets/{_cybjKrzf2.js → _CsmVtUjT2.js} +1 -1
- package/dist/public/assets/_CsmVtUjT2.js.br +0 -0
- package/dist/public/assets/{_CIu4BTJ42.js → _CwRQb5hh2.js} +1 -1
- package/dist/public/assets/_CwRQb5hh2.js.br +0 -0
- package/dist/public/assets/{_CYPLBNAS.js → _DApmDSpt.js} +1 -1
- package/dist/public/assets/_DApmDSpt.js.br +0 -0
- package/dist/public/assets/{_rOZ568Td2.js → _DArc2ta82.js} +1 -1
- package/dist/public/assets/_DArc2ta82.js.br +0 -0
- package/dist/public/assets/{_Bcc5-Afq2.js → _DBJzZ5Sx2.js} +1 -1
- package/dist/public/assets/_DBJzZ5Sx2.js.br +0 -0
- package/dist/public/assets/{_D_rl5asE.js → _DDjoVRkI.js} +1 -1
- package/dist/public/assets/_DDjoVRkI.js.br +0 -0
- package/dist/public/assets/{_D_wjIaWS2.js → _DF5mec_X2.js} +1 -1
- package/dist/public/assets/_DF5mec_X2.js.br +0 -0
- package/dist/public/assets/{_D9jAcnDl2.js → _DHtbaeqf2.js} +1 -1
- package/dist/public/assets/_DHtbaeqf2.js.br +0 -0
- package/dist/public/assets/{_C9SdMpiK.js → _DLd6SBtV.js} +1 -1
- package/dist/public/assets/_DLd6SBtV.js.br +0 -0
- package/dist/public/assets/{_B3ZOGdCQ.js → _DLwiqVNd.js} +1 -1
- package/dist/public/assets/_DLwiqVNd.js.br +0 -0
- package/dist/public/assets/{_BbLGlPoc.js → _DOUSJSBm.js} +1 -1
- package/dist/public/assets/_DOUSJSBm.js.br +0 -0
- package/dist/public/assets/{_fCbASA3z.js → _DV3tcZKG.js} +1 -1
- package/dist/public/assets/_DV3tcZKG.js.br +0 -0
- package/dist/public/assets/{_CqR_fAZt2.js → _D_T5Qm1d2.js} +1 -1
- package/dist/public/assets/{_D-toI9a32.js → _Dev8BZKl2.js} +1 -1
- package/dist/public/assets/_Dev8BZKl2.js.br +0 -0
- package/dist/public/assets/{_BFqcwyCU.js → _DhDyqdYj.js} +1 -1
- package/dist/public/assets/_DhDyqdYj.js.br +0 -0
- package/dist/public/assets/{_O0SjYRZ8.js → _Dn6Kcv5d.js} +1 -1
- package/dist/public/assets/_Dn6Kcv5d.js.br +0 -0
- package/dist/public/assets/{_DClaYPlK.js → _DtbsE3B3.js} +1 -1
- package/dist/public/assets/_DtbsE3B3.js.br +0 -0
- package/dist/public/assets/{_6b3F5W1q2.js → _DxXdx9cq2.js} +1 -1
- package/dist/public/assets/_DxXdx9cq2.js.br +0 -0
- package/dist/public/assets/{_BxaWEtEO2.js → _FBgUPBBV2.js} +1 -1
- package/dist/public/assets/_FBgUPBBV2.js.br +0 -0
- package/dist/public/assets/{_C4zv6QU4.js → _KMUkV_vv.js} +1 -1
- package/dist/public/assets/_KMUkV_vv.js.br +0 -0
- package/dist/public/assets/{_DAImTOxp.js → _L7NnuuHy.js} +1 -1
- package/dist/public/assets/_L7NnuuHy.js.br +0 -0
- package/dist/public/assets/{_YOB_O7zw.js → _LSySw_4u.js} +1 -1
- package/dist/public/assets/_LSySw_4u.js.br +0 -0
- package/dist/public/assets/{_61JieLHZ.js → _NWxZZQ8_.js} +1 -1
- package/dist/public/assets/_NWxZZQ8_.js.br +0 -0
- package/dist/public/assets/{_DNVQ-9kk2.js → _YSzJ7Ype2.js} +1 -1
- package/dist/public/assets/_YSzJ7Ype2.js.br +0 -0
- package/dist/public/assets/{_CmFgspMi2.js → _bhIZTwn32.js} +1 -1
- package/dist/public/assets/_bhIZTwn32.js.br +0 -0
- package/dist/public/assets/{_W5FaLamO.js → _c8Uk9Aot.js} +1 -1
- package/dist/public/assets/_c8Uk9Aot.js.br +0 -0
- package/dist/public/assets/{_DzOppB-E2.js → _dbDU7m5S2.js} +1 -1
- package/dist/public/assets/_dbDU7m5S2.js.br +0 -0
- package/dist/public/assets/{_DFvrKpQ4.js → _e9zXojVW.js} +1 -1
- package/dist/public/assets/_e9zXojVW.js.br +0 -0
- package/dist/public/assets/{_C4fzVfer.js → _ezXJoyMk.js} +1 -1
- package/dist/public/assets/_ezXJoyMk.js.br +0 -0
- package/dist/public/assets/{_BwczNDmk2.js → _hLqfRnOD2.js} +1 -1
- package/dist/public/assets/{_ChysmIko.js → _ihIPEFX9.js} +1 -1
- package/dist/public/assets/_ihIPEFX9.js.br +0 -0
- package/dist/public/assets/{_k68CcE-R.js → _xGm3b9ND.js} +1 -1
- package/dist/public/assets/_xGm3b9ND.js.br +0 -0
- package/dist/public/assets/{app-page-Cw_q7_9l.css → app-page-CILO9P1z.css} +1 -1
- package/dist/public/assets/app-page-CILO9P1z.css.br +0 -0
- package/dist/public/assets/{diff-view-D96qn7oa.css → diff-view-BeNrt8yD.css} +1 -1
- package/dist/public/assets/diff-view-BeNrt8yD.css.br +0 -0
- package/dist/public/assets/new-BW7jkaND.js +1 -0
- package/dist/public/assets/settings-BW7jkaND.js +1 -0
- package/dist/public/assets/w-BW7jkaND.js +1 -0
- package/dist/public/assets/w._-BDS5Skst.js +1 -0
- package/dist/public/assets/w._-BW7jkaND.js +1 -0
- package/lib/setup/agents.json +16 -0
- package/package.json +1 -1
- package/dist/_8GaDFTzQ.js +0 -2
- package/dist/_CrVv317N.js +0 -2
- package/dist/_iX5oUHA_.js +0 -2
- package/dist/public/assets/_3BRA7txp.js.br +0 -0
- package/dist/public/assets/_4Sc0xkpv2.js.br +0 -0
- package/dist/public/assets/_61JieLHZ.js.br +0 -0
- package/dist/public/assets/_6b3F5W1q2.js.br +0 -0
- package/dist/public/assets/_B-r654rs.js.br +0 -0
- package/dist/public/assets/_B3ZOGdCQ.js.br +0 -0
- package/dist/public/assets/_BALGRv43.js.br +0 -0
- package/dist/public/assets/_BEl3PsaU.js.br +0 -0
- package/dist/public/assets/_BFqcwyCU.js.br +0 -0
- package/dist/public/assets/_BGCxGXkk2.js.br +0 -0
- package/dist/public/assets/_BI1oLg382.js.br +0 -0
- package/dist/public/assets/_BZ0Oaoke.js.br +0 -0
- package/dist/public/assets/_B_xvbOWX.js.br +0 -0
- package/dist/public/assets/_Ba-sjk5f2.js.br +0 -0
- package/dist/public/assets/_BbLGlPoc.js.br +0 -0
- package/dist/public/assets/_Bcc5-Afq2.js.br +0 -0
- package/dist/public/assets/_BjWfza3x2.js.br +0 -0
- package/dist/public/assets/_Bpt7qjjQ.js +0 -89
- package/dist/public/assets/_Bpt7qjjQ.js.br +0 -0
- package/dist/public/assets/_BqbAh5gK.js.br +0 -0
- package/dist/public/assets/_Br-gbTtE.js.br +0 -0
- package/dist/public/assets/_BrQeyKxO.js.br +0 -0
- package/dist/public/assets/_BwHsR4Hu2.js.br +0 -0
- package/dist/public/assets/_BxaWEtEO2.js.br +0 -0
- package/dist/public/assets/_BzEJqCpG.js.br +0 -0
- package/dist/public/assets/_C4fzVfer.js.br +0 -0
- package/dist/public/assets/_C4zv6QU4.js.br +0 -0
- package/dist/public/assets/_C9SdMpiK.js.br +0 -0
- package/dist/public/assets/_CEHp689i.js.br +0 -0
- package/dist/public/assets/_CIu4BTJ42.js.br +0 -0
- package/dist/public/assets/_COqj49mb2.js.br +0 -0
- package/dist/public/assets/_CSVGMOm7.js.br +0 -0
- package/dist/public/assets/_CYPLBNAS.js.br +0 -0
- package/dist/public/assets/_ChysmIko.js.br +0 -0
- package/dist/public/assets/_CmFgspMi2.js.br +0 -0
- package/dist/public/assets/_Cm_EGitm.js.br +0 -0
- package/dist/public/assets/_Co35m3IZ.js.br +0 -0
- package/dist/public/assets/_CsOy-9EE.js.br +0 -0
- package/dist/public/assets/_CzFtzpPJ.js.br +0 -0
- package/dist/public/assets/_D-toI9a32.js.br +0 -0
- package/dist/public/assets/_D6h_nzqN2.js.br +0 -0
- package/dist/public/assets/_D9jAcnDl2.js.br +0 -0
- package/dist/public/assets/_DAImTOxp.js.br +0 -0
- package/dist/public/assets/_DClaYPlK.js.br +0 -0
- package/dist/public/assets/_DFaA-2NW.js.br +0 -0
- package/dist/public/assets/_DFgDIu2Y.js.br +0 -0
- package/dist/public/assets/_DFvrKpQ4.js.br +0 -0
- package/dist/public/assets/_DNVQ-9kk2.js.br +0 -0
- package/dist/public/assets/_DSjWzxBS.js.br +0 -0
- package/dist/public/assets/_DXXIdX5L.js.br +0 -0
- package/dist/public/assets/_D_rl5asE.js.br +0 -0
- package/dist/public/assets/_D_wjIaWS2.js.br +0 -0
- package/dist/public/assets/_DiQE2eC7.js.br +0 -0
- package/dist/public/assets/_Dlh45sdA.js.br +0 -0
- package/dist/public/assets/_DoKPYHor.js.br +0 -0
- package/dist/public/assets/_DvXw6uys.js.br +0 -0
- package/dist/public/assets/_DxAipRKA.js.br +0 -0
- package/dist/public/assets/_DzOppB-E2.js.br +0 -0
- package/dist/public/assets/_EE2Ozl5q2.js.br +0 -0
- package/dist/public/assets/_LM3iN9-P.js.br +0 -0
- package/dist/public/assets/_O0SjYRZ8.js.br +0 -0
- package/dist/public/assets/_QMEB-AJI.js.br +0 -0
- package/dist/public/assets/_W45rYmoq2.js.br +0 -0
- package/dist/public/assets/_W5FaLamO.js.br +0 -0
- package/dist/public/assets/_YOB_O7zw.js.br +0 -0
- package/dist/public/assets/_aehLxum1.js.br +0 -0
- package/dist/public/assets/_cybjKrzf2.js.br +0 -0
- package/dist/public/assets/_fCbASA3z.js.br +0 -0
- package/dist/public/assets/_gpk_PSVn.js.br +0 -0
- package/dist/public/assets/_k68CcE-R.js.br +0 -0
- package/dist/public/assets/_ootO_6Al.js.br +0 -0
- package/dist/public/assets/_rOZ568Td2.js.br +0 -0
- package/dist/public/assets/_svshX-aQ.js.br +0 -0
- package/dist/public/assets/_wtUaV484.js.br +0 -0
- package/dist/public/assets/app-page-Cw_q7_9l.css.br +0 -0
- package/dist/public/assets/diff-view-D96qn7oa.css.br +0 -0
- package/dist/public/assets/new-CvZ_DGtP.js +0 -1
- package/dist/public/assets/settings-CvZ_DGtP.js +0 -1
- package/dist/public/assets/w-CvZ_DGtP.js +0 -1
- package/dist/public/assets/w._-CvZ_DGtP.js +0 -1
- package/dist/public/assets/w._-DnR1UpxG.js +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { U as subscriberCount, V as publish, W as subscriberJoins, dt as all, ft as db, g as sessionStates, l as listSessions } from "./
|
|
2
|
-
import { A as portsByWorkspace, J as hostToken, K as forgetToken, M as headOid, Q as ownsBranch, R as repoParent, V as DEFAULT_HOST, Y as joinRepo, Z as splitRepo, h as listWorkspaces, o as pushFailureFor, q as graphqlUrl, z as swr } from "./
|
|
1
|
+
import { U as subscriberCount, V as publish, W as subscriberJoins, dt as all, ft as db, g as sessionStates, l as listSessions } from "./_BerH0QBf.js";
|
|
2
|
+
import { A as portsByWorkspace, J as hostToken, K as forgetToken, M as headOid, Q as ownsBranch, R as repoParent, V as DEFAULT_HOST, Y as joinRepo, Z as splitRepo, h as listWorkspaces, o as pushFailureFor, q as graphqlUrl, z as swr } from "./_ClRtSKMs.js";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
//#region src/server/github-api.ts
|
|
5
5
|
/** Run a GraphQL query against one host.
|
|
@@ -229,6 +229,18 @@ var agents_default = [
|
|
|
229
229
|
"reauth": "grok",
|
|
230
230
|
"pathDirs": ["~/.grok/bin"]
|
|
231
231
|
},
|
|
232
|
+
{
|
|
233
|
+
"id": "opencode",
|
|
234
|
+
"label": "opencode",
|
|
235
|
+
"bins": ["opencode"],
|
|
236
|
+
"install": {
|
|
237
|
+
"url": "https://opencode.ai/install",
|
|
238
|
+
"shell": "bash"
|
|
239
|
+
},
|
|
240
|
+
"icon": "M6 4.5h12v15H6V4.5zM9 7.5v9h6v-9H9zM9 13.5v3h6v-3H9z",
|
|
241
|
+
"reauth": "opencode auth login",
|
|
242
|
+
"pathDirs": ["~/.opencode/bin"]
|
|
243
|
+
},
|
|
232
244
|
{
|
|
233
245
|
"id": "pi",
|
|
234
246
|
"label": "Pi",
|
|
@@ -6556,7 +6568,7 @@ function publishChange(sessionId) {
|
|
|
6556
6568
|
const row = get("SELECT workspace_id FROM sessions WHERE id = ?", sessionId);
|
|
6557
6569
|
if (row?.workspace_id) {
|
|
6558
6570
|
const workspaceId = row.workspace_id;
|
|
6559
|
-
import("./
|
|
6571
|
+
import("./_PwfoxOUv.js").then((m) => m.notifySessionsChanged(workspaceId));
|
|
6560
6572
|
return;
|
|
6561
6573
|
}
|
|
6562
6574
|
publish("sessions.changed");
|
|
@@ -6629,7 +6641,7 @@ function cleanSummary(text) {
|
|
|
6629
6641
|
if (!flat) return void 0;
|
|
6630
6642
|
return flat.length > 180 ? `${flat.slice(0, 177)}…` : flat;
|
|
6631
6643
|
}
|
|
6632
|
-
var meta_default$
|
|
6644
|
+
var meta_default$6 = {
|
|
6633
6645
|
id: "claude",
|
|
6634
6646
|
label: "Claude",
|
|
6635
6647
|
bins: ["claude"],
|
|
@@ -6639,7 +6651,7 @@ var meta_default$5 = {
|
|
|
6639
6651
|
},
|
|
6640
6652
|
icon: "M4.709 15.955l4.72-2.647.08-.23-.08-.128H9.2l-.79-.048-2.698-.073-2.339-.097-2.266-.122-.571-.121L0 11.784l.055-.352.48-.321.686.06 1.52.103 2.278.158 1.652.097 2.449.255h.389l.055-.157-.134-.098-.103-.097-2.358-1.596-2.552-1.688-1.336-.972-.724-.491-.364-.462-.158-1.008.656-.722.881.06.225.061.893.686 1.908 1.476 2.491 1.833.365.304.145-.103.019-.073-.164-.274-1.355-2.446-1.446-2.49-.644-1.032-.17-.619a2.97 2.97 0 01-.104-.729L6.283.134 6.696 0l.996.134.42.364.62 1.414 1.002 2.229 1.555 3.03.456.898.243.832.091.255h.158V9.01l.128-1.706.237-2.095.23-2.695.08-.76.376-.91.747-.492.584.28.48.685-.067.444-.286 1.851-.559 2.903-.364 1.942h.212l.243-.242.985-1.306 1.652-2.064.73-.82.85-.904.547-.431h1.033l.76 1.129-.34 1.166-1.064 1.347-.881 1.142-1.264 1.7-.79 1.36.073.11.188-.02 2.856-.606 1.543-.28 1.841-.315.833.388.091.395-.328.807-1.969.486-2.309.462-3.439.813-.042.03.049.061 1.549.146.662.036h1.622l3.02.225.79.522.474.638-.079.485-1.215.62-1.64-.389-3.829-.91-1.312-.329h-.182v.11l1.093 1.068 2.006 1.81 2.509 2.33.127.578-.322.455-.34-.049-2.205-1.657-.851-.747-1.926-1.62h-.128v.17l.444.649 2.345 3.521.122 1.08-.17.353-.608.213-.668-.122-1.374-1.925-1.415-2.167-1.143-1.943-.14.08-.674 7.254-.316.37-.729.28-.607-.461-.322-.747.322-1.476.389-1.924.315-1.53.286-1.9.17-.632-.012-.042-.14.018-1.434 1.967-2.18 2.945-1.726 1.845-.414.164-.717-.37.067-.662.401-.589 2.388-3.036 1.44-1.882.93-1.086-.006-.158h-.055L4.132 18.56l-1.13.146-.487-.456.061-.746.231-.243 1.908-1.312-.006.006z"
|
|
6641
6653
|
};
|
|
6642
|
-
var meta_default$
|
|
6654
|
+
var meta_default$5 = {
|
|
6643
6655
|
id: "codex",
|
|
6644
6656
|
label: "Codex",
|
|
6645
6657
|
bins: ["codex"],
|
|
@@ -6651,7 +6663,7 @@ var meta_default$4 = {
|
|
|
6651
6663
|
reauth: "codex login",
|
|
6652
6664
|
pathDirs: ["~/.codex/bin"]
|
|
6653
6665
|
};
|
|
6654
|
-
var meta_default$
|
|
6666
|
+
var meta_default$4 = {
|
|
6655
6667
|
id: "copilot",
|
|
6656
6668
|
label: "Copilot",
|
|
6657
6669
|
bins: ["copilot"],
|
|
@@ -6662,7 +6674,7 @@ var meta_default$3 = {
|
|
|
6662
6674
|
icon: "M19.245 5.364c1.322 1.36 1.877 3.216 2.11 5.817.622 0 1.2.135 1.592.654l.73.964c.21.278.323.61.323.955v2.62c0 .339-.173.669-.453.868C20.239 19.602 16.157 21.5 12 21.5c-4.6 0-9.205-2.583-11.547-4.258-.28-.2-.452-.53-.453-.868v-2.62c0-.345.113-.679.321-.956l.73-.963c.392-.517.974-.654 1.593-.654l.029-.297c.25-2.446.81-4.213 2.082-5.52 2.461-2.54 5.71-2.851 7.146-2.864h.198c1.436.013 4.685.323 7.146 2.864zm-7.244 4.328c-.284 0-.613.016-.962.05-.123.447-.305.85-.57 1.108-1.05 1.023-2.316 1.18-2.994 1.18-.638 0-1.306-.13-1.851-.464-.516.165-1.012.403-1.044.996a65.882 65.882 0 00-.063 2.884l-.002.48c-.002.563-.005 1.126-.013 1.69.002.326.204.63.51.765 2.482 1.102 4.83 1.657 6.99 1.657 2.156 0 4.504-.555 6.985-1.657a.854.854 0 00.51-.766c.03-1.682.006-3.372-.076-5.053-.031-.596-.528-.83-1.046-.996-.546.333-1.212.464-1.85.464-.677 0-1.942-.157-2.993-1.18-.266-.258-.447-.661-.57-1.108-.32-.032-.64-.049-.96-.05zm-2.525 4.013c.539 0 .976.426.976.95v1.753c0 .525-.437.95-.976.95a.964.964 0 01-.976-.95v-1.752c0-.525.437-.951.976-.951zm5 0c.539 0 .976.426.976.95v1.753c0 .525-.437.95-.976.95a.964.964 0 01-.976-.95v-1.752c0-.525.437-.951.976-.951zM7.635 5.087c-1.05.102-1.935.438-2.385.906-.975 1.037-.765 3.668-.21 4.224.405.394 1.17.657 1.995.657h.09c.649-.013 1.785-.176 2.73-1.11.435-.41.705-1.433.675-2.47-.03-.834-.27-1.52-.63-1.813-.39-.336-1.275-.482-2.265-.394zm6.465.394c-.36.292-.6.98-.63 1.813-.03 1.037.24 2.06.675 2.47.968.957 2.136 1.104 2.776 1.11h.044c.825 0 1.59-.263 1.995-.657.555-.556.765-3.187-.21-4.224-.45-.468-1.335-.804-2.385-.906-.99-.088-1.875.058-2.265.394zM12 7.615c-.24 0-.525.015-.84.044.03.16.045.336.06.526l-.001.159a2.94 2.94 0 01-.014.25c.225-.022.425-.027.612-.028h.366c.187 0 .387.006.612.028-.015-.146-.015-.277-.015-.409.015-.19.03-.365.06-.526a9.29 9.29 0 00-.84-.044z",
|
|
6663
6675
|
reauth: "gh auth login"
|
|
6664
6676
|
};
|
|
6665
|
-
var meta_default$
|
|
6677
|
+
var meta_default$3 = {
|
|
6666
6678
|
id: "cursor",
|
|
6667
6679
|
label: "Cursor",
|
|
6668
6680
|
bins: ["cursor-agent"],
|
|
@@ -6673,7 +6685,7 @@ var meta_default$2 = {
|
|
|
6673
6685
|
icon: "M22.106 5.68L12.5.135a.998.998 0 00-.998 0L1.893 5.68a.84.84 0 00-.419.726v11.186c0 .3.16.577.42.727l9.607 5.547a.999.999 0 00.998 0l9.608-5.547a.84.84 0 00.42-.727V6.407a.84.84 0 00-.42-.726zm-.603 1.176L12.228 22.92c-.063.108-.228.064-.228-.061V12.34a.59.59 0 00-.295-.51l-9.11-5.26c-.107-.062-.063-.228.062-.228h18.55c.264 0 .428.286.296.514z",
|
|
6674
6686
|
reauth: "cursor-agent login"
|
|
6675
6687
|
};
|
|
6676
|
-
var meta_default$
|
|
6688
|
+
var meta_default$2 = {
|
|
6677
6689
|
id: "grok",
|
|
6678
6690
|
label: "Grok",
|
|
6679
6691
|
bins: ["grok"],
|
|
@@ -6685,6 +6697,18 @@ var meta_default$1 = {
|
|
|
6685
6697
|
reauth: "grok",
|
|
6686
6698
|
pathDirs: ["~/.grok/bin"]
|
|
6687
6699
|
};
|
|
6700
|
+
var meta_default$1 = {
|
|
6701
|
+
id: "opencode",
|
|
6702
|
+
label: "opencode",
|
|
6703
|
+
bins: ["opencode"],
|
|
6704
|
+
install: {
|
|
6705
|
+
"url": "https://opencode.ai/install",
|
|
6706
|
+
"shell": "bash"
|
|
6707
|
+
},
|
|
6708
|
+
icon: "M6 4.5h12v15H6V4.5zM9 7.5v9h6v-9H9zM9 13.5v3h6v-3H9z",
|
|
6709
|
+
reauth: "opencode auth login",
|
|
6710
|
+
pathDirs: ["~/.opencode/bin"]
|
|
6711
|
+
};
|
|
6688
6712
|
var meta_default = {
|
|
6689
6713
|
id: "pi",
|
|
6690
6714
|
label: "Pi",
|
|
@@ -6700,6 +6724,7 @@ var meta_default = {
|
|
|
6700
6724
|
//#region src/agents/meta.ts
|
|
6701
6725
|
/** Alphabetical, which is also the order every picker shows. */
|
|
6702
6726
|
var AGENT_METAS = [
|
|
6727
|
+
meta_default$6,
|
|
6703
6728
|
meta_default$5,
|
|
6704
6729
|
meta_default$4,
|
|
6705
6730
|
meta_default$3,
|
|
@@ -7115,7 +7140,7 @@ async function claudeRow(account) {
|
|
|
7115
7140
|
* Its Notification hook fires for permission prompts and questions —
|
|
7116
7141
|
* and for the idle nudge, which readClaudeStyle downgrades. */
|
|
7117
7142
|
var claude = {
|
|
7118
|
-
meta: meta_default$
|
|
7143
|
+
meta: meta_default$6,
|
|
7119
7144
|
launchFlags: () => ["--settings", JSON.stringify({ hooks: claudeStyleHooks([
|
|
7120
7145
|
["UserPromptSubmit", "working"],
|
|
7121
7146
|
["PreToolUse", "working"],
|
|
@@ -7203,7 +7228,7 @@ async function codexRow() {
|
|
|
7203
7228
|
}
|
|
7204
7229
|
//#endregion
|
|
7205
7230
|
//#region src/agents/codex/index.ts
|
|
7206
|
-
var meta$
|
|
7231
|
+
var meta$5 = meta_default$5;
|
|
7207
7232
|
/** Codex hook events → state. PermissionRequest fires just before the
|
|
7208
7233
|
* approval prompt (PostToolUse clears it once the approved call has run,
|
|
7209
7234
|
* or the next PreToolUse does if a reviewer auto-decided). */
|
|
@@ -7261,7 +7286,7 @@ function launchFlags() {
|
|
|
7261
7286
|
flags.push("-c", `hooks.state={${state.join(",")}}`);
|
|
7262
7287
|
return flags;
|
|
7263
7288
|
}
|
|
7264
|
-
function readHook$
|
|
7289
|
+
function readHook$3(p, reported) {
|
|
7265
7290
|
const read = readClaudeStyle(p, reported);
|
|
7266
7291
|
if (!read.summary && p.hook_event_name === "PermissionRequest") {
|
|
7267
7292
|
const input = p.tool_input;
|
|
@@ -7271,11 +7296,11 @@ function readHook$2(p, reported) {
|
|
|
7271
7296
|
return read;
|
|
7272
7297
|
}
|
|
7273
7298
|
var codex = {
|
|
7274
|
-
meta: meta$
|
|
7299
|
+
meta: meta$5,
|
|
7275
7300
|
launchFlags,
|
|
7276
7301
|
reportsWorking: () => true,
|
|
7277
7302
|
envPrefixes: ["CODEX_"],
|
|
7278
|
-
readHook: readHook$
|
|
7303
|
+
readHook: readHook$3,
|
|
7279
7304
|
usage: () => codexRow().then((row) => [row])
|
|
7280
7305
|
};
|
|
7281
7306
|
//#endregion
|
|
@@ -7409,7 +7434,7 @@ async function copilotRow() {
|
|
|
7409
7434
|
}
|
|
7410
7435
|
//#endregion
|
|
7411
7436
|
//#region src/agents/copilot/index.ts
|
|
7412
|
-
var meta$
|
|
7437
|
+
var meta$4 = meta_default$4;
|
|
7413
7438
|
/** Copilot hook events (Claude-format names, which make it emit Claude's
|
|
7414
7439
|
* snake_case payloads) → state. Notification rather than PermissionRequest
|
|
7415
7440
|
* for "needs input": the latter fires before Copilot's own allow rules, the
|
|
@@ -7461,7 +7486,7 @@ var CHATTER = /* @__PURE__ */ new Set([
|
|
|
7461
7486
|
"factory_completed",
|
|
7462
7487
|
"unclassified"
|
|
7463
7488
|
]);
|
|
7464
|
-
function readHook$
|
|
7489
|
+
function readHook$2(p, reported) {
|
|
7465
7490
|
if (CHATTER.has(notificationType(p))) return { ignore: true };
|
|
7466
7491
|
const read = readClaudeStyle(p, reported);
|
|
7467
7492
|
if (!read.summary && reported === "done") read.summary = lastMessageFromTranscript(p);
|
|
@@ -7494,11 +7519,11 @@ function lastMessageFromTranscript(p) {
|
|
|
7494
7519
|
} catch {}
|
|
7495
7520
|
}
|
|
7496
7521
|
var copilot = {
|
|
7497
|
-
meta: meta$
|
|
7522
|
+
meta: meta$4,
|
|
7498
7523
|
launchFlags: () => ["--plugin-dir", pluginDir()],
|
|
7499
7524
|
reportsWorking: () => true,
|
|
7500
7525
|
envPrefixes: ["COPILOT_"],
|
|
7501
|
-
readHook: readHook$
|
|
7526
|
+
readHook: readHook$2,
|
|
7502
7527
|
usage: () => copilotRow().then((row) => [row])
|
|
7503
7528
|
};
|
|
7504
7529
|
//#endregion
|
|
@@ -7613,7 +7638,7 @@ async function cursorRow() {
|
|
|
7613
7638
|
* so its sessions get working/idle from pane activity (see scraper.ts) and
|
|
7614
7639
|
* nothing else — a stopped turn and a question look the same. */
|
|
7615
7640
|
var cursor = {
|
|
7616
|
-
meta: meta_default$
|
|
7641
|
+
meta: meta_default$3,
|
|
7617
7642
|
usage: () => cursorRow().then((row) => [row])
|
|
7618
7643
|
};
|
|
7619
7644
|
//#endregion
|
|
@@ -7718,7 +7743,7 @@ async function grokRow() {
|
|
|
7718
7743
|
}
|
|
7719
7744
|
//#endregion
|
|
7720
7745
|
//#region src/agents/grok/index.ts
|
|
7721
|
-
var meta$
|
|
7746
|
+
var meta$2 = meta_default$2;
|
|
7722
7747
|
/** Grok hook events → state. Payloads are camelCase (hookEventName,
|
|
7723
7748
|
* notificationType, lastAssistantMessage). Notification is matched to the
|
|
7724
7749
|
* two kinds that mean a prompt is on screen; Stop fires on shutdown too,
|
|
@@ -7778,7 +7803,7 @@ function registerHooks() {
|
|
|
7778
7803
|
}
|
|
7779
7804
|
return registered;
|
|
7780
7805
|
}
|
|
7781
|
-
function readHook(p, reported) {
|
|
7806
|
+
function readHook$1(p, reported) {
|
|
7782
7807
|
if (str$1(p.subagentType)) return { ignore: true };
|
|
7783
7808
|
if (p.hookEventName === "stop" && str$1(p.reason) && p.reason !== "end_turn") return { ignore: true };
|
|
7784
7809
|
const read = readClaudeStyle(p, reported);
|
|
@@ -7788,6 +7813,124 @@ function readHook(p, reported) {
|
|
|
7788
7813
|
}
|
|
7789
7814
|
return read;
|
|
7790
7815
|
}
|
|
7816
|
+
var grok = {
|
|
7817
|
+
meta: meta$2,
|
|
7818
|
+
launchFlags: () => {
|
|
7819
|
+
registerHooks();
|
|
7820
|
+
return [];
|
|
7821
|
+
},
|
|
7822
|
+
reportsWorking: () => registered,
|
|
7823
|
+
promptAsArgv: true,
|
|
7824
|
+
envPrefixes: ["GROK_"],
|
|
7825
|
+
readHook: readHook$1,
|
|
7826
|
+
usage: () => grokRow().then((row) => [row])
|
|
7827
|
+
};
|
|
7828
|
+
//#endregion
|
|
7829
|
+
//#region src/agents/opencode/index.ts
|
|
7830
|
+
var meta$1 = meta_default$1;
|
|
7831
|
+
/** opencode has no command hooks: state comes from a plugin, a JS module
|
|
7832
|
+
* subscribed to the same event bus its TUI renders from. The plugin posts
|
|
7833
|
+
* the reports itself rather than shelling out to curl, so this is the one
|
|
7834
|
+
* family whose payload work wrote — `readHook` only has to unwrap it. */
|
|
7835
|
+
var PLUGIN = (appPort) => `// Generated by work. Reports this
|
|
7836
|
+
// session's working / needs-input / done state to the app; edits are
|
|
7837
|
+
// overwritten. Port and session id come from the env tmux gave the pane.
|
|
7838
|
+
const post = async (state, reason, summary) => {
|
|
7839
|
+
const session = process.env.WORK_SESSION_ID;
|
|
7840
|
+
if (!session) return;
|
|
7841
|
+
const port = process.env.WORK_APP_PORT || "${appPort}";
|
|
7842
|
+
const qs =
|
|
7843
|
+
\`session=\${encodeURIComponent(session)}&state=\${state}\` +
|
|
7844
|
+
(reason ? \`&reason=\${reason}\` : "");
|
|
7845
|
+
try {
|
|
7846
|
+
await fetch(\`http://127.0.0.1:\${port}/api/agent-state?\${qs}\`, {
|
|
7847
|
+
method: "POST",
|
|
7848
|
+
headers: { "content-type": "application/json" },
|
|
7849
|
+
body: JSON.stringify({ summary }),
|
|
7850
|
+
signal: AbortSignal.timeout(3000),
|
|
7851
|
+
});
|
|
7852
|
+
} catch {}
|
|
7853
|
+
};
|
|
7854
|
+
|
|
7855
|
+
export const WorkSessionState = async () => {
|
|
7856
|
+
// A subagent's turn is not the pane's: task sessions carry a parentID,
|
|
7857
|
+
// and their busy/idle would otherwise end the turn the user is watching.
|
|
7858
|
+
const children = new Set();
|
|
7859
|
+
const roles = new Map();
|
|
7860
|
+
const lastText = new Map();
|
|
7861
|
+
const mine = (id) => !!id && !children.has(id);
|
|
7862
|
+
return {
|
|
7863
|
+
event: async ({ event }) => {
|
|
7864
|
+
const type = event?.type;
|
|
7865
|
+
const p = event?.properties || {};
|
|
7866
|
+
if (type === "session.created" || type === "session.updated") {
|
|
7867
|
+
if (p.info?.parentID) children.add(p.info.id);
|
|
7868
|
+
return;
|
|
7869
|
+
}
|
|
7870
|
+
// Text parts carry no role; the message they belong to does, and a
|
|
7871
|
+
// summary must not quote the user's own prompt back at them.
|
|
7872
|
+
if (type === "message.updated" && p.info?.id) {
|
|
7873
|
+
roles.set(p.info.id, p.info.role);
|
|
7874
|
+
return;
|
|
7875
|
+
}
|
|
7876
|
+
if (type === "message.part.updated" && p.part?.type === "text") {
|
|
7877
|
+
if (roles.get(p.part.messageID) === "assistant" && p.part.text)
|
|
7878
|
+
lastText.set(p.part.sessionID, p.part.text);
|
|
7879
|
+
return;
|
|
7880
|
+
}
|
|
7881
|
+
if (!mine(p.sessionID)) return;
|
|
7882
|
+
if (type === "session.status" && p.status?.type === "busy")
|
|
7883
|
+
return post("working");
|
|
7884
|
+
if (type === "session.idle") {
|
|
7885
|
+
const summary = lastText.get(p.sessionID);
|
|
7886
|
+
lastText.delete(p.sessionID);
|
|
7887
|
+
roles.clear();
|
|
7888
|
+
return post("waiting", "done", summary);
|
|
7889
|
+
}
|
|
7890
|
+
if (type === "session.error")
|
|
7891
|
+
return post(
|
|
7892
|
+
"waiting",
|
|
7893
|
+
"attention",
|
|
7894
|
+
p.error?.data?.message || p.error?.name,
|
|
7895
|
+
);
|
|
7896
|
+
// A prompt is on screen and nothing moves until it is answered.
|
|
7897
|
+
if (type === "permission.asked")
|
|
7898
|
+
return post(
|
|
7899
|
+
"waiting",
|
|
7900
|
+
"attention",
|
|
7901
|
+
[p.permission, p.metadata?.command || p.patterns?.[0]]
|
|
7902
|
+
.filter(Boolean)
|
|
7903
|
+
.join(": "),
|
|
7904
|
+
);
|
|
7905
|
+
if (type === "permission.replied") return post("working");
|
|
7906
|
+
},
|
|
7907
|
+
};
|
|
7908
|
+
};
|
|
7909
|
+
`;
|
|
7910
|
+
/** Whether the plugin is on disk for opencode to load — without it the
|
|
7911
|
+
* screen has to speak for the session. */
|
|
7912
|
+
var installed = false;
|
|
7913
|
+
/** opencode resolves a `plugin` entry that looks like a path as a local
|
|
7914
|
+
* file, and reads `OPENCODE_CONFIG_CONTENT` as one more config layer that
|
|
7915
|
+
* merges over the user's own. Together that loads work's plugin from
|
|
7916
|
+
* work's data dir without writing a line into ~/.config/opencode. */
|
|
7917
|
+
function pluginConfig() {
|
|
7918
|
+
const file = path.join(config.dataDir, "opencode-plugin.js");
|
|
7919
|
+
try {
|
|
7920
|
+
writeIfChanged(file, PLUGIN(config.appPort));
|
|
7921
|
+
installed = true;
|
|
7922
|
+
} catch {
|
|
7923
|
+
installed = false;
|
|
7924
|
+
}
|
|
7925
|
+
return JSON.stringify({ plugin: [file] });
|
|
7926
|
+
}
|
|
7927
|
+
function readHook(p, reported) {
|
|
7928
|
+
const summary = str$1(p.summary);
|
|
7929
|
+
return {
|
|
7930
|
+
reason: reported,
|
|
7931
|
+
summary: summary ? cleanSummary(summary) : void 0
|
|
7932
|
+
};
|
|
7933
|
+
}
|
|
7791
7934
|
//#endregion
|
|
7792
7935
|
//#region src/agents/index.ts
|
|
7793
7936
|
/** Every agent family work integrates with, one folder each. Order is the
|
|
@@ -7798,17 +7941,13 @@ var AGENTS = [
|
|
|
7798
7941
|
codex,
|
|
7799
7942
|
copilot,
|
|
7800
7943
|
cursor,
|
|
7944
|
+
grok,
|
|
7801
7945
|
{
|
|
7802
7946
|
meta: meta$1,
|
|
7803
|
-
|
|
7804
|
-
|
|
7805
|
-
|
|
7806
|
-
|
|
7807
|
-
reportsWorking: () => registered,
|
|
7808
|
-
promptAsArgv: true,
|
|
7809
|
-
envPrefixes: ["GROK_"],
|
|
7810
|
-
readHook,
|
|
7811
|
-
usage: () => grokRow().then((row) => [row])
|
|
7947
|
+
launchEnv: () => ({ OPENCODE_CONFIG_CONTENT: pluginConfig() }),
|
|
7948
|
+
reportsWorking: () => installed,
|
|
7949
|
+
envPrefixes: ["OPENCODE_"],
|
|
7950
|
+
readHook
|
|
7812
7951
|
},
|
|
7813
7952
|
{
|
|
7814
7953
|
meta: meta_default,
|
|
@@ -7824,6 +7963,11 @@ function agentFor(id) {
|
|
|
7824
7963
|
function agentLaunchFlags(id) {
|
|
7825
7964
|
return agentFor(id)?.launchFlags?.() ?? [];
|
|
7826
7965
|
}
|
|
7966
|
+
/** Env for a spawned pane so the agent CLI reports state — the families
|
|
7967
|
+
* configured by environment rather than argv. */
|
|
7968
|
+
function agentLaunchEnv(id) {
|
|
7969
|
+
return agentFor(id)?.launchEnv?.() ?? {};
|
|
7970
|
+
}
|
|
7827
7971
|
/** Whether the agent says when it *starts* working, not just when it stops
|
|
7828
7972
|
* — believing the screen over that costs it the state its own hook just
|
|
7829
7973
|
* reported, so the pane scraper leaves these alone. */
|
|
@@ -8148,7 +8292,7 @@ function newSessionArgs(session, wsPath, mode, initialPrompt, size) {
|
|
|
8148
8292
|
tmuxName(session.id),
|
|
8149
8293
|
"-c",
|
|
8150
8294
|
wsPath,
|
|
8151
|
-
...sessionEnvArgs(session.id),
|
|
8295
|
+
...sessionEnvArgs(session.id, session.agent),
|
|
8152
8296
|
...loginShellCommand(session.agent, initialPrompt)
|
|
8153
8297
|
];
|
|
8154
8298
|
}
|
|
@@ -8212,13 +8356,15 @@ function sessionCommand(agent) {
|
|
|
8212
8356
|
return command ? [command] : [];
|
|
8213
8357
|
}
|
|
8214
8358
|
/** tmux new-session env flags so the agent's hooks can report back which
|
|
8215
|
-
* session they belong to
|
|
8216
|
-
|
|
8359
|
+
* session they belong to, plus whatever the family needs to load its own
|
|
8360
|
+
* hooks (opencode names its plugin here — tmux quotes it, not the shell). */
|
|
8361
|
+
function sessionEnvArgs(sessionId, agent) {
|
|
8217
8362
|
return [
|
|
8218
8363
|
"-e",
|
|
8219
8364
|
`WORK_SESSION_ID=${sessionId}`,
|
|
8220
8365
|
"-e",
|
|
8221
|
-
`WORK_APP_PORT=${config.appPort}
|
|
8366
|
+
`WORK_APP_PORT=${config.appPort}`,
|
|
8367
|
+
...Object.entries(agentLaunchEnv(agent)).flatMap(([key, value]) => ["-e", `${key}=${value}`])
|
|
8222
8368
|
];
|
|
8223
8369
|
}
|
|
8224
8370
|
function tmuxName(sessionId) {
|