@dylanpiercey/work 0.0.108 → 0.0.109
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/{_D60UKgk7.js → _6msnLFmR.js} +4 -4
- package/dist/{_4U00WI47.js → _Yw-sn_jV.js} +50 -50
- package/dist/index.mjs +455 -431
- package/dist/public/assets/{_BsPMrz7F.js → _0FFSJe5A.js} +1 -1
- package/dist/public/assets/_0FFSJe5A.js.br +0 -0
- package/dist/public/assets/{_k-IEVEnY2.js → _5ogbBeW_2.js} +1 -1
- package/dist/public/assets/_5ogbBeW_2.js.br +0 -0
- package/dist/public/assets/{_Dh0VQfQJ.js → _6aGesTBz.js} +1 -1
- package/dist/public/assets/_6aGesTBz.js.br +0 -0
- package/dist/public/assets/{_CTagvw5f2.js → _99mNYI3Y2.js} +1 -1
- package/dist/public/assets/_99mNYI3Y2.js.br +0 -0
- package/dist/public/assets/{_CtQKrFEA2.js → _9XUvNgxd2.js} +1 -1
- package/dist/public/assets/_9XUvNgxd2.js.br +0 -0
- package/dist/public/assets/{_C1EPmd7c.js → _B1YjiLws.js} +1 -1
- package/dist/public/assets/_B1YjiLws.js.br +0 -0
- package/dist/public/assets/{_Djf-fwhe2.js → _B6Zv9ZpR2.js} +1 -1
- package/dist/public/assets/{_CVWmEDK_.js → _BE7_baGU.js} +1 -1
- package/dist/public/assets/_BE7_baGU.js.br +0 -0
- package/dist/public/assets/{_DCZujH2N2.js → _BLLtvbBl2.js} +1 -1
- package/dist/public/assets/_BLLtvbBl2.js.br +0 -0
- package/dist/public/assets/{_hz5dauNZ.js → _BNVsFTLU.js} +1 -1
- package/dist/public/assets/_BNVsFTLU.js.br +0 -0
- package/dist/public/assets/{_DGLSFxYV.js → _BOkO9-BE.js} +1 -1
- package/dist/public/assets/_BOkO9-BE.js.br +0 -0
- package/dist/public/assets/{_CSHJATpy.js → _BRIjaWF5.js} +1 -1
- package/dist/public/assets/_BRIjaWF5.js.br +0 -0
- package/dist/public/assets/{_BKnscBu22.js → _BT1VCIUi2.js} +1 -1
- package/dist/public/assets/_BT1VCIUi2.js.br +0 -0
- package/dist/public/assets/{_Bd1pgCVU.js → _BUUWE_0B.js} +1 -1
- package/dist/public/assets/_BUUWE_0B.js.br +0 -0
- package/dist/public/assets/{_Dw-O85yr.js → _BZJ-u6G5.js} +1 -1
- package/dist/public/assets/_BZJ-u6G5.js.br +0 -0
- package/dist/public/assets/{_B-fILq9z2.js → _BkuSFddQ2.js} +1 -1
- package/dist/public/assets/_BkuSFddQ2.js.br +0 -0
- package/dist/public/assets/{_3ZSompN02.js → _BlL7Zd342.js} +1 -1
- package/dist/public/assets/_BlL7Zd342.js.br +0 -0
- package/dist/public/assets/{_Cg9E-hC9.js → _Bm_Q3uAQ.js} +1 -1
- package/dist/public/assets/_Bm_Q3uAQ.js.br +0 -0
- package/dist/public/assets/{_CBqQa764.js → _BpCqJWf0.js} +1 -1
- package/dist/public/assets/_BpCqJWf0.js.br +0 -0
- package/dist/public/assets/{_Dwxc6WXv.js → _BqmK9JPD.js} +1 -1
- package/dist/public/assets/_BqmK9JPD.js.br +0 -0
- package/dist/public/assets/{_Bj_cWMOB.js → _BunhQb6w.js} +1 -1
- package/dist/public/assets/_BunhQb6w.js.br +0 -0
- package/dist/public/assets/{_Ba9xe9U02.js → _C0GVZdlm2.js} +1 -1
- package/dist/public/assets/_C0GVZdlm2.js.br +0 -0
- package/dist/public/assets/{_oZRSosjr2.js → _C5ORrFTf2.js} +1 -1
- package/dist/public/assets/_C5ORrFTf2.js.br +0 -0
- package/dist/public/assets/{_Bo7bxECF.js → _CCVGT8IE.js} +1 -1
- package/dist/public/assets/_CCVGT8IE.js.br +0 -0
- package/dist/public/assets/{_CUQj5ppf.js → _CFQ_2CO9.js} +1 -1
- package/dist/public/assets/_CFQ_2CO9.js.br +0 -0
- package/dist/public/assets/{_BcZJAvN-2.js → _CGAAhpqg2.js} +1 -1
- package/dist/public/assets/_CGAAhpqg2.js.br +0 -0
- package/dist/public/assets/{_DK2UAgBJ2.js → _CGgSqvZi2.js} +1 -1
- package/dist/public/assets/_CGgSqvZi2.js.br +0 -0
- package/dist/public/assets/{_D1kUHoph.js → _CGpM2ic7.js} +1 -1
- package/dist/public/assets/_CGpM2ic7.js.br +0 -0
- package/dist/public/assets/{_D0MMHjUQ.js → _CKFHK6Od.js} +1 -1
- package/dist/public/assets/_CKFHK6Od.js.br +0 -0
- package/dist/public/assets/{_Dp2CEQ4Q.js → _CMar4Aid.js} +1 -1
- package/dist/public/assets/_CMar4Aid.js.br +0 -0
- package/dist/public/assets/{_B5o4lJM-2.js → _CMmnjpY22.js} +1 -1
- package/dist/public/assets/_CMmnjpY22.js.br +0 -0
- package/dist/public/assets/{_DGktplbo2.js → _CNU6qKiG2.js} +1 -1
- package/dist/public/assets/_CNU6qKiG2.js.br +0 -0
- package/dist/public/assets/{_WETndjfo.js → _COes0C71.js} +1 -1
- package/dist/public/assets/_COes0C71.js.br +0 -0
- package/dist/public/assets/{_Rh7Ur8FS.js → _CP0OUfBv.js} +1 -1
- package/dist/public/assets/_CP0OUfBv.js.br +0 -0
- package/dist/public/assets/{_iTvtyEoL.js → _CSxAQRb8.js} +6 -6
- package/dist/public/assets/_CSxAQRb8.js.br +0 -0
- package/dist/public/assets/{_B_02a7gR.js → _CTVeoHTA.js} +1 -1
- package/dist/public/assets/_CTVeoHTA.js.br +0 -0
- package/dist/public/assets/{_Dl07-GMx.js → _CXVG_Da9.js} +1 -1
- package/dist/public/assets/_CXVG_Da9.js.br +0 -0
- package/dist/public/assets/{_BdWb51WI.js → _CcszNEfP.js} +1 -1
- package/dist/public/assets/_CcszNEfP.js.br +0 -0
- package/dist/public/assets/{_Dblgtz99.js → _ClylIj8i.js} +1 -1
- package/dist/public/assets/_ClylIj8i.js.br +0 -0
- package/dist/public/assets/{_D8kKtbZL2.js → _CxOwEFB72.js} +1 -1
- package/dist/public/assets/_CxOwEFB72.js.br +0 -0
- package/dist/public/assets/{_hAGd6rfv2.js → _D074iR8F2.js} +1 -1
- package/dist/public/assets/{_D5QfUmLo.js → _D2LPLQ6G.js} +1 -1
- package/dist/public/assets/_D2LPLQ6G.js.br +0 -0
- package/dist/public/assets/{_DIlBIf-A.js → _DE7-csvr.js} +1 -1
- package/dist/public/assets/_DE7-csvr.js.br +0 -0
- package/dist/public/assets/{_UDa7z5Hc.js → _DFevl3R7.js} +1 -1
- package/dist/public/assets/_DFevl3R7.js.br +0 -0
- package/dist/public/assets/{_CgStCf6c.js → _DK5LQ2Pk.js} +1 -1
- package/dist/public/assets/_DK5LQ2Pk.js.br +0 -0
- package/dist/public/assets/{_A_OowyKJ2.js → _DPGr-S3B2.js} +1 -1
- package/dist/public/assets/_DPGr-S3B2.js.br +0 -0
- package/dist/public/assets/{_AjvVVtb-2.js → _DQ2eVLOT2.js} +1 -1
- package/dist/public/assets/_DQ2eVLOT2.js.br +0 -0
- package/dist/public/assets/{_BOXInE4V.js → _DSyki8Vm.js} +1 -1
- package/dist/public/assets/_DSyki8Vm.js.br +0 -0
- package/dist/public/assets/{_CYBd6Oge.js → _DXfqoBMo.js} +1 -1
- package/dist/public/assets/{_BZR8clV2.js → _DYB0wloZ.js} +1 -1
- package/dist/public/assets/_DYB0wloZ.js.br +0 -0
- package/dist/public/assets/{_hAOdnTV6.js → _DYNsNPrN.js} +1 -1
- package/dist/public/assets/_DYNsNPrN.js.br +0 -0
- package/dist/public/assets/{_Dc8rm3jI.js → _DhAxnhP8.js} +1 -1
- package/dist/public/assets/_DhAxnhP8.js.br +0 -0
- package/dist/public/assets/{_DwUcwzyn.js → _Dk-h5TAI.js} +1 -1
- package/dist/public/assets/_Dk-h5TAI.js.br +0 -0
- package/dist/public/assets/{_C0jyA9P3.js → _DqYmZUt-.js} +1 -1
- package/dist/public/assets/_DqYmZUt-.js.br +0 -0
- package/dist/public/assets/{_DjrRedRo.js → _DwsChWbp.js} +1 -1
- package/dist/public/assets/_DwsChWbp.js.br +0 -0
- package/dist/public/assets/{_DPmzsr0b.js → _DxWJ4iTk.js} +1 -1
- package/dist/public/assets/_DxWJ4iTk.js.br +0 -0
- package/dist/public/assets/{_D4WhUwUL2.js → _EtJFGopA2.js} +1 -1
- package/dist/public/assets/_EtJFGopA2.js.br +0 -0
- package/dist/public/assets/{_bm5qnTpZ.js → _HHOsHgqe.js} +1 -1
- package/dist/public/assets/_HHOsHgqe.js.br +0 -0
- package/dist/public/assets/{_DSWiQozG.js → _IjRA1iLF.js} +1 -1
- package/dist/public/assets/_IjRA1iLF.js.br +0 -0
- package/dist/public/assets/{_BUvhBhYI.js → _J4AHFNJs.js} +1 -1
- package/dist/public/assets/_J4AHFNJs.js.br +0 -0
- package/dist/public/assets/{_AS_QNAut.js → _K2pawMVE.js} +1 -1
- package/dist/public/assets/_K2pawMVE.js.br +0 -0
- package/dist/public/assets/{_CvxThUGr.js → _TqMQBoxi.js} +1 -1
- package/dist/public/assets/_TqMQBoxi.js.br +0 -0
- package/dist/public/assets/{_YQPM-WZr2.js → _Xqu0H1VD2.js} +1 -1
- package/dist/public/assets/_Xqu0H1VD2.js.br +0 -0
- package/dist/public/assets/{_B_DF81_a2.js → _Y5X_LL_X2.js} +1 -1
- package/dist/public/assets/_Y5X_LL_X2.js.br +0 -0
- package/dist/public/assets/{_Cc9FkJJU.js → _YNkJcdxn.js} +1 -1
- package/dist/public/assets/_YNkJcdxn.js.br +0 -0
- package/dist/public/assets/{_BLMDpuBW.js → _ZXKvuoyY.js} +1 -1
- package/dist/public/assets/_ZXKvuoyY.js.br +0 -0
- package/dist/public/assets/{_CIqrNCTI.js → _aVfSg65P.js} +1 -1
- package/dist/public/assets/_aVfSg65P.js.br +0 -0
- package/dist/public/assets/{_CGe2Wzv9.js → _bqE4u0Bd.js} +1 -1
- package/dist/public/assets/_bqE4u0Bd.js.br +0 -0
- package/dist/public/assets/{__4GwJAR8.js → _g9lhXp6a.js} +21 -21
- package/dist/public/assets/_g9lhXp6a.js.br +0 -0
- package/dist/public/assets/{_Cwr7DlYk2.js → _iO-I1ACQ2.js} +1 -1
- package/dist/public/assets/_iO-I1ACQ2.js.br +0 -0
- package/dist/public/assets/{_LpMRsHBj.js → _jTGwakSJ.js} +1 -1
- package/dist/public/assets/_jTGwakSJ.js.br +0 -0
- package/dist/public/assets/{_DTTkFy3z2.js → _lvWH_Mvw2.js} +1 -1
- package/dist/public/assets/_lvWH_Mvw2.js.br +0 -0
- package/dist/public/assets/{_Kwrx7rB4.js → _n3_iVV2U.js} +1 -1
- package/dist/public/assets/_n3_iVV2U.js.br +0 -0
- package/dist/public/assets/{_DiJIDgvc.js → _ngBAVsDg.js} +1 -1
- package/dist/public/assets/_ngBAVsDg.js.br +0 -0
- package/dist/public/assets/{_C040XCr_2.js → _vzdD-H3B2.js} +1 -1
- package/dist/public/assets/_vzdD-H3B2.js.br +0 -0
- package/dist/public/assets/{_BJxldHyB.js → _w88H0Dw6.js} +1 -1
- package/dist/public/assets/_w88H0Dw6.js.br +0 -0
- package/dist/public/assets/{app-page-B9bx61fb.css → app-page-BO9uc1Ar.css} +1 -1
- package/dist/public/assets/app-page-BO9uc1Ar.css.br +0 -0
- package/dist/public/assets/{diff-view-CB87Ra6B.css → diff-view-CGCbZuma.css} +1 -1
- package/dist/public/assets/diff-view-CGCbZuma.css.br +0 -0
- package/dist/public/assets/new-D4raGU5q.js +1 -0
- package/dist/public/assets/settings-D4raGU5q.js +1 -0
- package/dist/public/assets/w-D4raGU5q.js +1 -0
- package/dist/public/assets/w._-D4raGU5q.js +1 -0
- package/dist/public/assets/w._-DIIfmQC0.js +1 -0
- package/package.json +1 -1
- package/dist/public/assets/_3ZSompN02.js.br +0 -0
- package/dist/public/assets/_AS_QNAut.js.br +0 -0
- package/dist/public/assets/_A_OowyKJ2.js.br +0 -0
- package/dist/public/assets/_AjvVVtb-2.js.br +0 -0
- package/dist/public/assets/_B-fILq9z2.js.br +0 -0
- package/dist/public/assets/_B5o4lJM-2.js.br +0 -0
- package/dist/public/assets/_BJxldHyB.js.br +0 -0
- package/dist/public/assets/_BKnscBu22.js.br +0 -0
- package/dist/public/assets/_BLMDpuBW.js.br +0 -0
- package/dist/public/assets/_BOXInE4V.js.br +0 -0
- package/dist/public/assets/_BUvhBhYI.js.br +0 -0
- package/dist/public/assets/_BZR8clV2.js.br +0 -0
- package/dist/public/assets/_B_02a7gR.js.br +0 -0
- package/dist/public/assets/_B_DF81_a2.js.br +0 -0
- package/dist/public/assets/_Ba9xe9U02.js.br +0 -0
- package/dist/public/assets/_BcZJAvN-2.js.br +0 -0
- package/dist/public/assets/_Bd1pgCVU.js.br +0 -0
- package/dist/public/assets/_BdWb51WI.js.br +0 -0
- package/dist/public/assets/_Bj_cWMOB.js.br +0 -0
- package/dist/public/assets/_Bo7bxECF.js.br +0 -0
- package/dist/public/assets/_BsPMrz7F.js.br +0 -0
- package/dist/public/assets/_C040XCr_2.js.br +0 -0
- package/dist/public/assets/_C0jyA9P3.js.br +0 -0
- package/dist/public/assets/_C1EPmd7c.js.br +0 -0
- package/dist/public/assets/_CBqQa764.js.br +0 -0
- package/dist/public/assets/_CGe2Wzv9.js.br +0 -0
- package/dist/public/assets/_CIqrNCTI.js.br +0 -0
- package/dist/public/assets/_CSHJATpy.js.br +0 -0
- package/dist/public/assets/_CTagvw5f2.js.br +0 -0
- package/dist/public/assets/_CUQj5ppf.js.br +0 -0
- package/dist/public/assets/_CVWmEDK_.js.br +0 -0
- package/dist/public/assets/_Cc9FkJJU.js.br +0 -0
- package/dist/public/assets/_Cg9E-hC9.js.br +0 -0
- package/dist/public/assets/_CgStCf6c.js.br +0 -0
- package/dist/public/assets/_CtQKrFEA2.js.br +0 -0
- package/dist/public/assets/_CvxThUGr.js.br +0 -0
- package/dist/public/assets/_Cwr7DlYk2.js.br +0 -0
- package/dist/public/assets/_D0MMHjUQ.js.br +0 -0
- package/dist/public/assets/_D1kUHoph.js.br +0 -0
- package/dist/public/assets/_D4WhUwUL2.js.br +0 -0
- package/dist/public/assets/_D5QfUmLo.js.br +0 -0
- package/dist/public/assets/_D8kKtbZL2.js.br +0 -0
- package/dist/public/assets/_DCZujH2N2.js.br +0 -0
- package/dist/public/assets/_DGLSFxYV.js.br +0 -0
- package/dist/public/assets/_DGktplbo2.js.br +0 -0
- package/dist/public/assets/_DIlBIf-A.js.br +0 -0
- package/dist/public/assets/_DK2UAgBJ2.js.br +0 -0
- package/dist/public/assets/_DPmzsr0b.js.br +0 -0
- package/dist/public/assets/_DSWiQozG.js.br +0 -0
- package/dist/public/assets/_DTTkFy3z2.js.br +0 -0
- package/dist/public/assets/_Dblgtz99.js.br +0 -0
- package/dist/public/assets/_Dc8rm3jI.js.br +0 -0
- package/dist/public/assets/_Dh0VQfQJ.js.br +0 -0
- package/dist/public/assets/_DiJIDgvc.js.br +0 -0
- package/dist/public/assets/_DjrRedRo.js.br +0 -0
- package/dist/public/assets/_Dl07-GMx.js.br +0 -0
- package/dist/public/assets/_Dp2CEQ4Q.js.br +0 -0
- package/dist/public/assets/_Dw-O85yr.js.br +0 -0
- package/dist/public/assets/_DwUcwzyn.js.br +0 -0
- package/dist/public/assets/_Dwxc6WXv.js.br +0 -0
- package/dist/public/assets/_Kwrx7rB4.js.br +0 -0
- package/dist/public/assets/_LpMRsHBj.js.br +0 -0
- package/dist/public/assets/_Rh7Ur8FS.js.br +0 -0
- package/dist/public/assets/_UDa7z5Hc.js.br +0 -0
- package/dist/public/assets/_WETndjfo.js.br +0 -0
- package/dist/public/assets/_YQPM-WZr2.js.br +0 -0
- package/dist/public/assets/__4GwJAR8.js.br +0 -0
- package/dist/public/assets/_bm5qnTpZ.js.br +0 -0
- package/dist/public/assets/_hAOdnTV6.js.br +0 -0
- package/dist/public/assets/_hz5dauNZ.js.br +0 -0
- package/dist/public/assets/_iTvtyEoL.js.br +0 -0
- package/dist/public/assets/_k-IEVEnY2.js.br +0 -0
- package/dist/public/assets/_oZRSosjr2.js.br +0 -0
- package/dist/public/assets/app-page-B9bx61fb.css.br +0 -0
- package/dist/public/assets/diff-view-CB87Ra6B.css.br +0 -0
- package/dist/public/assets/new-Cg2dy7JI.js +0 -1
- package/dist/public/assets/settings-Cg2dy7JI.js +0 -1
- package/dist/public/assets/w-Cg2dy7JI.js +0 -1
- package/dist/public/assets/w._-Cg-GdtFy.js +0 -1
- package/dist/public/assets/w._-Cg2dy7JI.js +0 -1
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { a as __toCommonJS, i as __require, n as __esmMin, o as __toESM, r as __exportAll, t as __commonJSMin } from "./_BMI-E3GI.js";
|
|
2
2
|
import { $ as setSetting, A as setScrapedPhase, B as saveSubscription, C as agentBadge, D as agentMeta, E as agentLabel, F as manifest, G as agentChoices, H as subscribe, I as normalizeAccent, J as enabledAgents, K as allPrefs, L as setInstance, M as ACCENT_RE, N as getInstance, O as clearAgentPhase, P as iconSvg, Q as setPref, R as deleteSubscription, S as blankRow, T as agentFromCommand, U as subscriberCount, V as publish, W as subscriberJoins, X as preferredAgent, Y as getSetting, Z as setDisabledAgents, _ as tmuxName, _t as tmux, a as ensureTmuxServer, at as DEFAULT_GITHUB_HOST, b as readHookPayload, c as killWorkspaceSessions, ct as toolById, d as newSessionArgs, dt as get, et as doctor, ft as workspacePath, g as sessionStates, gt as run, h as sendToSession, ht as git, i as disposeSessions, it as which, j as setSessionViewers, k as setAgentPhase, l as listSessions, lt as all, m as renameSession, mt as gh, n as clearTmuxStarted, nt as miseVersions, o as getSession, ot as TOOLS, p as panePids, pt as TMUX_SOCKET, q as disabledAgents, r as createSession, rt as setupPath, s as killSession, st as agentById, t as cleanEnv, tt as ghKnownHosts, u as markTmuxStarted, ut as db, v as tmuxWasStarted, vt as config, w as agentFamily, x as reportsWorking, y as AGENTS, z as pushPublicKey } from "./_BYk3MBDh.js";
|
|
3
|
-
import { $ as _await, A as repoLabel, At as _try, B as phase, C as sideNavOpen, Ct as _serialize_guard, D as icon_xmark_default, Dt as _template, E as toast_default, Et as _subscribe, H as $global, I as iconBtnRow, J as _attr_or, K as _attr_input_value, L as iconBtnXs, M as setPrimaryHost, Mt as attrTag, N as btnLg, Nt as withPageAssets, O as icon_base_default, Ot as _to_text, P as btnSm, Pt as writeScope, Q as _attrs_partial, R as inputLg, S as setWorkspaceTab, St as _sep, T as workspaceTab, Tt as _set_serialize_reason, U as _attr, V as tone, W as _attr_class, X as _attr_style, Y as _attr_select_value, Z as _attrs, _t as _resume_branch, at as _el_resume, bt as _scope_with_id, c as icon_arrow_up_default, ct as _flush_head, d as iconBtn$2, dt as _hoist_read_error, et as _content, f as row, ft as _html, gt as _resume, ht as _peek_scope_id, i as icon_sidebar_default, it as _el_read_error, j as repoWebUrl$1, jt as _var, k as parseRepoUrl, kt as _trailers, l as icon_back_default, lt as _for_of, mt as _if, n as findIconBtn, nt as _dynamic_tag, o as rankRepos, ot as _escape, p as sectionCount$1, pt as _id, q as _attr_option_value, r as findInput, s as icon_search_default, st as _existing_scope, t as icon_arrow_down_default, tt as _content_resume, u as icon_refresh_default, ut as _hoist, v as ignoredSsoOrgs, vt as _scope_id, w as theme, wt as _serialize_if, x as setTheme, xt as _script, yt as _scope_reason, z as metaTrunc } from "./
|
|
3
|
+
import { $ as _await, A as repoLabel, At as _try, B as phase, C as sideNavOpen, Ct as _serialize_guard, D as icon_xmark_default, Dt as _template, E as toast_default, Et as _subscribe, H as $global, I as iconBtnRow, J as _attr_or, K as _attr_input_value, L as iconBtnXs, M as setPrimaryHost, Mt as attrTag, N as btnLg, Nt as withPageAssets, O as icon_base_default, Ot as _to_text, P as btnSm, Pt as writeScope, Q as _attrs_partial, R as inputLg, S as setWorkspaceTab, St as _sep, T as workspaceTab, Tt as _set_serialize_reason, U as _attr, V as tone, W as _attr_class, X as _attr_style, Y as _attr_select_value, Z as _attrs, _t as _resume_branch, at as _el_resume, bt as _scope_with_id, c as icon_arrow_up_default, ct as _flush_head, d as iconBtn$2, dt as _hoist_read_error, et as _content, f as row, ft as _html, gt as _resume, ht as _peek_scope_id, i as icon_sidebar_default, it as _el_read_error, j as repoWebUrl$1, jt as _var, k as parseRepoUrl, kt as _trailers, l as icon_back_default, lt as _for_of, mt as _if, n as findIconBtn, nt as _dynamic_tag, o as rankRepos, ot as _escape, p as sectionCount$1, pt as _id, q as _attr_option_value, r as findInput, s as icon_search_default, st as _existing_scope, t as icon_arrow_down_default, tt as _content_resume, u as icon_refresh_default, ut as _hoist, v as ignoredSsoOrgs, vt as _scope_id, w as theme, wt as _serialize_if, x as setTheme, xt as _script, yt as _scope_reason, z as metaTrunc } from "./_6msnLFmR.js";
|
|
4
4
|
import fs from "node:fs";
|
|
5
5
|
import { createServer } from "node:http";
|
|
6
6
|
import path from "node:path";
|
|
@@ -2016,16 +2016,16 @@ function realPath(p) {
|
|
|
2016
2016
|
* refresh pings. Persisted so hooks survive server restarts; migrate.mjs
|
|
2017
2017
|
* reads the same file. */
|
|
2018
2018
|
var file = path.join(config.dataDir, "hook-token");
|
|
2019
|
-
var cached$
|
|
2019
|
+
var cached$2;
|
|
2020
2020
|
function hookToken() {
|
|
2021
|
-
if (cached$
|
|
2021
|
+
if (cached$2) return cached$2;
|
|
2022
2022
|
try {
|
|
2023
|
-
cached$
|
|
2024
|
-
if (cached$
|
|
2023
|
+
cached$2 = fs.readFileSync(file, "utf8").trim();
|
|
2024
|
+
if (cached$2) return cached$2;
|
|
2025
2025
|
} catch {}
|
|
2026
|
-
cached$
|
|
2027
|
-
fs.writeFileSync(file, `${cached$
|
|
2028
|
-
return cached$
|
|
2026
|
+
cached$2 = crypto.randomBytes(16).toString("hex");
|
|
2027
|
+
fs.writeFileSync(file, `${cached$2}\n`, { mode: 384 });
|
|
2028
|
+
return cached$2;
|
|
2029
2029
|
}
|
|
2030
2030
|
//#endregion
|
|
2031
2031
|
//#region src/server/repo-events.ts
|
|
@@ -3019,6 +3019,62 @@ function head1(context) {
|
|
|
3019
3019
|
return stripResponseBody(get1(context));
|
|
3020
3020
|
}
|
|
3021
3021
|
//#endregion
|
|
3022
|
+
//#region src/server/usage/index.ts
|
|
3023
|
+
var TTL_MS$2 = 6e4;
|
|
3024
|
+
/** Plan/quota usage across every agent account this machine is signed into.
|
|
3025
|
+
*
|
|
3026
|
+
* Each provider is one blocking HTTPS round trip against the same endpoint its
|
|
3027
|
+
* own CLI uses; they touch disjoint credentials and cache files, so they run
|
|
3028
|
+
* concurrently and the wait is the slowest single provider, not their sum. */
|
|
3029
|
+
async function collect() {
|
|
3030
|
+
return (await Promise.all(AGENTS.map((agent) => (agent.usage?.() ?? Promise.resolve([])).catch(() => [{
|
|
3031
|
+
...blankRow(agent.meta.id, "error"),
|
|
3032
|
+
note: "fetch failed"
|
|
3033
|
+
}])))).flat();
|
|
3034
|
+
}
|
|
3035
|
+
/** Age of a row served from a failed refresh, in seconds — undefined when the
|
|
3036
|
+
* numbers are current. Percentages from a stale row describe a window that has
|
|
3037
|
+
* since moved on, so they can't be shown as live figures. */
|
|
3038
|
+
function staleSeconds(source) {
|
|
3039
|
+
const match = /^stale-cache\s+(\d+)s/.exec(source);
|
|
3040
|
+
return match ? Number(match[1]) : void 0;
|
|
3041
|
+
}
|
|
3042
|
+
var cached$1 = swr(TTL_MS$2, (_key, _refresh) => collect());
|
|
3043
|
+
function shape(rows) {
|
|
3044
|
+
return { agents: rows.map((row) => ({
|
|
3045
|
+
agent: row.agent,
|
|
3046
|
+
plan: row.plan,
|
|
3047
|
+
account: row.account,
|
|
3048
|
+
stale_seconds: staleSeconds(row.source),
|
|
3049
|
+
note: row.stale_reason || row.note,
|
|
3050
|
+
windows: [
|
|
3051
|
+
{
|
|
3052
|
+
window: "5h",
|
|
3053
|
+
used_percent: row.five_h,
|
|
3054
|
+
resets_at: row.five_h_resets
|
|
3055
|
+
},
|
|
3056
|
+
{
|
|
3057
|
+
window: row.seven_d_label || "7d",
|
|
3058
|
+
used_percent: row.seven_d,
|
|
3059
|
+
resets_at: row.seven_d_resets
|
|
3060
|
+
},
|
|
3061
|
+
{
|
|
3062
|
+
window: "fable",
|
|
3063
|
+
used_percent: row.fable,
|
|
3064
|
+
resets_at: row.fable_resets
|
|
3065
|
+
}
|
|
3066
|
+
].filter((w) => w.used_percent != null)
|
|
3067
|
+
})) };
|
|
3068
|
+
}
|
|
3069
|
+
var usage = async (refresh = false) => shape(await cached$1("usage", refresh));
|
|
3070
|
+
/** What is already known, without asking any provider — for the first
|
|
3071
|
+
* paint, so the nav's plan line renders with the page instead of landing a
|
|
3072
|
+
* moment later and pushing the rows down. Null on a cold server. */
|
|
3073
|
+
var usagePeek = () => {
|
|
3074
|
+
const rows = cached$1.get("usage");
|
|
3075
|
+
return rows ? shape(rows) : null;
|
|
3076
|
+
};
|
|
3077
|
+
//#endregion
|
|
3022
3078
|
//#region src/server/github-api.ts
|
|
3023
3079
|
/** Run a GraphQL query against one host.
|
|
3024
3080
|
*
|
|
@@ -3047,7 +3103,7 @@ async function graphql(query, host = DEFAULT_HOST) {
|
|
|
3047
3103
|
}
|
|
3048
3104
|
//#endregion
|
|
3049
3105
|
//#region src/server/prs.ts
|
|
3050
|
-
var TTL_MS$
|
|
3106
|
+
var TTL_MS$1 = 12e4;
|
|
3051
3107
|
/** PRs whose head is the workspace branch or one of its `-topic` lanes.
|
|
3052
3108
|
* `exclude` lists other workspaces' branches — slugs are user-chosen, so
|
|
3053
3109
|
* another workspace's branch can extend this prefix and its PRs must not
|
|
@@ -3064,7 +3120,7 @@ var branchKey = (fullName, branch) => `${fullName}#${branch}`;
|
|
|
3064
3120
|
* a recency window over all of a repo's PRs, fetched roughly twice what it
|
|
3065
3121
|
* kept here and still aged a quiet workspace out on a busy repo.
|
|
3066
3122
|
* Key: `fullName#branch`. */
|
|
3067
|
-
var branchPrs = swr(TTL_MS$
|
|
3123
|
+
var branchPrs = swr(TTL_MS$1, async (key, refresh) => {
|
|
3068
3124
|
const sep = key.indexOf("#");
|
|
3069
3125
|
const fullName = key.slice(0, sep);
|
|
3070
3126
|
const { host, name } = splitRepo(fullName);
|
|
@@ -3265,7 +3321,7 @@ var exists = (file) => fsp.stat(file).then(() => true, () => false);
|
|
|
3265
3321
|
var isDir = (file) => fsp.stat(file).then((s) => s.isDirectory(), () => false);
|
|
3266
3322
|
//#endregion
|
|
3267
3323
|
//#region src/server/status.ts
|
|
3268
|
-
var TTL_MS
|
|
3324
|
+
var TTL_MS = 2e3;
|
|
3269
3325
|
var snapshot$1 = null;
|
|
3270
3326
|
var inflight = null;
|
|
3271
3327
|
var snapshotGen = 0;
|
|
@@ -3277,7 +3333,7 @@ function invalidateSnapshot() {
|
|
|
3277
3333
|
inflight = null;
|
|
3278
3334
|
}
|
|
3279
3335
|
function statusForAll() {
|
|
3280
|
-
if (snapshot$1 && Date.now() - snapshot$1.at < TTL_MS
|
|
3336
|
+
if (snapshot$1 && Date.now() - snapshot$1.at < TTL_MS) return Promise.resolve(snapshot$1.value);
|
|
3281
3337
|
if (!inflight) {
|
|
3282
3338
|
const gen = snapshotGen;
|
|
3283
3339
|
const run = computeStatus().then((value) => {
|
|
@@ -3444,7 +3500,8 @@ var _middleware_default$3 = Run.ALL(async (_ctx, next) => {
|
|
|
3444
3500
|
prefs: allPrefs(),
|
|
3445
3501
|
instance: getInstance(),
|
|
3446
3502
|
status: quick ? quick.s : statusP,
|
|
3447
|
-
setup: null
|
|
3503
|
+
setup: null,
|
|
3504
|
+
usage: usagePeek()
|
|
3448
3505
|
});
|
|
3449
3506
|
});
|
|
3450
3507
|
//#endregion
|
|
@@ -3549,6 +3606,92 @@ var _layout_default = _template("a", (input) => {
|
|
|
3549
3606
|
_serialize_if($scope0_reason, 0) && writeScope($scope0_id, {});
|
|
3550
3607
|
}, 1);
|
|
3551
3608
|
//#endregion
|
|
3609
|
+
//#region src/client/session.ts
|
|
3610
|
+
/** When an edge auth proxy (oauth2-proxy, Cloudflare Access, …) drops the
|
|
3611
|
+
* session, API fetches turn into login HTML and websocket upgrades fail.
|
|
3612
|
+
* A full reload is what users already do — and unlike a hardcoded
|
|
3613
|
+
* `/oauth2/sign_in` URL, it works for any hosting setup (or none). */
|
|
3614
|
+
var RELOAD_KEY = "work:auth-reload";
|
|
3615
|
+
var reloading = false;
|
|
3616
|
+
/** One reload per death episode. Cleared after a successful API call so a
|
|
3617
|
+
* later expiry can recover again; blocks loops if reload didn't help. */
|
|
3618
|
+
function reloadOnceForAuth() {
|
|
3619
|
+
if (typeof location === "undefined" || reloading) return;
|
|
3620
|
+
try {
|
|
3621
|
+
if (sessionStorage.getItem(RELOAD_KEY)) return;
|
|
3622
|
+
sessionStorage.setItem(RELOAD_KEY, "1");
|
|
3623
|
+
} catch {}
|
|
3624
|
+
reloading = true;
|
|
3625
|
+
location.reload();
|
|
3626
|
+
}
|
|
3627
|
+
/** Successful traffic means we're past any auth gate — allow a future reload. */
|
|
3628
|
+
function clearAuthReloadGuard() {
|
|
3629
|
+
try {
|
|
3630
|
+
sessionStorage.removeItem(RELOAD_KEY);
|
|
3631
|
+
} catch {}
|
|
3632
|
+
}
|
|
3633
|
+
/** True when a Response looks like an auth/proxy bounce instead of our JSON API. */
|
|
3634
|
+
function isAuthDeathResponse(res) {
|
|
3635
|
+
if (res.status === 401 || res.status === 403) return true;
|
|
3636
|
+
const ct = res.headers.get("content-type") || "";
|
|
3637
|
+
if (ct.includes("text/html") && !ct.includes("json")) return true;
|
|
3638
|
+
return false;
|
|
3639
|
+
}
|
|
3640
|
+
//#endregion
|
|
3641
|
+
//#region src/client/api.ts
|
|
3642
|
+
/** Fetch JSON from an API route. Error bodies are always `{ error: string }`;
|
|
3643
|
+
* when one comes back (or the response isn't ok / isn't JSON) this throws,
|
|
3644
|
+
* so callers handle failure in one place. Pass `{ signal: $signal }` where
|
|
3645
|
+
* a component-scoped fetch should abort on destroy.
|
|
3646
|
+
*
|
|
3647
|
+
* Behind an auth proxy, an expired session turns into login HTML (or 401).
|
|
3648
|
+
* Reload once — same fix users already apply by hand, hosting-agnostic. */
|
|
3649
|
+
async function api$7(url, init) {
|
|
3650
|
+
const res = await fetch(url, init);
|
|
3651
|
+
if (isAuthDeathResponse(res)) {
|
|
3652
|
+
reloadOnceForAuth();
|
|
3653
|
+
throw new Error("session expired");
|
|
3654
|
+
}
|
|
3655
|
+
let data;
|
|
3656
|
+
try {
|
|
3657
|
+
data = await res.json();
|
|
3658
|
+
} catch {
|
|
3659
|
+
if (isAuthDeathResponse(res)) {
|
|
3660
|
+
reloadOnceForAuth();
|
|
3661
|
+
throw new Error("session expired");
|
|
3662
|
+
}
|
|
3663
|
+
throw new Error(res.ok ? "invalid response" : `HTTP ${res.status}`);
|
|
3664
|
+
}
|
|
3665
|
+
if (data && typeof data === "object" && data.error) throw new Error(data.error);
|
|
3666
|
+
if (!res.ok) throw new Error(`HTTP ${res.status}`);
|
|
3667
|
+
clearAuthReloadGuard();
|
|
3668
|
+
return data;
|
|
3669
|
+
}
|
|
3670
|
+
//#endregion
|
|
3671
|
+
//#region src/client/usage.ts
|
|
3672
|
+
var cached = null;
|
|
3673
|
+
function lastUsage$1() {
|
|
3674
|
+
return cached?.value ?? null;
|
|
3675
|
+
}
|
|
3676
|
+
/** Prime the store with the server's cached snapshot (SSR and resume), so
|
|
3677
|
+
* the first render has numbers. Stamped as fresh: the server already
|
|
3678
|
+
* revalidates its own copy in the background. */
|
|
3679
|
+
function seedUsage(value) {
|
|
3680
|
+
if (value && !cached) cached = {
|
|
3681
|
+
at: Date.now(),
|
|
3682
|
+
value
|
|
3683
|
+
};
|
|
3684
|
+
}
|
|
3685
|
+
/** The plan row an agent instance draws on: its own account (`claude2`)
|
|
3686
|
+
* when the provider reports per account, else the family's (`codex`). */
|
|
3687
|
+
function usageFor(agentId, usage) {
|
|
3688
|
+
const rows = usage?.agents || [];
|
|
3689
|
+
const exact = rows.find((r) => r.agent === agentId);
|
|
3690
|
+
if (exact) return exact;
|
|
3691
|
+
const family = agentFamily(agentId);
|
|
3692
|
+
return rows.find((r) => r.agent === family) ?? null;
|
|
3693
|
+
}
|
|
3694
|
+
//#endregion
|
|
3552
3695
|
//#region src/client/coalesce.ts
|
|
3553
3696
|
/** Wrap an async task so event bursts collapse: never more than one run in
|
|
3554
3697
|
* flight, with at most one queued rerun that drains after the current one. */
|
|
@@ -3582,38 +3725,6 @@ var connection_pill_default = _template("e", (input) => {
|
|
|
3582
3725
|
_resume_branch($scope0_id);
|
|
3583
3726
|
});
|
|
3584
3727
|
//#endregion
|
|
3585
|
-
//#region src/client/session.ts
|
|
3586
|
-
/** When an edge auth proxy (oauth2-proxy, Cloudflare Access, …) drops the
|
|
3587
|
-
* session, API fetches turn into login HTML and websocket upgrades fail.
|
|
3588
|
-
* A full reload is what users already do — and unlike a hardcoded
|
|
3589
|
-
* `/oauth2/sign_in` URL, it works for any hosting setup (or none). */
|
|
3590
|
-
var RELOAD_KEY = "work:auth-reload";
|
|
3591
|
-
var reloading = false;
|
|
3592
|
-
/** One reload per death episode. Cleared after a successful API call so a
|
|
3593
|
-
* later expiry can recover again; blocks loops if reload didn't help. */
|
|
3594
|
-
function reloadOnceForAuth() {
|
|
3595
|
-
if (typeof location === "undefined" || reloading) return;
|
|
3596
|
-
try {
|
|
3597
|
-
if (sessionStorage.getItem(RELOAD_KEY)) return;
|
|
3598
|
-
sessionStorage.setItem(RELOAD_KEY, "1");
|
|
3599
|
-
} catch {}
|
|
3600
|
-
reloading = true;
|
|
3601
|
-
location.reload();
|
|
3602
|
-
}
|
|
3603
|
-
/** Successful traffic means we're past any auth gate — allow a future reload. */
|
|
3604
|
-
function clearAuthReloadGuard() {
|
|
3605
|
-
try {
|
|
3606
|
-
sessionStorage.removeItem(RELOAD_KEY);
|
|
3607
|
-
} catch {}
|
|
3608
|
-
}
|
|
3609
|
-
/** True when a Response looks like an auth/proxy bounce instead of our JSON API. */
|
|
3610
|
-
function isAuthDeathResponse(res) {
|
|
3611
|
-
if (res.status === 401 || res.status === 403) return true;
|
|
3612
|
-
const ct = res.headers.get("content-type") || "";
|
|
3613
|
-
if (ct.includes("text/html") && !ct.includes("json")) return true;
|
|
3614
|
-
return false;
|
|
3615
|
-
}
|
|
3616
|
-
//#endregion
|
|
3617
3728
|
//#region src/client/theme.ts
|
|
3618
3729
|
var LIGHT_CHROME = "#fafafa";
|
|
3619
3730
|
var DARK_CHROME = "#131316";
|
|
@@ -3700,26 +3811,26 @@ function applyInstance(inst) {
|
|
|
3700
3811
|
}
|
|
3701
3812
|
//#endregion
|
|
3702
3813
|
//#region src/tags/settings-page.css.ts
|
|
3703
|
-
var content$2 = "
|
|
3704
|
-
var agentGrid = "
|
|
3705
|
-
var toolGrid = "
|
|
3814
|
+
var content$2 = "_b2 _bD _bE";
|
|
3815
|
+
var agentGrid = "_b6 _bo";
|
|
3816
|
+
var toolGrid = "_cf _bo";
|
|
3706
3817
|
//#endregion
|
|
3707
3818
|
//#region src/tags/page-head.marko
|
|
3708
3819
|
var page_head_default = _template("r", (input) => {
|
|
3709
3820
|
const $scope0_reason = _scope_reason(), $sg__input_backHref__OR__input_onBack__OR__input_meta__OR__input_actions = _serialize_guard($scope0_reason, 3), $sg__input_meta = _serialize_guard($scope0_reason, 6), $sg__input_actions = _serialize_guard($scope0_reason, 7), $si__input_backHref__OR__input_onBack = _serialize_if($scope0_reason, 1), $si__input_meta = _serialize_if($scope0_reason, 6), $si__input_actions = _serialize_if($scope0_reason, 7);
|
|
3710
3821
|
const $scope0_id = _scope_id();
|
|
3711
|
-
_html(`<header${_attr_class("
|
|
3822
|
+
_html(`<header${_attr_class("_bF")}>`);
|
|
3712
3823
|
_if(() => {
|
|
3713
3824
|
if (input.backHref) {
|
|
3714
3825
|
const $scope1_id = _scope_id();
|
|
3715
|
-
_html(`<a${_attr("href", input.backHref)}${_attr_class([iconBtnRow, "
|
|
3826
|
+
_html(`<a${_attr("href", input.backHref)}${_attr_class([iconBtnRow, "_dH"])}${_attr_or("title", input.backTitle, " title=\"Back (Esc)\"")}${_attr_or("aria-label", input.backTitle, " aria-label=Back")}>`);
|
|
3716
3827
|
icon_back_default({ size: 16 });
|
|
3717
3828
|
_html(`</a>${_el_resume($scope1_id, "a", _serialize_guard($scope0_reason, 0))}`);
|
|
3718
3829
|
_serialize_if($scope0_reason, 2) && writeScope($scope1_id, { _: _serialize_if($scope0_reason, 0) && _scope_with_id($scope0_id) });
|
|
3719
3830
|
return 0;
|
|
3720
3831
|
} else if (input.onBack) {
|
|
3721
3832
|
const $scope2_id = _scope_id();
|
|
3722
|
-
_html(`<button${_attr_class([iconBtnRow, "
|
|
3833
|
+
_html(`<button${_attr_class([iconBtnRow, "_dH"])}${_attr_or("title", input.backTitle, " title=\"Back (Esc)\"")}${_attr_or("aria-label", input.backTitle, " aria-label=Back")}>`);
|
|
3723
3834
|
icon_back_default({ size: 16 });
|
|
3724
3835
|
_html(`</button>${_el_resume($scope2_id, "a")}`);
|
|
3725
3836
|
_script($scope2_id, "r0");
|
|
@@ -3727,11 +3838,11 @@ var page_head_default = _template("r", (input) => {
|
|
|
3727
3838
|
return 1;
|
|
3728
3839
|
}
|
|
3729
3840
|
}, $scope0_id, "b", _serialize_guard($scope0_reason, 2), _serialize_guard($scope0_reason, 1), $sg__input_backHref__OR__input_onBack__OR__input_meta__OR__input_actions, 0, 1);
|
|
3730
|
-
_html(`<div${_attr_class("
|
|
3841
|
+
_html(`<div${_attr_class("_bH")}><h1${_attr("id", input.titleId)}${_attr_class("_bG")}>${_escape(input.title)}${_el_resume($scope0_id, "e", _serialize_guard($scope0_reason, 5))}</h1>${_el_resume($scope0_id, "d", _serialize_guard($scope0_reason, 4))}`);
|
|
3731
3842
|
_if(() => {
|
|
3732
3843
|
if (input.meta) {
|
|
3733
3844
|
const $scope3_id = _scope_id();
|
|
3734
|
-
_html(`<p${_attr_class("
|
|
3845
|
+
_html(`<p${_attr_class("_bI")}>`);
|
|
3735
3846
|
_dynamic_tag($scope3_id, "b", input.meta, {}, 0, 0, $sg__input_meta);
|
|
3736
3847
|
_html("</p>");
|
|
3737
3848
|
$si__input_meta && writeScope($scope3_id, { _: _scope_with_id($scope0_id) });
|
|
@@ -3742,7 +3853,7 @@ var page_head_default = _template("r", (input) => {
|
|
|
3742
3853
|
_if(() => {
|
|
3743
3854
|
if (input.actions) {
|
|
3744
3855
|
const $scope4_id = _scope_id();
|
|
3745
|
-
_html(`<div${_attr_class("
|
|
3856
|
+
_html(`<div${_attr_class("_bJ")}>`);
|
|
3746
3857
|
_dynamic_tag($scope4_id, "b", input.actions, {}, 0, 0, $sg__input_actions);
|
|
3747
3858
|
_html("</div>");
|
|
3748
3859
|
$si__input_actions && writeScope($scope4_id, { _: _scope_with_id($scope0_id) });
|
|
@@ -3810,7 +3921,7 @@ var icon_agent_default = _template("G", (input) => {
|
|
|
3810
3921
|
n: $badge__closures
|
|
3811
3922
|
});
|
|
3812
3923
|
});
|
|
3813
|
-
var usageNote = "
|
|
3924
|
+
var usageNote = "_de _S";
|
|
3814
3925
|
//#endregion
|
|
3815
3926
|
//#region src/tags/icons/icon-warning.marko
|
|
3816
3927
|
var icon_warning_default = _template("kb", (input) => {
|
|
@@ -3851,11 +3962,11 @@ var usage_meters_default = _template("D", (input) => {
|
|
|
3851
3962
|
const $scope0_reason = _scope_reason(), $sg__input_agent__OR__input_hideName = _serialize_guard($scope0_reason, 0), $sg__input_agent = _serialize_guard($scope0_reason, 1), $si__input_agent = _serialize_if($scope0_reason, 1), $sg__input_hideName = _serialize_guard($scope0_reason, 2), $si__input_agent__OR__input_hideName = _serialize_if($scope0_reason, 0);
|
|
3852
3963
|
const $scope0_id = _scope_id();
|
|
3853
3964
|
const agent = input.agent;
|
|
3854
|
-
_html(`<div${_attr_class(["
|
|
3965
|
+
_html(`<div${_attr_class(["_c9", { ["_c_"]: input.hideName }])}><div${_attr_class("_da")}>`);
|
|
3855
3966
|
_if(() => {
|
|
3856
3967
|
if (!input.hideName) {
|
|
3857
3968
|
const $scope1_id = _scope_id();
|
|
3858
|
-
_html(`<strong${_attr_class("
|
|
3969
|
+
_html(`<strong${_attr_class("_dt")}>${_escape(agent.agent)}${_el_resume($scope1_id, "b", $sg__input_agent)}</strong>`);
|
|
3859
3970
|
$si__input_agent__OR__input_hideName && writeScope($scope1_id, { _: $si__input_agent && _scope_with_id($scope0_id) });
|
|
3860
3971
|
return 0;
|
|
3861
3972
|
}
|
|
@@ -3863,7 +3974,7 @@ var usage_meters_default = _template("D", (input) => {
|
|
|
3863
3974
|
_if(() => {
|
|
3864
3975
|
if (agent.plan && agent.plan.toLowerCase() !== agent.agent.toLowerCase()) {
|
|
3865
3976
|
const $scope2_id = _scope_id();
|
|
3866
|
-
_html(`<span${_attr_class("
|
|
3977
|
+
_html(`<span${_attr_class("_db")}>${_escape(agent.plan.replace(/^default_/, "").replaceAll("_", " "))}${_el_resume($scope2_id, "b", $sg__input_agent)}</span>`);
|
|
3867
3978
|
$si__input_agent && writeScope($scope2_id, { _: _scope_with_id($scope0_id) });
|
|
3868
3979
|
return 0;
|
|
3869
3980
|
}
|
|
@@ -3871,21 +3982,21 @@ var usage_meters_default = _template("D", (input) => {
|
|
|
3871
3982
|
_if(() => {
|
|
3872
3983
|
if (agent.stale_seconds != null) {
|
|
3873
3984
|
const $scope3_id = _scope_id();
|
|
3874
|
-
_html(`<span${_attr_class("
|
|
3985
|
+
_html(`<span${_attr_class("_dc")}${_attr("title", `${agent.note || "provider unreachable"}. Last cached numbers, ${duration(agent.stale_seconds * 1e3)} old`)}>`);
|
|
3875
3986
|
icon_warning_default({ size: 12 });
|
|
3876
3987
|
_html(` ${_sep($sg__input_agent)}${_escape(duration(agent.stale_seconds * 1e3))}${_el_resume($scope3_id, "c", $sg__input_agent)} old</span>${_el_resume($scope3_id, "a", $sg__input_agent)}`);
|
|
3877
3988
|
$si__input_agent && writeScope($scope3_id, { _: _scope_with_id($scope0_id) });
|
|
3878
3989
|
return 0;
|
|
3879
3990
|
}
|
|
3880
3991
|
}, $scope0_id, "e", $sg__input_agent, $sg__input_agent, $sg__input_agent__OR__input_hideName, 0, 1);
|
|
3881
|
-
_html(`</div><div${_attr_class(["
|
|
3992
|
+
_html(`</div><div${_attr_class(["_dd", { ["_du"]: agent.stale_seconds != null }])}>`);
|
|
3882
3993
|
_for_of(agent.windows || [], (win) => {
|
|
3883
3994
|
const $scope4_id = _scope_id();
|
|
3884
3995
|
const pct = pctText$1(win.used_percent);
|
|
3885
3996
|
const label = resetLabel(win.resets_at, agent.stale_seconds != null);
|
|
3886
|
-
const fillClass = win.used_percent >= 90 ? "
|
|
3887
|
-
const pctClass = win.used_percent >= 90 ? "
|
|
3888
|
-
_html(`<div${_attr_class("
|
|
3997
|
+
const fillClass = win.used_percent >= 90 ? "_dm" : win.used_percent >= 70 ? "_dl" : win.used_percent >= 40 ? "_dk" : "_dj";
|
|
3998
|
+
const pctClass = win.used_percent >= 90 ? "_dr" : win.used_percent >= 70 ? "_dq" : win.used_percent >= 40 ? "_dp" : "_do";
|
|
3999
|
+
_html(`<div${_attr_class("_df")}${_attr("title", `${win.window}: ${pct} used${win.resets_at ? `, resets ${new Date(win.resets_at).toLocaleString()}` : ""}`)}><span${_attr_class("_dg")}>${_escape(win.window)}${_el_resume($scope4_id, "c", $sg__input_agent)}</span><span${_attr_class("_dh")}><span${_attr_class(["_di", fillClass])}${_attr_style(`width:${Math.min(100, Math.max(2, win.used_percent))}%`)}></span>${_el_resume($scope4_id, "e", $sg__input_agent)}</span><span${_attr_class(["_dn", pctClass])}>${_escape(pct)}${_el_resume($scope4_id, "g", $sg__input_agent)}</span>${_el_resume($scope4_id, "f", $sg__input_agent)}<span${_attr_class("_ds")}>`);
|
|
3889
4000
|
_if(() => {
|
|
3890
4001
|
if (label) {
|
|
3891
4002
|
const $scope6_id = _scope_id();
|
|
@@ -3919,7 +4030,7 @@ var usage_meters_default = _template("D", (input) => {
|
|
|
3919
4030
|
});
|
|
3920
4031
|
//#endregion
|
|
3921
4032
|
//#region src/tags/sso-auth.marko
|
|
3922
|
-
var api$
|
|
4033
|
+
var api$6;
|
|
3923
4034
|
var watchProgress$2;
|
|
3924
4035
|
var sso_auth_default = _template("z", (input) => {
|
|
3925
4036
|
const $scope0_reason = _scope_reason(), $sg__input_items = _serialize_guard($scope0_reason, 2), $sg__input_skipped = _serialize_guard($scope0_reason, 1), $sg__input_skipped__OR__input_items_length = _serialize_guard($scope0_reason, 0), $si__input_items_0_host = _serialize_if($scope0_reason, 3);
|
|
@@ -3950,7 +4061,7 @@ var sso_auth_default = _template("z", (input) => {
|
|
|
3950
4061
|
});
|
|
3951
4062
|
await watcher.ready;
|
|
3952
4063
|
try {
|
|
3953
|
-
await api$
|
|
4064
|
+
await api$6(`/api/setup/${encodeURIComponent(host)}`, {
|
|
3954
4065
|
method: "POST",
|
|
3955
4066
|
headers: { "content-type": "application/json" },
|
|
3956
4067
|
body: JSON.stringify({ action: "auth-refresh" })
|
|
@@ -3964,14 +4075,14 @@ var sso_auth_default = _template("z", (input) => {
|
|
|
3964
4075
|
localCode = null;
|
|
3965
4076
|
}
|
|
3966
4077
|
}, "z0", $scope0_id);
|
|
3967
|
-
_html(`<div${_attr_class("
|
|
4078
|
+
_html(`<div${_attr_class("_dv")}>`);
|
|
3968
4079
|
_if(() => {
|
|
3969
4080
|
if (input.items.length) {
|
|
3970
4081
|
const $scope1_id = _scope_id();
|
|
3971
|
-
_html(`<p${_attr_class("
|
|
4082
|
+
_html(`<p${_attr_class("_dG")}>GitHub CLI needs org SSO for ${_sep($sg__input_items)}${_escape(input.items.map((s) => s.org).join(", "))}${_el_resume($scope1_id, "b", $sg__input_items)}.</p><ul${_attr_class("_dw")}>`);
|
|
3972
4083
|
_for_of(input.items, (s) => {
|
|
3973
4084
|
const $scope2_id = _scope_id();
|
|
3974
|
-
_html(`<li${_attr_class("
|
|
4085
|
+
_html(`<li${_attr_class("_dx")}>${_escape(s.org)}${_el_resume($scope2_id, "b", $sg__input_items)}<button type=button${_attr_class("_dy")}${_attr("title", `Skip ${s.org}`)}${_attr("aria-label", `Skip ${s.org}`)}${_attr("disabled", busy)}>`);
|
|
3975
4086
|
icon_xmark_default({ size: 11 });
|
|
3976
4087
|
_html(`</button>${_el_resume($scope2_id, "c")}</li>`);
|
|
3977
4088
|
_script($scope2_id, "z1");
|
|
@@ -3980,17 +4091,17 @@ var sso_auth_default = _template("z", (input) => {
|
|
|
3980
4091
|
_: _scope_with_id($scope1_id)
|
|
3981
4092
|
}));
|
|
3982
4093
|
}, "org", $scope1_id, "c", $sg__input_items, $sg__input_items, $sg__input_items, "</ul>", 1);
|
|
3983
|
-
_html(`<div${_attr_class("
|
|
4094
|
+
_html(`<div${_attr_class("_dz")}>`);
|
|
3984
4095
|
_if(() => {
|
|
3985
4096
|
if (busy && authCode$2) {
|
|
3986
4097
|
const $scope5_id = _scope_id();
|
|
3987
|
-
_html(`<span${_attr_class("
|
|
4098
|
+
_html(`<span${_attr_class("_dA")}><span${_attr_class("_F")}></span> Enter code <strong${_attr_class("_dB")}>${_escape(authCode$2)}${_el_resume($scope5_id, "d")}</strong> at <a${_attr("href", `https://${host}/login/device`)}${_attr_class("_dC")}>${_escape(host)}${_el_resume($scope5_id, "f", _serialize_guard($scope0_reason, 3))}/login/device</a>${_el_resume($scope5_id, "e")}</span>`);
|
|
3988
4099
|
_script($scope5_id, "z2");
|
|
3989
4100
|
_subscribe($authCode__closures, _subscribe($si__input_items_0_host && $host__closures, writeScope($scope5_id, {})));
|
|
3990
4101
|
return 0;
|
|
3991
4102
|
} else if (busy) {
|
|
3992
4103
|
const $scope8_id = _scope_id();
|
|
3993
|
-
_html(`<span${_attr_class("
|
|
4104
|
+
_html(`<span${_attr_class("_dA")}><span${_attr_class("_F")}></span>Starting GitHub re-authorization…</span>`);
|
|
3994
4105
|
writeScope($scope8_id, {});
|
|
3995
4106
|
return 1;
|
|
3996
4107
|
} else {
|
|
@@ -4004,7 +4115,7 @@ var sso_auth_default = _template("z", (input) => {
|
|
|
4004
4115
|
_if(() => {
|
|
4005
4116
|
if (localError) {
|
|
4006
4117
|
const $scope6_id = _scope_id();
|
|
4007
|
-
_html(`<p${_attr_class("
|
|
4118
|
+
_html(`<p${_attr_class("_dG")}>${_escape(localError)}${_el_resume($scope6_id, "b")}</p>`);
|
|
4008
4119
|
_subscribe($localError__closures, writeScope($scope6_id, {}));
|
|
4009
4120
|
return 0;
|
|
4010
4121
|
}
|
|
@@ -4016,10 +4127,10 @@ var sso_auth_default = _template("z", (input) => {
|
|
|
4016
4127
|
_if(() => {
|
|
4017
4128
|
if (skipped$1.length) {
|
|
4018
4129
|
const $scope3_id = _scope_id();
|
|
4019
|
-
_html(`<p${_attr_class("
|
|
4130
|
+
_html(`<p${_attr_class("_dD")}>Skipped SSO for `);
|
|
4020
4131
|
_for_of(skipped$1, (s) => {
|
|
4021
4132
|
const $scope4_id = _scope_id();
|
|
4022
|
-
_html(`<span${_attr_class("
|
|
4133
|
+
_html(`<span${_attr_class("_dE")}>${_escape(s.org)}${_el_resume($scope4_id, "b", $sg__input_skipped)}<button type=button${_attr_class("_dF")}${_attr("title", `Show ${s.org} again`)}>(undo)</button>${_el_resume($scope4_id, "c")}</span>`);
|
|
4023
4134
|
_script($scope4_id, "z4");
|
|
4024
4135
|
writeScope($scope4_id, {
|
|
4025
4136
|
f: s?.org,
|
|
@@ -4094,7 +4205,7 @@ var modal_view_default = _template("p", (input) => {
|
|
|
4094
4205
|
const { label, class: inputClass, open: _open, openChange: _openChange, dismissable: _dismissable, content, footer, closedby: _closedby, onCancel: _onCancel, onClose: _onClose, "aria-label": inputAriaLabel, "aria-labelledby": inputLabelledBy, ...htmlInput } = input;
|
|
4095
4206
|
const dismissable = input.dismissable !== false;
|
|
4096
4207
|
let open = input.open;
|
|
4097
|
-
_html(`<dialog${_attr_class(["
|
|
4208
|
+
_html(`<dialog${_attr_class(["_dI", inputClass])}${_attr("aria-labelledby", inputLabelledBy)}${inputLabelledBy ? _attr("aria-label", inputAriaLabel) : _attr("aria-label", inputAriaLabel || label)} closedby=${dismissable ? "any" : "none"}${_attrs_partial({
|
|
4098
4209
|
...htmlInput,
|
|
4099
4210
|
open: null
|
|
4100
4211
|
}, {
|
|
@@ -4104,20 +4215,20 @@ var modal_view_default = _template("p", (input) => {
|
|
|
4104
4215
|
closedby: 1,
|
|
4105
4216
|
"on-cancel": 1,
|
|
4106
4217
|
"on-close": 1
|
|
4107
|
-
}, "a", $scope0_id, "dialog")}><div${_attr_class("
|
|
4218
|
+
}, "a", $scope0_id, "dialog")}><div${_attr_class("_dJ")}>`);
|
|
4108
4219
|
_dynamic_tag($scope0_id, "c", content, {}, 0, 0, _serialize_guard($scope0_reason, 6));
|
|
4109
4220
|
_html("</div>");
|
|
4110
4221
|
_if(() => {
|
|
4111
4222
|
if (footer) {
|
|
4112
4223
|
const $scope1_id = _scope_id();
|
|
4113
|
-
_html(`<form method=dialog${_attr_class("
|
|
4224
|
+
_html(`<form method=dialog${_attr_class("_dK")}>`);
|
|
4114
4225
|
_dynamic_tag($scope1_id, "b", footer.content, {}, 0, 0, _serialize_guard($scope0_reason, 7));
|
|
4115
4226
|
_html("</form>");
|
|
4116
4227
|
$si__input_openChange__OR__input_footer && writeScope($scope1_id, { _: _serialize_if($scope0_reason, 7) && _scope_with_id($scope0_id) });
|
|
4117
4228
|
return 0;
|
|
4118
4229
|
} else if (input.openChange) {
|
|
4119
4230
|
const $scope2_id = _scope_id();
|
|
4120
|
-
_html(`<form method=dialog${_attr_class("
|
|
4231
|
+
_html(`<form method=dialog${_attr_class("_dK")}>`);
|
|
4121
4232
|
dialog_close_default({
|
|
4122
4233
|
class: ["_o", "_p"],
|
|
4123
4234
|
content: _content("p0", () => {
|
|
@@ -4176,7 +4287,7 @@ var prompt_dialog_default = _template("s", (input) => {
|
|
|
4176
4287
|
const $childScope = _peek_scope_id();
|
|
4177
4288
|
modal_view_default({
|
|
4178
4289
|
label: input.label,
|
|
4179
|
-
class: "
|
|
4290
|
+
class: "_cR",
|
|
4180
4291
|
open: input.open,
|
|
4181
4292
|
openChange: input.openChange,
|
|
4182
4293
|
"aria-labelledby": titleId,
|
|
@@ -4199,7 +4310,7 @@ var prompt_dialog_default = _template("s", (input) => {
|
|
|
4199
4310
|
content: _content("s6", () => {
|
|
4200
4311
|
_scope_reason();
|
|
4201
4312
|
const $scope2_id = _scope_id();
|
|
4202
|
-
_html(`<h2${_attr_class("
|
|
4313
|
+
_html(`<h2${_attr_class("_cS")}${_attr("id", titleId)}>${_escape(input.label)}${_el_resume($scope2_id, "b", $sg__input_label)}</h2><input${_attr_input_value($scope2_id, "c", value, _resume((_new_value) => {
|
|
4203
4314
|
value = _new_value;
|
|
4204
4315
|
}, "s0", $scope2_id))}${_attr("placeholder", input.placeholder)}>${_el_resume($scope2_id, "c")}`);
|
|
4205
4316
|
_script($scope2_id, "s4");
|
|
@@ -4228,7 +4339,7 @@ var prompt_dialog_default = _template("s", (input) => {
|
|
|
4228
4339
|
});
|
|
4229
4340
|
//#endregion
|
|
4230
4341
|
//#region src/tags/settings-page.marko
|
|
4231
|
-
var api$
|
|
4342
|
+
var api$5;
|
|
4232
4343
|
var watchProgress$1;
|
|
4233
4344
|
var MISSING_LABEL = {
|
|
4234
4345
|
"github-auth": "GitHub sign-in",
|
|
@@ -4290,21 +4401,21 @@ var settings_page_default = _template("v", (input) => {
|
|
|
4290
4401
|
}, "v6", $scope0_id);
|
|
4291
4402
|
const syncAgents = _resume(async () => {
|
|
4292
4403
|
try {
|
|
4293
|
-
const snap = await api$
|
|
4404
|
+
const snap = await api$5("/api/settings");
|
|
4294
4405
|
input.agentsChange?.(snap.agents);
|
|
4295
4406
|
if (snap.preferredAgent !== input.preferred) input.preferredChange?.(snap.preferredAgent);
|
|
4296
4407
|
} catch {}
|
|
4297
4408
|
}, "v7", $scope0_id);
|
|
4298
4409
|
const loadSetup = _resume(async (refresh) => {
|
|
4299
4410
|
try {
|
|
4300
|
-
applySetup(await api$
|
|
4411
|
+
applySetup(await api$5(`/api/setup${refresh ? "?refresh" : ""}`));
|
|
4301
4412
|
} catch (err) {
|
|
4302
4413
|
error = String(err.message || err);
|
|
4303
4414
|
}
|
|
4304
4415
|
}, "v8", $scope0_id);
|
|
4305
4416
|
const loadSelf = _resume(async (refresh) => {
|
|
4306
4417
|
try {
|
|
4307
|
-
const info = await api$
|
|
4418
|
+
const info = await api$5(`/api/setup/self${refresh ? "?refresh" : ""}`);
|
|
4308
4419
|
self = info;
|
|
4309
4420
|
if (info.updating) selfUpdating = true;
|
|
4310
4421
|
} catch {}
|
|
@@ -4314,7 +4425,7 @@ var settings_page_default = _template("v", (input) => {
|
|
|
4314
4425
|
selfUpdating = true;
|
|
4315
4426
|
const from = self.version;
|
|
4316
4427
|
try {
|
|
4317
|
-
await api$
|
|
4428
|
+
await api$5("/api/setup/self", { method: "POST" });
|
|
4318
4429
|
} catch (err) {
|
|
4319
4430
|
selfUpdating = false;
|
|
4320
4431
|
error = String(err.message || err);
|
|
@@ -4323,7 +4434,7 @@ var settings_page_default = _template("v", (input) => {
|
|
|
4323
4434
|
const started = Date.now();
|
|
4324
4435
|
const tick = async () => {
|
|
4325
4436
|
try {
|
|
4326
|
-
if ((await api$
|
|
4437
|
+
if ((await api$5("/api/setup/self")).version !== from) {
|
|
4327
4438
|
location.reload();
|
|
4328
4439
|
return;
|
|
4329
4440
|
}
|
|
@@ -4335,7 +4446,7 @@ var settings_page_default = _template("v", (input) => {
|
|
|
4335
4446
|
}, "v10", $scope0_id);
|
|
4336
4447
|
const loadUsage = _resume(async (refresh) => {
|
|
4337
4448
|
try {
|
|
4338
|
-
usage = await api$
|
|
4449
|
+
usage = await api$5(`/api/usage${refresh ? "?refresh" : ""}`);
|
|
4339
4450
|
} catch (err) {
|
|
4340
4451
|
usage = { error: String(err.message || err) };
|
|
4341
4452
|
}
|
|
@@ -4368,7 +4479,7 @@ var settings_page_default = _template("v", (input) => {
|
|
|
4368
4479
|
});
|
|
4369
4480
|
await watcher.ready;
|
|
4370
4481
|
try {
|
|
4371
|
-
applySetup(await api$
|
|
4482
|
+
applySetup(await api$5(`/api/setup/${encodeURIComponent(id)}`, {
|
|
4372
4483
|
method: "POST",
|
|
4373
4484
|
headers: { "content-type": "application/json" },
|
|
4374
4485
|
body: JSON.stringify({
|
|
@@ -4392,7 +4503,7 @@ var settings_page_default = _template("v", (input) => {
|
|
|
4392
4503
|
hostBusy = true;
|
|
4393
4504
|
error = null;
|
|
4394
4505
|
try {
|
|
4395
|
-
applySetup(await api$
|
|
4506
|
+
applySetup(await api$5("/api/github/hosts", {
|
|
4396
4507
|
method: "POST",
|
|
4397
4508
|
headers: { "content-type": "application/json" },
|
|
4398
4509
|
body: JSON.stringify({
|
|
@@ -4413,7 +4524,7 @@ var settings_page_default = _template("v", (input) => {
|
|
|
4413
4524
|
const setPreferred = _resume(async (agent) => {
|
|
4414
4525
|
input.preferredChange?.(agent);
|
|
4415
4526
|
try {
|
|
4416
|
-
await api$
|
|
4527
|
+
await api$5("/api/settings", {
|
|
4417
4528
|
method: "PUT",
|
|
4418
4529
|
headers: { "content-type": "application/json" },
|
|
4419
4530
|
body: JSON.stringify({ preferredAgent: agent })
|
|
@@ -4433,7 +4544,7 @@ var settings_page_default = _template("v", (input) => {
|
|
|
4433
4544
|
clearTimeout(saveTimer.id);
|
|
4434
4545
|
saveTimer.id = setTimeout(async () => {
|
|
4435
4546
|
try {
|
|
4436
|
-
const snap = await api$
|
|
4547
|
+
const snap = await api$5("/api/settings", {
|
|
4437
4548
|
method: "PUT",
|
|
4438
4549
|
headers: { "content-type": "application/json" },
|
|
4439
4550
|
body: JSON.stringify({ instance: next })
|
|
@@ -4453,7 +4564,7 @@ var settings_page_default = _template("v", (input) => {
|
|
|
4453
4564
|
if (on) off.delete(id);
|
|
4454
4565
|
else off.add(id);
|
|
4455
4566
|
try {
|
|
4456
|
-
const snap = await api$
|
|
4567
|
+
const snap = await api$5("/api/settings", {
|
|
4457
4568
|
method: "PUT",
|
|
4458
4569
|
headers: { "content-type": "application/json" },
|
|
4459
4570
|
body: JSON.stringify({ disabledAgents: [...off] })
|
|
@@ -4485,7 +4596,7 @@ var settings_page_default = _template("v", (input) => {
|
|
|
4485
4596
|
searching = true;
|
|
4486
4597
|
searchTimer.id = setTimeout(async () => {
|
|
4487
4598
|
try {
|
|
4488
|
-
const res = await api$
|
|
4599
|
+
const res = await api$5(`/api/setup/search?q=${encodeURIComponent(q.trim())}`);
|
|
4489
4600
|
if (query === q) hits = res;
|
|
4490
4601
|
} catch (err) {
|
|
4491
4602
|
error = String(err.message || err);
|
|
@@ -4509,7 +4620,7 @@ var settings_page_default = _template("v", (input) => {
|
|
|
4509
4620
|
const appearanceId = _id();
|
|
4510
4621
|
const githubId = _id();
|
|
4511
4622
|
const machineId = _id();
|
|
4512
|
-
_html(`<div${_attr_class("
|
|
4623
|
+
_html(`<div${_attr_class("_bB")} role=region${_attr("aria-labelledby", titleId)}><div${_attr_class("_bC")}><div${_attr_class(content$2)}>`);
|
|
4513
4624
|
_set_serialize_reason({
|
|
4514
4625
|
0: _serialize_guard($scope0_reason, 4),
|
|
4515
4626
|
1: $sg__input_backHref__OR__input_onExit,
|
|
@@ -4533,12 +4644,12 @@ var settings_page_default = _template("v", (input) => {
|
|
|
4533
4644
|
return 0;
|
|
4534
4645
|
} else if (setup.ready) {
|
|
4535
4646
|
const $scope52_id = _scope_id();
|
|
4536
|
-
_html(`<span${_attr_class("
|
|
4647
|
+
_html(`<span${_attr_class("_b4")}>Ready</span>. Tools, GitHub, and an agent are all in place.`);
|
|
4537
4648
|
writeScope($scope52_id, {});
|
|
4538
4649
|
return 1;
|
|
4539
4650
|
} else {
|
|
4540
4651
|
const $scope6_id = _scope_id();
|
|
4541
|
-
_html(`<span${_attr_class("
|
|
4652
|
+
_html(`<span${_attr_class("_b5")}>Not ready</span>. Missing <!>${_escape(setup.missing.map((m) => MISSING_LABEL[m] || m).join(", "))}${_el_resume($scope6_id, "b")}.`);
|
|
4542
4653
|
_subscribe($setup_missing__closures, writeScope($scope6_id, {}));
|
|
4543
4654
|
return 2;
|
|
4544
4655
|
}
|
|
@@ -4588,16 +4699,16 @@ var settings_page_default = _template("v", (input) => {
|
|
|
4588
4699
|
_if(() => {
|
|
4589
4700
|
if (selfUpdatePending || selfUpdating) {
|
|
4590
4701
|
const $scope37_id = _scope_id();
|
|
4591
|
-
_html(`<div${_attr_class("
|
|
4702
|
+
_html(`<div${_attr_class("_cy")} role=status><div${_attr_class("_cz")}>`);
|
|
4592
4703
|
_if(() => {
|
|
4593
4704
|
if (selfUpdating) {
|
|
4594
4705
|
const $scope53_id = _scope_id();
|
|
4595
|
-
_html(`<span${_attr_class("
|
|
4706
|
+
_html(`<span${_attr_class("_cA")}><span${_attr_class("_F")}></span> Updating work…</span><span${_attr_class("_cB")}>The app restarts and reloads when it is done.</span>`);
|
|
4596
4707
|
writeScope($scope53_id, {});
|
|
4597
4708
|
return 0;
|
|
4598
4709
|
} else {
|
|
4599
4710
|
const $scope38_id = _scope_id();
|
|
4600
|
-
_html(`<span${_attr_class("
|
|
4711
|
+
_html(`<span${_attr_class("_cA")}>Update available</span><span${_attr_class("_cB")}>v<!>${_escape(self.version)}${_el_resume($scope38_id, "c")} → v<!>${_escape(self.latest)}${_el_resume($scope38_id, "d")}</span>`);
|
|
4601
4712
|
_subscribe($self_version__closures, _subscribe($self_latest__closures, writeScope($scope38_id, {})));
|
|
4602
4713
|
return 1;
|
|
4603
4714
|
}
|
|
@@ -4616,11 +4727,11 @@ var settings_page_default = _template("v", (input) => {
|
|
|
4616
4727
|
return 0;
|
|
4617
4728
|
}
|
|
4618
4729
|
}, $scope0_id, "f", 1, 1, 1, 0, 1);
|
|
4619
|
-
_html(`<section${_attr_class("
|
|
4730
|
+
_html(`<section${_attr_class("_bl")}${_attr("aria-labelledby", agentsId)}><div${_attr_class("_bm")}><h2${_attr("id", agentsId)}${_attr_class("_bA")}>Agents</h2><div${_attr_class("_y")}></div><label${_attr_class("_b8")}><span${_attr_class("_S")}>Default</span><span${_attr_class("_m")}>`);
|
|
4620
4731
|
_attr_select_value($scope0_id, "n", input.preferred, _resume(function(v) {
|
|
4621
4732
|
setPreferred(v);
|
|
4622
4733
|
}, "v1", $scope0_id), () => {
|
|
4623
|
-
_html(`<select${_attr_class(["_n", "
|
|
4734
|
+
_html(`<select${_attr_class(["_n", "_b9"])} aria-label="Default agent (starts when a workspace has no session yet)" title="Starts when a workspace has no session yet">`);
|
|
4624
4735
|
_for_of(input.agents.filter((a) => a !== "shell"), (id) => {
|
|
4625
4736
|
const $scope54_id = _scope_id();
|
|
4626
4737
|
_html(`<option${_attr_option_value(id)}>${_escape(agentLabel(id))}${_el_resume($scope54_id, "b", $sg__input_agents)}</option>${_el_resume($scope54_id, "a", $sg__input_agents)}`);
|
|
@@ -4641,14 +4752,14 @@ var settings_page_default = _template("v", (input) => {
|
|
|
4641
4752
|
const rows = lone ? [] : a.instances;
|
|
4642
4753
|
const loneAccounts = lone && lone.enabled ? accountsFor(lone.id) : [];
|
|
4643
4754
|
const extraAccounts = a.installed ? strayAccountsFor(a) : [];
|
|
4644
|
-
_html(`<li${_attr_class(["
|
|
4755
|
+
_html(`<li${_attr_class(["_bq", "_b7"])}><div${_attr_class(["_b_", { ["_cc"]: lone && !lone.enabled }])}>`);
|
|
4645
4756
|
_set_serialize_reason(12);
|
|
4646
4757
|
const $childScope4 = _peek_scope_id();
|
|
4647
4758
|
icon_agent_default({
|
|
4648
4759
|
agent: a.id,
|
|
4649
4760
|
size: 18
|
|
4650
4761
|
});
|
|
4651
|
-
_html(`<div${_attr_class("
|
|
4762
|
+
_html(`<div${_attr_class("_br")}><span${_attr_class("_bt")}><span${_attr_class("_bs")}>${_escape(a.label)}${_el_resume($scope1_id, "g")}</span>`);
|
|
4652
4763
|
_if(() => {
|
|
4653
4764
|
if (lone && input.preferred === lone.id) {
|
|
4654
4765
|
const $scope55_id = _scope_id();
|
|
@@ -4661,12 +4772,12 @@ var settings_page_default = _template("v", (input) => {
|
|
|
4661
4772
|
_if(() => {
|
|
4662
4773
|
if (active.has(a.id)) {
|
|
4663
4774
|
const $scope11_id = _scope_id();
|
|
4664
|
-
_html(`<span${_attr_class("
|
|
4775
|
+
_html(`<span${_attr_class("_b3")}><span${_attr_class("_F")}></span><!>${_escape(active.get(a.id) || "Starting…")}${_el_resume($scope11_id, "c")}</span>`);
|
|
4665
4776
|
_subscribe($active__closures, writeScope($scope11_id, {}));
|
|
4666
4777
|
return 0;
|
|
4667
4778
|
} else if (!a.installed) {
|
|
4668
4779
|
const $scope56_id = _scope_id();
|
|
4669
|
-
_html(`<span${_attr_class("
|
|
4780
|
+
_html(`<span${_attr_class("_bu")}>Not installed</span>`);
|
|
4670
4781
|
writeScope($scope56_id, {});
|
|
4671
4782
|
return 1;
|
|
4672
4783
|
}
|
|
@@ -4698,18 +4809,18 @@ var settings_page_default = _template("v", (input) => {
|
|
|
4698
4809
|
_if(() => {
|
|
4699
4810
|
if (rows.length || loneAccounts.length || extraAccounts.length) {
|
|
4700
4811
|
const $scope2_id = _scope_id();
|
|
4701
|
-
_html(`<ul${_attr_class("
|
|
4812
|
+
_html(`<ul${_attr_class("_ce")}>`);
|
|
4702
4813
|
_for_of(rows, (inst) => {
|
|
4703
4814
|
const $scope3_id = _scope_id();
|
|
4704
4815
|
const accounts = inst.enabled ? accountsFor(inst.id) : [];
|
|
4705
|
-
_html(`<li${_attr_class("
|
|
4816
|
+
_html(`<li${_attr_class("_ca")}><div${_attr_class(["_cb", { ["_cc"]: !inst.enabled }])}>`);
|
|
4706
4817
|
_set_serialize_reason(12);
|
|
4707
4818
|
const $childScope5 = _peek_scope_id();
|
|
4708
4819
|
icon_agent_default({
|
|
4709
4820
|
agent: inst.id,
|
|
4710
4821
|
size: 15
|
|
4711
4822
|
});
|
|
4712
|
-
_html(`<span${_attr_class(["
|
|
4823
|
+
_html(`<span${_attr_class(["_cd", "_x"])}>${_escape(inst.command)}${_el_resume($scope3_id, "e")}</span>`);
|
|
4713
4824
|
_if(() => {
|
|
4714
4825
|
if (input.preferred === inst.id) {
|
|
4715
4826
|
const $scope57_id = _scope_id();
|
|
@@ -4784,7 +4895,7 @@ var settings_page_default = _template("v", (input) => {
|
|
|
4784
4895
|
}, "id", $scope0_id, "r", 1, 1, 1, 0, 1);
|
|
4785
4896
|
_for_of(otherUsage, (u) => {
|
|
4786
4897
|
const $scope61_id = _scope_id();
|
|
4787
|
-
_html(`<li${_attr_class(["
|
|
4898
|
+
_html(`<li${_attr_class(["_bq", "_b7"])}>`);
|
|
4788
4899
|
_set_serialize_reason(6);
|
|
4789
4900
|
const $childScope9 = _peek_scope_id();
|
|
4790
4901
|
usage_meters_default({ agent: u });
|
|
@@ -4795,17 +4906,17 @@ var settings_page_default = _template("v", (input) => {
|
|
|
4795
4906
|
_if(() => {
|
|
4796
4907
|
if (!usage && families.length) {
|
|
4797
4908
|
const $scope62_id = _scope_id();
|
|
4798
|
-
_html(`<p${_attr_class("
|
|
4909
|
+
_html(`<p${_attr_class("_bw")}><span${_attr_class("_F")}></span> Loading usage…</p>`);
|
|
4799
4910
|
writeScope($scope62_id, {});
|
|
4800
4911
|
return 0;
|
|
4801
4912
|
} else if (usage?.error) {
|
|
4802
4913
|
const $scope7_id = _scope_id();
|
|
4803
|
-
_html(`<p${_attr_class("
|
|
4914
|
+
_html(`<p${_attr_class("_bw")}>${_escape(usage.error)}${_el_resume($scope7_id, "b")}</p>`);
|
|
4804
4915
|
writeScope($scope7_id, {});
|
|
4805
4916
|
return 1;
|
|
4806
4917
|
}
|
|
4807
4918
|
}, $scope0_id, "t", 1, 1, 1, 0, 1);
|
|
4808
|
-
_html(`</section><section${_attr_class("
|
|
4919
|
+
_html(`</section><section${_attr_class("_bl")}${_attr("aria-labelledby", githubId)}><div${_attr_class("_bm")}><h2${_attr("id", githubId)}${_attr_class("_bA")}>GitHub</h2></div><ul${_attr_class("_bo")}>`);
|
|
4809
4920
|
_for_of(setup?.github || [], (h) => {
|
|
4810
4921
|
const $scope12_id = _scope_id();
|
|
4811
4922
|
const $for_content4__h_host__closures = /* @__PURE__ */ new Set();
|
|
@@ -4819,7 +4930,7 @@ var settings_page_default = _template("v", (input) => {
|
|
|
4819
4930
|
const skippedSso = (() => {
|
|
4820
4931
|
return (h.sso || []).filter((s) => ignoredSso.has(s.org));
|
|
4821
4932
|
})();
|
|
4822
|
-
_html(`<li${_attr_class(["
|
|
4933
|
+
_html(`<li${_attr_class(["_bq", "_co"])}><div${_attr_class("_cp")}><div${_attr_class("_br")}><span${_attr_class("_bt")}><span${_attr_class(["_bs", "_x"])}>${_escape(h.host)}${_el_resume($scope12_id, "f")}</span>`);
|
|
4823
4934
|
_if(() => {
|
|
4824
4935
|
if (h.isEnterprise) {
|
|
4825
4936
|
const $scope65_id = _scope_id();
|
|
@@ -4832,22 +4943,22 @@ var settings_page_default = _template("v", (input) => {
|
|
|
4832
4943
|
_if(() => {
|
|
4833
4944
|
if (active.has(h.host) && authCodes.has(h.host)) {
|
|
4834
4945
|
const $scope24_id = _scope_id();
|
|
4835
|
-
_html(`<span${_attr_class("
|
|
4946
|
+
_html(`<span${_attr_class("_b3")}><span${_attr_class("_F")}></span> Enter code <strong${_attr_class("_cm")}>${_escape(authCodes.get(h.host))}${_el_resume($scope24_id, "d")}</strong> at <a${_attr("href", `https://${h.host}/login/device`)} target=_blank rel=noopener${_attr_class("_cn")}>${_escape(h.host)}${_el_resume($scope24_id, "f")}/login/device</a>${_el_resume($scope24_id, "e")}</span>`);
|
|
4836
4947
|
_subscribe($authCodes__closures, writeScope($scope24_id, { Cdz: 1 }));
|
|
4837
4948
|
return 0;
|
|
4838
4949
|
} else if (active.has(h.host)) {
|
|
4839
4950
|
const $scope13_id = _scope_id();
|
|
4840
|
-
_html(`<span${_attr_class("
|
|
4951
|
+
_html(`<span${_attr_class("_b3")}><span${_attr_class("_F")}></span><!>${_escape(active.get(h.host) || "Starting…")}${_el_resume($scope13_id, "c")}</span>`);
|
|
4841
4952
|
_subscribe($active__closures, writeScope($scope13_id, { Cdx: 1 }));
|
|
4842
4953
|
return 1;
|
|
4843
4954
|
} else if (h.authed) {
|
|
4844
4955
|
const $scope63_id = _scope_id();
|
|
4845
|
-
_html(`<span${_attr_class("
|
|
4956
|
+
_html(`<span${_attr_class("_bu")}>Signed in<!>${h.user ? ` as ${_escape(`${_to_text(h.user)}`)}` : ""}${_el_resume($scope63_id, "b")}</span>`);
|
|
4846
4957
|
writeScope($scope63_id, {});
|
|
4847
4958
|
return 2;
|
|
4848
4959
|
} else {
|
|
4849
4960
|
const $scope64_id = _scope_id();
|
|
4850
|
-
_html(`<span${_attr_class("
|
|
4961
|
+
_html(`<span${_attr_class("_bu")}>${_escape(h.error || "Not signed in")}${_el_resume($scope64_id, "b")}</span>`);
|
|
4851
4962
|
writeScope($scope64_id, {});
|
|
4852
4963
|
return 3;
|
|
4853
4964
|
}
|
|
@@ -4878,7 +4989,7 @@ var settings_page_default = _template("v", (input) => {
|
|
|
4878
4989
|
if (h.isEnterprise) {
|
|
4879
4990
|
const $scope27_id = _scope_id();
|
|
4880
4991
|
_html(`<button${_attr_class([
|
|
4881
|
-
"
|
|
4992
|
+
"_bv",
|
|
4882
4993
|
"_2",
|
|
4883
4994
|
"_3",
|
|
4884
4995
|
{ ["_q"]: confirmingRemove === h.host }
|
|
@@ -4954,7 +5065,7 @@ var settings_page_default = _template("v", (input) => {
|
|
|
4954
5065
|
_if(() => {
|
|
4955
5066
|
if (setup && !setup.github.length) {
|
|
4956
5067
|
const $scope68_id = _scope_id();
|
|
4957
|
-
_html(`<p${_attr_class("
|
|
5068
|
+
_html(`<p${_attr_class("_bw")}>Install the GitHub CLI below to sign in.</p>`);
|
|
4958
5069
|
writeScope($scope68_id, {});
|
|
4959
5070
|
return 0;
|
|
4960
5071
|
}
|
|
@@ -4962,7 +5073,7 @@ var settings_page_default = _template("v", (input) => {
|
|
|
4962
5073
|
_if(() => {
|
|
4963
5074
|
if (setup) {
|
|
4964
5075
|
const $scope35_id = _scope_id();
|
|
4965
|
-
_html(`<form${_attr_class("
|
|
5076
|
+
_html(`<form${_attr_class("_cl")}><label${_attr_class("_W")}>`);
|
|
4966
5077
|
icon_plus_default({
|
|
4967
5078
|
size: 14,
|
|
4968
5079
|
class: "_X"
|
|
@@ -4975,7 +5086,7 @@ var settings_page_default = _template("v", (input) => {
|
|
|
4975
5086
|
return 0;
|
|
4976
5087
|
}
|
|
4977
5088
|
}, $scope0_id, "z", 1, 1, 1, 0, 1);
|
|
4978
|
-
_html(`</section><section${_attr_class("
|
|
5089
|
+
_html(`</section><section${_attr_class("_bl")}${_attr("aria-labelledby", machineId)}><div${_attr_class("_bm")}><h2${_attr("id", machineId)}${_attr_class("_bA")}>Machine</h2>`);
|
|
4979
5090
|
_if(() => {
|
|
4980
5091
|
if (missingCount) {
|
|
4981
5092
|
const $scope49_id = _scope_id();
|
|
@@ -5015,7 +5126,7 @@ var settings_page_default = _template("v", (input) => {
|
|
|
5015
5126
|
_if(() => {
|
|
5016
5127
|
if (setup && !setup.mise.installed) {
|
|
5017
5128
|
const $scope17_id = _scope_id();
|
|
5018
|
-
_html(`<p${_attr_class("
|
|
5129
|
+
_html(`<p${_attr_class("_bw")}>mise is not installed. It provides every tool below. <button${_attr_class(btnSm)}${_attr("disabled", active.has("mise"))}>${active.has("mise") ? "Installing…" : "Install mise"}${_el_resume($scope17_id, "c")}</button>${_el_resume($scope17_id, "b")}</p>`);
|
|
5019
5130
|
_script($scope17_id, "v45");
|
|
5020
5131
|
writeScope($scope17_id, {});
|
|
5021
5132
|
return 0;
|
|
@@ -5025,11 +5136,11 @@ var settings_page_default = _template("v", (input) => {
|
|
|
5025
5136
|
_if(() => {
|
|
5026
5137
|
if (self) {
|
|
5027
5138
|
const $scope40_id = _scope_id();
|
|
5028
|
-
_html(`<li${_attr_class(row)}><span${_attr_class(["
|
|
5139
|
+
_html(`<li${_attr_class(row)}><span${_attr_class(["_ch", "_x"])}>work</span>`);
|
|
5029
5140
|
_if(() => {
|
|
5030
5141
|
if (selfUpdating) {
|
|
5031
5142
|
const $scope69_id = _scope_id();
|
|
5032
|
-
_html(`<span${_attr_class("
|
|
5143
|
+
_html(`<span${_attr_class("_b3")}><span${_attr_class("_F")}></span>Updating — the app restarts and reloads when it is done…</span>`);
|
|
5033
5144
|
writeScope($scope69_id, {});
|
|
5034
5145
|
return 0;
|
|
5035
5146
|
} else {
|
|
@@ -5043,7 +5154,7 @@ var settings_page_default = _template("v", (input) => {
|
|
|
5043
5154
|
return 0;
|
|
5044
5155
|
} else if (self.latest && self.latest !== self.version) {
|
|
5045
5156
|
const $scope42_id = _scope_id();
|
|
5046
|
-
_html(`<button${_attr_class([btnSm, "
|
|
5157
|
+
_html(`<button${_attr_class([btnSm, "_cj"])}${_attr("title", `Update work to v${self.latest} and restart`)}>`);
|
|
5047
5158
|
icon_arrow_up_default({ size: 12 });
|
|
5048
5159
|
_html(` <!>${_escape(self.latest)}${_el_resume($scope42_id, "c")}</button>${_el_resume($scope42_id, "a")}`);
|
|
5049
5160
|
_script($scope42_id, "v46");
|
|
@@ -5084,11 +5195,11 @@ var settings_page_default = _template("v", (input) => {
|
|
|
5084
5195
|
const $for_content5__t_path__closures = /* @__PURE__ */ new Set();
|
|
5085
5196
|
const $for_content5__t_latest__closures = /* @__PURE__ */ new Set();
|
|
5086
5197
|
const $for_content5__t_id__closures = /* @__PURE__ */ new Set();
|
|
5087
|
-
_html(`<li${_attr_class([row, { ["
|
|
5198
|
+
_html(`<li${_attr_class([row, { ["_cg"]: !t.installed }])}><span${_attr_class(["_ch", "_x"])}>${_escape(t.label)}${_el_resume($scope18_id, "c")}</span>`);
|
|
5088
5199
|
_if(() => {
|
|
5089
5200
|
if (active.has(t.id)) {
|
|
5090
5201
|
const $scope19_id = _scope_id();
|
|
5091
|
-
_html(`<span${_attr_class("
|
|
5202
|
+
_html(`<span${_attr_class("_b3")}><span${_attr_class("_F")}></span><!>${_escape(active.get(t.id) || "Starting…")}${_el_resume($scope19_id, "c")}</span>`);
|
|
5092
5203
|
_subscribe($active__closures, writeScope($scope19_id, { Cdx: 3 }));
|
|
5093
5204
|
return 0;
|
|
5094
5205
|
} else if (t.installed) {
|
|
@@ -5096,7 +5207,7 @@ var settings_page_default = _template("v", (input) => {
|
|
|
5096
5207
|
_if(() => {
|
|
5097
5208
|
if (t.version) {
|
|
5098
5209
|
const $scope32_id = _scope_id();
|
|
5099
|
-
_html(`<button${_attr_class(["
|
|
5210
|
+
_html(`<button${_attr_class(["_ci", "_x"])}${_attr("title", `${t.path || t.label}. Pin a version`)}>v<!>${_escape(t.version)}${_el_resume($scope32_id, "b")}</button>${_el_resume($scope32_id, "a")}`);
|
|
5100
5211
|
_script($scope32_id, "v47");
|
|
5101
5212
|
_subscribe($for_content5__t_path__closures, _subscribe($for_content5__t_version__closures, _subscribe($for_content5__t_label__closures, writeScope($scope32_id, { Cu: 1 }))));
|
|
5102
5213
|
return 0;
|
|
@@ -5110,7 +5221,7 @@ var settings_page_default = _template("v", (input) => {
|
|
|
5110
5221
|
_if(() => {
|
|
5111
5222
|
if (outdated(t)) {
|
|
5112
5223
|
const $scope46_id = _scope_id();
|
|
5113
|
-
_html(`<button${_attr_class([btnSm, "
|
|
5224
|
+
_html(`<button${_attr_class([btnSm, "_cj"])}${_attr("title", `Update to v${t.latest}`)}>`);
|
|
5114
5225
|
icon_arrow_up_default({ size: 12 });
|
|
5115
5226
|
_html(` <!>${_escape(t.latest)}${_el_resume($scope46_id, "c")}</button>${_el_resume($scope46_id, "a")}`);
|
|
5116
5227
|
_script($scope46_id, "v48");
|
|
@@ -5212,19 +5323,19 @@ var settings_page_default = _template("v", (input) => {
|
|
|
5212
5323
|
_if(() => {
|
|
5213
5324
|
if (hits && hits.length) {
|
|
5214
5325
|
const $scope21_id = _scope_id();
|
|
5215
|
-
_html(`<ul${_attr_class([toolGrid, "
|
|
5326
|
+
_html(`<ul${_attr_class([toolGrid, "_ck"])}>`);
|
|
5216
5327
|
_for_of(hits, (h) => {
|
|
5217
5328
|
const $scope22_id = _scope_id();
|
|
5218
|
-
_html(`<li${_attr_class(row)}><div${_attr_class("
|
|
5329
|
+
_html(`<li${_attr_class(row)}><div${_attr_class("_br")}><span${_attr_class(["_ch", "_x"])}>${_escape(h.name)}${_el_resume($scope22_id, "d")}</span>`);
|
|
5219
5330
|
_if(() => {
|
|
5220
5331
|
if (active.has(h.name)) {
|
|
5221
5332
|
const $scope23_id = _scope_id();
|
|
5222
|
-
_html(`<span${_attr_class("
|
|
5333
|
+
_html(`<span${_attr_class("_b3")}><span${_attr_class("_F")}></span><!>${_escape(active.get(h.name) || "Starting…")}${_el_resume($scope23_id, "c")}</span>`);
|
|
5223
5334
|
_subscribe($active__closures, writeScope($scope23_id, { Cdx: 5 }));
|
|
5224
5335
|
return 0;
|
|
5225
5336
|
} else if (h.description) {
|
|
5226
5337
|
const $scope79_id = _scope_id();
|
|
5227
|
-
_html(`<span${_attr_class("
|
|
5338
|
+
_html(`<span${_attr_class("_bu")}${_attr("title", h.description)}>${_escape(h.description)}${_el_resume($scope79_id, "b")}</span>${_el_resume($scope79_id, "a")}`);
|
|
5228
5339
|
writeScope($scope79_id, {});
|
|
5229
5340
|
return 1;
|
|
5230
5341
|
}
|
|
@@ -5263,7 +5374,7 @@ var settings_page_default = _template("v", (input) => {
|
|
|
5263
5374
|
return 0;
|
|
5264
5375
|
} else if (hits && !searching) {
|
|
5265
5376
|
const $scope36_id = _scope_id();
|
|
5266
|
-
_html(`<p${_attr_class("
|
|
5377
|
+
_html(`<p${_attr_class("_bw")}>No tools match "<!>${_escape(query)}${_el_resume($scope36_id, "b")}".</p>`);
|
|
5267
5378
|
_subscribe($query__closures, writeScope($scope36_id, {}));
|
|
5268
5379
|
return 1;
|
|
5269
5380
|
}
|
|
@@ -5274,9 +5385,9 @@ var settings_page_default = _template("v", (input) => {
|
|
|
5274
5385
|
return 0;
|
|
5275
5386
|
}
|
|
5276
5387
|
}, $scope0_id, "ac", 1, 1, 1, 0, 1);
|
|
5277
|
-
_html(`</section><section${_attr_class("
|
|
5388
|
+
_html(`</section><section${_attr_class("_bl")}${_attr("aria-labelledby", appearanceId)}><div${_attr_class("_bm")}><h2${_attr("id", appearanceId)}${_attr_class("_bA")}>Appearance</h2></div><div${_attr_class(["_bq", "_cq"])}><label${_attr_class("_cr")}><span${_attr_class("_cs")}>Name</span><input${_attr_input_value($scope0_id, "aj", input.instance.name, _resume(function(v) {
|
|
5278
5389
|
setInstance({ name: v });
|
|
5279
|
-
}, "v3", $scope0_id))}${_attr_class(["_U", "
|
|
5390
|
+
}, "v3", $scope0_id))}${_attr_class(["_U", "_ct"])} type=text placeholder=work maxlength=32 autocomplete=off spellcheck=false aria-describedby=look-name-hint>${_el_resume($scope0_id, "aj")}<span id=look-name-hint${_attr_class(["_S", "_cu"])}>Tab title, home-screen icon, and notifications.</span></label><div${_attr_class("_cr")} role=radiogroup aria-label="Color theme"><span${_attr_class("_cs")}>Theme</span><span${_attr_class("_cv")}>`);
|
|
5280
5391
|
_for_of([
|
|
5281
5392
|
{
|
|
5282
5393
|
id: "system",
|
|
@@ -5292,21 +5403,21 @@ var settings_page_default = _template("v", (input) => {
|
|
|
5292
5403
|
}
|
|
5293
5404
|
], (opt) => {
|
|
5294
5405
|
const $scope43_id = _scope_id();
|
|
5295
|
-
_html(`<button type=button${_attr_class(["
|
|
5406
|
+
_html(`<button type=button${_attr_class(["_cw", { ["_cx"]: themeMode === opt.id }])} role=radio aria-checked=${themeMode === opt.id ? "true" : "false"}>${_escape(opt.label)}</button>${_el_resume($scope43_id, "a")}`);
|
|
5296
5407
|
_script($scope43_id, "v53");
|
|
5297
5408
|
writeScope($scope43_id, {
|
|
5298
5409
|
e: opt?.id,
|
|
5299
5410
|
_: _scope_with_id($scope0_id)
|
|
5300
5411
|
});
|
|
5301
5412
|
}, "id", $scope0_id, "an", 1, 0, 1, 0, 1);
|
|
5302
|
-
_html(`</span><span${_attr_class(["_S", "
|
|
5303
|
-
"
|
|
5304
|
-
"
|
|
5305
|
-
{ ["
|
|
5413
|
+
_html(`</span><span${_attr_class(["_S", "_cu"])}>Follow the OS, or force light or dark.</span></div><div${_attr_class("_cr")} role=radiogroup aria-label="Accent colour"><span${_attr_class("_cs")}>Accent</span><span${_attr_class("_cC")}><button type=button${_attr_class([
|
|
5414
|
+
"_cD",
|
|
5415
|
+
"_cF",
|
|
5416
|
+
{ ["_cE"]: !input.instance.accent }
|
|
5306
5417
|
])} role=radio aria-checked=${!input.instance.accent ? "true" : "false"} title="Default (blue)" aria-label="Default (blue)"></button>${_el_resume($scope0_id, "as")}`);
|
|
5307
5418
|
_for_of(ACCENT_PRESETS, (p) => {
|
|
5308
5419
|
const $scope4_id = _scope_id();
|
|
5309
|
-
_html(`<button type=button${_attr_class(["
|
|
5420
|
+
_html(`<button type=button${_attr_class(["_cD", { ["_cE"]: input.instance.accent === p.value }])}${_attr_style(`--swatch:${p.value}`)} role=radio aria-checked=${input.instance.accent === p.value ? "true" : "false"}${_attr("title", p.name)}${_attr("aria-label", p.name)}></button>${_el_resume($scope4_id, "a")}`);
|
|
5310
5421
|
_script($scope4_id, "v54");
|
|
5311
5422
|
writeScope($scope4_id, {
|
|
5312
5423
|
d: p?.value,
|
|
@@ -5315,12 +5426,12 @@ var settings_page_default = _template("v", (input) => {
|
|
|
5315
5426
|
}, "value", $scope0_id, "at", $sg__input_instance_accent, 0, 1, 0, 1);
|
|
5316
5427
|
const customOn = !!input.instance.accent && !ACCENT_PRESETS.some((p) => p.value === input.instance.accent);
|
|
5317
5428
|
_html(`<label${_attr_class([
|
|
5318
|
-
"
|
|
5319
|
-
"
|
|
5320
|
-
{ ["
|
|
5429
|
+
"_cD",
|
|
5430
|
+
"_cG",
|
|
5431
|
+
{ ["_cE"]: customOn }
|
|
5321
5432
|
])}${customOn ? _attr_style(`--swatch:${input.instance.accent}`) : ""} title="Custom colour"><input${_attr_input_value($scope0_id, "av", input.instance.accent || "#3556d8", _resume(function(v) {
|
|
5322
5433
|
setInstance({ accent: v });
|
|
5323
|
-
}, "v4", $scope0_id))}${_attr_class("
|
|
5434
|
+
}, "v4", $scope0_id))}${_attr_class("_cH")} type=color aria-label="Custom accent colour">${_el_resume($scope0_id, "av")}<span aria-hidden=true>+</span></label>${_el_resume($scope0_id, "au", $sg__input_instance_accent)}</span><span${_attr_class(["_S", "_cu"])}>Selected rows, buttons, and the icon.</span></div></div></section></div></div></div>`);
|
|
5324
5435
|
_if(() => {
|
|
5325
5436
|
if (versionPick) {
|
|
5326
5437
|
const $scope30_id = _scope_id();
|
|
@@ -5434,12 +5545,12 @@ var settings_page_default = _template("v", (input) => {
|
|
|
5434
5545
|
});
|
|
5435
5546
|
//#endregion
|
|
5436
5547
|
//#region src/tags/new-workspace.css.ts
|
|
5437
|
-
var content$1 = "_bK
|
|
5438
|
-
var section$1 = "_bO
|
|
5548
|
+
var content$1 = "_bK _bD";
|
|
5549
|
+
var section$1 = "_bO _bl";
|
|
5439
5550
|
var curBase = "_bT _T _S";
|
|
5440
|
-
var archived = "_bY
|
|
5551
|
+
var archived = "_bY _bl";
|
|
5441
5552
|
var archivedHint = "_bZ _S";
|
|
5442
|
-
var archivedCard = "_b0
|
|
5553
|
+
var archivedCard = "_b0 _bq";
|
|
5443
5554
|
//#endregion
|
|
5444
5555
|
//#region src/tags/icons/icon-check.marko
|
|
5445
5556
|
var icon_check_default = _template("P", (input) => {
|
|
@@ -5474,7 +5585,7 @@ var icon_branch_default = _template("O", (input) => {
|
|
|
5474
5585
|
});
|
|
5475
5586
|
_serialize_if($scope0_reason, 0) && writeScope($scope0_id, { a: _existing_scope($childScope) });
|
|
5476
5587
|
});
|
|
5477
|
-
var resultBranch = "
|
|
5588
|
+
var resultBranch = "_c0 _Z _j";
|
|
5478
5589
|
//#endregion
|
|
5479
5590
|
//#region src/tags/branch-pick.marko
|
|
5480
5591
|
var branch_pick_default = _template("d", (input) => {
|
|
@@ -5485,11 +5596,11 @@ var branch_pick_default = _template("d", (input) => {
|
|
|
5485
5596
|
let branches = null;
|
|
5486
5597
|
let defaultBranch = null;
|
|
5487
5598
|
let branchFilter = "";
|
|
5488
|
-
_html(`<div${_attr_class("
|
|
5599
|
+
_html(`<div${_attr_class("_c2")}>`);
|
|
5489
5600
|
_if(() => {
|
|
5490
5601
|
{
|
|
5491
5602
|
const $scope4_id = _scope_id();
|
|
5492
|
-
_html(`<p${_attr_class("
|
|
5603
|
+
_html(`<p${_attr_class("_bw")}><span${_attr_class("_F")}></span> Loading branches…</p>`);
|
|
5493
5604
|
writeScope($scope4_id, {});
|
|
5494
5605
|
return 0;
|
|
5495
5606
|
}
|
|
@@ -5511,7 +5622,7 @@ var branch_pick_default = _template("d", (input) => {
|
|
|
5511
5622
|
});
|
|
5512
5623
|
//#endregion
|
|
5513
5624
|
//#region src/tags/repo-picker.marko
|
|
5514
|
-
var api$
|
|
5625
|
+
var api$4;
|
|
5515
5626
|
var prefs$1;
|
|
5516
5627
|
var repo_picker_default = _template("t", (input) => {
|
|
5517
5628
|
const $scope0_reason = _scope_reason(), $si__input_onError = _serialize_if($scope0_reason, 2);
|
|
@@ -5528,7 +5639,7 @@ var repo_picker_default = _template("t", (input) => {
|
|
|
5528
5639
|
const loadCatalog = _resume(async (refresh) => {
|
|
5529
5640
|
if (refresh);
|
|
5530
5641
|
try {
|
|
5531
|
-
catalog = await api$
|
|
5642
|
+
catalog = await api$4(`/api/repos${refresh ? "?refresh" : ""}`);
|
|
5532
5643
|
} catch (err) {
|
|
5533
5644
|
input.onError?.(String(err.message || err));
|
|
5534
5645
|
}
|
|
@@ -5565,11 +5676,11 @@ var repo_picker_default = _template("t", (input) => {
|
|
|
5565
5676
|
const ignored = new Set(prefs$1?.ignoredSsoOrgs?.() ?? []);
|
|
5566
5677
|
return (catalog?.sso || []).filter((s) => !ignored.has(s.org));
|
|
5567
5678
|
})();
|
|
5568
|
-
_html(`<div${_attr_class("
|
|
5679
|
+
_html(`<div${_attr_class("_cT")}>`);
|
|
5569
5680
|
_if(() => {
|
|
5570
5681
|
if (ssoPending.length) {
|
|
5571
5682
|
const $scope7_id = _scope_id();
|
|
5572
|
-
_html(`<div${_attr_class("
|
|
5683
|
+
_html(`<div${_attr_class("_cU")}>`);
|
|
5573
5684
|
_set_serialize_reason(154);
|
|
5574
5685
|
const $childScope = _peek_scope_id();
|
|
5575
5686
|
sso_auth_default({
|
|
@@ -5599,16 +5710,16 @@ var repo_picker_default = _template("t", (input) => {
|
|
|
5599
5710
|
_if(() => {
|
|
5600
5711
|
if (pasted) {
|
|
5601
5712
|
const $scope1_id = _scope_id();
|
|
5602
|
-
_html(`<ul${_attr_class("
|
|
5713
|
+
_html(`<ul${_attr_class("_cV")}><li><div${_attr_class(["_cX", "_cW"])}><button${_attr_class("_cY")}${pasteWillFork ? _attr("title", `Fork ${pasted} to your account and add the fork`) : _attr("title", `Add ${pasted} as-is (pushes go to that repo)`)}>`);
|
|
5603
5714
|
icon_plus_default({
|
|
5604
5715
|
size: 12,
|
|
5605
|
-
class: "
|
|
5716
|
+
class: "_c4"
|
|
5606
5717
|
});
|
|
5607
|
-
_html(`<span${_attr_class("
|
|
5718
|
+
_html(`<span${_attr_class("_c5")}>${_escape(repoLabel(pasted))}${_el_resume($scope1_id, "f")}</span></button>${_el_resume($scope1_id, "c")}`);
|
|
5608
5719
|
_if(() => {
|
|
5609
5720
|
if (pastedForkable) {
|
|
5610
5721
|
const $scope8_id = _scope_id();
|
|
5611
|
-
_html(`<button${_attr_class(["
|
|
5722
|
+
_html(`<button${_attr_class(["_c1", { ["_cZ"]: pasteWillFork }])}${pasteWillFork ? " title=\"Will fork to your account; click to clone as-is instead\"" : _attr("title", `Fork ${pasted} to your account and clone the fork`)} aria-pressed=${pasteWillFork ? "true" : "false"}>`);
|
|
5612
5723
|
_if(() => {
|
|
5613
5724
|
if (pasteWillFork) {
|
|
5614
5725
|
const $scope10_id = _scope_id();
|
|
@@ -5628,7 +5739,7 @@ var repo_picker_default = _template("t", (input) => {
|
|
|
5628
5739
|
return 0;
|
|
5629
5740
|
}
|
|
5630
5741
|
}, $scope1_id, "g", 1, 1, 1, 0, 1);
|
|
5631
|
-
_html(`<button${_attr_class([resultBranch, { ["
|
|
5742
|
+
_html(`<button${_attr_class([resultBranch, { ["_cZ"]: branchesFor === pasted }])}${_attr("title", `Pick a base branch for ${pasted}`)}${_attr("aria-label", `Pick a base branch for ${pasted}`)}>`);
|
|
5632
5743
|
icon_branch_default({ size: 12 });
|
|
5633
5744
|
_html(`</button>${_el_resume($scope1_id, "h")}</div>`);
|
|
5634
5745
|
_if(() => {
|
|
@@ -5655,7 +5766,7 @@ var repo_picker_default = _template("t", (input) => {
|
|
|
5655
5766
|
return 0;
|
|
5656
5767
|
} else if (filter && !catalog) {
|
|
5657
5768
|
const $scope9_id = _scope_id();
|
|
5658
|
-
_html(`<p${_attr_class("
|
|
5769
|
+
_html(`<p${_attr_class("_bw")}>Loading repos…</p>`);
|
|
5659
5770
|
writeScope($scope9_id, {});
|
|
5660
5771
|
return 1;
|
|
5661
5772
|
}
|
|
@@ -5663,15 +5774,15 @@ var repo_picker_default = _template("t", (input) => {
|
|
|
5663
5774
|
_if(() => {
|
|
5664
5775
|
if (results.length) {
|
|
5665
5776
|
const $scope3_id = _scope_id();
|
|
5666
|
-
_html(`<ul${_attr_class("
|
|
5777
|
+
_html(`<ul${_attr_class("_cV")}>`);
|
|
5667
5778
|
_for_of(results, (repo, i) => {
|
|
5668
5779
|
const $scope4_id = _scope_id();
|
|
5669
|
-
_html(`<li><div${_attr_class(["
|
|
5780
|
+
_html(`<li><div${_attr_class(["_cX", { ["_cW"]: i === highlight }])}><button${_attr_class("_cY")}>`);
|
|
5670
5781
|
icon_plus_default({
|
|
5671
5782
|
size: 12,
|
|
5672
|
-
class: "
|
|
5783
|
+
class: "_c4"
|
|
5673
5784
|
});
|
|
5674
|
-
_html(`<span${_attr_class("
|
|
5785
|
+
_html(`<span${_attr_class("_c5")}>${_escape(repoLabel(repo.nameWithOwner))}${_el_resume($scope4_id, "e")}</span></button>${_el_resume($scope4_id, "b")}<button${_attr_class([resultBranch, { ["_cZ"]: branchesFor === repo.nameWithOwner }])}${_attr("title", `Pick a base branch for ${repo.nameWithOwner}`)}${_attr("aria-label", `Pick a base branch for ${repo.nameWithOwner}`)}>`);
|
|
5675
5786
|
icon_branch_default({ size: 12 });
|
|
5676
5787
|
_html(`</button>${_el_resume($scope4_id, "f")}</div>${_el_resume($scope4_id, "a")}`);
|
|
5677
5788
|
_if(() => {
|
|
@@ -5706,7 +5817,7 @@ var repo_picker_default = _template("t", (input) => {
|
|
|
5706
5817
|
return 0;
|
|
5707
5818
|
} else if (filter && catalog && !pasted) {
|
|
5708
5819
|
const $scope6_id = _scope_id();
|
|
5709
|
-
_html(`<p${_attr_class("
|
|
5820
|
+
_html(`<p${_attr_class("_bw")}>No repos match "<!>${_escape(filter)}${_el_resume($scope6_id, "b")}". Paste a clone URL to add any repo.</p>`);
|
|
5710
5821
|
writeScope($scope6_id, {});
|
|
5711
5822
|
return 1;
|
|
5712
5823
|
}
|
|
@@ -5750,7 +5861,7 @@ var repo_picker_default = _template("t", (input) => {
|
|
|
5750
5861
|
});
|
|
5751
5862
|
//#endregion
|
|
5752
5863
|
//#region src/tags/new-workspace.marko
|
|
5753
|
-
var api$
|
|
5864
|
+
var api$3;
|
|
5754
5865
|
var watchProgress;
|
|
5755
5866
|
var new_workspace_default = _template("q", (input) => {
|
|
5756
5867
|
const $scope0_reason = _scope_reason(), $sg__input_backHref__OR__input_onExit = _serialize_guard($scope0_reason, 0), $sg__input_workspaces = _serialize_guard($scope0_reason, 1), $si__input_workspaces = _serialize_if($scope0_reason, 1);
|
|
@@ -5798,7 +5909,7 @@ var new_workspace_default = _template("q", (input) => {
|
|
|
5798
5909
|
error = null;
|
|
5799
5910
|
restoring = ws.id;
|
|
5800
5911
|
try {
|
|
5801
|
-
await api$
|
|
5912
|
+
await api$3(`/api/workspaces/${ws.id}`, {
|
|
5802
5913
|
method: "POST",
|
|
5803
5914
|
headers: { "content-type": "application/json" },
|
|
5804
5915
|
body: JSON.stringify({ action: "restore" })
|
|
@@ -5826,7 +5937,7 @@ var new_workspace_default = _template("q", (input) => {
|
|
|
5826
5937
|
});
|
|
5827
5938
|
await watcher.ready;
|
|
5828
5939
|
try {
|
|
5829
|
-
const ws = await api$
|
|
5940
|
+
const ws = await api$3("/api/workspaces", {
|
|
5830
5941
|
method: "POST",
|
|
5831
5942
|
headers: { "content-type": "application/json" },
|
|
5832
5943
|
body: JSON.stringify({
|
|
@@ -5847,7 +5958,7 @@ var new_workspace_default = _template("q", (input) => {
|
|
|
5847
5958
|
}
|
|
5848
5959
|
}, "q6", $scope0_id);
|
|
5849
5960
|
const titleId = _id();
|
|
5850
|
-
_html(`<div${_attr_class("
|
|
5961
|
+
_html(`<div${_attr_class("_bB")} role=region${_attr("aria-labelledby", titleId)}><div${_attr_class("_bC")}><div${_attr_class(content$1)}>`);
|
|
5851
5962
|
_set_serialize_reason({
|
|
5852
5963
|
0: _serialize_guard($scope0_reason, 2),
|
|
5853
5964
|
1: $sg__input_backHref__OR__input_onExit,
|
|
@@ -5886,9 +5997,9 @@ var new_workspace_default = _template("q", (input) => {
|
|
|
5886
5997
|
return 0;
|
|
5887
5998
|
}
|
|
5888
5999
|
}, $scope0_id, "e", 1, 1, 1, 0, 1);
|
|
5889
|
-
_html(`<label${_attr_class("_bN")}><span${_attr_class("
|
|
6000
|
+
_html(`<label${_attr_class("_bN")}><span${_attr_class("_bA")}>Name</span><input${_attr_input_value($scope0_id, "h", name, _resume((_new_name) => {
|
|
5890
6001
|
name = _new_name;
|
|
5891
|
-
}, "q0", $scope0_id))}${_attr_class(inputLg)} placeholder=my-feature${_attr("disabled", busy)} autofocus>${_el_resume($scope0_id, "h")}</label><section${_attr_class(section$1)}><div${_attr_class("_bP")}><h2${_attr_class("
|
|
6002
|
+
}, "q0", $scope0_id))}${_attr_class(inputLg)} placeholder=my-feature${_attr("disabled", busy)} autofocus>${_el_resume($scope0_id, "h")}</label><section${_attr_class(section$1)}><div${_attr_class("_bP")}><h2${_attr_class("_bA")}>Repos</h2><button${_attr_class(iconBtnRow)} title="Refresh repo list" aria-label="Refresh repo list"${_attr("disabled", catalogRefreshing)}>`);
|
|
5892
6003
|
_set_serialize_reason(1);
|
|
5893
6004
|
const $childScope2 = _peek_scope_id();
|
|
5894
6005
|
icon_refresh_default({
|
|
@@ -5961,7 +6072,7 @@ var new_workspace_default = _template("q", (input) => {
|
|
|
5961
6072
|
_if(() => {
|
|
5962
6073
|
if (!selected.length) {
|
|
5963
6074
|
const $scope14_id = _scope_id();
|
|
5964
|
-
_html(`<li${_attr_class("
|
|
6075
|
+
_html(`<li${_attr_class("_bw")}>No repos yet. Search below to add one, or create it empty.</li>`);
|
|
5965
6076
|
writeScope($scope14_id, {});
|
|
5966
6077
|
return 0;
|
|
5967
6078
|
}
|
|
@@ -6030,10 +6141,10 @@ var new_workspace_default = _template("q", (input) => {
|
|
|
6030
6141
|
_if(() => {
|
|
6031
6142
|
if (archived$1.length) {
|
|
6032
6143
|
const $scope4_id = _scope_id();
|
|
6033
|
-
_html(`<section${_attr_class(archived)}><div${_attr_class("_bP")}><h2${_attr_class("
|
|
6144
|
+
_html(`<section${_attr_class(archived)}><div${_attr_class("_bP")}><h2${_attr_class("_bA")}>Archived</h2><span${_attr_class(sectionCount$1)}>${_escape(archived$1.length)}${_el_resume($scope4_id, "e", $sg__input_workspaces)}</span></div><p${_attr_class(archivedHint)}>Restore an archived workspace instead of creating a new one.</p><ul${_attr_class("_bo")}>`);
|
|
6034
6145
|
_for_of(archived$1, (ws) => {
|
|
6035
6146
|
const $scope5_id = _scope_id();
|
|
6036
|
-
_html(`<li${_attr_class(archivedCard)}><div${_attr_class("
|
|
6147
|
+
_html(`<li${_attr_class(archivedCard)}><div${_attr_class("_br")}><span${_attr_class("_bs")}>${_escape(ws.name)}${_el_resume($scope5_id, "d", $sg__input_workspaces)}</span><span${_attr_class([metaTrunc, "_x"])}${_attr("title", ws.display_path || ws.path)}>${_escape(ws.display_path || ws.path)}${_el_resume($scope5_id, "f", $sg__input_workspaces)}</span>${_el_resume($scope5_id, "e", $sg__input_workspaces)}</div><button type=button${_attr_class(btnLg)}${_attr("disabled", busy || !!restoring)}>`);
|
|
6037
6148
|
_if(() => {
|
|
6038
6149
|
if (restoring === ws.id) {
|
|
6039
6150
|
const $scope17_id = _scope_id();
|
|
@@ -6096,36 +6207,6 @@ var new_workspace_default = _template("q", (input) => {
|
|
|
6096
6207
|
_resume_branch($scope0_id);
|
|
6097
6208
|
});
|
|
6098
6209
|
//#endregion
|
|
6099
|
-
//#region src/client/api.ts
|
|
6100
|
-
/** Fetch JSON from an API route. Error bodies are always `{ error: string }`;
|
|
6101
|
-
* when one comes back (or the response isn't ok / isn't JSON) this throws,
|
|
6102
|
-
* so callers handle failure in one place. Pass `{ signal: $signal }` where
|
|
6103
|
-
* a component-scoped fetch should abort on destroy.
|
|
6104
|
-
*
|
|
6105
|
-
* Behind an auth proxy, an expired session turns into login HTML (or 401).
|
|
6106
|
-
* Reload once — same fix users already apply by hand, hosting-agnostic. */
|
|
6107
|
-
async function api$3(url, init) {
|
|
6108
|
-
const res = await fetch(url, init);
|
|
6109
|
-
if (isAuthDeathResponse(res)) {
|
|
6110
|
-
reloadOnceForAuth();
|
|
6111
|
-
throw new Error("session expired");
|
|
6112
|
-
}
|
|
6113
|
-
let data;
|
|
6114
|
-
try {
|
|
6115
|
-
data = await res.json();
|
|
6116
|
-
} catch {
|
|
6117
|
-
if (isAuthDeathResponse(res)) {
|
|
6118
|
-
reloadOnceForAuth();
|
|
6119
|
-
throw new Error("session expired");
|
|
6120
|
-
}
|
|
6121
|
-
throw new Error(res.ok ? "invalid response" : `HTTP ${res.status}`);
|
|
6122
|
-
}
|
|
6123
|
-
if (data && typeof data === "object" && data.error) throw new Error(data.error);
|
|
6124
|
-
if (!res.ok) throw new Error(`HTTP ${res.status}`);
|
|
6125
|
-
clearAuthReloadGuard();
|
|
6126
|
-
return data;
|
|
6127
|
-
}
|
|
6128
|
-
//#endregion
|
|
6129
6210
|
//#region src/client/push.ts
|
|
6130
6211
|
/** Web Push subscription for "agent waiting" alerts. iOS requires the app
|
|
6131
6212
|
* to be installed to the home screen and the request to happen in a user
|
|
@@ -6142,13 +6223,13 @@ async function enablePush() {
|
|
|
6142
6223
|
const reg = await registration();
|
|
6143
6224
|
let sub = await reg.pushManager.getSubscription();
|
|
6144
6225
|
if (!sub) {
|
|
6145
|
-
const { publicKey } = await api$
|
|
6226
|
+
const { publicKey } = await api$7("/api/push");
|
|
6146
6227
|
sub = await reg.pushManager.subscribe({
|
|
6147
6228
|
userVisibleOnly: true,
|
|
6148
6229
|
applicationServerKey: vapidKey(publicKey)
|
|
6149
6230
|
});
|
|
6150
6231
|
}
|
|
6151
|
-
await api$
|
|
6232
|
+
await api$7("/api/push", {
|
|
6152
6233
|
method: "POST",
|
|
6153
6234
|
headers: { "content-type": "application/json" },
|
|
6154
6235
|
body: JSON.stringify(sub.toJSON())
|
|
@@ -6158,7 +6239,7 @@ async function enablePush() {
|
|
|
6158
6239
|
async function disablePush() {
|
|
6159
6240
|
const sub = await pushSubscription();
|
|
6160
6241
|
if (!sub) return;
|
|
6161
|
-
await api$
|
|
6242
|
+
await api$7(`/api/push?endpoint=${encodeURIComponent(sub.endpoint)}`, { method: "DELETE" }).catch(() => {});
|
|
6162
6243
|
await sub.unsubscribe();
|
|
6163
6244
|
}
|
|
6164
6245
|
async function registration() {
|
|
@@ -6190,8 +6271,8 @@ function activeAgent(session) {
|
|
|
6190
6271
|
const command = session.state?.command?.trim();
|
|
6191
6272
|
return command && agentFromCommand(command) || session.agent;
|
|
6192
6273
|
}
|
|
6193
|
-
var iconBtn$1 = "
|
|
6194
|
-
var navToggle = "
|
|
6274
|
+
var iconBtn$1 = "_dX _j";
|
|
6275
|
+
var navToggle = "_d2 _j";
|
|
6195
6276
|
_template("N", (input) => {
|
|
6196
6277
|
const $scope0_reason = _scope_reason(), $sg__input_size__OR__input_class = _serialize_guard($scope0_reason, 0);
|
|
6197
6278
|
const $scope0_id = _scope_id();
|
|
@@ -6234,23 +6315,12 @@ var ARM_MS = 3500;
|
|
|
6234
6315
|
function disarmLater(fn) {
|
|
6235
6316
|
return setTimeout(fn, ARM_MS);
|
|
6236
6317
|
}
|
|
6237
|
-
var railBtn = "
|
|
6238
|
-
var rowIcon = "
|
|
6239
|
-
var close = "
|
|
6318
|
+
var railBtn = "_fs _j";
|
|
6319
|
+
var rowIcon = "_fB _Z _j";
|
|
6320
|
+
var close = "_fC _Z _j _2";
|
|
6240
6321
|
//#endregion
|
|
6241
6322
|
//#region src/styles/session-pop.css.ts
|
|
6242
|
-
var sessionPop = "
|
|
6243
|
-
//#endregion
|
|
6244
|
-
//#region src/client/usage.ts
|
|
6245
|
-
/** The plan row an agent instance draws on: its own account (`claude2`)
|
|
6246
|
-
* when the provider reports per account, else the family's (`codex`). */
|
|
6247
|
-
function usageFor(agentId, usage) {
|
|
6248
|
-
const rows = usage?.agents || [];
|
|
6249
|
-
const exact = rows.find((r) => r.agent === agentId);
|
|
6250
|
-
if (exact) return exact;
|
|
6251
|
-
const family = agentFamily(agentId);
|
|
6252
|
-
return rows.find((r) => r.agent === family) ?? null;
|
|
6253
|
-
}
|
|
6323
|
+
var sessionPop = "_fo _4";
|
|
6254
6324
|
//#endregion
|
|
6255
6325
|
//#region src/tags/icons/icon-diff.marko
|
|
6256
6326
|
var icon_diff_default = _template("V", (input) => {
|
|
@@ -6300,22 +6370,22 @@ var usage_pcts_default = _template("E", (input) => {
|
|
|
6300
6370
|
if (windows.length) {
|
|
6301
6371
|
const $scope1_id = _scope_id();
|
|
6302
6372
|
_html(`<span${_attr_class([
|
|
6303
|
-
"
|
|
6373
|
+
"_fT",
|
|
6304
6374
|
input.class,
|
|
6305
|
-
{ ["
|
|
6375
|
+
{ ["_fU"]: agent.stale_seconds != null }
|
|
6306
6376
|
])}${agent.stale_seconds != null ? _attr("title", `${agent.note || "provider unreachable"}; last cached numbers`) : " title=\"Plan usage\""}>`);
|
|
6307
6377
|
_for_of(windows, (win$1, i) => {
|
|
6308
6378
|
const $scope2_id = _scope_id();
|
|
6309
|
-
_html(`<span${_attr_class("
|
|
6379
|
+
_html(`<span${_attr_class("_fV")}>`);
|
|
6310
6380
|
_if(() => {
|
|
6311
6381
|
if (i) {
|
|
6312
6382
|
const $scope3_id = _scope_id();
|
|
6313
|
-
_html(`<span${_attr_class("
|
|
6383
|
+
_html(`<span${_attr_class("_fY")} aria-hidden=true>·</span>`);
|
|
6314
6384
|
$si__input_agent && writeScope($scope3_id, {});
|
|
6315
6385
|
return 0;
|
|
6316
6386
|
}
|
|
6317
6387
|
}, $scope2_id, "b", $sg__input_agent, $sg__input_agent, $sg__input_agent, 0, 1);
|
|
6318
|
-
_html(`<span${_attr_class("
|
|
6388
|
+
_html(`<span${_attr_class("_fW")}>${_escape(win$1.window)}${_el_resume($scope2_id, "d", $sg__input_agent)}</span><span${_attr_class(["_fX", win$1.used_percent >= 90 ? "_dr" : win$1.used_percent >= 70 ? "_dq" : win$1.used_percent >= 40 ? "_dp" : "_do"])}>${_escape(pctText(win$1.used_percent))}${_el_resume($scope2_id, "f", $sg__input_agent)}</span>${_el_resume($scope2_id, "e", $sg__input_agent)}</span>`);
|
|
6319
6389
|
$si__input_agent && writeScope($scope2_id, {});
|
|
6320
6390
|
}, "window", $scope1_id, "a", $sg__input_agent, $sg__input_agent__OR__input_class, $sg__input_agent, "</span>", 1);
|
|
6321
6391
|
$si__input_agent__OR__input_class && writeScope($scope1_id, { _: _scope_with_id($scope0_id) });
|
|
@@ -6556,7 +6626,7 @@ var side_nav_item_default = _template("x", (input) => {
|
|
|
6556
6626
|
renamingId = null;
|
|
6557
6627
|
input.onRenameSession?.(s, renameValue.trim());
|
|
6558
6628
|
}, "x2", $scope0_id);
|
|
6559
|
-
let usage =
|
|
6629
|
+
let usage = lastUsage$1();
|
|
6560
6630
|
const openSess = (() => {
|
|
6561
6631
|
if (!input.current || input.page || input.rail) return null;
|
|
6562
6632
|
const list = input.sessions || [];
|
|
@@ -6573,10 +6643,10 @@ var side_nav_item_default = _template("x", (input) => {
|
|
|
6573
6643
|
_if(() => {
|
|
6574
6644
|
if (input.rail) {
|
|
6575
6645
|
const $scope2_id = _scope_id();
|
|
6576
|
-
_html(`<a${_attr("href", `/w/${ws$1.id}`)}${_attr_class([railBtn, { ["
|
|
6646
|
+
_html(`<a${_attr("href", `/w/${ws$1.id}`)}${_attr_class([railBtn, { ["_fq"]: input.current }])}${_attr("title", ws$1.name)}>${_escape((input.index ?? 0) + 1)}${_el_resume($scope2_id, "b", _serialize_guard($scope0_reason, 27))}<span${_attr_class([
|
|
6577
6647
|
"_z",
|
|
6578
6648
|
phase[dot],
|
|
6579
|
-
"
|
|
6649
|
+
"_ft"
|
|
6580
6650
|
])}></span>${_el_resume($scope2_id, "c", $sg__input_workspaceId__OR__input_status)}</a>${_el_resume($scope2_id, "a", _serialize_guard($scope0_reason, 3))}`);
|
|
6581
6651
|
_serialize_if($scope0_reason, 18) && _subscribe($si__input_workspaces__OR__input_workspaceId && $ws_name__closures, _subscribe($si__input_workspaces__OR__input_workspaceId && $ws_id__closures, _subscribe($si__input_index && $input_index__closures, _subscribe($si__input_current && $input_current__closures, writeScope($scope2_id, { _: _scope_with_id($scope1_id) })))));
|
|
6582
6652
|
return 0;
|
|
@@ -6584,15 +6654,15 @@ var side_nav_item_default = _template("x", (input) => {
|
|
|
6584
6654
|
const $scope3_id = _scope_id();
|
|
6585
6655
|
const sessions$1 = input.sessions || [];
|
|
6586
6656
|
const phaseLabel = dot === "working" ? "Working" : dot === "waiting" ? "Needs input" : dot === "idle" ? "Idle" : "Not running";
|
|
6587
|
-
_html(`<section${_attr_class(["
|
|
6588
|
-
["
|
|
6657
|
+
_html(`<section${_attr_class(["_fv", {
|
|
6658
|
+
["_fq"]: input.current,
|
|
6589
6659
|
["_5"]: input.current,
|
|
6590
|
-
["
|
|
6591
|
-
["
|
|
6592
|
-
}])}><div${_attr_class("
|
|
6660
|
+
["_fw"]: input.railPop,
|
|
6661
|
+
["_fu"]: input.page
|
|
6662
|
+
}])}><div${_attr_class("_fx")}><a${_attr("href", `/w/${ws$1.id}`)}${_attr_class("_fy")}><span${_attr_class([
|
|
6593
6663
|
"_z",
|
|
6594
6664
|
phase[dot],
|
|
6595
|
-
"
|
|
6665
|
+
"_fL"
|
|
6596
6666
|
])}${_attr("title", phaseLabel)}></span>${_el_resume($scope3_id, "d", $sg__input_workspaceId__OR__input_status)}`);
|
|
6597
6667
|
_if(() => {
|
|
6598
6668
|
if (sessions$1.length === 1) {
|
|
@@ -6605,7 +6675,7 @@ var side_nav_item_default = _template("x", (input) => {
|
|
|
6605
6675
|
icon_agent_default({
|
|
6606
6676
|
agent: activeAgent(sessions$1[0]),
|
|
6607
6677
|
size: 12,
|
|
6608
|
-
class: "
|
|
6678
|
+
class: "_fD"
|
|
6609
6679
|
});
|
|
6610
6680
|
$si__input_sessions && writeScope($scope14_id, {
|
|
6611
6681
|
_: _scope_with_id($scope3_id),
|
|
@@ -6615,16 +6685,16 @@ var side_nav_item_default = _template("x", (input) => {
|
|
|
6615
6685
|
}
|
|
6616
6686
|
}, $scope3_id, "e", $sg__input_sessions, $sg__input_sessions);
|
|
6617
6687
|
const metaText = sessions$1.length === 0 ? phaseLabel : sessions$1.length === 1 ? sessions$1[0].title || "" : `${sessions$1.length} sessions`;
|
|
6618
|
-
_html(`<span${_attr_class("
|
|
6688
|
+
_html(`<span${_attr_class("_fE")}><span${_attr_class("_fF")}>${_escape(ws$1.name)}${_el_resume($scope3_id, "h", $sg__input_workspaces__OR__input_workspaceId)}</span>`);
|
|
6619
6689
|
_if(() => {
|
|
6620
6690
|
if (input.page && metaText) {
|
|
6621
6691
|
const $scope16_id = _scope_id();
|
|
6622
|
-
_html(`<span${_attr_class("
|
|
6692
|
+
_html(`<span${_attr_class("_fJ")}>${_escape(metaText)}${_el_resume($scope16_id, "b", _serialize_guard($scope0_reason, 7))}</span>`);
|
|
6623
6693
|
$si__input_page__OR__input_sessions__OR__input_workspaceId__OR__input_status && writeScope($scope16_id, { _: _serialize_if($scope0_reason, 7) && _scope_with_id($scope3_id) });
|
|
6624
6694
|
return 0;
|
|
6625
6695
|
} else if (sessions$1.length === 1 && sessions$1[0].title) {
|
|
6626
6696
|
const $scope15_id = _scope_id();
|
|
6627
|
-
_html(`<span${_attr_class("
|
|
6697
|
+
_html(`<span${_attr_class("_fG")}>${_escape(sessions$1[0].title)}${_el_resume($scope15_id, "b", $sg__input_sessions)}</span>`);
|
|
6628
6698
|
$si__input_page__OR__input_sessions__OR__input_workspaceId__OR__input_status && writeScope($scope15_id, { _: $si__input_sessions && _scope_with_id($scope3_id) });
|
|
6629
6699
|
return 1;
|
|
6630
6700
|
}
|
|
@@ -6637,7 +6707,7 @@ var side_nav_item_default = _template("x", (input) => {
|
|
|
6637
6707
|
"_I",
|
|
6638
6708
|
"_R",
|
|
6639
6709
|
"_K",
|
|
6640
|
-
"
|
|
6710
|
+
"_fK"
|
|
6641
6711
|
])}>${input.current ? "Open" : ""}${_el_resume($scope4_id, "b", _serialize_guard($scope0_reason, 21))}</span>`);
|
|
6642
6712
|
$si__input_current__OR__input_page__OR__input_rail__OR__input_workspaces__OR__input_workspaceId && _subscribe($si__input_current && $input_current__closures, writeScope($scope4_id, {
|
|
6643
6713
|
_: _scope_with_id($scope3_id),
|
|
@@ -6650,7 +6720,7 @@ var side_nav_item_default = _template("x", (input) => {
|
|
|
6650
6720
|
_if(() => {
|
|
6651
6721
|
if (!input.page) {
|
|
6652
6722
|
const $scope5_id = _scope_id();
|
|
6653
|
-
_html(`<div${_attr_class("
|
|
6723
|
+
_html(`<div${_attr_class("_fz")}>`);
|
|
6654
6724
|
_if(() => {
|
|
6655
6725
|
if (input.onNewSession) {
|
|
6656
6726
|
const $scope6_id = _scope_id();
|
|
@@ -6664,7 +6734,7 @@ var side_nav_item_default = _template("x", (input) => {
|
|
|
6664
6734
|
_html(`</button>${_el_resume($scope6_id, "a")}<div${_attr("id", newPopId)} popover=auto${_attr_class(sessionPop)}>`);
|
|
6665
6735
|
_for_of([], (agent) => {
|
|
6666
6736
|
const $scope7_id = _scope_id();
|
|
6667
|
-
_html(`<button${_attr_class("
|
|
6737
|
+
_html(`<button${_attr_class("_fp")}>`);
|
|
6668
6738
|
_set_serialize_reason(12);
|
|
6669
6739
|
const $childScope2 = _peek_scope_id();
|
|
6670
6740
|
icon_agent_default({
|
|
@@ -6699,7 +6769,7 @@ var side_nav_item_default = _template("x", (input) => {
|
|
|
6699
6769
|
return 0;
|
|
6700
6770
|
}
|
|
6701
6771
|
}, $scope5_id, "c", $sg__input_onReview, $sg__input_onReview, $sg__input_onNewSession__OR__input_onReview, 0, 1);
|
|
6702
|
-
_html(`<a${input.managing ? _attr("href", `/w/${ws$1.id}`) : _attr("href", `/w/${ws$1.id}/manage`)}${_attr_class([rowIcon, { ["
|
|
6772
|
+
_html(`<a${input.managing ? _attr("href", `/w/${ws$1.id}`) : _attr("href", `/w/${ws$1.id}/manage`)}${_attr_class([rowIcon, { ["_fr"]: input.managing }])} title=${input.managing ? "\"Back to terminal\"" : "\"Manage workspace\""}${input.managing ? " aria-current=page" : ""}>`);
|
|
6703
6773
|
icon_manage_default({ size: 12 });
|
|
6704
6774
|
_html(`</a>${_el_resume($scope5_id, "d", _serialize_guard($scope0_reason, 8))}</div>`);
|
|
6705
6775
|
_subscribe($si__input_workspaces__OR__input_workspaceId && $ws_id__closures, _subscribe($si__input_managing && $input_managing__closures, _subscribe($si__input_onReview && $input_onReview__closures, _subscribe($si__input_onNewSession && $input_onNewSession__closures, writeScope($scope5_id, {
|
|
@@ -6709,7 +6779,7 @@ var side_nav_item_default = _template("x", (input) => {
|
|
|
6709
6779
|
return 0;
|
|
6710
6780
|
}
|
|
6711
6781
|
}, $scope3_id, "k", $sg__input_page, $sg__input_page, 1, 0, 1);
|
|
6712
|
-
_html(`</div><div${_attr_class("
|
|
6782
|
+
_html(`</div><div${_attr_class("_fQ")}>`);
|
|
6713
6783
|
_if(() => {
|
|
6714
6784
|
if (sessions$1.length === 1 && openPlan) {
|
|
6715
6785
|
const $scope11_id = _scope_id();
|
|
@@ -6717,7 +6787,7 @@ var side_nav_item_default = _template("x", (input) => {
|
|
|
6717
6787
|
const $childScope3 = _peek_scope_id();
|
|
6718
6788
|
usage_pcts_default({
|
|
6719
6789
|
agent: openPlan,
|
|
6720
|
-
class: "
|
|
6790
|
+
class: "_fH"
|
|
6721
6791
|
});
|
|
6722
6792
|
_subscribe($openPlan__closures, writeScope($scope11_id, {
|
|
6723
6793
|
a: _existing_scope($childScope3),
|
|
@@ -6728,14 +6798,14 @@ var side_nav_item_default = _template("x", (input) => {
|
|
|
6728
6798
|
}, $scope3_id, "m");
|
|
6729
6799
|
_for_of(sessions$1.length > 1 ? sessions$1 : [], (s) => {
|
|
6730
6800
|
const $scope8_id = _scope_id();
|
|
6731
|
-
_html(`<div${_attr_class(["
|
|
6801
|
+
_html(`<div${_attr_class(["_fA", { ["_fq"]: s.id === input.currentTab }])}>`);
|
|
6732
6802
|
_if(() => {
|
|
6733
6803
|
if (renamingId === s.id) {
|
|
6734
6804
|
const $scope10_id = _scope_id();
|
|
6735
6805
|
_html(`<span${_attr_class([
|
|
6736
6806
|
"_z",
|
|
6737
6807
|
phase[sessionPhase(s.state)],
|
|
6738
|
-
"
|
|
6808
|
+
"_fO"
|
|
6739
6809
|
])}></span>${_el_resume($scope10_id, "a", $sg__input_sessions)}`);
|
|
6740
6810
|
_set_serialize_reason({
|
|
6741
6811
|
1: $sg__input_sessions,
|
|
@@ -6745,17 +6815,17 @@ var side_nav_item_default = _template("x", (input) => {
|
|
|
6745
6815
|
icon_agent_default({
|
|
6746
6816
|
agent: activeAgent(s),
|
|
6747
6817
|
size: 13,
|
|
6748
|
-
class: "
|
|
6818
|
+
class: "_fS"
|
|
6749
6819
|
});
|
|
6750
6820
|
_html(`<input${_attr_input_value($scope10_id, "c", renameValue, _resume((_new_renameValue) => {
|
|
6751
6821
|
renameValue = _new_renameValue;
|
|
6752
|
-
}, "x0", $scope10_id))}${_attr_class(["_U", "
|
|
6822
|
+
}, "x0", $scope10_id))}${_attr_class(["_U", "_fP"])} aria-label="Session name">${_el_resume($scope10_id, "c")}`);
|
|
6753
6823
|
_script($scope10_id, "x5");
|
|
6754
6824
|
_subscribe($renameValue__closures, writeScope($scope10_id, { b: $si__input_sessions && _existing_scope($childScope4) }));
|
|
6755
6825
|
return 0;
|
|
6756
6826
|
} else {
|
|
6757
6827
|
const $scope9_id = _scope_id();
|
|
6758
|
-
_html(`<a${_attr("href", `/w/${ws$1.id}?s=${s.id}`)}${_attr_class("
|
|
6828
|
+
_html(`<a${_attr("href", `/w/${ws$1.id}?s=${s.id}`)}${_attr_class("_fR")}><span${_attr_class(["_z", phase[sessionPhase(s.state)]])}></span>${_el_resume($scope9_id, "b", $sg__input_sessions)}`);
|
|
6759
6829
|
_set_serialize_reason({
|
|
6760
6830
|
1: $sg__input_sessions,
|
|
6761
6831
|
2: $sg__input_sessions
|
|
@@ -6764,9 +6834,9 @@ var side_nav_item_default = _template("x", (input) => {
|
|
|
6764
6834
|
icon_agent_default({
|
|
6765
6835
|
agent: activeAgent(s),
|
|
6766
6836
|
size: 13,
|
|
6767
|
-
class: "
|
|
6837
|
+
class: "_fS"
|
|
6768
6838
|
});
|
|
6769
|
-
_html(`<span${_attr_class("
|
|
6839
|
+
_html(`<span${_attr_class("_fM")}>${_escape(s.title || activeAgent(s))}${_el_resume($scope9_id, "e", $sg__input_sessions)}</span></a>${_el_resume($scope9_id, "a", _serialize_guard($scope0_reason, 6))}<div${_attr_class("_fN")}><button${_attr_class(rowIcon)} title="Rename session">`);
|
|
6770
6840
|
icon_edit_default({ size: 12 });
|
|
6771
6841
|
_html(`</button>${_el_resume($scope9_id, "g")}<button${_attr_class([close, { ["_q"]: armedKill === s.id }])} title=${armedKill === s.id ? "Close?" : "\"Close session\""}>`);
|
|
6772
6842
|
icon_xmark_default({ size: 12 });
|
|
@@ -6778,7 +6848,7 @@ var side_nav_item_default = _template("x", (input) => {
|
|
|
6778
6848
|
const $childScope6 = _peek_scope_id();
|
|
6779
6849
|
usage_pcts_default({
|
|
6780
6850
|
agent: openPlan,
|
|
6781
|
-
class: "
|
|
6851
|
+
class: "_fI"
|
|
6782
6852
|
});
|
|
6783
6853
|
_subscribe($openPlan__closures, writeScope($scope12_id, {
|
|
6784
6854
|
a: _existing_scope($childScope6),
|
|
@@ -6974,34 +7044,34 @@ var side_nav_default = _template("y", (input) => {
|
|
|
6974
7044
|
const iconSrc = `/api/instance/icon${input.instanceAccent ? `?v=${input.instanceAccent.slice(1)}` : ""}`;
|
|
6975
7045
|
const otherIds = itemIds.filter((id) => id !== ws.id);
|
|
6976
7046
|
const listIds = isPage ? [ws.id, ...otherIds] : itemIds;
|
|
6977
|
-
_html(`<aside${_attr_class(["
|
|
6978
|
-
["
|
|
6979
|
-
["
|
|
7047
|
+
_html(`<aside${_attr_class(["_d1", {
|
|
7048
|
+
["_dZ"]: !navOpen,
|
|
7049
|
+
["_d0"]: isPage
|
|
6980
7050
|
}])}${_attr("hidden", view === "diff")}>`);
|
|
6981
7051
|
_if(() => {
|
|
6982
7052
|
if (isPage) {
|
|
6983
7053
|
const $scope1_id = _scope_id();
|
|
6984
|
-
_html(`<header${_attr_class("
|
|
7054
|
+
_html(`<header${_attr_class("_d4")}><div${_attr_class("_ec")}>`);
|
|
6985
7055
|
_if(() => {
|
|
6986
7056
|
if (input.instanceName) {
|
|
6987
7057
|
const $scope2_id = _scope_id();
|
|
6988
|
-
_html(`<div${_attr_class("
|
|
7058
|
+
_html(`<div${_attr_class("_d_")} title="This work server (Settings → Appearance)"><img${_attr_class("_ea")}${_attr("src", iconSrc)} alt aria-hidden=true>${_el_resume($scope2_id, "b", $sg__input_instanceAccent)}<span${_attr_class("_eb")}>${_escape(input.instanceName)}${_el_resume($scope2_id, "d", $sg__input_instanceName)}</span></div>`);
|
|
6989
7059
|
_subscribe($si__input_instanceAccent && $iconSrc__closures, _subscribe($si__input_instanceName && $input_instanceName__closures, writeScope($scope2_id, { _: _scope_with_id($scope1_id) })));
|
|
6990
7060
|
return 0;
|
|
6991
7061
|
}
|
|
6992
7062
|
}, $scope1_id, "c", $sg__input_instanceName, $sg__input_instanceName, 1, 0, 1);
|
|
6993
|
-
_html(`<h1${_attr_class("
|
|
7063
|
+
_html(`<h1${_attr_class("_d5")}>Workspaces</h1></div><div${_attr_class("_d6")}>`);
|
|
6994
7064
|
_if(() => {}, $scope1_id, "f", 1, 1, 1, 0, 1);
|
|
6995
7065
|
_html(`<a${view === "settings" ? _attr("href", backHref) : " href=/settings"}${_attr_class([
|
|
6996
7066
|
iconBtn$1,
|
|
6997
|
-
"
|
|
6998
|
-
{ ["
|
|
7067
|
+
"_d7",
|
|
7068
|
+
{ ["_dW"]: view === "settings" }
|
|
6999
7069
|
])} title=${view === "settings" ? "\"Back to workspace\"" : "Settings"}${view === "settings" ? " aria-current=page" : ""}>`);
|
|
7000
7070
|
icon_settings_default({ size: 16 });
|
|
7001
7071
|
_if(() => {
|
|
7002
7072
|
if (input.setupReady === false) {
|
|
7003
7073
|
const $scope12_id = _scope_id();
|
|
7004
|
-
_html(`<span${_attr_class(["_z", "
|
|
7074
|
+
_html(`<span${_attr_class(["_z", "_dY"])} title="Machine setup incomplete"></span>`);
|
|
7005
7075
|
$si__input_setupReady && writeScope($scope12_id, {});
|
|
7006
7076
|
return 0;
|
|
7007
7077
|
}
|
|
@@ -7014,18 +7084,18 @@ var side_nav_default = _template("y", (input) => {
|
|
|
7014
7084
|
_if(() => {
|
|
7015
7085
|
if (!isPage && input.instanceName) {
|
|
7016
7086
|
const $scope3_id = _scope_id();
|
|
7017
|
-
_html(`<div${_attr_class("
|
|
7087
|
+
_html(`<div${_attr_class("_d_")} title="This work server (Settings → Appearance)"><img${_attr_class("_ea")}${_attr("src", iconSrc)} alt aria-hidden=true>${_el_resume($scope3_id, "b", $sg__input_instanceAccent)}<span${_attr_class("_eb")}>${_escape(input.instanceName)}${_el_resume($scope3_id, "d", $sg__input_instanceName)}</span></div>`);
|
|
7018
7088
|
writeScope($scope3_id, {});
|
|
7019
7089
|
return 0;
|
|
7020
7090
|
}
|
|
7021
7091
|
}, $scope0_id, "c", 1, 1, 1, 0, 1);
|
|
7022
|
-
_html(`<div${_attr_class("
|
|
7092
|
+
_html(`<div${_attr_class("_ed")}>`);
|
|
7023
7093
|
_for_of(listIds, (wsId) => {
|
|
7024
7094
|
const $scope4_id = _scope_id();
|
|
7025
7095
|
_if(() => {
|
|
7026
7096
|
if (isPage && wsId === ws.id) {
|
|
7027
7097
|
const $scope13_id = _scope_id();
|
|
7028
|
-
_html(`<h2${_attr_class(["
|
|
7098
|
+
_html(`<h2${_attr_class(["_bA", "_d8"])}>Current</h2>`);
|
|
7029
7099
|
writeScope($scope13_id, {});
|
|
7030
7100
|
return 0;
|
|
7031
7101
|
}
|
|
@@ -7033,7 +7103,7 @@ var side_nav_default = _template("y", (input) => {
|
|
|
7033
7103
|
_if(() => {
|
|
7034
7104
|
if (isPage && wsId !== ws.id && wsId === otherIds[0]) {
|
|
7035
7105
|
const $scope14_id = _scope_id();
|
|
7036
|
-
_html(`<h2${_attr_class(["
|
|
7106
|
+
_html(`<h2${_attr_class(["_bA", "_d8"])}>Other workspaces</h2>`);
|
|
7037
7107
|
writeScope($scope14_id, {});
|
|
7038
7108
|
return 0;
|
|
7039
7109
|
}
|
|
@@ -7117,7 +7187,7 @@ var side_nav_default = _template("y", (input) => {
|
|
|
7117
7187
|
railHover = null;
|
|
7118
7188
|
}, 150);
|
|
7119
7189
|
}, "y6", $scope5_id);
|
|
7120
|
-
_html(`<div${_attr_class("
|
|
7190
|
+
_html(`<div${_attr_class("_ee")}>`);
|
|
7121
7191
|
_for_of(itemIds, (wsId, i) => {
|
|
7122
7192
|
const $scope6_id = _scope_id();
|
|
7123
7193
|
_html("<span>");
|
|
@@ -7171,7 +7241,7 @@ var side_nav_default = _template("y", (input) => {
|
|
|
7171
7241
|
if (railHover) {
|
|
7172
7242
|
const $scope7_id = _scope_id();
|
|
7173
7243
|
const hoverId = railHover.id;
|
|
7174
|
-
_html(`<div${_attr_class(["_4", "
|
|
7244
|
+
_html(`<div${_attr_class(["_4", "_eh"])}${_attr_style(`top:${railHover.top}px;left:${railHover.left}px`)}>`);
|
|
7175
7245
|
_set_serialize_reason({
|
|
7176
7246
|
0: 1,
|
|
7177
7247
|
1: 1,
|
|
@@ -7256,7 +7326,7 @@ var side_nav_default = _template("y", (input) => {
|
|
|
7256
7326
|
return 0;
|
|
7257
7327
|
}
|
|
7258
7328
|
}, $scope0_id, "e");
|
|
7259
|
-
_html(`<div${_attr_class("
|
|
7329
|
+
_html(`<div${_attr_class("_ef")}>`);
|
|
7260
7330
|
_if(() => {
|
|
7261
7331
|
if (isPage) {
|
|
7262
7332
|
const $scope9_id = _scope_id();
|
|
@@ -7264,7 +7334,7 @@ var side_nav_default = _template("y", (input) => {
|
|
|
7264
7334
|
"_o",
|
|
7265
7335
|
"_p",
|
|
7266
7336
|
btnLg,
|
|
7267
|
-
"
|
|
7337
|
+
"_d9"
|
|
7268
7338
|
])} title=${view === "new" ? "\"Back to workspace\"" : "\"New workspace\""}${view === "new" ? " aria-current=page" : ""}>`);
|
|
7269
7339
|
icon_folder_plus_default({ size: 16 });
|
|
7270
7340
|
_html(` New workspace</a>${_el_resume($scope9_id, "a")}`);
|
|
@@ -7286,19 +7356,19 @@ var side_nav_default = _template("y", (input) => {
|
|
|
7286
7356
|
return 1;
|
|
7287
7357
|
}
|
|
7288
7358
|
}, $scope8_id, "a", 1, 1, 1, "</button>", 1);
|
|
7289
|
-
_html(`<div${_attr_class(["_y", "
|
|
7359
|
+
_html(`<div${_attr_class(["_y", "_eg"])}></div>`);
|
|
7290
7360
|
_if(() => {}, $scope8_id, "c", 1, 1, 1, 0, 1);
|
|
7291
|
-
_html(`<a${view === "settings" ? _attr("href", backHref) : " href=/settings"}${_attr_class([iconBtn$1, { ["
|
|
7361
|
+
_html(`<a${view === "settings" ? _attr("href", backHref) : " href=/settings"}${_attr_class([iconBtn$1, { ["_dW"]: view === "settings" }])} title=${view === "settings" ? "\"Back to workspace\"" : "Settings"}${view === "settings" ? " aria-current=page" : ""}>`);
|
|
7292
7362
|
icon_settings_default({ size: 15 });
|
|
7293
7363
|
_if(() => {
|
|
7294
7364
|
if (input.setupReady === false) {
|
|
7295
7365
|
const $scope17_id = _scope_id();
|
|
7296
|
-
_html(`<span${_attr_class(["_z", "
|
|
7366
|
+
_html(`<span${_attr_class(["_z", "_dY"])} title="Machine setup incomplete"></span>`);
|
|
7297
7367
|
$si__input_setupReady && writeScope($scope17_id, {});
|
|
7298
7368
|
return 0;
|
|
7299
7369
|
}
|
|
7300
7370
|
}, $scope8_id, "f", $sg__input_setupReady, $sg__input_setupReady, 1, 0, 1);
|
|
7301
|
-
_html(`</a>${_el_resume($scope8_id, "d")}<a${view === "new" ? _attr("href", backHref) : " href=/new"}${_attr_class([iconBtn$1, { ["
|
|
7371
|
+
_html(`</a>${_el_resume($scope8_id, "d")}<a${view === "new" ? _attr("href", backHref) : " href=/new"}${_attr_class([iconBtn$1, { ["_dW"]: view === "new" }])} title=${view === "new" ? "\"Back to workspace\"" : "\"New workspace\""}${view === "new" ? " aria-current=page" : ""}>`);
|
|
7302
7372
|
icon_folder_plus_default({ size: 16 });
|
|
7303
7373
|
_html(`</a>${_el_resume($scope8_id, "g")}`);
|
|
7304
7374
|
_script($scope8_id, "y15");
|
|
@@ -7364,11 +7434,11 @@ var side_nav_default = _template("y", (input) => {
|
|
|
7364
7434
|
_resume_branch($scope0_id);
|
|
7365
7435
|
});
|
|
7366
7436
|
var iconBtn = "_0 _j";
|
|
7367
|
-
var sectionCount = "
|
|
7368
|
-
var content = "
|
|
7369
|
-
var pageMeta = "
|
|
7370
|
-
var pathMeta = "
|
|
7371
|
-
var dangerHint = "
|
|
7437
|
+
var sectionCount = "_bn _I _J";
|
|
7438
|
+
var content = "_dL _bD";
|
|
7439
|
+
var pageMeta = "_dM _bI";
|
|
7440
|
+
var pathMeta = "_dP _x";
|
|
7441
|
+
var dangerHint = "_dV _S";
|
|
7372
7442
|
//#endregion
|
|
7373
7443
|
//#region src/tags/manage-workspace.marko
|
|
7374
7444
|
var api$2;
|
|
@@ -7467,7 +7537,7 @@ var manage_workspace_default = _template("o", (input) => {
|
|
|
7467
7537
|
setTimeout(() => loadProcs(void 0), 500);
|
|
7468
7538
|
}, "o5", $scope0_id);
|
|
7469
7539
|
const titleId = _id();
|
|
7470
|
-
_html(`<div${_attr_class("
|
|
7540
|
+
_html(`<div${_attr_class("_bB")} role=region${_attr("aria-labelledby", titleId)}><div${_attr_class("_bC")}><div${_attr_class(content)}>`);
|
|
7471
7541
|
_set_serialize_reason(30);
|
|
7472
7542
|
const $childScope = _peek_scope_id();
|
|
7473
7543
|
page_head_default({
|
|
@@ -7480,7 +7550,7 @@ var manage_workspace_default = _template("o", (input) => {
|
|
|
7480
7550
|
meta: attrTag({ content: _content_resume("o11", () => {
|
|
7481
7551
|
_scope_reason();
|
|
7482
7552
|
const $scope8_id = _scope_id();
|
|
7483
|
-
_html(`<span${_attr_class(pageMeta)}${_attr("title", ws.display_path || ws.path)}><span${_attr_class("
|
|
7553
|
+
_html(`<span${_attr_class(pageMeta)}${_attr("title", ws.display_path || ws.path)}><span${_attr_class("_dN")}>${_escape(ws.name)}${_el_resume($scope8_id, "c")}</span>`);
|
|
7484
7554
|
_if(() => {
|
|
7485
7555
|
if (ws.status !== "active") {
|
|
7486
7556
|
const $scope11_id = _scope_id();
|
|
@@ -7489,7 +7559,7 @@ var manage_workspace_default = _template("o", (input) => {
|
|
|
7489
7559
|
return 0;
|
|
7490
7560
|
}
|
|
7491
7561
|
}, $scope8_id, "d", 1, 1, 1, 0, 1);
|
|
7492
|
-
_html(`<span${_attr_class("
|
|
7562
|
+
_html(`<span${_attr_class("_dO")} aria-hidden=true>·</span><span${_attr_class(pathMeta)}>${_escape(ws.display_path || ws.path)}${_el_resume($scope8_id, "g")}</span></span>${_el_resume($scope8_id, "a")}`);
|
|
7493
7563
|
_subscribe($ws_status__closures, _subscribe($ws_name__closures, _subscribe($ws_path__closures, _subscribe($ws_display_path__closures, writeScope($scope8_id, { _: _scope_with_id($scope0_id) })))));
|
|
7494
7564
|
_resume_branch($scope8_id);
|
|
7495
7565
|
}, $scope0_id) })
|
|
@@ -7517,22 +7587,22 @@ var manage_workspace_default = _template("o", (input) => {
|
|
|
7517
7587
|
_if(() => {
|
|
7518
7588
|
if (pendingAction && actionStep) {
|
|
7519
7589
|
const $scope7_id = _scope_id();
|
|
7520
|
-
_html(`<p${_attr_class("
|
|
7590
|
+
_html(`<p${_attr_class("_bk")}><span${_attr_class("_F")}></span><!>${_escape(actionStep)}${_el_resume($scope7_id, "c")}</p>`);
|
|
7521
7591
|
writeScope($scope7_id, {});
|
|
7522
7592
|
return 0;
|
|
7523
7593
|
}
|
|
7524
7594
|
}, $scope0_id, "f", 1, 1, 1, 0, 1);
|
|
7525
|
-
_html(`<section${_attr_class("
|
|
7595
|
+
_html(`<section${_attr_class("_bl")}><div${_attr_class("_bm")}><h2${_attr_class("_bA")}>Repos</h2><span${_attr_class(sectionCount)}>${_escape(ws.repos.length)}${_el_resume($scope0_id, "k")}</span><div${_attr_class("_y")}></div><button${_attr_class(iconBtn)} title="Refresh repo list" aria-label="Refresh repo list"${_attr("disabled", catalogRefreshing)}>`);
|
|
7526
7596
|
_set_serialize_reason(1);
|
|
7527
7597
|
const $childScope2 = _peek_scope_id();
|
|
7528
7598
|
icon_refresh_default({
|
|
7529
7599
|
size: 14,
|
|
7530
7600
|
class: catalogRefreshing && "_E"
|
|
7531
7601
|
});
|
|
7532
|
-
_html(`</button>${_el_resume($scope0_id, "m")}</div><ul${_attr_class("
|
|
7602
|
+
_html(`</button>${_el_resume($scope0_id, "m")}</div><ul${_attr_class("_bo")}>`);
|
|
7533
7603
|
_for_of(ws.repos, (row) => {
|
|
7534
7604
|
const $scope1_id = _scope_id();
|
|
7535
|
-
_html(`<li${_attr_class("
|
|
7605
|
+
_html(`<li${_attr_class("_bq")}><div${_attr_class("_br")}><span${_attr_class(["_bs", "_x"])}>${_escape(row.worktree)}${_el_resume($scope1_id, "d")}/</span><span${_attr_class("_bt")}><a${_attr_class(["_bu", "_dR"])}${_attr("href", repoWebUrl$1(row.full_name))} target=_blank rel=noopener${_attr("title", `Open ${row.full_name} on GitHub`)}>${_escape(repoLabel(row.full_name))}${_el_resume($scope1_id, "g")}</a>${_el_resume($scope1_id, "f")}`);
|
|
7536
7606
|
_if(() => {
|
|
7537
7607
|
if (row.base_branch !== row.default_branch) {
|
|
7538
7608
|
const $scope12_id = _scope_id();
|
|
@@ -7553,7 +7623,7 @@ var manage_workspace_default = _template("o", (input) => {
|
|
|
7553
7623
|
} else {
|
|
7554
7624
|
const $scope6_id = _scope_id();
|
|
7555
7625
|
_html(`<button${_attr_class([
|
|
7556
|
-
"
|
|
7626
|
+
"_bv",
|
|
7557
7627
|
"_2",
|
|
7558
7628
|
"_3",
|
|
7559
7629
|
{ ["_q"]: confirmingRemove === row.full_name }
|
|
@@ -7586,19 +7656,19 @@ var manage_workspace_default = _template("o", (input) => {
|
|
|
7586
7656
|
}, "full_name", $scope0_id, "p", 1, 1, 1, 0, 1);
|
|
7587
7657
|
_for_of([...busy].filter((n) => !inWorkspace.has(n)), (name) => {
|
|
7588
7658
|
const $scope16_id = _scope_id();
|
|
7589
|
-
_html(`<li${_attr_class(["
|
|
7659
|
+
_html(`<li${_attr_class(["_bq", "_bp"])}><span${_attr_class("_F")}></span><div${_attr_class("_br")}><span${_attr_class("_bu")}>Adding <!>${_escape(name)}${_el_resume($scope16_id, "e")}…</span></div></li>`);
|
|
7590
7660
|
writeScope($scope16_id, {});
|
|
7591
7661
|
}, (n) => n, $scope0_id, "q", 1, 1, 1, 0, 1);
|
|
7592
7662
|
_html("</ul>");
|
|
7593
7663
|
_if(() => {
|
|
7594
7664
|
if (!ws.repos.length && !busy.size) {
|
|
7595
7665
|
const $scope17_id = _scope_id();
|
|
7596
|
-
_html(`<p${_attr_class("
|
|
7666
|
+
_html(`<p${_attr_class("_bw")}>No repos yet. Search below to add one.</p>`);
|
|
7597
7667
|
writeScope($scope17_id, {});
|
|
7598
7668
|
return 0;
|
|
7599
7669
|
}
|
|
7600
7670
|
}, $scope0_id, "r", 1, 1, 1, 0, 1);
|
|
7601
|
-
_html(`<div${_attr_class("
|
|
7671
|
+
_html(`<div${_attr_class("_dQ")}>`);
|
|
7602
7672
|
const $childScope3 = _peek_scope_id();
|
|
7603
7673
|
let refreshCatalog = repo_picker_default({
|
|
7604
7674
|
exclude: inWorkspace,
|
|
@@ -7618,17 +7688,17 @@ var manage_workspace_default = _template("o", (input) => {
|
|
|
7618
7688
|
_if(() => {
|
|
7619
7689
|
if (running.length) {
|
|
7620
7690
|
const $scope9_id = _scope_id();
|
|
7621
|
-
_html(`<section${_attr_class("
|
|
7691
|
+
_html(`<section${_attr_class("_bl")}><div${_attr_class("_bm")}><h2${_attr_class("_bA")}>Running</h2><span${_attr_class(sectionCount)}>${_escape(running.length)}${_el_resume($scope9_id, "e")}</span></div><ul${_attr_class("_bo")}>`);
|
|
7622
7692
|
_for_of(running, (p) => {
|
|
7623
7693
|
const $scope10_id = _scope_id();
|
|
7624
|
-
_html(`<li${_attr_class("
|
|
7694
|
+
_html(`<li${_attr_class("_bq")}><div${_attr_class("_br")}${_attr("title", p.args)}><span${_attr_class(["_bs", "_x"])}>${_escape(p.cmd)}${_el_resume($scope10_id, "d")}</span>`);
|
|
7625
7695
|
_if(() => {
|
|
7626
7696
|
if (p.ports.length) {
|
|
7627
7697
|
const $scope18_id = _scope_id();
|
|
7628
|
-
_html(`<span${_attr_class("
|
|
7698
|
+
_html(`<span${_attr_class("_bt")}>`);
|
|
7629
7699
|
_for_of(p.ports, (port) => {
|
|
7630
7700
|
const $scope19_id = _scope_id();
|
|
7631
|
-
_html(`<button${_attr_class(["_s", "
|
|
7701
|
+
_html(`<button${_attr_class(["_s", "_dS"])}${_attr("title", `Open http://${typeof location === "undefined" ? "localhost" : location.hostname}:${port}`)}>:<!>${_escape(port)}${_el_resume($scope19_id, "b")}</button>${_el_resume($scope19_id, "a")}`);
|
|
7632
7702
|
_script($scope19_id, "o15");
|
|
7633
7703
|
writeScope($scope19_id, { d: port });
|
|
7634
7704
|
}, (x) => String(x), $scope18_id, "a", 1, 1, 1, "</span>", 1);
|
|
@@ -7636,7 +7706,7 @@ var manage_workspace_default = _template("o", (input) => {
|
|
|
7636
7706
|
return 0;
|
|
7637
7707
|
}
|
|
7638
7708
|
}, $scope10_id, "e", 1, 1, 1, 0, 1);
|
|
7639
|
-
_html(`</div>${_el_resume($scope10_id, "b")}<button${_attr_class(["
|
|
7709
|
+
_html(`</div>${_el_resume($scope10_id, "b")}<button${_attr_class(["_bv", "_2"])} type=button${_attr("title", `Kill process ${p.pid}`)}${_attr("aria-label", `Kill process ${p.pid}`)}>`);
|
|
7640
7710
|
icon_xmark_default({ size: 14 });
|
|
7641
7711
|
_html(`</button>${_el_resume($scope10_id, "f")}</li>`);
|
|
7642
7712
|
_script($scope10_id, "o16");
|
|
@@ -7650,7 +7720,7 @@ var manage_workspace_default = _template("o", (input) => {
|
|
|
7650
7720
|
return 0;
|
|
7651
7721
|
}
|
|
7652
7722
|
}, $scope0_id, "v", 1, 1, 1, 0, 1);
|
|
7653
|
-
_html(`<section${_attr_class(["
|
|
7723
|
+
_html(`<section${_attr_class(["_bl", "_dT"])}><div${_attr_class("_bm")}><h2${_attr_class("_bA")}>Workspace</h2></div><div${_attr_class("_dU")}>`);
|
|
7654
7724
|
_if(() => {
|
|
7655
7725
|
if (ws.status === "active") {
|
|
7656
7726
|
const $scope4_id = _scope_id();
|
|
@@ -7751,19 +7821,19 @@ var term_find_default = _template("A", (input) => {
|
|
|
7751
7821
|
const canStep = hasQuery && open;
|
|
7752
7822
|
const keybar = input.placement === "keybar";
|
|
7753
7823
|
_html(`<div${_attr_class([
|
|
7754
|
-
"
|
|
7755
|
-
keybar ? "
|
|
7756
|
-
!open && "
|
|
7757
|
-
])} aria-hidden=${open ? "false" : "true"}><div${_attr_class(["
|
|
7824
|
+
"_f5",
|
|
7825
|
+
keybar ? "_f7" : "_f6",
|
|
7826
|
+
!open && "_f9"
|
|
7827
|
+
])} aria-hidden=${open ? "false" : "true"}><div${_attr_class(["_f0", keybar ? "_f8" : "_f2"])}><input${_attr_input_value($scope0_id, "c", query, _resume(function(v) {
|
|
7758
7828
|
if (!open) return;
|
|
7759
7829
|
query = v;
|
|
7760
7830
|
live.query = v;
|
|
7761
7831
|
run(0);
|
|
7762
|
-
}, "A0", $scope0_id))}${_attr_class([findInput, keybar && "
|
|
7832
|
+
}, "A0", $scope0_id))}${_attr_class([findInput, keybar && "_f_"])} type=search enterkeyhint=search autocomplete=off tabindex=${open ? "0" : "-1"} placeholder="Find in terminal" aria-label="Find in terminal">${_el_resume($scope0_id, "c")}<button type=button${_attr_class([findIconBtn, keybar && "_ga"])} title="Previous match"${_attr("disabled", !canStep)} tabindex=${open ? "0" : "-1"}>`);
|
|
7763
7833
|
icon_arrow_up_default({ size: 14 });
|
|
7764
|
-
_html(`</button>${_el_resume($scope0_id, "d")}<button type=button${_attr_class([findIconBtn, keybar && "
|
|
7834
|
+
_html(`</button>${_el_resume($scope0_id, "d")}<button type=button${_attr_class([findIconBtn, keybar && "_ga"])} title="Next match"${_attr("disabled", !canStep)} tabindex=${open ? "0" : "-1"}>`);
|
|
7765
7835
|
icon_arrow_down_default({ size: 14 });
|
|
7766
|
-
_html(`</button>${_el_resume($scope0_id, "f")}<button type=button${_attr_class([findIconBtn, keybar && "
|
|
7836
|
+
_html(`</button>${_el_resume($scope0_id, "f")}<button type=button${_attr_class([findIconBtn, keybar && "_ga"])} title="Close find" tabindex=${open ? "0" : "-1"}>`);
|
|
7767
7837
|
icon_xmark_default({ size: 14 });
|
|
7768
7838
|
_html(`</button>${_el_resume($scope0_id, "h")}</div>${_el_resume($scope0_id, "b", _serialize_guard($scope0_reason, 2))}</div>${_el_resume($scope0_id, "a")}`);
|
|
7769
7839
|
_script($scope0_id, "A4");
|
|
@@ -8097,7 +8167,7 @@ var term_default = _template("B", (input) => {
|
|
|
8097
8167
|
trapOpen = true;
|
|
8098
8168
|
}
|
|
8099
8169
|
}, "B14", $scope0_id);
|
|
8100
|
-
_html(`<div${_attr("hidden", !onTermPage)}${_attr_class("
|
|
8170
|
+
_html(`<div${_attr("hidden", !onTermPage)}${_attr_class("_ei")}><div${_attr_class("_ej")}></div>${_el_resume($scope0_id, "b")}`);
|
|
8101
8171
|
_if(() => {
|
|
8102
8172
|
if (findOpen) {
|
|
8103
8173
|
const $scope12_id = _scope_id();
|
|
@@ -8124,7 +8194,7 @@ var term_default = _template("B", (input) => {
|
|
|
8124
8194
|
_if(() => {
|
|
8125
8195
|
if (uploading) {
|
|
8126
8196
|
const $scope19_id = _scope_id();
|
|
8127
|
-
_html(`<div${_attr_class("
|
|
8197
|
+
_html(`<div${_attr_class("_ep")}>uploading…</div>`);
|
|
8128
8198
|
writeScope($scope19_id, {});
|
|
8129
8199
|
return 0;
|
|
8130
8200
|
}
|
|
@@ -8132,7 +8202,7 @@ var term_default = _template("B", (input) => {
|
|
|
8132
8202
|
_if(() => {
|
|
8133
8203
|
if (copiedFlash) {
|
|
8134
8204
|
const $scope20_id = _scope_id();
|
|
8135
|
-
_html(`<div${_attr_class("
|
|
8205
|
+
_html(`<div${_attr_class("_eo")}>Copied</div>`);
|
|
8136
8206
|
writeScope($scope20_id, {});
|
|
8137
8207
|
return 0;
|
|
8138
8208
|
}
|
|
@@ -8141,7 +8211,7 @@ var term_default = _template("B", (input) => {
|
|
|
8141
8211
|
_if(() => {
|
|
8142
8212
|
if (trapOpen) {
|
|
8143
8213
|
const $scope11_id = _scope_id();
|
|
8144
|
-
_html(`<div${_attr_class("
|
|
8214
|
+
_html(`<div${_attr_class("_eq")}><div${_attr_class("_er")}><p${_attr_class("_eV")}>Long-press the field below and choose Paste</p><input placeholder="Paste here…">${_el_resume($scope11_id, "d")}<button${_attr_class("_o")}>Cancel</button>${_el_resume($scope11_id, "e")}</div>${_el_resume($scope11_id, "b")}</div>${_el_resume($scope11_id, "a")}`);
|
|
8145
8215
|
_script($scope11_id, "B25");
|
|
8146
8216
|
_script($scope11_id, "B26");
|
|
8147
8217
|
writeScope($scope11_id, {});
|
|
@@ -8244,7 +8314,7 @@ var work_view_default = _template("F", (input) => {
|
|
|
8244
8314
|
let DiffView = null;
|
|
8245
8315
|
const loadDiffView = _resume(() => {
|
|
8246
8316
|
if (DiffView) return;
|
|
8247
|
-
import("./
|
|
8317
|
+
import("./_Yw-sn_jV.js").then((m) => {
|
|
8248
8318
|
DiffView = m.default;
|
|
8249
8319
|
});
|
|
8250
8320
|
}, "F6", $scope0_id);
|
|
@@ -8432,10 +8502,10 @@ var work_view_default = _template("F", (input) => {
|
|
|
8432
8502
|
toggleDiff();
|
|
8433
8503
|
}
|
|
8434
8504
|
}, "F21", $scope0_id);
|
|
8435
|
-
_html(`<div${_attr_class(["
|
|
8436
|
-
["
|
|
8437
|
-
["
|
|
8438
|
-
}])}><div${_attr_class("
|
|
8505
|
+
_html(`<div${_attr_class(["_cK", {
|
|
8506
|
+
["_cI"]: view === "nav",
|
|
8507
|
+
["_cJ"]: !input.active
|
|
8508
|
+
}])}><div${_attr_class("_cL")}>`);
|
|
8439
8509
|
_set_serialize_reason({
|
|
8440
8510
|
0: _serialize_guard($scope0_reason, 0),
|
|
8441
8511
|
1: 1,
|
|
@@ -8504,7 +8574,7 @@ var work_view_default = _template("F", (input) => {
|
|
|
8504
8574
|
});
|
|
8505
8575
|
}, "F30", $scope0_id)
|
|
8506
8576
|
});
|
|
8507
|
-
_html(`</div><div${_attr_class("
|
|
8577
|
+
_html(`</div><div${_attr_class("_cM")}>`);
|
|
8508
8578
|
_if(() => {
|
|
8509
8579
|
if (error) {
|
|
8510
8580
|
const $scope8_id = _scope_id();
|
|
@@ -8527,7 +8597,7 @@ var work_view_default = _template("F", (input) => {
|
|
|
8527
8597
|
_if(() => {
|
|
8528
8598
|
if (diffMounted && DiffView) {
|
|
8529
8599
|
const $scope1_id = _scope_id();
|
|
8530
|
-
_html(`<div${_attr_class("
|
|
8600
|
+
_html(`<div${_attr_class("_cN")}${_attr_or("data-live", view === "diff", "")}${_attr("inert", view !== "diff")}>`);
|
|
8531
8601
|
_dynamic_tag($scope1_id, "b", DiffView, {
|
|
8532
8602
|
workspaceId: ws.id,
|
|
8533
8603
|
workspaceBranch: ws.branch,
|
|
@@ -8567,7 +8637,7 @@ var work_view_default = _template("F", (input) => {
|
|
|
8567
8637
|
_if(() => {
|
|
8568
8638
|
if (manageMounted) {
|
|
8569
8639
|
const $scope2_id = _scope_id();
|
|
8570
|
-
_html(`<div${_attr_class("
|
|
8640
|
+
_html(`<div${_attr_class("_cN")}${_attr_or("data-live", view === "manage", "")}${_attr("inert", view !== "manage")}>`);
|
|
8571
8641
|
_set_serialize_reason(_serialize_guard($scope0_reason, 16));
|
|
8572
8642
|
const $childScope2 = _peek_scope_id();
|
|
8573
8643
|
manage_workspace_default({
|
|
@@ -8590,7 +8660,7 @@ var work_view_default = _template("F", (input) => {
|
|
|
8590
8660
|
_if(() => {
|
|
8591
8661
|
if (settingsMounted) {
|
|
8592
8662
|
const $scope3_id = _scope_id();
|
|
8593
|
-
_html(`<div${_attr_class("
|
|
8663
|
+
_html(`<div${_attr_class("_cN")}${_attr_or("data-live", view === "settings", "")}${_attr("inert", view !== "settings")}>`);
|
|
8594
8664
|
_set_serialize_reason({
|
|
8595
8665
|
0: _serialize_guard($scope0_reason, 1),
|
|
8596
8666
|
1: $sg__input_workspace,
|
|
@@ -8631,7 +8701,7 @@ var work_view_default = _template("F", (input) => {
|
|
|
8631
8701
|
_if(() => {
|
|
8632
8702
|
if (newMounted) {
|
|
8633
8703
|
const $scope4_id = _scope_id();
|
|
8634
|
-
_html(`<div${_attr_class("
|
|
8704
|
+
_html(`<div${_attr_class("_cN")}${_attr_or("data-live", view === "new", "")}${_attr("inert", view !== "new")}>`);
|
|
8635
8705
|
_set_serialize_reason({
|
|
8636
8706
|
0: 1,
|
|
8637
8707
|
1: $sg__input_allWorkspaces,
|
|
@@ -8658,13 +8728,13 @@ var work_view_default = _template("F", (input) => {
|
|
|
8658
8728
|
return 0;
|
|
8659
8729
|
}
|
|
8660
8730
|
}, $scope0_id, "i", 1, 1, 1, 0, 1);
|
|
8661
|
-
_html(`<div${_attr_class(["
|
|
8731
|
+
_html(`<div${_attr_class(["_cP", { ["_cO"]: view !== "term" }])}>`);
|
|
8662
8732
|
_if(() => {
|
|
8663
8733
|
if (shownSessions) {
|
|
8664
8734
|
const $scope5_id = _scope_id();
|
|
8665
8735
|
_for_of(input.active ? shownSessions : shownSessions.filter((x) => x.id === curTab), (s) => {
|
|
8666
8736
|
const $scope6_id = _scope_id();
|
|
8667
|
-
_html(`<div${_attr_class("
|
|
8737
|
+
_html(`<div${_attr_class("_cQ")}${_attr_or("data-live", s.id === curTab, "")}${_attr("inert", s.id !== curTab)}>`);
|
|
8668
8738
|
_set_serialize_reason({
|
|
8669
8739
|
0: 1,
|
|
8670
8740
|
1: 1,
|
|
@@ -8723,7 +8793,7 @@ var work_view_default = _template("F", (input) => {
|
|
|
8723
8793
|
_if(() => {
|
|
8724
8794
|
if (!shownSessions.length && view === "term") {
|
|
8725
8795
|
const $scope7_id = _scope_id();
|
|
8726
|
-
_html(`<div${_attr_class("
|
|
8796
|
+
_html(`<div${_attr_class("_bx")}><span>No sessions in this workspace.</span><button${_attr_class(["_o", "_p"])}${_attr("disabled", spawning)}>${spawning ? "Starting…" : `Start ${_escape(`${input.preferred || "shell"}`)}`}${_el_resume($scope7_id, "c")}</button>${_el_resume($scope7_id, "b")}</div>`);
|
|
8727
8797
|
_script($scope7_id, "F50");
|
|
8728
8798
|
_subscribe($spawning__closures, _subscribe($si__input_preferred && $input_preferred__closures, writeScope($scope7_id, {})));
|
|
8729
8799
|
return 0;
|
|
@@ -8733,7 +8803,7 @@ var work_view_default = _template("F", (input) => {
|
|
|
8733
8803
|
return 0;
|
|
8734
8804
|
} else {
|
|
8735
8805
|
const $scope10_id = _scope_id();
|
|
8736
|
-
_html(`<p${_attr_class("
|
|
8806
|
+
_html(`<p${_attr_class("_bx")}>Loading sessions…</p>`);
|
|
8737
8807
|
writeScope($scope10_id, {});
|
|
8738
8808
|
return 1;
|
|
8739
8809
|
}
|
|
@@ -8869,6 +8939,7 @@ var app_shell_default = _template("c", (input) => {
|
|
|
8869
8939
|
const $openWorkspace2__closures = /* @__PURE__ */ new Set();
|
|
8870
8940
|
const $go2__closures = /* @__PURE__ */ new Set();
|
|
8871
8941
|
const boot = input.boot;
|
|
8942
|
+
seedUsage(boot.usage ?? null);
|
|
8872
8943
|
const initial = input.initial || {
|
|
8873
8944
|
workspaceId: null,
|
|
8874
8945
|
view: "term"
|
|
@@ -9168,56 +9239,56 @@ var app_shell_default = _template("c", (input) => {
|
|
|
9168
9239
|
_script($scope0_id, "c28");
|
|
9169
9240
|
_script($scope0_id, "c29");
|
|
9170
9241
|
writeScope($scope0_id, {
|
|
9171
|
-
|
|
9172
|
-
|
|
9173
|
-
|
|
9174
|
-
|
|
9175
|
-
|
|
9176
|
-
|
|
9177
|
-
|
|
9178
|
-
|
|
9179
|
-
|
|
9180
|
-
|
|
9181
|
-
|
|
9182
|
-
|
|
9183
|
-
|
|
9184
|
-
|
|
9185
|
-
|
|
9186
|
-
|
|
9187
|
-
|
|
9188
|
-
|
|
9189
|
-
|
|
9190
|
-
|
|
9191
|
-
|
|
9192
|
-
|
|
9193
|
-
|
|
9194
|
-
|
|
9195
|
-
|
|
9196
|
-
|
|
9197
|
-
|
|
9198
|
-
|
|
9199
|
-
|
|
9200
|
-
|
|
9201
|
-
|
|
9202
|
-
|
|
9203
|
-
|
|
9204
|
-
|
|
9205
|
-
|
|
9206
|
-
|
|
9207
|
-
|
|
9208
|
-
|
|
9209
|
-
|
|
9210
|
-
|
|
9211
|
-
|
|
9212
|
-
|
|
9213
|
-
|
|
9214
|
-
|
|
9215
|
-
|
|
9216
|
-
|
|
9217
|
-
|
|
9218
|
-
|
|
9219
|
-
|
|
9220
|
-
|
|
9242
|
+
o: boot?.prefs,
|
|
9243
|
+
u: initial.workspaceId,
|
|
9244
|
+
v: initial.view,
|
|
9245
|
+
w: initial.sessionId,
|
|
9246
|
+
x: initial.pr,
|
|
9247
|
+
y: initial.scope,
|
|
9248
|
+
z: initial.file,
|
|
9249
|
+
a0: workspaces,
|
|
9250
|
+
a1: status,
|
|
9251
|
+
a2: settings,
|
|
9252
|
+
a3: $si__input_initial && last,
|
|
9253
|
+
a4: $si__input_initial && bootActive,
|
|
9254
|
+
a6: $si__input_initial && bootActive?.length,
|
|
9255
|
+
a8: selectedId,
|
|
9256
|
+
a9: openIds,
|
|
9257
|
+
ac: creating,
|
|
9258
|
+
ad: route,
|
|
9259
|
+
ae: nav,
|
|
9260
|
+
af: navNonce,
|
|
9261
|
+
ah: lastUrl.route,
|
|
9262
|
+
aj: setup,
|
|
9263
|
+
ak: wantSetup,
|
|
9264
|
+
al: showSetup,
|
|
9265
|
+
an: error,
|
|
9266
|
+
ao: applyWorkspaces,
|
|
9267
|
+
ap: load,
|
|
9268
|
+
aq: patchStatusSessions,
|
|
9269
|
+
as: statusMem.fresh,
|
|
9270
|
+
at: statusMem.run,
|
|
9271
|
+
av: loadStatus,
|
|
9272
|
+
aw: openWorkspace,
|
|
9273
|
+
ay: go,
|
|
9274
|
+
be: $error__closures,
|
|
9275
|
+
b0: $si__input_initial && $initial_workspaceId__closures,
|
|
9276
|
+
b1: $si__input_initial && $initial_view__closures,
|
|
9277
|
+
b2: $si__input_initial && $initial_sessionId__closures,
|
|
9278
|
+
b3: $si__input_initial && $initial_pr__closures,
|
|
9279
|
+
b4: $si__input_initial && $initial_scope__closures,
|
|
9280
|
+
b5: $si__input_initial && $initial_file__closures,
|
|
9281
|
+
b6: $workspaces__closures,
|
|
9282
|
+
b7: $status__closures,
|
|
9283
|
+
b8: $settings__closures,
|
|
9284
|
+
b9: $selectedId__closures,
|
|
9285
|
+
ba: $creating__closures,
|
|
9286
|
+
bb: $nav__closures,
|
|
9287
|
+
bc: $navNonce__closures,
|
|
9288
|
+
bd: $setup2__closures,
|
|
9289
|
+
bf: $applyWorkspaces2__closures,
|
|
9290
|
+
bg: $openWorkspace2__closures,
|
|
9291
|
+
bh: $go2__closures
|
|
9221
9292
|
});
|
|
9222
9293
|
_resume_branch($scope0_id);
|
|
9223
9294
|
});
|
|
@@ -9227,12 +9298,13 @@ var app_page_default = _template("b", (input) => {
|
|
|
9227
9298
|
const $scope0_reason = _scope_reason(), $sg__input_initial = _serialize_guard($scope0_reason, 0), $si__input_initial = _serialize_if($scope0_reason, 0);
|
|
9228
9299
|
const $scope0_id = _scope_id();
|
|
9229
9300
|
const $input_initial__closures = /* @__PURE__ */ new Set();
|
|
9230
|
-
const { workspaces, settings, prefs, status, setup } = $global().data;
|
|
9301
|
+
const { workspaces, settings, prefs, status, setup, usage } = $global().data;
|
|
9231
9302
|
const base = {
|
|
9232
9303
|
workspaces,
|
|
9233
9304
|
settings,
|
|
9234
9305
|
prefs: prefs ?? {},
|
|
9235
|
-
setup
|
|
9306
|
+
setup,
|
|
9307
|
+
usage: usage ?? null
|
|
9236
9308
|
};
|
|
9237
9309
|
const ready = status instanceof Promise ? null : status;
|
|
9238
9310
|
_html(`<main${_attr_class("_c")}>`);
|
|
@@ -9273,7 +9345,7 @@ var app_page_default = _template("b", (input) => {
|
|
|
9273
9345
|
$si__input_initial && writeScope($scope5_id, {
|
|
9274
9346
|
_: _scope_with_id($scope4_id),
|
|
9275
9347
|
a: _existing_scope($childScope3),
|
|
9276
|
-
|
|
9348
|
+
Co: 1
|
|
9277
9349
|
});
|
|
9278
9350
|
_resume_branch($scope5_id);
|
|
9279
9351
|
}, $sg__input_initial);
|
|
@@ -9311,8 +9383,8 @@ var app_page_default = _template("b", (input) => {
|
|
|
9311
9383
|
_html("</main>");
|
|
9312
9384
|
writeScope($scope0_id, {
|
|
9313
9385
|
d: input.initial,
|
|
9314
|
-
|
|
9315
|
-
|
|
9386
|
+
m: base,
|
|
9387
|
+
o: $si__input_initial && $input_initial__closures
|
|
9316
9388
|
});
|
|
9317
9389
|
});
|
|
9318
9390
|
//#endregion
|
|
@@ -10928,54 +11000,6 @@ function head27(context) {
|
|
|
10928
11000
|
return stripResponseBody(get27(context));
|
|
10929
11001
|
}
|
|
10930
11002
|
//#endregion
|
|
10931
|
-
//#region src/server/usage/index.ts
|
|
10932
|
-
var TTL_MS = 6e4;
|
|
10933
|
-
/** Plan/quota usage across every agent account this machine is signed into.
|
|
10934
|
-
*
|
|
10935
|
-
* Each provider is one blocking HTTPS round trip against the same endpoint its
|
|
10936
|
-
* own CLI uses; they touch disjoint credentials and cache files, so they run
|
|
10937
|
-
* concurrently and the wait is the slowest single provider, not their sum. */
|
|
10938
|
-
async function collect() {
|
|
10939
|
-
return (await Promise.all(AGENTS.map((agent) => (agent.usage?.() ?? Promise.resolve([])).catch(() => [{
|
|
10940
|
-
...blankRow(agent.meta.id, "error"),
|
|
10941
|
-
note: "fetch failed"
|
|
10942
|
-
}])))).flat();
|
|
10943
|
-
}
|
|
10944
|
-
/** Age of a row served from a failed refresh, in seconds — undefined when the
|
|
10945
|
-
* numbers are current. Percentages from a stale row describe a window that has
|
|
10946
|
-
* since moved on, so they can't be shown as live figures. */
|
|
10947
|
-
function staleSeconds(source) {
|
|
10948
|
-
const match = /^stale-cache\s+(\d+)s/.exec(source);
|
|
10949
|
-
return match ? Number(match[1]) : void 0;
|
|
10950
|
-
}
|
|
10951
|
-
var cached = swr(TTL_MS, (_key, _refresh) => collect());
|
|
10952
|
-
var usage = async (refresh = false) => {
|
|
10953
|
-
return { agents: (await cached("usage", refresh)).map((row) => ({
|
|
10954
|
-
agent: row.agent,
|
|
10955
|
-
plan: row.plan,
|
|
10956
|
-
account: row.account,
|
|
10957
|
-
stale_seconds: staleSeconds(row.source),
|
|
10958
|
-
note: row.stale_reason || row.note,
|
|
10959
|
-
windows: [
|
|
10960
|
-
{
|
|
10961
|
-
window: "5h",
|
|
10962
|
-
used_percent: row.five_h,
|
|
10963
|
-
resets_at: row.five_h_resets
|
|
10964
|
-
},
|
|
10965
|
-
{
|
|
10966
|
-
window: row.seven_d_label || "7d",
|
|
10967
|
-
used_percent: row.seven_d,
|
|
10968
|
-
resets_at: row.seven_d_resets
|
|
10969
|
-
},
|
|
10970
|
-
{
|
|
10971
|
-
window: "fable",
|
|
10972
|
-
used_percent: row.fable,
|
|
10973
|
-
resets_at: row.fable_resets
|
|
10974
|
-
}
|
|
10975
|
-
].filter((w) => w.used_percent != null)
|
|
10976
|
-
})) };
|
|
10977
|
-
};
|
|
10978
|
-
//#endregion
|
|
10979
11003
|
//#region __marko-run__api.usage.js
|
|
10980
11004
|
var getHandler$6 = normalizeHandler(Run.GET({ search: (value) => ({ refresh: "refresh" in value }) }, async (ctx) => Response.json(await usage(ctx.search.refresh))), "GET");
|
|
10981
11005
|
var get28_options = mergeOptions(mware11, getHandler$6);
|
|
@@ -16775,4 +16799,4 @@ server.listen(port, () => {
|
|
|
16775
16799
|
//#endregion
|
|
16776
16800
|
export {};
|
|
16777
16801
|
|
|
16778
|
-
;var __MARKO_MANIFEST__={"
|
|
16802
|
+
;var __MARKO_MANIFEST__={"LH2lXAg":{"block":[2,"stylesheet#/assets/app-page-BO9uc1Ar.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/app-page-BO9uc1Ar.css\"",">"],"defer":[2,"/assets/w-D4raGU5q.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/w-D4raGU5q.js\"","></script>",2,"modulepreload#/assets/_g9lhXp6a.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_g9lhXp6a.js\"",">"]},"ibphXY4":{"block":[2,"stylesheet#/assets/app-page-BO9uc1Ar.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/app-page-BO9uc1Ar.css\"",">"],"defer":[2,"/assets/w._-D4raGU5q.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/w._-D4raGU5q.js\"","></script>",2,"modulepreload#/assets/_g9lhXp6a.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_g9lhXp6a.js\"",">"]},"ZLT8joi":{"block":[2,"stylesheet#/assets/app-page-BO9uc1Ar.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/app-page-BO9uc1Ar.css\"",">"],"defer":[2,"/assets/new-D4raGU5q.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/new-D4raGU5q.js\"","></script>",2,"modulepreload#/assets/_g9lhXp6a.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_g9lhXp6a.js\"",">"]},"T$MNY0k":{"block":[2,"stylesheet#/assets/app-page-BO9uc1Ar.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/app-page-BO9uc1Ar.css\"",">"],"defer":[2,"/assets/w._-DIIfmQC0.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/w._-DIIfmQC0.js\"","></script>",2,"modulepreload#/assets/_g9lhXp6a.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_g9lhXp6a.js\"",">"]},"AA0T2xt":{"block":[2,"stylesheet#/assets/app-page-BO9uc1Ar.css",6,"<link",0," rel=\"stylesheet\" crossorigin href=\"",1,"assets/app-page-BO9uc1Ar.css\"",">"],"defer":[2,"/assets/settings-D4raGU5q.js",6,"<script",0," async type=\"module\" crossorigin src=\"",1,"assets/settings-D4raGU5q.js\"","></script>",2,"modulepreload#/assets/_g9lhXp6a.js",6,"<link",0," rel=\"modulepreload\" crossorigin href=\"",1,"assets/_g9lhXp6a.js\"",">"]}};
|