glimmervoid 0.45.0 → 0.45.1-next.45
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/bin/glimmervoid.js +15 -15
- package/dist/chunks/{adapters-D99c4zCx.js → adapters-BE9BKVW0.js} +24 -24
- package/dist/chunks/{adapters-BGuI5U_-.js → adapters-CPaysZkO.js} +1 -1
- package/dist/chunks/{agent-api-cli-DdrR2vnB.js → agent-api-cli-B0l8uLos.js} +1 -1
- package/dist/chunks/{agent-api-cli-DIGH1v3_.js → agent-api-cli-Bq9J0_D5.js} +148 -15
- package/dist/chunks/{agent-api-core-D49OzKho.js → agent-api-core-ClU9-5K3.js} +9 -3
- package/dist/chunks/{agent-setup-cli-7hG401Io.js → agent-setup-cli-BA_1AdhQ.js} +2 -2
- package/dist/chunks/{contracts-CucdticH.js → build-channel-qgKwNssc.js} +37 -3
- package/dist/chunks/{config-BLeRKmn9.js → config-BqJTnPae.js} +16 -33
- package/dist/chunks/{config-path-core-DFt-TemS.js → config-path-core-DUWk0Lui.js} +5 -1
- package/dist/chunks/config-store-5xpRLHFo.js +1 -0
- package/dist/chunks/{config-store-CXLnauAa.js → config-store-BGTg8oKO.js} +77 -78
- package/dist/chunks/{git-version-C3lznLS_.js → git-version-BpdkKH2j.js} +1 -1
- package/dist/chunks/{grok-Di4aQGre.js → grok-7jK8ZNtf.js} +1 -1
- package/dist/chunks/{json-file-DFCTvPjj.js → json-file-BjFK_eSH.js} +2 -7
- package/dist/chunks/{main-CX9CkTDx.js → main-x9ygUnoL.js} +1030 -988
- package/dist/chunks/{pair-cli-BPyh48--.js → pair-cli-Cph4TZ2R.js} +2 -2
- package/dist/chunks/{remote-config-B0zBDBak.js → remote-config-CmP36r_s.js} +2 -2
- package/dist/chunks/{rtk-resolver-BDHi6RMv.js → rtk-resolver-C_IReILP.js} +1 -1
- package/dist/chunks/rtk-resolver-DgnNb1or.js +1 -0
- package/dist/chunks/{session-CUc6d7aS.js → session-BwlLY_mv.js} +36 -14
- package/dist/chunks/{session-routes--hrsvv7a.js → session-routes-CviNvxcz.js} +9 -1
- package/dist/chunks/{settings-cli-DzIasX94.js → settings-cli-Bete5oVk.js} +11 -10
- package/dist/chunks/{settings-readout-core-BOv6tqdK.js → settings-readout-core-CS8MPaIE.js} +14 -8
- package/dist/chunks/shown-files-core-soMzCQ1D.js +145 -0
- package/dist/chunks/{ssh-sign-cli-C_QYhDvI.js → ssh-sign-cli-DXhuqzuy.js} +2 -2
- package/dist/client/assets/action-status-BwqYb9eF.js +1 -0
- package/dist/client/assets/action-status-BwqYb9eF.js.br +0 -0
- package/dist/client/assets/benchmark-panel-BulIdLtq.js +1 -0
- package/dist/client/assets/benchmark-panel-BulIdLtq.js.br +0 -0
- package/dist/client/assets/card-dom-DkZgkeG9.js +1 -0
- package/dist/client/assets/card-dom-DkZgkeG9.js.br +0 -0
- package/dist/client/assets/control-ws-CAcwW-r9.js +4 -0
- package/dist/client/assets/control-ws-CAcwW-r9.js.br +0 -0
- package/dist/client/assets/dialogs-CCP1ipXD.js +79 -0
- package/dist/client/assets/dialogs-CCP1ipXD.js.br +0 -0
- package/dist/client/assets/dom-helpers-xJduxDcc.js +1 -0
- package/dist/client/assets/dom-helpers-xJduxDcc.js.br +0 -0
- package/dist/client/assets/hooks-panel-BWDeSHtM.js +1 -0
- package/dist/client/assets/hooks-panel-BWDeSHtM.js.br +0 -0
- package/dist/client/assets/index-D6m--U7B.js +84 -0
- package/dist/client/assets/index-D6m--U7B.js.br +0 -0
- package/dist/client/assets/index-DF3BLGk9.css +2 -0
- package/dist/client/assets/index-DF3BLGk9.css.br +0 -0
- package/dist/client/assets/issues-panel-B7Y1Lpyx.js +1 -0
- package/dist/client/assets/issues-panel-B7Y1Lpyx.js.br +0 -0
- package/dist/client/assets/modal-mWl2H7A_.js +1 -0
- package/dist/client/assets/modal-mWl2H7A_.js.br +0 -0
- package/dist/client/assets/plan-face-DpzZfVeG.js +3 -0
- package/dist/client/assets/plan-face-DpzZfVeG.js.br +0 -0
- package/dist/client/assets/{poll-ago-ItO-gOWA.js → poll-ago-Bc-8mMFj.js} +1 -1
- package/dist/client/assets/poll-ago-Bc-8mMFj.js.br +0 -0
- package/dist/client/assets/pr-scope-tabs-DftvVYU8.js +1 -0
- package/dist/client/assets/pr-scope-tabs-DftvVYU8.js.br +0 -0
- package/dist/client/assets/radar-panel-hxjF7m9Z.js +1 -0
- package/dist/client/assets/radar-panel-hxjF7m9Z.js.br +0 -0
- package/dist/client/assets/review-queue-panel-8bP8Q7RR.js +10 -0
- package/dist/client/assets/review-queue-panel-8bP8Q7RR.js.br +0 -0
- package/dist/client/assets/roving-keys-core-BDobx2It.js +1 -0
- package/dist/client/assets/settings-panel-B50lNcrt.js +4 -0
- package/dist/client/assets/settings-panel-B50lNcrt.js.br +0 -0
- package/dist/client/assets/trace-panel-Dy-fgi9c.js +2 -0
- package/dist/client/assets/trace-panel-Dy-fgi9c.js.br +0 -0
- package/dist/client/assets/ui-prefs-CNf6fId2.js +1 -0
- package/dist/client/assets/ui-prefs-CNf6fId2.js.br +0 -0
- package/dist/client/assets/usage-panel-D2JuiQ4G.js +1 -0
- package/dist/client/assets/usage-panel-D2JuiQ4G.js.br +0 -0
- package/dist/client/assets/visions-panel-CI6CRn42.js +1 -0
- package/dist/client/assets/visions-panel-CI6CRn42.js.br +0 -0
- package/dist/client/index.html +14 -8
- package/dist/client/index.html.br +0 -0
- package/dist/server/index.js +99 -1
- package/dist/session/guardrails-open-launcher.js +28 -16
- package/dist/session/visions-relay.js +1 -1
- package/package.json +1 -1
- package/dist/chunks/config-store-DlaaBY9p.js +0 -1
- package/dist/chunks/rtk-resolver-Dr4iJsiS.js +0 -1
- package/dist/client/assets/action-status-DrMQzohk.js +0 -1
- package/dist/client/assets/action-status-DrMQzohk.js.br +0 -0
- package/dist/client/assets/benchmark-panel-D09qvrAY.js +0 -1
- package/dist/client/assets/benchmark-panel-D09qvrAY.js.br +0 -0
- package/dist/client/assets/dom-helpers-CZ8NZKxw.js +0 -4
- package/dist/client/assets/dom-helpers-CZ8NZKxw.js.br +0 -0
- package/dist/client/assets/hooks-panel-R-L7DuIz.js +0 -1
- package/dist/client/assets/hooks-panel-R-L7DuIz.js.br +0 -0
- package/dist/client/assets/index-B7TvZo7W.js +0 -173
- package/dist/client/assets/index-B7TvZo7W.js.br +0 -0
- package/dist/client/assets/index-C3nOrTwM.css +0 -2
- package/dist/client/assets/index-C3nOrTwM.css.br +0 -0
- package/dist/client/assets/issues-panel-CyB4oq9Z.js +0 -1
- package/dist/client/assets/issues-panel-CyB4oq9Z.js.br +0 -0
- package/dist/client/assets/modal-M_mJ8--V.js +0 -1
- package/dist/client/assets/modal-M_mJ8--V.js.br +0 -0
- package/dist/client/assets/poll-ago-ItO-gOWA.js.br +0 -0
- package/dist/client/assets/pr-queue-columns-Cu3-PADL.js +0 -1
- package/dist/client/assets/pr-queue-columns-Cu3-PADL.js.br +0 -0
- package/dist/client/assets/radar-panel-Cl3yPWed.js +0 -1
- package/dist/client/assets/radar-panel-Cl3yPWed.js.br +0 -0
- package/dist/client/assets/review-queue-panel-CVujzadC.js +0 -2
- package/dist/client/assets/review-queue-panel-CVujzadC.js.br +0 -0
- package/dist/client/assets/settings-panel-DW5An8lQ.js +0 -3
- package/dist/client/assets/settings-panel-DW5An8lQ.js.br +0 -0
- package/dist/client/assets/trace-panel-B6TiM5pb.js +0 -1
- package/dist/client/assets/trace-panel-B6TiM5pb.js.br +0 -0
- package/dist/client/assets/ui-prefs-CQHZFVx6.js +0 -1
- package/dist/client/assets/ui-prefs-CQHZFVx6.js.br +0 -0
- package/dist/client/assets/usage-panel-D2RX3LtG.js +0 -1
- package/dist/client/assets/usage-panel-D2RX3LtG.js.br +0 -0
- package/dist/client/assets/visions-panel-BV9EKCBw.js +0 -1
- package/dist/client/assets/visions-panel-BV9EKCBw.js.br +0 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import{H as e,Mt as t,Nt as n,dt as r,ft as i,h as a,m as o,o as s,ut as c}from"./dom-helpers-xJduxDcc.js";import{u as l}from"./control-ws-CAcwW-r9.js";import{i as u,n as d}from"./poll-ago-Bc-8mMFj.js";import{i as f,s as p,t as m}from"./action-status-BwqYb9eF.js";import{n as h,r as g,t as _}from"./modal-mWl2H7A_.js";import{$n as v,Qn as y,Zn as b,Zt as x,_r as S,br as C,er as w,gr as T,mr as E,vr as D,yr as O}from"./index-D6m--U7B.js";var ee=`<h2 class="dialog-title" id="add-session-title">Add Session</h2>
|
|
2
|
+
<fieldset class="dialog-mode-controls" aria-label="Session kind">
|
|
3
|
+
<button type="button" class="dialog-mode-button" id="add-session-single-mode" aria-pressed="true">Single repo</button>
|
|
4
|
+
<button type="button" class="dialog-mode-button" id="add-session-workspace-mode" aria-pressed="false">Workspace</button>
|
|
5
|
+
</fieldset>
|
|
6
|
+
<label class="dialog-label" id="add-session-picker-label">
|
|
7
|
+
Pick a project:
|
|
8
|
+
<select class="dialog-input project-picker" id="add-session-picker">
|
|
9
|
+
<option value="" disabled selected>Scanning...</option>
|
|
10
|
+
</select>
|
|
11
|
+
</label>
|
|
12
|
+
<fieldset class="dialog-workspace-list" id="add-session-workspace-list" aria-label="Workspace repositories" hidden></fieldset>
|
|
13
|
+
<div class="dialog-repo-roots" id="add-session-repo-roots" hidden>
|
|
14
|
+
<p class="dialog-repo-roots-title" id="add-session-repo-roots-title">No repository roots yet</p>
|
|
15
|
+
<p class="dialog-repo-roots-desc">Add the folder that holds your git checkouts. Its repos show up right here.</p>
|
|
16
|
+
</div>
|
|
17
|
+
<label class="dialog-label" id="add-session-agent-label" hidden>
|
|
18
|
+
Agent
|
|
19
|
+
<select class="dialog-input" id="add-session-agent"></select>
|
|
20
|
+
</label>
|
|
21
|
+
<label class="dialog-label" id="add-session-environment-label" hidden>
|
|
22
|
+
Environment
|
|
23
|
+
<select class="dialog-input" id="add-session-environment"></select>
|
|
24
|
+
<span class="dialog-hint" id="add-session-environment-hint" hidden></span>
|
|
25
|
+
</label>
|
|
26
|
+
<div class="dialog-label" id="add-session-agent-login" hidden>
|
|
27
|
+
<span class="dialog-hint" id="add-session-agent-login-text"></span>
|
|
28
|
+
<button type="button" class="btn-dialog btn-dialog-cancel" id="add-session-agent-connect">Connect</button>
|
|
29
|
+
</div>
|
|
30
|
+
<button type="button" class="dialog-advanced-toggle" id="add-session-advanced-toggle" aria-controls="add-session-advanced">Run in a folder outside your repository roots</button>
|
|
31
|
+
<div class="dialog-advanced-panel" id="add-session-advanced" hidden>
|
|
32
|
+
<label class="dialog-label">
|
|
33
|
+
Name
|
|
34
|
+
<input type="text" class="dialog-input" id="add-session-name" placeholder="my-project" autocomplete="off" spellcheck="false">
|
|
35
|
+
</label>
|
|
36
|
+
<label class="dialog-label" id="add-session-path-label">
|
|
37
|
+
Path
|
|
38
|
+
<input type="text" class="dialog-input" id="add-session-path" placeholder="Full path to the project folder" autocomplete="off" spellcheck="false">
|
|
39
|
+
</label>
|
|
40
|
+
</div>
|
|
41
|
+
<label class="dialog-label dialog-checkbox-label" id="add-session-run-in-place-label" hidden>
|
|
42
|
+
<input type="checkbox" class="dialog-checkbox" id="add-session-run-in-place">
|
|
43
|
+
<span>Run in this folder, no worktree</span>
|
|
44
|
+
<span class="dialog-hint">This folder is not a git repository with a commit, so the session cannot get its own worktree. The agent changes the folder itself, and nothing keeps its edits apart from yours. Run git init in it and make a first commit to keep them apart.</span>
|
|
45
|
+
</label>
|
|
46
|
+
<label class="dialog-label dialog-checkbox-label" id="add-session-skip-perms-label">
|
|
47
|
+
<input type="checkbox" class="dialog-checkbox" id="add-session-skip-perms">
|
|
48
|
+
<span>Skip permission prompts</span>
|
|
49
|
+
<span class="dialog-hint">The agent edits files and runs shell commands without asking first, so a bad instruction or a hostile file in the repo can act on this machine unchecked. Leave this off unless you trust the repo and the task.</span>
|
|
50
|
+
</label>
|
|
51
|
+
<label class="dialog-label dialog-checkbox-label" id="add-session-unguarded-label">
|
|
52
|
+
<input type="checkbox" class="dialog-checkbox" id="add-session-unguarded">
|
|
53
|
+
<span>Run without guardrails</span>
|
|
54
|
+
<span class="dialog-hint">Claude Code sessions run with guardrails that block writes to credentials and Glimmervoid's own state and hide credentials and other agents' settings. Turn this on only for work the guardrails cannot serve.</span>
|
|
55
|
+
</label>
|
|
56
|
+
<div class="dialog-error" id="add-session-error"></div>
|
|
57
|
+
<div class="dialog-actions">
|
|
58
|
+
<button type="button" class="btn-dialog btn-dialog-cancel" id="add-session-cancel">Cancel</button>
|
|
59
|
+
<button type="button" class="btn-dialog btn-dialog-confirm" id="add-session-confirm">Add</button>
|
|
60
|
+
</div>
|
|
61
|
+
`,te=`<h2 class="dialog-title" id="agent-connect-title">Connect</h2>
|
|
62
|
+
<p class="dialog-hint" id="agent-connect-intro"></p>
|
|
63
|
+
<p class="dialog-label" id="agent-connect-state" role="status"></p>
|
|
64
|
+
<div class="dialog-label" id="agent-connect-steps" hidden>
|
|
65
|
+
<span>1. Open <a class="dialog-link" id="agent-connect-link" href="about:blank" target="_blank" rel="noopener noreferrer">the sign-in page</a> and sign in.</span>
|
|
66
|
+
<span id="agent-connect-code-row" hidden>2. Enter this code there: <code id="agent-connect-code"></code></span>
|
|
67
|
+
<label class="dialog-label" id="agent-connect-paste-label" hidden>
|
|
68
|
+
2. Paste the code the page shows
|
|
69
|
+
<input type="text" class="dialog-input" id="agent-connect-paste" autocomplete="off" spellcheck="false">
|
|
70
|
+
</label>
|
|
71
|
+
</div>
|
|
72
|
+
<div class="dialog-error" id="agent-connect-error"></div>
|
|
73
|
+
<div class="dialog-actions">
|
|
74
|
+
<button type="button" class="btn-dialog btn-dialog-cancel" id="agent-connect-close">Close</button>
|
|
75
|
+
<button type="button" class="btn-dialog btn-dialog-cancel" id="agent-connect-stop" hidden>Stop sign-in</button>
|
|
76
|
+
<button type="button" class="btn-dialog btn-dialog-confirm" id="agent-connect-submit" hidden>Submit code</button>
|
|
77
|
+
<button type="button" class="btn-dialog btn-dialog-confirm" id="agent-connect-start">Start sign-in</button>
|
|
78
|
+
</div>
|
|
79
|
+
`;function k(e,{value:t,disabled:n=!1,selected:r=!1}={}){let i=s(`option`,null,e);return t!=null&&(i.value=t),n&&(i.disabled=!0),r&&(i.selected=!0),i}function ne(e){return typeof e!=`object`||!e?!1:`skipPermissionsByDefault`in e&&e.skipPermissionsByDefault===!0}function re(e){if(typeof e!=`object`||!e||!(`coderEnvironments`in e))return[];let n=t.safeParse(e.coderEnvironments);return n.success&&n.data?n.data:[]}function ie(e){let t=Object.entries(e.parameters).map(([e,t])=>`${e}=${t}`).join(`, `);return[`Template ${e.template}.`,t?`Parameters: ${t}.`:``,e.hourlyCostUsd===null?``:`Costs $${e.hourlyCostUsd.toFixed(2)} an hour.`,`Stops after ${e.idleStopMinutes} idle minutes.`].filter(Boolean).join(` `)}var A=Object.freeze({"claude-code":`Claude Code`,codex:`Codex`});function ae(e){let t=n.safeParse(e);return t.success?t.data:null}function j(e,t){let n=A[t];return e?e.state===`signed-in`&&e.source===`host`?`${n} uses the login already on this machine.`:e.state===`signed-in`?`${n} uses the login Glimmervoid connected.`:e.state===`connecting`?e.reason??`${n} sign-in is waiting for you.`:e.state===`failed`?e.reason??`${n} sign-in failed.`:`${n} has no login on this machine, so remote ${n} sessions cannot sign in.`:`Checking whether ${n} is signed in.`}function oe(){l(`get-agent-logins`,{},{timeoutMs:m}).then(e=>{e.type===`agent-logins`&&O(e.logins)}).catch(()=>{})}function se(e){let t=A[e],{dialog:n,close:r}=g();n.innerHTML=te,_(n,`agent-connect-title`),o(n,`#agent-connect-title`).textContent=`Connect ${t}`,o(n,`#agent-connect-intro`).textContent=`Glimmervoid signs ${t} in for its own remote sessions and keeps that login in its own folder, apart from any login you already have on this machine. The sign-in runs here and is never recorded.`;let i=o(n,`#agent-connect-state`),s=o(n,`#agent-connect-steps`),c=a(n,`#agent-connect-link`,`a`),u=o(n,`#agent-connect-code-row`),d=o(n,`#agent-connect-code`),f=o(n,`#agent-connect-paste-label`),h=a(n,`#agent-connect-paste`,`input`),v=o(n,`#agent-connect-error`),y=a(n,`#agent-connect-close`,`button`),b=a(n,`#agent-connect-stop`,`button`),x=a(n,`#agent-connect-submit`,`button`),S=a(n,`#agent-connect-start`,`button`);function w(){if(!n.isConnected){E();return}let t=D(e),r=t?.state===`connecting`;i.textContent=j(t,e),S.hidden=r,b.hidden=!r;let a=r?t.verificationUrl:null;s.hidden=a===null,c.href=a??``,c.textContent=a??``,u.hidden=!t?.userCode,d.textContent=t?.userCode??``;let o=r&&t.needsPastedCode;f.hidden=!o,x.hidden=!o}async function T(t,n,r){r.disabled=!0,v.textContent=``;try{let r=await l(t,{agent:e,...n},{timeoutMs:m});if(r.type!==`agent-logins`)return;O(r.logins),r.error&&(v.textContent=r.error)}catch(e){v.textContent=`The server did not answer (${p(e,m)}).`}finally{r.disabled=!1}}S.addEventListener(`click`,()=>{T(`agent-connect`,{action:`start`},S)}),b.addEventListener(`click`,()=>{T(`agent-connect`,{action:`cancel`},b)}),x.addEventListener(`click`,()=>{let e=h.value;h.value=``,T(`agent-connect-code`,{code:e},x)}),h.addEventListener(`keydown`,e=>{e.key===`Enter`&&(e.preventDefault(),x.click())}),y.addEventListener(`click`,r);let E=C(w);w(),oe()}function M(){let{dialog:e,close:t,actions:r,btnCancel:i}=h({title:`Set up a remote host`}),a=s(`p`,`dialog-hint`,`The setup session runs outside the guardrails so it can use your ssh keys. It runs commands on the remote host over ssh and asks before each one. Glimmervoid deletes its working folder when the session ends.`),o=s(`p`,`dialog-label`,`Agent`),c=s(`div`,`hooks-type-row`);c.setAttribute(`role`,`radiogroup`);let u=f(),d=s(`button`,`btn-dialog btn-dialog-confirm`,`Start setup`);d.type=`button`,i.type=`button`,i.addEventListener(`click`,t),r.append(d),e.append(a,o,c,u.element,r);let g=null,_=!1;function v(){if(!e.isConnected){y();return}let t=n.options.filter(e=>D(e)?.state===`signed-in`);(g===null||!t.includes(g))&&(g=t[0]??null),c.replaceChildren(...t.map(e=>{let t=s(`label`,`settings-view-toggle hooks-choice`),n=s(`input`,`settings-view-checkbox`);return n.type=`radio`,n.name=`remote-setup-agent`,n.checked=e===g,n.addEventListener(`change`,()=>{g=e}),t.append(n,s(`span`,null,A[e])),t})),t.length===0&&c.append(s(`span`,``,`Sign in to Claude Code or Codex on this machine first.`)),d.disabled=_||g===null}d.addEventListener(`click`,async()=>{if(g!==null){_=!0,d.disabled=!0,u.show(`busy`,`Starting the setup session.`);try{let e=await l(`start-remote-setup`,{agent:g},{timeoutMs:m});if(e.type===`start-remote-setup-result`&&e.ok){t();return}u.show(`error`,e.type===`start-remote-setup-result`&&e.error?e.error:`The setup session did not start.`)}catch(e){u.show(`error`,`The server did not answer (${p(e,m)}).`)}finally{_=!1,v()}}});let y=C(v);v(),oe()}function ce(){N(null)}function le(e){N(e)}function N(e){let{dialog:t,close:n}=g();t.innerHTML=ee,_(t,`add-session-title`);let r=a(t,`#add-session-picker`,`select`),i=o(t,`#add-session-picker-label`),c=o(t,`#add-session-workspace-list`),u=a(t,`#add-session-single-mode`,`button`),d=a(t,`#add-session-workspace-mode`,`button`),h=o(t,`#add-session-agent-label`),O=a(t,`#add-session-agent`,`select`),te=o(t,`#add-session-environment-label`),A=a(t,`#add-session-environment`,`select`),M=o(t,`#add-session-environment-hint`),ce=o(t,`#add-session-agent-login`),le=o(t,`#add-session-agent-login-text`),N=a(t,`#add-session-agent-connect`,`button`),P=o(t,`#add-session-repo-roots`),ue=o(t,`#add-session-repo-roots-title`),F=a(t,`#add-session-advanced-toggle`,`button`),I=o(t,`#add-session-advanced`),L=a(t,`#add-session-name`,`input`),R=a(t,`#add-session-path`,`input`),de=o(t,`#add-session-path-label`),z=a(t,`#add-session-skip-perms`,`input`),fe=a(t,`#add-session-unguarded`,`input`),pe=o(t,`#add-session-run-in-place-label`),B=a(t,`#add-session-run-in-place`,`input`),V=o(t,`#add-session-error`),me=a(t,`#add-session-cancel`,`button`),H=a(t,`#add-session-confirm`,`button`),U=!1,he=[],W=null,ge=!1;function G(e){U=e,u.setAttribute(`aria-pressed`,String(!e)),d.setAttribute(`aria-pressed`,String(e)),i.hidden=e,c.hidden=!e,F.hidden=e,F.setAttribute(`aria-expanded`,String(e)),I.hidden=!e,de.hidden=e,e&&requestAnimationFrame(()=>L.focus())}u.addEventListener(`click`,()=>G(!1)),d.addEventListener(`click`,()=>G(!0)),F.setAttribute(`aria-expanded`,`false`),F.addEventListener(`click`,()=>{let e=I.hidden;I.hidden=!e,F.setAttribute(`aria-expanded`,String(e)),e&&requestAnimationFrame(()=>L.focus())});let _e=b({onAdded:J});P.append(_e.element);let K=f(`dialog-hint`),q=s(`button`,`btn-dialog btn-dialog-cancel`,`Scan again`);q.type=`button`,q.hidden=!0,q.addEventListener(`click`,()=>{J()});let ve=s(`div`,`flex items-center gap-2`);ve.append(K.element,q),P.before(ve);function ye(e){r.textContent=``,r.appendChild(k(`Scan failed`,{disabled:!0,selected:!0})),c.textContent=``,K.show(`error`,`The project scan failed: ${e}`),q.hidden=!1,q.disabled=!1}function be(e){let t=e.type===`repo-roots-scanned`;ue.textContent=t&&e.directories.length>0?`No projects in your repository roots yet`:`No repository roots yet`,_e.setSuggestions(t?e.suggestions??[]:[]),P.hidden=!1}function J(){return q.disabled=!0,K.show(`busy`,`Scanning your repository roots`),l(`scan-repo-roots`,{includeSuggestions:!0},{timeoutMs:m}).then(e=>{if(e.type===`repo-roots-scanned`&&e.error){ye(e.error);return}K.clear(),q.hidden=!0,r.textContent=``,c.textContent=``,P.hidden=!0,r.appendChild(k(`-- Select a project --`,{value:``,disabled:!0,selected:!0}));let t=!1,n=e.type===`repo-roots-scanned`?e.directories:[];for(let e of n){if(e.projects.length===0)continue;let n=s(`optgroup`);n.label=e.root;for(let r of e.projects){let e=T(r.name),i=e>0?`${r.name} (${e} open)`:r.name,a=r.isGit===!1?`${i} (not a git repo)`:i;n.appendChild(k(a,{value:JSON.stringify({name:r.name,path:r.path,isGit:r.isGit!==!1})})),c.appendChild(x(r.name,r.path)),t=!0}r.appendChild(n)}t||(r.textContent=``,r.appendChild(k(`No projects yet`,{disabled:!0,selected:!0})),c.textContent=`No projects yet.`,be(e))}).catch(e=>{ye(p(e,m))})}J(),r.addEventListener(`change`,()=>{try{let e=JSON.parse(r.value);L.value=S(e.name),R.value=e.path,$(!e.isGit)}catch{}});let Y=y,X=!1;function Z(e){let t=s(`p`,`dialog-hint dialog-hint-warning`,e);return t.setAttribute(`role`,`status`),V.before(t),t}function xe(e){X=!0,H.disabled=!0,Z(e).id=`add-session-agent-guidance`}l(`list-agents`,{},{timeoutMs:m}).then(e=>{let t=v(e);t.canSpawn||xe(t.guidance);let n=w(e.type===`agents-listed`?e.agents:[]);if(Y=n.selectedId,n.show){O.textContent=``;for(let e of n.options)O.appendChild(k(e.label,{value:e.id,selected:e.id===n.selectedId}));h.hidden=!1}}).catch(e=>{Z(`Could not load the agent list (${p(e,m)}), so the session uses the default agent.`)}),O.addEventListener(`change`,()=>{Y=O.value,Q()});function Q(){if(!t.isConnected){Se();return}let e=ae(Y),n=e?D(e):null;ce.hidden=W===null||e===null||n===null||n.state===`signed-in`,le.textContent=e?j(n,e):``}N.addEventListener(`click`,()=>{let e=ae(Y);e&&se(e)});let Se=C(Q);oe();let Ce=!1;z.addEventListener(`change`,()=>{Ce=!0}),l(`get-settings`,{},{timeoutMs:m}).then(e=>{e.type===`settings-error`?Z(`Could not load your settings (${e.message}). Check Skip permissions yourself.`):(we(re(e.settings)),!Ce&&(z.checked=ne(e.settings)))}).catch(e=>{Z(`Could not load your settings (${p(e,m)}). Check Skip permissions yourself.`)});function $(e){ge=e,pe.hidden=!e||W!==null,B.checked=!1}function we(e){if(e.length!==0){he=e,A.textContent=``,A.appendChild(k(`Local`,{value:``,selected:!0}));for(let t of e)A.appendChild(k(t.name,{value:t.name}));te.hidden=!1}}A.addEventListener(`change`,()=>{W=he.find(e=>e.name===A.value)??null,d.hidden=W!==null,M.hidden=W===null,M.textContent=W?ie(W):``,$(ge),Q(),W!==null&&U&&G(!1)}),L.addEventListener(`input`,()=>{r.selectedIndex=0}),R.addEventListener(`input`,()=>{r.selectedIndex=0,$(!1)});function Te(){if(X)return;let e=L.value.trim(),t=R.value.trim();if(U){let t=[...c.querySelectorAll(`input:checked`)].map(e=>e.value);if(!e||t.length<2){V.textContent=`Enter a name and select at least two repositories.`;return}let n={name:S(e),path:t[0],repos:t,dangerouslySkipPermissions:z.checked,unguarded:fe.checked};Y&&Y!==`claude-code`&&(n.agent=Y),Ee(n);return}if(!e||!t){V.textContent=`Both fields are required. Select a project or use Advanced options.`;return}let n={name:S(e),path:t,dangerouslySkipPermissions:z.checked,unguarded:fe.checked,runInPlace:B.checked};Y&&Y!==`claude-code`&&(n.agent=Y),W&&(n.environment=W.name),Ee(n)}function Ee(e){H.disabled=!0,V.textContent=``,l(`add-session`,e,{timeoutMs:m}).then(e=>{e.type===`add-session-result`&&e.ok?n():(V.textContent=E(e),e.type===`add-session-result`&&e.reason===`not-git`&&(pe.hidden=!1))}).catch(e=>{V.textContent=`The session was not added: ${p(e,m)}`}).finally(()=>{H.disabled=X})}me.addEventListener(`click`,n),H.addEventListener(`click`,Te),L.addEventListener(`keydown`,e=>{e.key===`Enter`&&(U&&Te(),U||R.focus())}),R.addEventListener(`keydown`,e=>{e.key===`Enter`&&Te()}),e?(I.hidden=!1,F.setAttribute(`aria-expanded`,`true`),L.value=e.name,R.value=e.path,$(!0),requestAnimationFrame(()=>B.focus())):requestAnimationFrame(()=>r.focus())}function P({issueId:e,issueTitle:t,format:n,content:r,message:i,error:a}){let{dialog:o,close:c,actions:l,btnCancel:u}=h({title:`Investigation report`,dialogClass:`dialog dialog-report`,cancelLabel:`Close`}),d=s(`div`,`dialog-report-meta`,t||e||``),f=null;if(n===`html`&&!a&&!i){let e=s(`iframe`,`dialog-report-frame`);e.setAttribute(`sandbox`,``),e.srcdoc=r||``,f=e}f||=s(`pre`,a?`dialog-report-body dialog-report-error`:`dialog-report-body`,a||i||r||``),o.append(d,f,l),u.addEventListener(`click`,c),requestAnimationFrame(()=>u.focus())}function ue({issueTitle:t,projectLabel:n,onOpenReport:a}){let{dialog:o,close:l,actions:f,btnCancel:p}=h({title:`Investigation`,dialogClass:`dialog dialog-report`,cancelLabel:`Close`}),m=s(`div`,`dialog-report-meta`,n?`${n}: ${t}`:t),g=s(`p`,`dialog-trail-status`),_=s(`p`,`dialog-trail-summary`),v=s(`ol`,`dialog-trail-steps`),y=s(`p`,`dialog-trail-empty`,`No tool calls yet; the session is reading the issue.`),b=s(`button`,`btn-dialog btn-dialog-cancel`,`Open report`);b.type=`button`,b.hidden=!0,b.addEventListener(`click`,()=>{l(),a()}),f.prepend(b),o.append(m,g,_,v,y,f),p.addEventListener(`click`,l),requestAnimationFrame(()=>p.focus());let x=null,S=``;function C(t){let n=v.scrollHeight-v.scrollTop-v.clientHeight<24,r=c(t);if(S!==r){v.textContent=``;for(let n of i(t.steps)){let r=s(`li`,`dialog-trail-step dialog-trail-${n.kind}`),i=n.kind===`note`?n.text:`${n.stepCount} ${n.stepCount===1?`step`:`steps`}`;r.append(s(`span`,`dialog-trail-at`,e(t.startedAt,n.at)),s(`span`,`dialog-trail-detail`,i)),v.append(r)}S=r}y.hidden=t.steps.length>0||!t.inFlight,v.hidden=t.steps.length===0,n&&(v.scrollTop=v.scrollHeight)}function w(e){g.textContent=r(e,d(e.startedAt))}function T(){x&&(w(x),g.dataset.tone=x.inFlight?`live`:`done`,_.textContent=x.summaryLine,_.hidden=!x.summaryLine,b.hidden=x.inFlight||!x.verdict,C(x))}let E=u(()=>{o.isConnected?x?.inFlight&&w(x):E()});return{update(e){x=e,T()},isOpen:()=>o.isConnected,close:()=>{E(),l()}}}export{D as agentLoginOf,j as agentLoginSummary,ce as createAddSessionDialog,ue as createInvestigationDialog,P as createRadarReportDialog,C as onAgentLoginsChanged,le as openAddSessionDialogForFolderWithoutWorktree,se as openAgentConnectDialog,M as openRemoteSetupDialog};
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{_ as e,a as t,c as n,d as r,f as i,g as a,h as o,i as ee,l as s,m as c,n as l,o as u,p as d,r as f,s as p,t as te,u as m,v as h}from"./zod-BRLv4KqJ.js";var ne=m({attempt:s().int().positive(),limit:s().int().positive()}).refine(e=>e.attempt<=e.limit),re={error:c().nullable().optional(),lastRefreshedAt:s().finite().nonnegative().nullable().optional(),incident:c().nullable().optional(),nextAttemptAt:s().finite().nonnegative().nullable().optional(),retry:ne.nullable().optional(),isRefreshing:t().optional(),refreshNotice:c().nullable().optional()},ie=d({lastRefreshedAt:s().finite().nonnegative().nullable(),error:c().nullable()}),ae=m({lane:l([`my-prs`,`team-review`,`issues`])}),oe=m({ok:t(),error:c().optional(),freshness:ie.optional()}),se=/^[A-Za-z0-9][A-Za-z0-9._-]*$/,ce=/^[A-Za-z0-9][A-Za-z0-9._-]*\/[A-Za-z0-9][A-Za-z0-9._-]*$/,le=/^[A-Za-z0-9_=-]+$/,ue=7,de=/^[0-9a-f]{7,40}$/i,fe=/^[0-9a-f]{40}$/;function pe(e,{chars:t=ue,validate:n=!1}={}){if(typeof e!=`string`||!e)return``;if(!n)return e.slice(0,t);let r=e.trim();return de.test(r)?r.slice(0,t).toLowerCase():``}var g=c().regex(fe),me=c().regex(/^[^/]+\/[^/]+$/);m({number:s().int().positive(),title:c(),body:c(),url:c(),author:m({login:c(),is_bot:t().optional()}).passthrough(),state:l([`OPEN`,`CLOSED`,`MERGED`]).optional(),isDraft:t(),isCrossRepository:t(),baseRefName:c(),baseRefOid:g,headRefName:c().optional(),headRefOid:g,additions:s().int().nonnegative(),deletions:s().int().nonnegative(),files:f(m({path:c(),additions:s().int().nonnegative(),deletions:s().int().nonnegative()}).passthrough())}).passthrough();var he=m({path:c(),line:s().int().positive(),side:l([`RIGHT`,`LEFT`]).default(`RIGHT`),body:c()}),ge=Object.freeze({STAMP:`APPROVE`,COMMENT:`APPROVE WITH NITS`,NEEDS_YOU:`REQUEST CHANGES`}),_e=l([`APPROVE`,`APPROVE WITH NITS`,`REQUEST CHANGES`,`BLOCKED`]),ve=r(e=>typeof e==`string`&&Object.hasOwn(ge,e)?ge[e]:e,_e),ye=l([`CRITICAL`,`HIGH`,`MEDIUM`,`LOW`]),be=m({line:s().int().positive().nullable(),kind:l([`add`,`del`,`context`]),text:c()}),xe=he.extend({severity:ye.optional(),excerpt:f(be).max(9).optional()}),Se=m({path:c().min(1),line:s().int().positive().nullable(),side:l([`RIGHT`,`LEFT`]),severity:ye,reviewer:c().min(1),disposition:l([`ACTIONABLE`,`NIT`,`AMBIGUOUS`]).nullable(),body:c().min(1)}),Ce=m({text:c().min(1),paths:f(c()),isFallback:t().default(!1)}),we=m({goal:c().default(``),change:c(),checked:f(c()),gaps:f(c()),handChecks:f(Ce).default([])});m({verdict:_e,head:g,summary:c(),assessment:we.nullable(),findings:f(Se)}),m({body:c(),commit_id:g,comments:f(m({path:c().min(1),line:s().int().positive(),side:l([`RIGHT`,`LEFT`]).default(`RIGHT`),body:c().min(1)}))});var Te=l([`APPROVE`,`COMMENT`,`REQUEST_CHANGES`]),Ee=l([`APPROVED`,`CHANGES_REQUESTED`,`COMMENTED`]),De=new Set([`APPROVED`,`CHANGES_REQUESTED`]),Oe=l([`APPROVED`,`CHANGES_REQUESTED`,`REVIEW_REQUIRED`]),ke=l([`SUCCESS`,`FAILURE`,`PENDING`,`ERROR`,`EXPECTED`]),Ae={requestSource:l([`direct`,`team`]).default(`team`),isDraft:t().optional(),checksState:ke.nullable().optional()},je=m({login:c().min(1),state:Ee,commit:g.nullable(),isViewer:t(),submittedAt:c().nullable().optional()});function Me(e,t){return e||(t.includes(`CHANGES_REQUESTED`)?`CHANGES_REQUESTED`:t.includes(`APPROVED`)?`APPROVED`:`REVIEW_REQUIRED`)}function Ne(e){return e.reviewDecision!==`APPROVED`||e.requeuedHead!==void 0&&e.requeuedHead===(e.liveHead??e.reviewedHead)?!1:(e.githubReviews??[]).some(e=>e.isViewer&&e.state===`APPROVED`)}var Pe=m({head:g,base:g.optional(),verdict:_e,summary:c(),body:c(),comments:f(he),wasPosted:t()}),Fe=Pe.pick({head:!0,verdict:!0,summary:!0,wasPosted:!0}).extend({comments:f(xe)}),Ie=c().min(1).max(256).regex(le),Le=m({addressed:t(),reason:c().trim().min(1).max(4e3)}).strict(),Re=m({id:Ie,path:c(),line:s().int().positive().nullable(),isResolved:t(),viewerCanResolve:t(),comments:m({pageInfo:m({hasNextPage:t(),endCursor:c().nullable().optional()}),nodes:f(m({body:c(),author:m({login:c()}).nullable(),viewerDidAuthor:t(),createdAt:c().datetime(),url:c().url(),originalCommit:m({oid:g}).nullable()}))})});m({data:m({node:m({comments:Re.shape.comments}).nullable()}).nullable()}),m({pullRequest:m({reviewThreads:m({pageInfo:m({hasNextPage:t(),endCursor:c().nullable().optional()}),nodes:f(Re)})}).nullable()}),m({data:m({resolveReviewThread:m({thread:m({id:Ie,isResolved:p(!0)})})}).nullable(),errors:f(e()).optional()});var ze=m({id:Ie,path:c(),line:s().int().positive().nullable(),isResolved:t(),viewerCanResolve:t(),isNit:t(),url:c().url(),viewerComment:c().max(1500).optional(),lastReplyBody:c().max(1500).optional(),viewerCommentTruncated:t().optional(),lastReplyTruncated:t().optional(),lastReplyAuthor:c(),lastReplyAt:c().datetime(),judgement:Le.extend({head:g,judgedAt:s().finite(),lastReplyAt:c().datetime()}).optional(),resolveError:c().optional(),resolveAttemptReplyAt:c().optional(),judgeAttempt:m({head:g,lastReplyAt:c(),retryAt:s().finite()}).optional(),unjudgeable:m({head:g,lastReplyAt:c(),reason:c().min(1)}).optional()});m({merge_base_commit:m({sha:g}),files:f(m({filename:c(),previous_filename:c().optional(),patch:c().optional()})).max(300)});var Be=m({total:s().int().nonnegative(),resolved:s().int().nonnegative()}),Ve=m({...Ae,key:c(),repo:me,number:s().int().positive(),title:c(),url:c(),author:c(),tier:l([`stamp`,`full`]),reasons:f(c()),reviewedHead:g,reviewedBase:g.optional(),verdict:ve,summary:c(),assessment:we.optional(),body:c(),comments:f(xe),status:l([`ready`,`stale`,`posted`,`discarded`,`error`]),error:c().optional(),threads:f(ze).optional(),viewerThreads:Be.optional(),githubReviews:f(je).optional(),reviewDecision:Oe.nullable().optional(),liveHead:g.optional(),prCreatedAt:c().optional(),reviewedAt:s().finite().optional(),postedAt:s().finite().optional(),postedEvent:Te.optional(),priorReviewedHead:g.optional(),requeuedHead:g.optional(),earlierReview:Fe.optional()});function He(e){return e.status===`posted`&&e.postedEvent===`COMMENT`}var Ue=l([`approve`,`approve-only`,`comment`,`request-changes`,`discard`,`requeue`,`resolve-thread`]);function We(e){return e.action===`discard`||e.head!==void 0}var Ge=m({key:c().min(1),head:g.optional(),action:Ue,threadId:Ie.optional(),body:c(),comments:f(he)}).refine(e=>e.action!==`resolve-thread`||e.threadId!==void 0,{message:`resolve-thread requires threadId`,path:[`threadId`]}).refine(We,{message:`only discard may omit head`,path:[`head`]}),Ke=m({key:c(),ok:t(),error:c().optional(),warning:c().optional()}),qe=m({sessionId:c().min(1),workDir:c().min(1),worktreePath:c().min(1),head:g,deadlineAt:s(),remainingAwakeMs:s().nonnegative().optional(),savedAt:s()}),Je=m({...Ae,reviewDecision:Oe.nullable().optional(),key:c(),repo:me,number:s().int().positive(),title:c(),url:c(),author:c(),prCreatedAt:c().optional()}),Ye=m({draft:Ve.nullable(),reviewedHead:g.nullable(),inFlight:t(),reviewAttempts:s().int().nonnegative().default(0),resumable:qe.nullable().optional(),reviewedAt:s().optional(),threads:f(ze).optional(),viewerThreads:Be.optional(),autoResolvedThreadIds:f(Ie).optional(),githubReviews:f(je).optional(),reviewDecision:Oe.nullable().optional(),liveHead:g.optional(),requeuedHead:g.optional(),priorReview:Pe.optional(),discardedReviewHead:g.optional(),requestedAt:s().finite().optional(),updatedAt:s().finite()});i(c(),Ye);var Xe=l([`preparing`,`checkout`,`reviewing`]),Ze=m({at:s().finite(),tool:c(),detail:c()}),Qe=m({...Ae,reviewDecision:Oe.nullable().optional(),key:c(),repo:me,number:s().int().positive(),title:c(),url:c(),author:c(),tier:l([`stamp`,`full`]),reasons:f(c()),head:g,phase:Xe,startedAt:s().finite(),deadlineAt:s().finite().nullable(),toolCalls:s().int().nonnegative(),recentSteps:f(Ze),prCreatedAt:c().optional(),priorReviewedHead:g.optional()}),$e=m({...re,type:p(`team-review-status`),ts:s().finite(),configured:t(),reason:c().nullable().optional(),drafts:f(Ve),inFlight:f(Qe),queued:f(Je).default([]),team:m({org:c(),slug:c(),name:c(),avatarUrl:c()}).nullable().optional()}).passthrough(),et=l([`merged`,`draft`,`conflicts`,`behind`,`checks-failing`,`changes-requested`,`unresolved-threads`,`checks-pending`,`needs-approval`,`ready`,`unknown`]),_=s().int().nonnegative(),v=c().regex(ce),tt=c().regex(/^[1-9][0-9]*$/),nt=o([v,`#`,tt]),rt=o([nt,`@`,g]),y=c().refine(e=>nt.safeParse(e).success),it=c().refine(e=>rt.safeParse(e).success);u(`outcome`,[d({outcome:p(`pushed`)}),d({outcome:l([`no-change`,`failed`,`stopped`,`timed-out`]),reason:c().min(1)})]);var at=d({outcome:l([`pushed`,`no-change`,`failed`,`stopped`,`timed-out`]),reason:c().min(1).optional(),at:s().finite()}),ot=at.extend({key:y,headRefOid:g,baseRefOid:g,consecutiveAttempts:s().int().min(1).optional()});d({keepMergeableKeys:f(y),keepMergeableAttemptKeys:f(it),keepMergeableAttempts:f(ot).default([]),mergeQueueKeys:f(y).default([]),keepMergeablePushedHeadKeys:f(it).default([])});var st=d({repo:v,number:s().int().positive(),url:h(),source:l([`hook`,`sha`,`manual`]),linkedAt:s().finite()}),ct=d({links:f(st).max(20),unlinkedKeys:f(y).default([])}),lt=m({repo:v,number:s().int().positive(),keepMergeable:t()}),ut=m({key:c(),ok:t(),error:c().optional()}),dt=ut,ft=m({repo:v,number:s().int().positive(),mergeWhenReady:t()}),pt=ut,mt=l([`MERGE`,`SQUASH`,`REBASE`]),ht=m({path:c(),line:s().int().positive().nullable(),isOutdated:t(),url:h(),author:c().nullable(),excerpt:c(),commentCount:s().int().positive(),lastAuthor:c().nullable(),lastActivityAt:c()}),gt=m({reviewer:c().nullable(),state:c(),submittedAt:c().nullable()}),_t=m({outcome:l([`rebased`,`failed`]),at:s().finite(),message:c()}),vt=m({at:s().finite(),message:c()}),b=m({key:c(),repo:v,number:s().int().positive(),title:c(),url:h(),isDraft:t(),state:l([`OPEN`,`MERGED`,`CLOSED`]),createdAt:c(),mergedAt:c().nullable(),updatedAt:c(),baseRefName:c(),baseRefOid:g,headRefName:c().min(1),isCrossRepository:t(),headRefOid:g,isInMergeQueue:t(),mergeMethod:mt,mergeable:l([`MERGEABLE`,`CONFLICTING`,`UNKNOWN`]),mergeStateStatus:c(),reviewDecision:l([`APPROVED`,`CHANGES_REQUESTED`,`REVIEW_REQUIRED`]).nullable(),checks:m({state:l([`SUCCESS`,`FAILURE`,`PENDING`,`ERROR`,`EXPECTED`]).nullable(),failing:f(c()),pendingCount:_}),unresolvedThreads:_,threads:f(ht),behindBy:_.nullable(),reviewRequests:f(m({name:c(),isTeam:t(),avatarUrl:c().nullable()})),approvals:_,reviews:f(gt),stage:et,autoRebase:_t.optional(),keepMergeable:t().optional(),keepMergeableAttempt:at.optional(),isKeepMergeableFixInFlight:t().optional(),mergeQueuePosition:s().int().positive().nullable().optional(),isMergeQueueHeldForRepairPush:t().optional(),mergeQueueFailure:vt.optional()}).refine(e=>e.key===`${e.repo}#${e.number}`),yt=d({key:y,autoRebase:b.shape.autoRebase,keepMergeable:b.shape.keepMergeable,keepMergeableAttempt:b.shape.keepMergeableAttempt,isKeepMergeableFixInFlight:b.shape.isKeepMergeableFixInFlight,mergeQueuePosition:b.shape.mergeQueuePosition,isMergeQueueHeldForRepairPush:b.shape.isMergeQueueHeldForRepairPush,mergeQueueFailure:b.shape.mergeQueueFailure}),bt=m({...re,type:p(`my-prs-status`),ts:s().finite(),configured:t(),reason:c().nullable().optional(),viewer:c().nullable(),prs:f(yt),truncatedNote:c().nullable().optional(),isKeepMergeableEnabled:t().optional(),isMergeQueueEnabled:t().optional()}).passthrough();bt.extend({prs:f(b)});var xt=m({repo:v,number:s().int().positive(),headRefOid:g}),St=l([`merged`,`queued`,`auto-merge`,`unconfirmed`]),Ct=m({key:c(),ok:t(),kind:St.optional(),error:c().optional()}),wt=m({__typename:p(`CheckRun`),name:c(),conclusion:c().nullable(),status:c(),startedAt:c().nullish(),checkSuite:m({app:m({databaseId:s().int().nullish()}).nullish(),workflowRun:m({workflow:m({databaseId:s().int().nullish()})}).nullish()}).nullish()}),Tt=m({__typename:p(`StatusContext`),context:c(),state:c()}),Et=a([wt,Tt]),Dt=m({hasNextPage:t(),endCursor:c().nullable()}),x=m({__typename:p(`PullRequest`),id:c().regex(le),number:s().int().positive(),title:c(),url:h(),isDraft:t(),state:l([`OPEN`,`MERGED`,`CLOSED`]),createdAt:c(),mergedAt:c().nullable(),updatedAt:c(),baseRefName:c(),baseRefOid:g,headRefName:c().min(1),isCrossRepository:t(),headRefOid:g,isInMergeQueue:t(),mergeable:l([`MERGEABLE`,`CONFLICTING`,`UNKNOWN`]),mergeStateStatus:c(),reviewDecision:l([`APPROVED`,`CHANGES_REQUESTED`,`REVIEW_REQUIRED`]).nullable(),repository:m({nameWithOwner:v,viewerDefaultMergeMethod:mt}),commits:m({nodes:f(m({commit:m({statusCheckRollup:m({id:c().regex(le).optional(),state:l([`SUCCESS`,`FAILURE`,`PENDING`,`ERROR`,`EXPECTED`]).nullable(),contexts:m({pageInfo:Dt.optional(),nodes:f(Et)})}).nullable()})}))}),reviewThreads:m({pageInfo:m({hasNextPage:t()}),nodes:f(m({isResolved:t()}))}),reviewRequests:m({nodes:f(m({requestedReviewer:u(`__typename`,[m({__typename:p(`User`),login:c()}),m({__typename:p(`Team`),slug:c(),avatarUrl:c().nullable(),organization:m({login:c()})}),m({__typename:l([`Bot`,`Mannequin`])})]).nullable()}))}),latestOpinionatedReviews:m({nodes:f(m({state:c()}))}),latestReviews:m({nodes:f(m({state:c(),submittedAt:c().nullable(),author:m({login:c()}).nullable()}))})}),Ot=m({login:c()}).nullable();m({isResolved:t(),isOutdated:t(),path:c(),line:s().int().positive().nullable(),firstComment:m({totalCount:_,nodes:f(m({author:Ot,bodyText:c(),url:h(),createdAt:c()}))}),lastComment:m({nodes:f(m({author:Ot,createdAt:c()}))})}),m({data:m({repository:m({pullRequest:m({reviewThreads:m({pageInfo:m({hasNextPage:t(),endCursor:c().nullable()}),nodes:f(e())})}).nullable()}).nullable()}),errors:f(e()).optional()}),m({data:m({node:m({contexts:m({pageInfo:Dt,nodes:f(e())}).nullable()}).nullable()}).nullable(),errors:f(e()).optional()}),m({data:m({repository:m({pullRequest:m({state:c(),isInMergeQueue:t(),autoMergeRequest:m({enabledAt:c().nullable()}).nullable()}).nullable()}).nullable()}),errors:f(e()).optional()}),m({data:m({open:m({issueCount:_,nodes:f(e())}),merged:m({issueCount:_,nodes:f(e())})}),errors:f(e()).optional()});var S=Object.freeze({min:0,exclusiveMin:!0,label:`a positive number`}),kt=Object.freeze({min:0,label:`zero or more`}),At=Object.freeze({min:0,max:300}),jt=Object.freeze({min:1,max:60}),Mt=Object.freeze({min:.5,max:2}),Nt=Object.freeze({flyingAnimalsMinGapSeconds:20,flyingAnimalsMaxGapSeconds:40,flyingAnimalsMinDurationSeconds:6.9,flyingAnimalsMaxDurationSeconds:11.5,flyingAnimalsScale:1,flyingAnimalsOnPhone:!0}),Pt=Object.freeze({min:64,max:16384}),Ft=Object.freeze({min:0,max:65536}),It=Object.freeze({min:0,max:65535}),Lt=Object.freeze({min:0,exclusiveMin:!0,max:2147483647/1e3}),Rt=S,zt=S,Bt=S,Vt=kt,Ht=S,Ut=S,Wt=S,Gt=S,Kt=S,qt=S,Jt=S,Yt=Object.freeze({min:60,max:21600,label:`between 60 and 21600`}),Xt=Object.freeze({min:1,label:`at least 1`}),Zt=Object.freeze({min:1,label:`at least 1`}),Qt=kt,$t=Object.freeze({min:1,max:30,label:`between 1 and 30`}),en=Object.freeze({min:1,max:1440}),tn=Object.freeze({min:1,max:3650}),nn=Object.freeze({min:30,max:3650}),rn=Object.freeze({min:1,max:24}),an=S,on=Object.freeze({scanIntervalMinutes:en,retainDays:tn,warehouseRetainDays:nn,sessionBlockHours:rn}),sn=Object.freeze({min:5,max:120}),cn=Object.freeze({min:1,max:5}),ln=Object.freeze({min:1,max:50});Object.freeze({NON_NEGATIVE_NUMBER_RANGE:kt,FLYING_ANIMALS_GAP_RANGE:At,FLYING_ANIMALS_DURATION_RANGE:jt,FLYING_ANIMALS_SCALE_RANGE:Mt,KEEP_MERGEABLE_TIMEOUT_MINUTES_RANGE:sn,PORT_RANGE:It,POSTHOG_ESCALATION_RANGE:Jt,POSTHOG_FIX_TIMEOUT_RANGE:Yt,POSTHOG_INTERVAL_RANGE:Wt,POSTHOG_INVESTIGATION_TIMEOUT_RANGE:Kt,POSTHOG_MAX_CONCURRENT_RANGE:Gt,POSTHOG_MIN_USERS_RANGE:qt,POSTHOG_TRAFFIC_BASELINE_RANGE:$t,POSTHOG_TRAFFIC_COOLDOWN_RANGE:Qt,POSTHOG_TRAFFIC_MIN_USERS_RANGE:Zt,POSTHOG_TRAFFIC_MULTIPLIER_RANGE:Xt,REPLAY_BUFFER_KB_RANGE:Pt,MEMORY_RESERVE_MB_RANGE:Ft,TASK_TITLE_TIMEOUT_RANGE:Lt,USAGE_BUDGET_RANGE:an,USAGE_RETAIN_DAYS_RANGE:tn,USAGE_SCAN_INTERVAL_RANGE:en,VISIONS_ACTIVITY_MAX_PER_HOUR_RANGE:Vt,VISIONS_COOLDOWN_MS_RANGE:zt,VISIONS_DISPATCH_TIMEOUT_RANGE:Ht,VISIONS_INTENT_THREAD_TTL_MS_RANGE:Ut,VISIONS_MAX_PER_HOUR_RANGE:Bt,VISIONS_QUIET_MS_RANGE:Rt,WORKFLOWS_MAX_ACTIONS_PER_POLL_RANGE:ln,WORKFLOWS_MAX_CONCURRENT_SESSIONS_RANGE:cn});var un=Object.freeze([`opened`,`checks-failed`,`review-requested`,`approved`,`commented`,`merged`]),dn=Object.freeze([`notify`,`spawn`,`label`,`comment`]),fn=2e4,pn=65536,mn=50,hn=/^[a-z0-9][a-z0-9-]{0,63}$/,gn=/[\x00-\x1f\x7f,]|^-/,_n=(e,t)=>{let n=`${e} must be an integer between ${t.min} and ${t.max}`;return s({error:n}).int({error:n}).min(t.min,{error:n}).max(t.max,{error:n})},vn=t({error:`workflows.enabled must be a boolean`}),yn=_n(`workflows.maxConcurrentSessions`,cn),bn=_n(`workflows.maxActionsPerPoll`,ln),C=(e,t)=>f(t,{error:`${e} must be an array`}).min(1,{error:`${e} must list at least one entry when present`}),xn=c({error:`a workflow label name must be a string`}).trim().min(1,{error:`a workflow label name must not be empty`}).max(mn,{error:`a workflow label name must be at most ${mn} characters`}).refine(e=>!gn.test(e),{error:`a workflow label name must not start with a dash or hold a comma or control character`}),Sn=c({error:`a workflow comment body must be a string`}).min(1,{error:`a workflow comment body must not be empty`}).max(pn,{error:`a workflow comment body must be at most ${pn} characters`}).refine(e=>e.trim().length>0,{error:`a workflow comment body must not be blank`}),Cn=l(un,{error:`workflows.rules[].trigger must be one of ${un.join(`, `)}`}),wn=u(`type`,[d({type:p(`notify`)}),d({type:p(`spawn`),promptTemplate:c({error:`a spawn action needs a promptTemplate string`}).min(1,{error:`a spawn action promptTemplate must not be empty`}).max(fn,{error:`a spawn action promptTemplate must be at most ${fn} characters`}).refine(e=>e.trim().length>0,{error:`a spawn action promptTemplate must not be blank`})}),d({type:p(`label`),name:xn}),d({type:p(`comment`),body:Sn})],{error:`workflows.rules[].actions[].type must be one of ${dn.join(`, `)}`}),Tn=d({mine:t({error:`workflows.rules[].filters.mine must be a boolean`}).optional(),teamReviewRequested:t({error:`workflows.rules[].filters.teamReviewRequested must be a boolean`}).optional(),authors:C(`workflows.rules[].filters.authors`,c({error:`workflows.rules[].filters.authors must hold GitHub logins`}).regex(se,{error:`workflows.rules[].filters.authors must hold GitHub logins`})).optional(),labels:C(`workflows.rules[].filters.labels`,xn).optional(),baseBranches:C(`workflows.rules[].filters.baseBranches`,c({error:`workflows.rules[].filters.baseBranches must hold branch names`}).min(1,{error:`workflows.rules[].filters.baseBranches must hold branch names`})).optional()},{error:`workflows.rules[].filters must be an object`}),En=c({error:`workflows.rules[].id must be a string`}).regex(hn,{error:`workflows.rules[].id must be 1 to 64 lowercase letters, digits and dashes, starting with a letter or digit`}),Dn=t({error:`workflows.rules[].enabled must be a boolean`}),On=d({id:En,name:c({error:`workflows.rules[].name must be a string`}).trim().min(1,{error:`workflows.rules[].name must not be empty`}).max(80,{error:`workflows.rules[].name must be at most 80 characters`}),enabled:Dn.default(!1),repos:C(`workflows.rules[].repos`,v),filters:Tn.default({}),trigger:Cn,actions:C(`workflows.rules[].actions`,wn)},{error:`workflows.rules[] must be an object`}),kn=d({enabled:vn.default(!0),maxConcurrentSessions:yn.default(2),maxActionsPerPoll:bn.default(20),rules:f(On,{error:`workflows.rules must be an array`}).default([])},{error:`workflows must be an object`}).superRefine((e,t)=>{let n=new Set;for(let[r,i]of e.rules.entries())n.has(i.id)?t.addIssue({code:`custom`,path:[`rules`,r,`id`],message:`workflows.rules[${r}].id "${i.id}" is declared more than once`}):n.add(i.id)}),An=d({id:En,enabled:Dn},{error:`a dashboard update of workflows.rules[] carries only id and enabled`});d({enabled:vn.optional(),maxConcurrentSessions:yn.optional(),maxActionsPerPoll:bn.optional(),rules:f(An,{error:`workflows.rules must be an array`}).optional()},{error:`a dashboard update of workflows carries only enabled, maxConcurrentSessions, maxActionsPerPoll and rule toggles`});var jn=s().int().nonnegative(),Mn=l([`SUCCESS`,`FAILURE`,`PENDING`,`ERROR`,`EXPECTED`]).nullable(),Nn=x.extend({author:m({login:c()}).nullable(),labels:m({nodes:f(m({name:c()}))}),comments:m({totalCount:jn})}),Pn=d({repo:v,number:s().int().positive(),title:c(),url:h(),author:c().nullable(),state:l([`OPEN`,`MERGED`,`CLOSED`]),createdAt:c(),mergedAt:c().nullable(),isDraft:t(),isCrossRepository:t(),baseRefName:c(),headRefName:c().min(1),headRefOid:g,labels:f(c()),commentCount:jn,reviewRequests:f(c()),checksState:Mn,reviewDecision:l([`APPROVED`,`CHANGES_REQUESTED`,`REVIEW_REQUIRED`]).nullable()}),Fn=d({polledAtMs:jn,prs:f(Pn)});d({repos:i(c().regex(/^[a-z0-9][a-z0-9._-]*\/[a-z0-9][a-z0-9._-]*$/),Fn)});var In=c().refine(e=>nt.safeParse(e).success&&e===e.toLowerCase()&&Number.isSafeInteger(Number(e.slice(e.lastIndexOf(`#`)+1))));function Ln(e){return`${e.repo}#${e.number}`.toLowerCase()}m({repository:x.shape.repository.pick({nameWithOwner:!0}),number:x.shape.number,updatedAt:x.shape.updatedAt,headRefOid:x.shape.headRefOid,state:x.shape.state,commits:m({nodes:f(m({commit:m({statusCheckRollup:m({state:b.shape.checks.shape.state}).nullable()})}))}),reviewDecision:x.shape.reviewDecision,mergeable:x.shape.mergeable}),x.extend({author:Nn.shape.author.unwrap().extend({__typename:c().optional()}).nullable(),labels:Nn.shape.labels,comments:Nn.shape.comments,latestReviews:m({nodes:f(x.shape.latestReviews.shape.nodes.element.extend({commit:m({oid:c()}).nullable().optional()}))}),writerOpinionatedReviews:x.shape.latestOpinionatedReviews.optional()});var Rn=d({key:In,id:x.shape.id,repo:b.shape.repo,number:b.shape.number,title:b.shape.title,url:b.shape.url,author:Pn.shape.author,isAuthorBot:t(),labels:Pn.shape.labels,commentCount:Pn.shape.commentCount,isDraft:b.shape.isDraft,state:b.shape.state,createdAt:b.shape.createdAt,mergedAt:b.shape.mergedAt,updatedAt:b.shape.updatedAt,baseRefName:b.shape.baseRefName,baseRefOid:b.shape.baseRefOid,headRefName:b.shape.headRefName,headRefOid:b.shape.headRefOid,isCrossRepository:b.shape.isCrossRepository,isInMergeQueue:b.shape.isInMergeQueue,mergeMethod:b.shape.mergeMethod,mergeable:b.shape.mergeable,mergeStateStatus:b.shape.mergeStateStatus,reviewDecision:Oe.nullable(),checks:b.shape.checks.strict(),rollupState:ke.nullable(),unresolvedThreads:b.shape.unresolvedThreads,threads:f(b.shape.threads.element.strict()),behindBy:b.shape.behindBy,reviewRequests:f(b.shape.reviewRequests.element.strict()),approvals:b.shape.approvals,reviews:f(b.shape.reviews.element.extend({commit:g.nullable()}).strict()),opinionatedWriterReviewStates:f(c())}).refine(e=>e.key===Ln(e)),zn=n({type:p(`github-prs`),ts:s().finite().nonnegative(),prs:i(In,Rn).refine(e=>Object.entries(e).every(([e,t])=>e===t.key)),freshness:ie}),w=c().regex(ce),Bn=c().regex(RegExp(`${ce.source.slice(0,-1)}#[1-9][0-9]*$`)),Vn=m({number:s().int().positive(),url:c().url(),title:c(),state:l([`open`,`draft`,`merged`,`closed`])});m({issue:m({closedByPullRequestsReferences:m({nodes:f(m({number:Vn.shape.number,url:Vn.shape.url,title:Vn.shape.title,state:l([`OPEN`,`MERGED`,`CLOSED`]),isDraft:t()}).nullable()).max(5)})}).nullable()});function Hn({state:e,isDraft:t}){return e===`OPEN`?t?`draft`:`open`:e===`MERGED`?`merged`:`closed`}var T={key:c(),repo:w,number:s().int().positive(),title:c(),url:c().url(),labels:f(c()),assignees:f(c()),author:c(),comments:s().int().nonnegative(),createdAt:te(),updatedAt:te()},Un=l([`project`,`me`,`team`]),Wn={...T,sources:f(Un).nonempty().refine(e=>new Set(e).size===e.length),teams:f(w),projectId:c().nullable(),pullRequests:f(Vn).max(5).default([])},Gn=m(Wn).refine(e=>e.key===`${e.repo}#${e.number}`),Kn=m({...Wn,sessionId:c().nullable().default(null)}).refine(e=>e.key===`${e.repo}#${e.number}`),qn=m({...T,state:l([`open`,`closed`])});m({number:T.number,title:T.title,html_url:T.url,state:l([`open`,`closed`]),labels:f(a([c(),m({name:c()})])),assignees:f(m({login:c()})),user:m({login:c()}).nullable(),comments:T.comments,created_at:T.createdAt,updated_at:T.updatedAt,repository_url:c().url().optional(),pull_request:e().optional()}),m({items:f(e()),total_count:s().int().nonnegative(),incomplete_results:t()}),m({ok:t(),items:f(qn),isComplete:t(),error:c()}),m({issues:f(Gn),lastSyncAt:s().finite().nonnegative().nullable(),perRepoSync:i(w,m({lastSyncAt:s().finite().nonnegative().nullable(),ticks:s().int().nonnegative(),needsFullReconcile:t()})),sessionLinks:i(Bn,c()).default({}),pullRequestsFetchedAt:i(Bn,te()).default({})});var Jn=m({type:p(`issues-status`),ts:s().finite(),configured:t(),reason:c().nullable(),lastSyncAt:s().finite().nonnegative().nullable(),issues:f(Kn),...re}).passthrough(),Yn=2e4,Xn=4e3,Zn=524288,Qn=1e4,$n=`ExitPlanMode`,er=4096,tr=/^ {0,3}(#{1,6})[ \t]+(.*)$/;function nr(e){let t=e.trimEnd(),n=t.length;for(;n>0&&t[n-1]===`#`;)n--;if(n===t.length||n===0)return t;let r=t[n-1];return r!==` `&&r!==` `?t:t.slice(0,n).trimEnd()}function rr(e,{overlongLine:t}){if(t===`reject`&&e.length>4096)return null;let n=tr.exec(e.slice(0,er));return n?{level:n[1].length,text:nr(n[2])}:null}var ir=m({plan:c().min(1),planFilePath:c().min(1),agent_id:c().min(1).optional(),agent_type:c().min(1).optional()}).passthrough();m({tool_name:p($n),tool_input:ir,agent_id:c().min(1).optional(),agent_type:c().min(1).optional()}).passthrough(),m({plan:c(),planFilePath:c(),agentId:c().nullable(),agentType:c().nullable()}).extend({sessionId:c().min(1),revision:s().int().positive(),receivedAt:s().finite()});var ar=Object.freeze([`open`,`released`,`decided`,`closed`]),or=l(ar),sr=Object.freeze([`approve`,`approve-accept-edits`,`revise`,`terminal`]),cr=l(sr),lr=m({heading:c().max(Xn).nullable(),comment:c().min(1).max(Xn)}),ur=m({id:c().min(1),agentId:c().nullable(),revision:s().int().positive(),decision:cr,feedback:c().max(Yn).optional(),comments:f(lr).max(40).optional(),plan:c().min(1).max(Zn).optional()}),dr=m({revision:s().int().positive(),receivedAt:s().finite(),chars:s().int().nonnegative(),title:c()}),fr=m({revision:s().int().positive(),since:s().finite()}),pr=m({agentId:c().nullable(),agentType:c().nullable(),revisions:f(dr),state:or,openRevision:fr.nullable(),approvedRevision:s().int().positive().nullable(),lastDecision:cr.nullable()});m({reviews:f(pr)});var mr=m({agentId:c().nullable(),revision:s().int().nonnegative(),plan:c(),planFilePath:c(),receivedAt:s().finite()}),hr=m({id:c(),agentId:c().nullable(),agentType:c().nullable(),revision:s().int().positive(),receivedAt:s().finite(),state:or,lastDecision:cr.nullable(),approvedRevision:s().int().positive().nullable(),chars:s().int().nonnegative(),title:c(),hasPlan:t()}),gr=m({id:c(),agentId:c().nullable(),planFilePath:c(),changedAt:s().finite()}),_r=m({id:c(),reviews:f(pr),body:mr.nullable()});Object.freeze([`file`,`subsystem`,`co-change`,`hotspot`,`blast`,`untested`,`collision`,`link`]);var E=c().min(1),D=c().min(1),O=s().int().nonnegative(),vr=f(D).max(20),yr=l([`added`,`modified`,`deleted`,`renamed`,`untracked`]),br=d({factId:E,path:D,previousPath:D.optional(),status:yr,isCommitted:t()}),xr=d({factId:E,agentsPath:D,title:c(),paths:f(D).min(1)}),Sr=d({factId:E,path:D,partner:D,support:O,confidence:s().min(0).max(1)}),Cr=d({factId:E,path:D,commitCount:O,fixCommitCount:O}),wr=d({factId:E,path:D,directDependents:vr,directDependentCount:O,transitiveDependentCount:O,dependentTests:vr,dependentTestCount:O}),Tr=d({factId:E,path:D}),Er=d({factId:E,path:D,otherSessionId:c().min(1),otherSessionName:c()}),Dr=d({factId:E,providerRepo:c().min(1),packageName:c().min(1),packageDir:c(),consumerManifest:D,versionSpec:c(),isLocalLink:t(),providerChangedPathCount:O,importers:vr,importerCount:O,changedImporterCount:O}),Or=d({name:c().min(1),root:c().min(1),sessionPathPrefix:c(),base:c().nullable(),files:f(br),subsystems:f(xr),coChangeGaps:f(Sr),hotspots:f(Cr),blastRadius:f(wr),untestedFiles:f(Tr),collisions:f(Er),links:f(Dr),error:c().nullable()}),kr=d({sessionId:c().min(1),sig:c().nullable(),generatedAt:s().finite(),repos:f(Or),error:c().min(1).optional()}),Ar=l([`decision`,`retraction`,`conjecture`,`resolution`,`dismissal`,`defect`,`experiment`,`close`,`unable`,`escalation`,`acknowledgement`,`enactment`]),k={id:c().min(1),at:te(),session:c(),agent:c(),commit:c().nullable(),dirty:t(),binding:c()},jr={of:c().min(1),because:c()},Mr=n({id:c(),text:c()}),Nr=u(`kind`,[n({...k,kind:p(`decision`),chose:c(),over:f(c()),because:c()}),n({...k,kind:p(`retraction`),...jr}),n({...k,kind:p(`conjecture`),observation:c(),couldBe:f(c()),discriminatedBy:c()}),n({...k,kind:p(`resolution`),...jr,as:c().optional()}),n({...k,kind:p(`dismissal`),...jr}),n({...k,kind:p(`defect`),what:c(),evidence:c(),files:f(c())}),n({...k,kind:p(`experiment`),expectation:c(),context:f(c()),actions:f(Mr),criteria:f(Mr)}),n({...k,kind:p(`close`),of:c(),outcome:l([`success`,`failure`,`inconclusive`]),results:i(c(),e())}),n({...k,kind:p(`unable`),what:c(),because:c()}),n({...k,kind:p(`escalation`),what:c(),because:c()}),n({...k,kind:p(`acknowledgement`),...jr}),n({...k,kind:p(`enactment`),practice:c(),results:i(c(),e())})]),Pr=a([Nr,m({id:c().min(1),kind:c().min(1).refine(e=>!Ar.safeParse(e).success)})]);n({branch:c().nullable(),escalations:f(e()),records:f(Pr),citedBy:i(c(),f(e())),damaged:f(e())});var Fr=d({id:c().min(1),at:te().nullable(),kind:c().min(1),text:c().max(280),detail:c().max(280).nullable(),supersedes:c().nullable()}),Ir=u(`ok`,[d({ok:p(!0),latest:Fr.nullable()}),d({ok:p(!1),reason:c().min(1).max(200)})]),Lr=d({journal:Ir,updatedAt:s().finite()}),A=Object.freeze({DORMANT:`DORMANT`,INITIALIZING:`INITIALIZING`,STARTING:`STARTING`,RUNNING:`RUNNING`,WAITING:`WAITING`,IDLE:`IDLE`,COMPLETE:`COMPLETE`,DONE:`DONE`,FAILED:`FAILED`}),Rr=Object.freeze({[A.DORMANT]:`Dormant`,[A.INITIALIZING]:`Starting`,[A.STARTING]:`Starting`,[A.RUNNING]:`Working`,[A.WAITING]:`Needs Input`,[A.IDLE]:`Idle`,[A.COMPLETE]:`Complete`,[A.DONE]:`Exited`,[A.FAILED]:`Failed`}),zr=Object.freeze([A.INITIALIZING,A.STARTING,A.RUNNING,A.WAITING,A.IDLE,A.COMPLETE]),Br=Object.freeze([A.DONE,A.FAILED]),Vr=Object.freeze([A.WAITING,A.IDLE,A.COMPLETE]),Hr=/^[a-zA-Z0-9_\-. ()]{1,64}$/,Ur=`Session name may only contain letters, numbers, spaces, dashes, dots, underscores, and parentheses (max 64 chars)`,Wr=/[\x00-\x1f\x7f-\x9f]/,Gr=c().refine(e=>!Wr.test(e)).trim().max(120);m({title:c().nullable(),name:c().nullable().optional()}).strict();var Kr=l(A),qr=l([`finished`,`failed`]),Jr=4e3,Yr=1e3,Xr=2e3,Zr=m({question:c().min(1).max(Yr),header:c().max(100).default(``),options:f(m({label:c().min(1).max(200),description:c().max(Yr).default(``)})).min(1).max(8),multiSelect:t().default(!1)}),Qr=m({requestId:a([c().min(1).max(128),s().int()]),kind:l([`command`,`fileChange`,`permissions`,`tool`,`question`]),summary:c().max(Jr),isSummaryTruncated:t(),toolName:c().max(200).optional(),questions:f(Zr).min(1).max(4).optional(),alwaysAllowSummary:c().max(Jr).optional()}),$r=i(c().max(Yr),c().max(Xr)),ei=l([`accept`,`acceptForSession`,`decline`]),ti=80,ni=Object.freeze({notInstalled:`not installed`,unsupportedVersion:`unsupported version`,codexHooksUntrusted:`Codex hooks need trust in /hooks`}),ri=u(`active`,[m({active:p(!0)}).strict(),m({active:p(!1),reason:c().min(1).max(ti),version:c().optional()}).strict()]),j=m({id:c(),name:c(),taskTitle:Gr.nullable().default(null),taskTitleIsCustom:t().default(!1),path:c(),agent:c(),state:Kr,stateSince:s(),dangerouslySkipPermissions:t(),saneYolo:t().default(!1),ephemeral:t(),ownerId:c().nullable().optional(),isWorktree:t(),isWorkspace:t().default(!1),remoteWorkspace:c().nullable().default(null),isGuarded:t().default(!1),isGuardrailsReleased:t().default(!1),resumeSessionId:c().nullable(),activeAgents:s().int().nonnegative(),awaitingBackgroundTasks:t(),pendingPromptKind:c().nullable(),conversationApproval:Qr.nullable().default(null),hasConversationBridge:t().default(!1),isConversationViewOn:t().default(!1),hasPlan:t().default(!1),mergeStatus:c().nullable(),mergeReason:c().nullable(),worktreeNotice:c().nullable(),failureReason:c().nullable().optional(),unseenOutcome:qr.nullable().default(null),effectiveBase:c().nullable(),linkedPrs:f(st).default([]),coherenceHooks:ri.nullable().default(null),auditLog:f(e())}).passthrough();m({namespace:p(`git`,{error:`namespace must be git`}),publicKey:c({error:`publicKey must be a string`}).min(1,{error:`publicKey must not be empty`}).max(16384,{error:`publicKey must be at most 16384 characters`}),payload:ee({error:`payload must be base64`})}).strict(),a([m({ok:p(!0),signature:c()}).strict(),m({ok:p(!1),error:c()}).strict()]);var ii=[`push`,`spawn`,`send`,`read`,`close`,`attention`,`board`,`edit`,`show`,`review`,`reviews`,`prs`,`link-pr`,`settings`];[...ii],m({prompt:c({error:`prompt must be a string`}).min(1,{error:`prompt must not be empty`}).max(2e4,{error:`prompt must be at most 20000 characters`}).refine(e=>!e.trimStart().startsWith(`-`),{message:`prompt must not start with a dash, which the agent CLI would read as an option`}),name:c({error:`name must be a string`}).min(1,{error:`name must not be empty`}).max(200,{error:`name must be at most 200 characters`}).optional(),agent:c({error:`agent must be a string`}).min(1,{error:`agent must not be empty`}).max(40,{error:`agent must be at most 40 characters`}).optional()}).strict();var ai=c({error:`the session must be a string`}).min(1,{error:`the session must not be empty`}).max(300,{error:`the session must be at most 300 characters`});m({words:f(c({error:`each word must be a string`}).max(2e4,{error:`each word must be at most 20000 characters`}),{error:`words must be a list`}).min(1,{error:`send needs text`}).max(5e3,{error:`send takes at most 5000 words`})}).strict(),m({child:ai.optional()}).strict(),m({child:ai,discard:t().optional()}).strict(),a([m({child:ai,answers:i(c(),c().min(1))}).strict(),m({child:ai,toOperator:p(!0)}).strict()]);var oi=m({from:l([`parent`,`child`,`glimmervoid`]),at:s().finite(),text:c()}).strict();m({ok:p(!0),channels:f(m({sessionId:c(),name:c(),entries:f(oi),dropped:s().int().nonnegative()}).strict())}).strict(),m({note:c({error:`note must be a string`}).min(1,{error:`note must not be empty`}).max(500,{error:`note must be at most 500 characters`})}).strict(),a([m({ok:p(!0),pending:t()}).strict(),m({ok:p(!1),error:c()}).strict()]),m({id:j.shape.id,name:j.shape.name,agent:j.shape.agent,state:j.shape.state,ephemeral:j.shape.ephemeral}).strict(),m({pr:c({error:`pr must be a string`}).min(1,{error:`pr must not be empty`}).max(300,{error:`pr must be at most 300 characters`})}).strict(),m({command:l([`list`,`get`],{error:`command must be list or get`}),path:c({error:`path must be a string`}).min(1,{error:`path must not be empty`}).max(200,{error:`path must be at most 200 characters`}).optional()}).strict(),a([m({ok:p(!0),text:c(),readout:e()}).strict(),m({ok:p(!1),error:c()}).strict()]);var si=Je.pick({key:!0,title:!0,url:!0,author:!0});m({ok:p(!0),configured:t(),reason:c().nullable(),reviewing:f(si.extend({phase:Qe.shape.phase})),queued:f(si),drafts:f(si.extend({status:Ve.shape.status,verdict:c(),summary:Ve.shape.summary,comments:s().int().nonnegative(),isOutOfDate:t()}))}).strict(),m({ok:p(!0),configured:t(),prs:f(m({key:b.shape.key,title:b.shape.title,url:b.shape.url,state:b.shape.state,isDraft:b.shape.isDraft,stage:b.shape.stage,reviewDecision:b.shape.reviewDecision,approvals:b.shape.approvals,unresolvedThreads:b.shape.unresolvedThreads,behindBy:b.shape.behindBy,mergeable:b.shape.mergeable,isInMergeQueue:b.shape.isInMergeQueue,checks:b.shape.checks.pick({state:!0,failing:!0})}).strict())}).strict();var ci=4096;m({path:c({error:`path must be a string`}).min(1,{error:`path must not be empty`}).max(ci,{error:`path must be at most ${ci} characters`})}).strict();var li=m({id:c(),name:c(),caption:c().max(500).nullable(),kind:l([`image`,`video`,`page`]),mime:c(),sizeBytes:s().int().nonnegative(),pageTitle:c().nullable(),shownAt:s().finite()}).strict(),ui=m({path:c(),name:c(),surfacedAt:s().finite()}).strict();m({commands:f(m({name:l(ii),answers:t(),reason:c().optional()}).strict()),guarded:t(),boundary:l([`os-sandbox`,`workspace`,`none`]),environment:m({name:c(),workspace:c(),state:c()}).strict().nullable(),deadEnds:f(m({blocked:c(),route:c()}).strict())}).strict().extend({ok:p(!0)}).strict();var di=4e3,M=m({ts:s().finite(),uuid:c().nullable(),parentUuid:c().nullable(),vendorSessionId:c().min(1),agentId:c().min(1).optional(),agentType:c().min(1).optional(),transcriptOffset:s().int().nonnegative().optional(),truncated:t().optional()}),fi=u(`kind`,[M.extend({kind:p(`prompt`),text:c()}),M.extend({kind:p(`expansion`),text:c(),toolUseId:c().min(1).optional()}),M.extend({kind:p(`thinking`),text:c()}),M.extend({kind:p(`assistant`),text:c()}),M.extend({kind:p(`tool_call`),toolUseId:c().min(1),name:c().min(1),input:e()}),M.extend({kind:p(`tool_result`),toolUseId:c().min(1),content:c(),isError:t(),truncated:t()}),M.extend({kind:p(`session`),vendor:c().min(1),transcriptPath:c().min(1),reason:c().min(1).optional()}),M.extend({kind:p(`notice`),text:c().max(di)}),M.extend({kind:p(`raw`),line:c().max(di)})]);m({transcriptPath:c().min(1),vendorSessionId:c().min(1),offset:s().int().nonnegative(),ingestedSubagentPaths:f(c().min(1)),offsetByTranscriptPath:i(c().min(1),s().int().nonnegative()).default({}),subagentOffsetByPath:i(c().min(1),s().int().nonnegative()).default({})});var pi=c().max(16384),mi=f(pi).max(4096),hi=m({model:pi.nullable(),mcpServers:mi,plugins:f(m({name:pi,skills:mi,agents:mi})).max(4096),skills:mi,agents:mi,hookEvents:f(m({event:pi,runCount:s().int().nonnegative()})).max(4096),hookCommands:f(c().max(65536)).max(4096)}),gi=Object.freeze([`release`,`experimental`]),_i=`main`,vi=r(e=>e===_i?`experimental`:e,l(gi,{error:`updateChannel must be one of ${gi.join(`, `)}`})),yi=l([`idle`,`running`,`staged`,`succeeded`,`failed`,`discarded`,`interrupted`]),bi=l([`fetch`,`stage`,`install`,`link-deps`,`build`]),xi=l([`pending`,`running`,`succeeded`,`failed`]),Si=m({id:bi,status:xi,startedAt:s().finite().nullable(),finishedAt:s().finite().nullable(),outputTail:f(c())}).strict(),Ci=m({state:yi,fromSha:c().nullable(),toSha:c().nullable(),toVersion:c().nullable(),channel:vi,steps:f(Si),activeStep:bi.nullable(),reason:c().nullable(),startedAt:s().finite().nullable(),finishedAt:s().finite().nullable(),failedAtHandOff:t().optional()}).strict(),wi=Ci.pick({state:!0,activeStep:!0,reason:!0,startedAt:!0,finishedAt:!0}),Ti=/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/,Ei=/^[A-Za-z_][A-Za-z0-9_]*$/,Di=c().regex(/^[^/\s]+\/[^/\s]+$/),N=s().finite(),P=c().min(1),Oi=Object.freeze([`CLAUDE_CODE_OAUTH_TOKEN`]),F=c().regex(Ti);function ki(e){return new Set(e.map(e=>e.id)).size===e.length}var Ai=u(`kind`,[d({kind:p(`manual`)}),d({kind:p(`github-merged-prs`),repo:Di,minBodies:s().int().min(1),limit:s().int().min(1).max(500)})]),ji=u(`kind`,[d({kind:p(`none`)}),d({kind:p(`pr-checkout`)})]),Mi=l([`review-findings`,`json`]),Ni=d({promptTemplate:P,output:Mi,timeoutSeconds:s().int().min(30).max(14400)}),Pi=d({id:F,env:i(c().regex(Ei),c()).refine(e=>Oi.every(t=>!Object.hasOwn(e,t)),{message:`arm env must not set ${Oi.join(`, `)}; Glimmervoid injects it per cell`}).optional(),extraArgs:f(c()).optional(),setup:d({command:f(P).min(1)}).optional()}),Fi=u(`kind`,[d({kind:p(`llm-judge-match`),model:P})]);d({id:F,title:P,caseSource:Ai,workspace:ji,subject:Ni,arms:f(Pi).min(2).refine(ki,{message:`arm ids must be unique`}),baselineArm:F,trials:s().int().min(1).max(20),scorer:Fi}).refine(e=>e.arms.some(t=>t.id===e.baselineArm),{message:`baselineArm must name one of the arms`,path:[`baselineArm`]});var Ii=d({id:F,text:P,tags:f(F),path:P.optional(),line:s().int().positive().optional()}),Li=u(`kind`,[d({kind:p(`manual`)}),d({kind:p(`github-pr`),repo:Di,number:s().int().positive(),url:P,minedAt:N})]);d({id:F,input:i(c(),e()),references:f(Ii).min(1).refine(ki,{message:`reference ids must be unique`}),source:Li}),m({repo:Di,number:s().int().positive(),reviewedSha:g,baseSha:g,changedFiles:f(P)});var Ri=l([`found`,`partial`,`missed`]),zi=d({referenceId:F,verdict:Ri,findingIndexes:f(s().int().nonnegative())}),Bi=l([`scored`,`invalid`,`error`]),Vi=d({caseId:F,armId:F,trial:s().int().min(1),status:Bi,startedAt:N,finishedAt:N,degradedReasons:f(P),findingCount:s().int().nonnegative(),judgements:f(zi),costUsd:s().finite().nonnegative().nullable(),error:P.nullable()}),Hi=l([`running`,`completed`,`interrupted`,`failed`]);d({id:F,suiteId:F,status:Hi,startedAt:N,finishedAt:N.nullable(),error:P.nullable(),cells:f(Vi)});var Ui=s().min(0).max(1).nullable(),Wi=d({trials:s().int().nonnegative(),recall:Ui,recallByTag:i(F,Ui),degraded:s().int().nonnegative(),invalid:s().int().nonnegative(),costUsd:s().finite().nonnegative().nullable()}),Gi=d({caseId:F,arms:i(F,Wi),deltaVsBaseline:i(F,s().min(-1).max(1).nullable())}),Ki=d({runId:F,suiteId:F,status:Hi,baselineArm:F,armIds:f(F),rows:f(Gi),totals:i(F,Wi)}),qi=l([`mine`,`run`,`cancel`]),Ji=m({suiteId:F,action:qi}),Yi=m({suiteId:F,action:qi,ok:t(),error:c().optional(),runId:F.optional()}),Xi=l([`setup`,`preflight`,`workspace`,`subject`,`judge`]),Zi=m({suiteId:F,runId:F,caseId:F.nullable(),armId:F,trial:s().int().min(1),phase:Xi,cellIndex:s().int().nonnegative(),cellCount:s().int().positive(),startedAt:N}),Qi=m({id:F,title:c(),error:c().nullable(),caseCount:s().int().nonnegative(),candidateCount:s().int().nonnegative(),armIds:f(F),baselineArm:F.nullable(),latestReport:Ki.nullable()}),$i=m({type:p(`benchmark-status`),ts:N,configured:t(),reason:c().nullable(),suites:f(Qi),inFlight:Zi.nullable()}).passthrough(),ea=m({__typename:c(),login:c()}).nullable();m({number:s().int().positive(),title:c(),url:P,mergedAt:c().nullable(),reviewThreads:m({totalCount:s().int().nonnegative()}),reviews:m({totalCount:s().int().nonnegative()})});var ta=m({path:c(),line:s().int().positive().nullable(),originalLine:s().int().positive().nullable(),comments:m({nodes:f(m({databaseId:s().int().positive(),author:ea,body:c(),createdAt:c(),originalCommit:m({oid:g}).nullable()}))})}),na=m({databaseId:s().int().positive(),author:ea,body:c(),submittedAt:c().nullable(),commit:m({oid:g}).nullable()}),ra=u(`__typename`,[m({__typename:p(`BaseRefChangedEvent`),createdAt:c()}),m({__typename:p(`BaseRefForcePushedEvent`),createdAt:c(),beforeCommit:m({oid:g}).nullable()})]);m({author:ea,baseRefOid:g,reviewThreads:m({pageInfo:m({hasNextPage:t()}),nodes:f(ta)}),reviews:m({pageInfo:m({hasNextPage:t()}),nodes:f(na)}),timelineItems:m({pageInfo:m({hasNextPage:t()}),nodes:f(ra)})}),m({mergeBaseSha:g,changedFiles:f(P),isFileListComplete:t()});var ia=4e3,I=c().nullable().optional(),L=c(),aa=m({path:c(),reason:c()}).strict(),oa=ct.shape.unlinkedKeys.unwrap().element,sa=/^https:\/\/github\.com\/([^/\s]+\/[^/\s]+)\/pull\/([0-9]+)(?:[/?#].*)?$/i;function ca(e){let t=e.trim(),n=sa.exec(t),r=n?`${n[1]}#${n[2]}`:t,i=oa.safeParse(r);return i.success?i.data:null}function R(e,t){return n({type:p(e),...t})}function z(e={}){return n(e)}var B=c().nullable(),V=s().finite(),la=V.optional(),H=B.optional(),U=z(),W=f(e()),ua=s().int().positive(),da=c().min(1).max(ci),fa=f(a([z({at:V,tool:c(),detail:c()}),z({at:V,note:c()})]));m({id:c(),label:c(),command:c(),args:f(c()),resolvable:t().nullable()}).strict();var pa=m({name:c(),template:c(),parameters:i(c(),c()),hourlyCostUsd:s().nullable(),idleStopMinutes:s()}),ma=f(pa).nullable(),ha=l([`claude-code`,`codex`]),ga=m({agent:ha,state:l([`signed-in`,`signed-out`,`connecting`,`failed`]),source:l([`host`,`glimmervoid`]).nullable(),verificationUrl:c().nullable(),userCode:c().nullable(),needsPastedCode:t(),reason:c().nullable()}).strict(),_a=f(ga),va=m({setupWarning:B,lastFailure:m({message:c(),failedAt:V}).nullable()}),ya=m({id:L,session:c(),taskTitle:Gr.nullable().optional(),taskTitleIsCustom:t().optional(),path:c(),agent:c(),state:Kr,stateSince:V,skipPerms:t(),saneYolo:t(),worktree:t(),workspace:t().optional(),remoteWorkspace:c().optional(),guarded:t().optional(),guardrailsReleased:t().optional(),resumeSessionId:B,ephemeral:t().optional(),ownerId:L.optional(),linkedPrs:f(st).optional()}),ba=4096,xa=ba+2*(Zn+Yn+80*Xn),Sa=m({reason:c(),message:c()}),Ca=l([`npm-global`,`npx`,`clone`,`unknown`]),wa={updateAvailable:t(),current:B,latest:B,currentSha:B,latestSha:B,releaseUrl:B,command:c(),flavor:Ca,platform:c(),installedBranch:B,upstream:B,isTreeClean:t().nullable(),lastCheckAt:V,channel:vi,reason:B,deprecation:B,journalSummary:wi.nullable(),applyRefusal:Sa.nullable()};m(wa);var Ta=8192,Ea=m({name:c().max(128),stack:c().max(Ta)}).strict(),Da=1e3,Oa=m({scope:c().min(1).max(64),text:c().min(1).max(Da)}).strict(),ka=Object.freeze([`view_shown`,`operator_action`,`onboarding_step`]);Object.freeze([`focus`,`prs`,`issues`,`usage`,`radar`,`visions`,`hooks`,`trace`,`benchmarks`,`settings`]),Object.freeze({usage:[`sort`,`range`,`period`,`expand`,`refresh`],issues:[`scope`,`filter`,`search`,`filters-toggle`,`select`,`back`,`go-to-session`,`open-session`,`refresh`],radar:[`report`,`open-session`,`resolve`,`suppress`,`archive-investigation`],onboarding:[`rescan`,`add-root-typed`,`add-root-suggested`,`add-session`],reviews:[`open-session`,`approve`,`approve-only`,`comment`,`request-changes`,`discard`,`requeue`,`resolve-thread`,`merge`,`keep-mergeable`,`merge-when-ready`,`refresh`]}),Object.freeze([`agent`,`repo_roots`,`first_session`]),Object.freeze([`current`,`done`]),Object.freeze([`usage`,`issues`,`radar`,`onboarding`,`reviews`]);var Aa=[`kill`,`start-session`,`merge-session`,`finish-session`,`merge-continue-session`,`discard-session-worktree`,`resolve-session-merge`,`request-session-diff`,`request-change-map`,`request-branch-sync`,`resync-branch`,`debug-state`];function ja(t){return R(t,{id:L,force:e().optional()})}var Ma=Aa.map(ja),Na={id:L,force:e().optional(),fresh:e().optional(),conversationId:c().optional()},Pa=[R(`restart`,Na),R(`force-restart`,Na),R(`add-session`,{name:c(),path:c(),repos:f(c()).optional(),agent:c().optional(),dangerouslySkipPermissions:t().optional(),unguarded:t().optional(),runInPlace:t().optional(),environment:c().optional(),requestId:I}),R(`quick-session`,{id:L,requestId:I}),R(`remove-session`,{id:L,force:e().optional(),discardWork:t().optional(),confirmedKeptPaths:f(c()).optional(),requestId:I}),R(`list-conversations`,{id:L,requestId:I}),R(`resume-conversation`,{id:L,conversationId:c()}),R(`rename-session`,{id:L,newName:c()}),R(`get-workspace-repos`,{id:L,requestId:I}),R(`set-workspace-repos`,{id:L,repos:f(c()),requestId:I}),R(`set-session-title`,{id:L,title:Gr}),R(`link-session-pr`,{id:L,key:oa}),R(`unlink-session-pr`,{id:L,key:oa}),R(`ping`,{requestId:I}),R(`get-settings`,{requestId:I}),R(`get-agent-logins`,{requestId:I}),R(`start-remote-setup`,{agent:ha,requestId:I}),R(`agent-connect`,{agent:ha,action:l([`start`,`cancel`]),requestId:I}),R(`agent-connect-code`,{agent:ha,code:c(),requestId:I}),R(`update-settings`,{settings:i(c(),e()),requestId:I}),R(`scan-repo-roots`,{requestId:I,includeSuggestions:t().optional()}),R(`list-agents`,{requestId:I,rescan:t().optional()}),R(`get-radar-report`,{issueId:a([c(),s()]),requestId:I}),R(`radar-open-session`,{projectId:a([c(),s()]),issueId:a([c(),s()]),requestId:I}),R(`issue-detail`,{requestId:c().min(1),repo:w,issueNumber:s().int().positive()}),R(`open-issue-session`,{requestId:I,projectId:c(),repo:w,issueNumber:s().int().positive()}),R(`radar-issue-action`,{projectId:a([c(),s()]),issueId:a([c(),s()]),action:c(),requestId:I}),R(`open-team-review-session`,{requestId:I,key:oa}),R(`team-review-action`,{...Ge.shape,requestId:I}).refine(We,{message:`only discard may omit head`,path:[`head`]}),R(`benchmark-action`,{...Ji.shape,requestId:I}),R(`my-pr-merge`,{...xt.shape,requestId:I}),R(`my-pr-keep-mergeable`,{...lt.shape,requestId:I}),R(`my-pr-merge-when-ready`,{...ft.shape,requestId:I}),R(`github-polling-refresh`,{...ae.shape,requestId:I}),R(`radar-archive-investigation`,{id:e().optional(),requestId:I}),R(`telegram-test`,{requestId:I}),R(`request-usage-report`,{requestId:I,days:e().optional(),force:e().optional()}),R(`request-hooks-report`,{requestId:I}),R(`save-hook`,{hook:i(c(),e()),requestId:I}),R(`delete-hook`,{id:c(),requestId:I}),R(`shutdown`),R(`restart-server`),R(`focus-change`,{focused:t()}),R(`request-health-snapshot`),R(`request-telemetry-deletion`,{requestId:I}),R(`update-check`),R(`update-apply`),R(`session-trace`,{id:L,requestId:I,after:s().int().nonnegative().default(0),endingAt:a([s().int().nonnegative(),p(`tail`)]).optional()}),R(`session-plan`,{id:L,agentId:B,revision:ua.optional(),draft:t().optional()}),R(`plan-decision`,ur.shape),R(`set-session-conversation-view`,{id:L,isOn:t()}),R(`set-session-guardrails`,{id:L,isOn:t()}),R(`conversation-approval`,{id:L,requestId:Qr.shape.requestId,decision:ei,answers:$r.optional()}),R(`session-doc-read`,{id:L,path:da,requestId:I}),R(`session-doc-save`,{id:L,path:da,text:c(),baseHash:c().min(1),requestId:I}),R(`session-coherence-journal`,{id:L,requestId:I}),R(`session-setup`,{id:L,requestId:I}),R(`client-error`,Ea.shape),R(`client-log`,Oa.shape),R(`dashboard-telemetry`,{event:l(ka),properties:i(c(),e())}),R(`dismiss`,{id:L,force:e().optional(),expectedState:Kr.optional()}),R(`watch-session-changes`,{id:L.nullable()}),...Ma];u(`type`,Pa),Object.freeze(`snapshot.hooks-report.save-hook-result.add-session-result.start-remote-setup-result.remove-session-result.agent-logins.delete-hook-result.workspace-repos.set-workspace-repos-result.hooks-updated.state-change.session-added.session-removed.session-close-confirm.session-renamed.session-title.session-prs.session-modified.session-git.session-coherence-hooks.session-agents.session-prompt.session-conversation.session-merge-status.session-worktree-blocked.session-worktree-warning.session-worktree-ready.session-diff.session-diff-error.change-map.branch-sync-status.session-changed.debug-state-response.session-trace-response.session-trace-changed.session-plan-changed.session-plan-draft.session-plan-response.session-docs-changed.session-docs-snapshot.session-doc-response.session-doc-save-result.session-coherence.session-coherence-snapshot.session-coherence-journal-response.session-setup-response.notify.update-status.update-progress.post-turn-leftovers.error.session-error.settings.settings-error.settings-updated.pong.agents-listed.repo-roots-scanned.conversations.resume-conversation-ack.health-snapshot.radar-status.radar-investigation-activity.radar-investigation-finished.radar-report.radar-open-session-result.issue-detail-result.open-issue-session-result.open-team-review-session-result.radar-issue-action-result.telemetry-deletion-result.team-review-action-result.benchmark-action-result.my-pr-merge-result.my-pr-keep-mergeable-result.my-pr-merge-when-ready-result.github-polling-refresh-result.radar-archive-investigation-result.team-review-status.benchmark-status.my-prs-status.issues-status.usage-sessions.usage-report.plan-limits.usage-budget-alert.visions-findings.visions-comments.visions-hand.visions-intent.visions-fix.visions-snapshot.ingest-activity.ingest-snapshot.client-trust.shutting-down.restarting`.split(`.`));var Fa=[R(`snapshot`,{sessions:f(j),serverBuild:B}),R(`hooks-report`,{requestId:I,ts:la,hooks:f(U).optional(),builtin:f(U).optional(),events:f(z({name:c(),matcher:B,description:c(),http:t().optional()})).optional(),projects:f(z({id:c(),name:c(),agent:c()})).optional(),limits:z({maxTimeoutSec:s().int().positive()}).optional(),error:H}),R(`save-hook-result`,{requestId:I,ok:t(),error:H,hook:U.optional()}),R(`add-session-result`,{requestId:I,ok:t(),error:H,reason:l([`not-git`]).optional(),sessionId:c().optional()}),R(`remove-session-result`,{requestId:I,ok:t(),error:H,canDiscardWork:t().optional(),keptPaths:f(aa).optional()}),R(`agent-logins`,{requestId:I,logins:_a,error:H}),R(`start-remote-setup-result`,{requestId:I,ok:t(),error:H,sessionId:c().optional(),sessionName:c().optional()}),R(`delete-hook-result`,{requestId:I,ok:t(),error:H,id:c().optional()}),R(`workspace-repos`,{requestId:I,id:L,ok:t(),repos:f(c()),error:H}),R(`set-workspace-repos-result`,{requestId:I,id:L,ok:t(),error:H}),R(`hooks-updated`,{count:s().int().nonnegative()}),R(`state-change`,{id:L,session:c(),from:Kr,to:Kr,event:c(),timestamp:V,skipPerms:t().optional(),saneYolo:t().optional(),failureReason:c().optional()}),R(`session-added`,ya.shape),R(`session-modified`,ya.shape),R(`session-removed`,{id:L,session:c()}),R(`session-close-confirm`,{id:L,mergeStatus:c()}),R(`session-renamed`,{id:L,oldName:c(),newName:c()}),R(`session-title`,{id:L,taskTitle:Gr.nullable(),isCustom:t()}),R(`session-prs`,{id:L,linkedPrs:f(st)}),R(`session-git`,{id:L,worktree:t()}),R(`session-coherence-hooks`,{id:L,coherenceHooks:ri.nullable()}),R(`session-agents`,{id:L,activeAgents:s().int().nonnegative(),awaitingBackgroundTasks:t(),timestamp:V}),R(`session-unseen`,{id:L,unseenOutcome:qr.nullable(),timestamp:V}),R(`session-prompt`,{id:L,pendingPromptKind:B,timestamp:V}),R(`session-conversation`,{id:L,hasConversationBridge:t(),isConversationViewOn:t(),conversationApproval:Qr.nullable()}),R(`session-merge-status`,{id:L,mergeStatus:c(),reason:B,parked:t(),timestamp:V}),R(`session-worktree-blocked`,{id:L,session:c(),branch:B,notice:B,timestamp:V}),R(`session-worktree-warning`,{id:L,session:c(),branch:B,notice:B,timestamp:V}),R(`session-worktree-ready`,{id:L,session:c(),branch:B,base:B,timestamp:V}),R(`session-diff`,{id:L,committed:z({stat:c(),diff:c()}),uncommitted:z({stat:c(),diff:c()}),hasCommits:t()}),R(`session-diff-error`,{id:L,message:c()}),R(`change-map`,{id:L,map:kr}),R(`branch-sync-status`,{id:L,branch:B,upstream:B,state:c(),ahead:s().int().nonnegative(),behind:s().int().nonnegative(),fetched:t().nullable(),action:c().optional(),error:H}),R(`session-changed`,{id:L}),R(`debug-state-response`,{id:L,payload:U}),R(`session-trace-response`,{id:L,requestId:I,records:f(fi),start:s().int().nonnegative(),next:s().int().nonnegative(),reset:t(),path:c()}),R(`session-trace-changed`,{id:L}),R(`session-plan-changed`,hr.shape),R(`session-plan-draft`,gr.shape),R(`session-plan-response`,_r.shape),R(`session-docs-changed`,{id:L,docs:f(ui)}),R(`session-docs-snapshot`,{sessions:i(c(),f(ui))}),R(`session-shown`,{id:L,files:f(li)}),R(`session-shown-snapshot`,{sessions:i(c(),f(li))}),R(`session-doc-response`,{requestId:I,id:L,path:c(),ok:t(),text:c().optional(),hash:c().optional(),error:H}),R(`session-doc-save-result`,{requestId:I,id:L,path:c(),ok:t(),hash:c().optional(),conflict:t().optional(),error:H}),R(`session-coherence`,{id:L,...Lr.shape}),R(`session-coherence-snapshot`,{sessions:i(c(),Lr)}),R(`session-coherence-journal-response`,{requestId:I,id:L,ok:t(),entries:f(Fr).max(200),error:H}),R(`session-setup-response`,{requestId:I,id:L,ok:t(),setup:hi.optional(),error:H}),R(`notify`,{session:c(),category:c(),message:c(),escalationCount:s().int().nonnegative(),kind:p(`plan`).optional()}),R(`update-status`,wa),R(`update-progress`,{journal:Ci}),R(`post-turn-leftovers`,{repositories:f(c()),command:c()}),R(`error`,{id:L.optional(),message:c(),requestId:I,scope:c().optional()}),R(`session-error`,{id:L.optional(),session:c(),message:c(),scope:c().optional()}),R(`settings`,{settings:U,requestId:I}),R(`settings-error`,{message:c(),requestId:I}),R(`settings-updated`,{settings:U,requestId:I}),R(`pong`,{requestId:I}),R(`agents-listed`,{requestId:I,agents:f(z({id:c(),label:c(),resolvable:t()}))}),R(`repo-roots-scanned`,{requestId:I,directories:f(z({root:c(),projects:f(z({name:c(),path:c(),isGit:t().optional()}))})),suggestions:f(z({path:c(),label:c(),gitRepoCount:s().int().nonnegative()})).optional(),error:c().optional()}),R(`conversations`,{requestId:I,id:B,current:B.optional(),conversations:f(z({id:c(),title:c(),cwd:c(),worktreePath:c(),worktreeName:c(),gitBranch:B,mtime:V})),error:c().optional()}),R(`resume-conversation-ack`,{id:L.optional(),resumeSessionId:B.optional(),ok:t(),error:c().optional(),requestId:I}),R(`health-snapshot`,{stats:U}),R(`radar-status`,{ts:V,intervalMinutes:s(),projects:f(U),investigations:f(U)}),R(`radar-investigation-activity`,{projectId:a([c(),s()]),issueId:c(),inFlight:p(!0),startedAt:V.nullable(),trail:fa}),R(`radar-investigation-finished`,{projectId:a([c(),s()]),issueId:c(),verdict:c(),summaryLine:B,startedAt:V.nullable(),trail:fa}),R(`radar-report`,{requestId:I,ok:t(),found:t(),issueId:B,format:c().optional(),content:c().optional(),message:c().optional(),error:c().optional()}),R(`radar-open-session-result`,{requestId:I,ok:t(),error:H,sessionId:c().optional(),sessionName:c().optional(),pending:t().optional()}),R(`issue-detail-result`,{requestId:c().min(1),ok:t(),body:c().nullable(),error:c().nullable()}),R(`open-issue-session-result`,{requestId:I,ok:t(),error:H,sessionId:c().optional(),sessionName:c().optional(),pending:t().optional(),existing:t().optional()}),R(`open-team-review-session-result`,{requestId:I,ok:t(),error:H,key:oa.optional(),sessionId:c().optional(),sessionName:c().optional(),pending:t().optional(),existing:t().optional()}),R(`radar-issue-action-result`,{requestId:I,ok:t(),error:H,status:B.optional()}),R(`team-review-action-result`,{...Ke.shape,requestId:I}),R(`telemetry-deletion-result`,{requestId:I,ok:t()}),R(`benchmark-action-result`,{...Yi.shape,requestId:I}),R(`my-pr-merge-result`,{...Ct.shape,requestId:I}),R(`my-pr-keep-mergeable-result`,{...dt.shape,requestId:I}),R(`my-pr-merge-when-ready-result`,{...pt.shape,requestId:I}),R(`github-polling-refresh-result`,{...oe.shape,requestId:I}),R(`radar-archive-investigation-result`,{requestId:I,ok:t(),error:H}),R(`telegram-test-result`,{requestId:I,ok:t(),error:H,telegramDelivery:va.nullable()}),$e,$i,bt,zn,Jn,R(`usage-sessions`,{ts:V,pricingSource:B,sessions:f(z({id:L,tokens:s(),costUSD:s(),officialCostUSD:s().nullable().optional()}))}),R(`usage-report`,{requestId:I,ts:la,tz:c().optional(),blockHours:s().optional(),totals:U.optional(),daily:W.optional(),models:W.optional(),sessions:W.optional(),blocks:W.optional(),activeBlock:e().nullable().optional(),anomaly:e().nullable().optional(),byLane:e().optional(),planWindowLanes:e().nullable().optional(),budget:e().optional(),savings:e().optional(),tokenLimit:e().nullable().optional(),pricing:U.optional(),scan:U.optional(),warning:H,error:H}),R(`plan-limits`,{ts:V,fiveHour:e().nullable(),sevenDay:e().nullable(),source:c(),vendor:l([`claude`,`codex`]).optional()}),R(`usage-budget-alert`,{scope:c(),periodKey:c(),threshold:s(),text:c(),ts:V}),R(`visions-findings`,{uri:c(),diagnostics:W,ts:V}),R(`visions-comments`,{uri:c(),comments:W,ts:V}),R(`visions-hand`,{uri:c(),hand:B,ts:V}),R(`visions-intent`,{projectId:B,intent:U,ts:V}),R(`visions-fix`,{uri:c(),fix:U,ts:V}),R(`visions-snapshot`,{documents:f(U),intent:U,fixes:f(U),ts:V}),R(`ingest-activity`,{events:f(U),overflow:s().int().nonnegative(),ts:V}),R(`ingest-snapshot`,{events:f(U),sources:e(),ts:V}),R(`client-trust`,{trust:l([`local`,`remote`])}),R(`shutting-down`),R(`restarting`)],Ia=u(`type`,Fa);function G(e,t){return typeof e==`string`&&e.trim()?e.trim():t}function K(e,t){return typeof e==`number`&&Number.isFinite(e)?e:t}var q=60,La=3600,Ra=24,za=1024,Ba=za*1024,Va=Ba*1024,Ha={compact:{second:e=>`${e}s`,minute:e=>`${e}m`,hour:e=>`${e}h`,day:e=>`${e}d`},abbreviated:{second:e=>`${e} sec`,minute:e=>`${e} min`,hour:e=>`${e} hr`,day:e=>`${e} ${e===1?`day`:`days`}`},spelled:{second:e=>`${e} ${e===1?`second`:`seconds`}`,minute:e=>`${e} ${e===1?`minute`:`minutes`}`,hour:e=>`${e} ${e===1?`hour`:`hours`}`,day:e=>`${e} ${e===1?`day`:`days`}`}},Ua={rounding:`floor`,wording:`compact`,suffix:` ago`,justNowBelowSeconds:0};function J(e){return String(e).padStart(2,`0`)}function Wa(e,t){return Math.max(0,Math[t](e/1e3))}function Ga(e,t){let n=Ha[t];if(e<q)return n.second(e);let r=Math.floor(e/q);if(r<60)return n.minute(r);let i=Math.floor(r/60);return i<Ra?n.hour(i):n.day(Math.floor(i/Ra))}function Ka(e,t){let n=Wa(e,t.rounding);return n<t.justNowBelowSeconds?`just now`:`${Ga(n,t.wording)}${t.suffix}`}function qa(e,{smallestUnit:t,dropsZeroRemainder:n}){let r=(e,t,r)=>n&&t===0?e:`${e} ${t}${r}`;if(t===`s`&&e<q)return`${e}s`;if(t===`s`&&e<La)return r(`${Math.floor(e/q)}m`,e%q,`s`);let i=Math.floor(e/q);return i<60?`${i}m`:r(`${Math.floor(i/60)}h`,i%60,`m`)}function Ja(e,{rounding:t,showsHours:n}){let r=Wa(e,t),i=J(r%q),a=Math.floor(r/q),o=Math.floor(r/La);return!n||o===0?`${a}:${i}`:`${o}:${J(a%60)}:${i}`}function Ya(e,t){return e<za?`${e} B`:t===`KB`||e<Ba?`${(e/za).toFixed(1)} KB`:e<Va?`${(e/Ba).toFixed(1)} MB`:`${(e/Va).toFixed(2)} GB`}function Xa(e){let t=new Date(e);return`${t.getFullYear()}-${J(t.getMonth()+1)}-${J(t.getDate())}`}function Za(e){return`${J(e.getHours())}:${J(e.getMinutes())}`}function Qa(e){return e.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`,second:`2-digit`})}function $a(e){let t=(Array.isArray(e)?e:[]).filter(e=>typeof e==`string`&&e!==``);return[...new Set(t)].sort().join(`|`)}function eo(e,t){let n=typeof e==`string`?e:``,r=typeof t==`string`?t:``;return n===``?{shown:!1,acknowledged:``}:{shown:n!==r,acknowledged:r}}function to({getAck:e,setAck:t,signature:n,isLooking:r}){let i=e(),a=e=>{e!==i&&(i=e,t(e))};return{refresh(){let e=n(),t=eo(e,r()?e:i);return a(t.acknowledged),t.shown},acknowledge(){a(n())}}}function no(e,{label:t}){if(!e)return`Waiting for ${t} status from the server.`;let n=typeof e.reason==`string`?e.reason.trim():``;return e.configured===!1&&n?`${t} is misconfigured: ${n}.`:e.configured===!1?`${t} is off.`:`${t} is on. Waiting for the first poll.`}var ro=`machine-updates`,io=`update-actions`,ao={spiking:0,regressed:1,worsened:2,new:3,quiet:4},oo={spiking:`crit`,regressed:`crit`,worsened:`warn`,new:`warn`,quiet:`dim`},so=99,co={ROOT_CAUSE:`root cause`,NEEDS_HUMAN:`needs you`,TRANSIENT:`transient`,FIXED:`fixed`,ERROR:`error`};function lo(e){return Array.isArray(e)?e.flatMap(e=>{let t=e,n=K(t?.at,0),r=G(t?.note,``);if(r)return[{at:n,note:r}];let i=G(t?.tool,``);return i?[{at:n,tool:i,detail:G(t?.detail,``)}]:[]}):[]}function uo(e){return e.filter(e=>`tool`in e)}function fo(e){return e.detail?`${e.tool} ${e.detail}`:e.tool}function po(e){let t=lo(e?.trail),n=t.findLast(e=>`note`in e);if(n)return n.note;let r=uo(t).at(-1);return r?fo(r):``}function mo(e){let t=[];for(let n of e){if(`note`in n){t.push({kind:`note`,at:n.at,text:n.note});continue}let e=t.at(-1);e?.kind===`work`?e.stepCount+=1:t.push({kind:`work`,at:n.at,stepCount:1})}return t}function ho(e){let t=G(e?.summaryLine,``);return e?.inFlight===!0&&po(e)||t}function go(e){return{inFlight:e?.inFlight===!0,startedAt:K(e?.startedAt,null),steps:lo(e?.trail),verdict:G(e?.verdict,``),summaryLine:G(e?.summaryLine,``)}}function _o(e,t,n){let r=String(t??``),i=String(n??``);if(!r||!i)return null;for(let t of Array.isArray(e?.projects)?e.projects:[])if(String(t?.projectId??``)===r){for(let e of Array.isArray(t.issues)?t.issues:[])if(String(e?.issueId??``)===i)return e}return null}function vo(e,t){let n=_o(e,t?.projectId,t?.issueId);return n?(n.inFlight=!0,n.startedAt=K(t?.startedAt,null),n.trail=lo(t?.trail),!0):!1}function yo(e){return{inFlight:!1,startedAt:K(e?.startedAt,null),steps:lo(e?.trail),verdict:G(e?.verdict,``),summaryLine:G(e?.summaryLine,``)}}function bo(e,t){return!e||!t?!1:String(t.projectId??``)===e.projectId&&String(t.issueId??``)===e.issueId}function xo(e,t){let n=_o(e,t?.projectId,t?.issueId);if(!n)return!1;let r=yo(t);return n.inFlight=!1,n.startedAt=r.startedAt,n.trail=r.steps,n.verdict=r.verdict,n.summaryLine=r.summaryLine,!0}function So(e){return co[typeof e==`string`?e.toUpperCase():``]||String(e??``).toLowerCase()}function Co(e){return Ja(e,{rounding:`round`,showsHours:!1})}function wo(e,t){return e==null?``:`+${Co(t-e)}`}function To(e){let t=e.steps.at(-1),n=t&&`tool`in t?t.tool:t?.note??``;return[e.steps.length,t?.at??0,n].join(`::`)}function Eo(e,t){if(e.inFlight){let n=uo(e.steps).length,r=`${n} ${n===1?`step`:`steps`}`;return`investigating, ${e.startedAt?`started ${t}`:`starting`}, ${r}`}return e.verdict?`finished: ${So(e.verdict)}`:`finished`}function Do(e){return no(e,{label:`PostHog monitoring`})}function Oo(e){return K(e.intervalMinutes,null)!==null}function ko(e,t){return e==null||e.configured===!1?`placeholder`:t>0?`ready`:Oo(e)?`placeholder`:`pending`}function Ao(e){return oo[e??``]||`dim`}function jo(e){if(typeof e?.lastSeen!=`string`)return null;let t=Date.parse(e.lastSeen);return!Number.isFinite(t)||t<=0?null:t}function Mo(e){let t=G(e?.status,``).trim().toLowerCase();return!t||t===`active`?``:t}function No(e){return Array.isArray(e)?e.map(e=>Number(e)).filter(e=>Number.isFinite(e)):[]}function Po(e){return Array.isArray(e)?e.map(e=>typeof e==`number`?e:Number(e?.occurrences)).filter(e=>Number.isFinite(e)):[]}function Fo(e,t=64,n=16){let r=No(e);if(r.length<2)return``;let i=Math.max(...r),a=Math.min(...r),o=t/(r.length-1),ee=n/2,s=i-a;return r.map((e,t)=>{let r=t*o,i=s===0?ee:n-(e-a)/s*n;return`${Number(r.toFixed(2))},${Number(i.toFixed(2))}`}).join(` `)}function Io(e){if(e.length<4)return null;let t=Math.floor(e.length/2),n=e.slice(0,t).reduce((e,t)=>e+t,0);if(n===0)return null;let r=e.slice(-t).reduce((e,t)=>e+t,0),i=Math.round(Math.abs(r-n)/Math.abs(n)*100);return r>n?{direction:`up`,percent:i}:r<n?{direction:`down`,percent:i}:{direction:`flat`,percent:i}}function Lo(e){return e.length===0?`0 polls, 0 to 0 occurrences`:`${e.length} polls, ${Math.min(...e)} to ${Math.max(...e)} occurrences`}function Ro(e){let t=Array.isArray(e)?e:[],n=0,r=0;for(let e of t)e?.change===`spiking`&&(n+=1),e?.verdict===`NEEDS_HUMAN`&&(r+=1);return{active:t.length,spiking:n,needsHuman:r}}var zo=3e5;function Bo(e){let t=Number(e);return!Number.isFinite(t)||t<=0?zo:t*2}function Vo(e){let t=e.split(/[\\/]+/).filter(Boolean);return t.length===0?``:t[t.length-1]}function Ho(e){let t=Vo(G(e?.name,``));if(t)return t;let n=e?.projectId;return n==null||n===``?`project`:String(n)}function Uo(e){let t=G(e,``);return t?(t.replace(/^[a-z][a-z0-9+.-]*:\/\//i,``).split(`/`)[0].split(`@`).pop()??``).replace(/:\d+$/,``):``}function Wo(e){let t=new Set,n=Array.isArray(e)?e:[];for(let e of n){let n=Uo(e?.host);n&&t.add(n)}return t.size>1}function Go(e,t,n={}){let r=Ro(e?.issues),i=G(e?.error,``).slice(0,200),a=Number(t),o=Number(e?.lastTickAt),ee=Number.isFinite(a)&&Number.isFinite(o)&&o>0?a-o:0,s=ee>Bo(n.intervalMs)?ee:0;return{loud:r.active>0||r.spiking>0||!!i||s>0,counts:r,error:i,staleMs:s}}function Ko(e,t,n={}){let r=[],i=[],a=Array.isArray(e)?e:[];for(let e of a){let a=Go(e,t,n),o={project:e,...a};a.loud?r.push(o):i.push(o)}return{loud:r,quiet:i}}function qo(e,t=null){return(Array.isArray(e?.investigations)?e.investigations:[]).filter(e=>typeof e==`object`&&!!e).filter(e=>typeof e.id==`string`&&e.id!==``).filter(e=>e.archived!==!0).filter(e=>!t?.has(e.id)).map(e=>({id:e.id,issueId:G(e.issueId,``),projectId:e.projectId??null,projectLabel:G(e.projectName,``),title:G(e.title,`Untitled issue`),summaryLine:G(e.summaryLine,``),url:G(e.url,``),verdict:G(e.verdict,`ERROR`).toUpperCase(),mode:G(e.mode,`investigate`),prUrl:/^https:\/\/[^\s"'<>]{1,300}$/.test(G(e.prUrl,``))?G(e.prUrl,``):``,at:Number.isFinite(Number(e.at))?Number(e.at):0})).sort((e,t)=>t.at-e.at)}function Jo(e,t){if(!t||t.size===0)return t;let n=Array.isArray(e?.investigations)?e.investigations:[],r=new Set;for(let e of n){if(typeof e!=`object`||!e)continue;let{id:t}=e;typeof t==`string`&&r.add(t)}for(let e of[...t])r.has(e)||t.delete(e);return t}function Y(e,t){let n=G(e,``);if(n)return/^\d/.test(n)?`v${n}`:n;let r=pe(t,{validate:!0});return r?`commit ${r}`:``}function Yo(e){return`Update available: ${Y(e?.current,e?.currentSha)} to ${Y(e?.latest,e?.latestSha)}`}function Xo({posthog:e}={}){let t=[],n=Array.isArray(e?.projects)?e.projects:[];for(let e of n){let n=G(e?.projectId,G(e?.name,`project`)),r=Array.isArray(e?.issues)?e.issues:[];for(let e=0;e<r.length;e++){let i=r[e],a=G(i?.issueId,G(i?.title,`#${e}`));i?.change===`spiking`&&t.push(`issue:${n}/${a}:spiking`),i?.verdict===`NEEDS_HUMAN`&&t.push(`issue:${n}/${a}:needs-human`)}}return t}function Zo(e={}){return $a(Xo(e))}function Qo(e){return ao[e??``]??so}function $o(e){return Array.isArray(e)?e.map((e,t)=>({issue:e,index:t})).sort((e,t)=>{let n=Qo(e.issue?.change)-Qo(t.issue?.change);if(n!==0)return n;let r=K(t.issue?.users,0)-K(e.issue?.users,0);if(r!==0)return r;let i=K(t.issue?.occurrences,0)-K(e.issue?.occurrences,0);return i===0?e.index-t.index:i}).map(e=>e.issue):[]}var es=Object.freeze({fetch:`Fetch`,stage:`Stage`,install:`Install dependencies`,"link-deps":`Link dependencies`,build:`Build`}),ts=Object.freeze({"release-check-failed":`The last release check failed.`,"update-check-failed":`The last update check failed.`}),ns=Object.freeze([`unsupported-flavor`,`unsupported-platform`]),rs=`Not connected to the server. Reconnecting.`,is=Object.freeze({requested:!1,failure:null});function as(e){return e.replace(/^\[[^\]]+\]\s*/,``)}function os(e,t,n=null){return t===`request-sent`?{requested:!0,failure:null}:t===`request-unsent`?{requested:!1,failure:rs}:t===`progress-frame`?is:t===`error-frame`?e.requested?{requested:!1,failure:n}:e:e.failure===null?e:{requested:e.requested,failure:null}}function ss(e,t){return t?.state?t.state:e?.journalSummary?.state}function X(e,t=null,n=null){return{actions:e,note:t,command:n}}function cs(e){let t=e?.applyRefusal;return t?ns.includes(t.reason):!1}function ls({status:e,journal:t,request:n=is}){if(n.failure===`Not connected to the server. Reconnecting.`)return X([],rs);let r=us(ss(e,t),e,n.requested);return n.failure?{...r,note:n.failure}:r}function us(e,t,n){if(e===`running`||n)return X([]);if(e===`staged`||ds(t))return X([`restart`]);if(!t?.updateAvailable)return X([`check`]);let r=t.applyRefusal;return r?cs(t)?X([`check`],r.message,G(t.command,null)):X([`check`],r.message):X([`update`])}function ds(e){return e?.applyRefusal?.reason===`target-already-checked-out`}function fs(e){return e?.journalSummary?.state===`staged`||ds(e)}function ps(e){return ts[e]??`The last update check failed: ${e}.`}function ms(e){let t=G(e?.deprecation,null);return t?`Security notice: ${Y(e?.current,e?.currentSha)||`This version`} is marked unsafe. ${t}`:null}function hs(e){let t=Y(e?.latest,e?.latestSha)||`A new version`;if(fs(e))return{mode:`restart`,text:`${t} is ready. Restart to update, or it installs on the next start.`};if(e?.journalSummary?.state===`running`)return{mode:`link`,text:`Downloading ${t} in the background.`};let n=Yo(e);return!e||e.applyRefusal===void 0||cs(e)?{mode:`command`,text:n}:{mode:`link`,text:n}}function gs(e){let t=hs(e),n=ms(e);return n?fs(e)||e?.journalSummary?.state===`running`?{mode:t.mode,tone:`security`,text:`${n} ${t.text}`}:{mode:`command`,tone:`security`,text:n}:{...t,tone:`update`}}function _s(e){let t=G(e,``);return t?`: ${t}`:``}var vs=new Set([`idle`,`staged`,`succeeded`,`discarded`]);function ys(e){return e.state===`failed`?`Update failed${_s(e.reason)}.`:e.state===`interrupted`?`Update interrupted${_s(e.reason)}.`:null}function bs(e){return es[e]??e}function xs(e){let t=e.steps.find(t=>t.id===e.activeStep);if(t&&t.outputTail.length>0)return{stepId:t.id,lines:t.outputTail};let n=e.steps.findLast(e=>e.outputTail.length>0);return n?{stepId:n.id,lines:n.outputTail}:{stepId:null,lines:[]}}function Ss(e){if(!e||vs.has(e.state))return null;let t=xs(e),n=t.stepId!==null&&t.stepId!==e.activeStep?t.stepId:null;return{state:e.state,terminalLine:ys(e),steps:e.steps.map(e=>({id:e.id,label:bs(e.id),status:e.status})),outputTail:t.lines,outputStepId:t.stepId,outputStepLabel:n===null?null:bs(n)}}var Cs=6e5;function ws(e,t){let n=ss(e,t),r=Y(t?.toVersion,t?.toSha)||Y(e?.latest,e?.latestSha)||`the update`;if(n===`running`)return{tone:`running`,headline:`Downloading ${r} in the background. Glimmervoid keeps running.`};if(n===`staged`)return{tone:`staged`,headline:`${r} is ready. Restart to update now, or it installs on the next start.`};if(!e)return{tone:`unknown`,headline:`No update check has run yet.`};let i=ms(e);if(i)return{tone:`security`,headline:i};if(ds(e))return{tone:`staged`,headline:`${Y(e.latest,e.latestSha)||`The latest release`} is already checked out. Restart to run it.`};if(e.updateAvailable)return{tone:`available`,headline:`Update available.`};let a=G(e.reason,``);return a?{tone:`unknown`,headline:ps(a)}:{tone:`current`,headline:`Up to date.`}}function Ts(e){return e?.updateAvailable===!0||ds(e)}function Es(e){if(!e)return`Update status unavailable.`;let t=Y(e.current,null)||`Unknown version`,n=pe(e.currentSha,{validate:!0}),r=G(e.installedBranch,``);return[t,[n?`commit ${n}`:``,r?`on ${r}`:``].filter(Boolean).join(` `),e.isTreeClean===!0?`clean checkout`:e.isTreeClean===!1?`uncommitted local changes`:``].filter(Boolean).join(`, `)}function Ds(e){return e?{label:Y(e.latest,e.latestSha)||`Latest target unknown`,releaseUrl:G(e.releaseUrl,``)}:{label:`Update status unavailable.`,releaseUrl:``}}function Os({status:e,checkForUpdates:t,now:n,lastAutoCheckAt:r}){if(t===!1||r!==null&&n-r<Cs)return!1;let i=typeof e?.lastCheckAt==`number`?e.lastCheckAt:null;return i===null||n-i>=Cs}function ks({status:e,checkForUpdates:t,relativeTime:n}){return t===!1?`Update checks are off.`:e?e.flavor===`unknown`?`The install flavor is unknown.`:n:`No update check has run.`}var As=Object.freeze({[A.DORMANT]:`not-started`,[A.INITIALIZING]:`starting`,[A.STARTING]:`starting`,[A.RUNNING]:`working`,[A.WAITING]:`needs-input`,[A.IDLE]:`idle`,[A.COMPLETE]:`complete`,[A.DONE]:`exited`,[A.FAILED]:`failed`}),js=`monitoring`,Z=e=>({fill:`none`,stroke:`currentColor`,"stroke-width":e,"stroke-linecap":`round`,"stroke-linejoin":`round`}),Q={fill:`currentColor`},Ms=Object.freeze({"not-started":[{tag:`circle`,attributes:{cx:`8`,cy:`8`,r:`6`,...Z(`1.6`),"stroke-linecap":`butt`,"stroke-dasharray":`2.6 2.1`}}],starting:[{tag:`circle`,attributes:{cx:`8`,cy:`8`,r:`6`,...Z(`1.8`),"stroke-opacity":`.25`}},{tag:`path`,attributes:{d:`M8 2a6 6 0 0 1 6 6`,...Z(`1.8`),class:`status-icon-spin`}}],working:[{tag:`circle`,attributes:{cx:`8`,cy:`8`,r:`4`,...Z(`1.4`),class:`status-icon-ping`}},{tag:`circle`,attributes:{cx:`8`,cy:`8`,r:`4`,...Q}}],monitoring:[{tag:`path`,attributes:{d:`M1.3 8S3.8 3.4 8 3.4 14.7 8 14.7 8 12.2 12.6 8 12.6 1.3 8 1.3 8z`,...Z(`1.5`)}},{tag:`circle`,attributes:{cx:`8`,cy:`8`,r:`2.2`,...Q}}],"needs-input":[{tag:`path`,attributes:{d:`M4.6 5.2a3.4 3.4 0 1 1 4.9 3.05c-1 .5-1.5 1.1-1.5 2.05v.6`,...Z(`2.5`)}},{tag:`circle`,attributes:{cx:`8`,cy:`14`,r:`1.55`,...Q}}],idle:[{tag:`rect`,attributes:{x:`3.6`,y:`2.8`,width:`3`,height:`10.4`,rx:`.8`,...Q}},{tag:`rect`,attributes:{x:`9.4`,y:`2.8`,width:`3`,height:`10.4`,rx:`.8`,...Q}}],complete:[{tag:`path`,attributes:{d:`M2.8 8.4l3.4 3.4 7-7.4`,...Z(`2.2`)}}],exited:[{tag:`rect`,attributes:{x:`3`,y:`3`,width:`10`,height:`10`,rx:`1.6`,...Q}}],failed:[{tag:`path`,attributes:{d:`M3.5 3.5l9 9M12.5 3.5l-9 9`,...Z(`2`)}}]});function Ns(e,t){return!e||e.toLowerCase().endsWith(`[bot]`)?null:`https://avatars.githubusercontent.com/${encodeURIComponent(e)}?s=${t*2}`}function Ps(e){return e.match(/[a-z0-9]/i)?.[0]?.toUpperCase()??`?`}function $(e,t,n){let r=document.createElement(e);return t&&(r.className=t),n!=null&&(r.textContent=n),r}function Fs(e,t,n){let r=$(e,t);return r.innerHTML=n,r}function Is(e,t){for(let[n,r]of t)e.style.setProperty(n,r)}function Ls({login:e,url:t,cssPx:n}){let r=$(`span`,`avatar`);r.style.width=`${n}px`,r.style.height=`${n}px`;let i=()=>$(`span`,`avatar-monogram`,Ps(e)),a=t===void 0?Ns(e,n):t;if(!a)return r.append(i()),r;let o=$(`img`);return o.src=a,o.width=n,o.height=n,o.loading=`lazy`,o.decoding=`async`,o.referrerPolicy=`no-referrer`,o.alt=``,o.addEventListener(`error`,()=>o.replaceWith(i()),{once:!0}),r.append(o),r}function Rs(e,t){let n=$(`span`,`avatar-stack`);for(let r of e){let e=Ls({login:r.login,url:r.url,cssPx:t});e.title=r.title,e.setAttribute(`role`,`img`),e.setAttribute(`aria-label`,r.title);let i=$(`span`,`avatar-badge`);i.dataset.tone=r.tone,e.append(i),n.append(e)}return n}function zs(e,t,n){let r=e.querySelector(t);if(!r||r.tagName.toLowerCase()!==n)throw Error(`${t} does not match a <${n}>`);return r}function Bs(e,t){let n=e.querySelector(t);if(!(n instanceof HTMLElement))throw Error(`${t} matches no element`);return n}function Vs(e,t,n,r=t){if(!n){let n=$(`span`,e,t);return n.title=r,n}let i=$(`a`,e,t);return i.title=r,i.href=n,i.target=`_blank`,i.rel=`noopener`,i}function Hs(e,t){return e===A.RUNNING&&t===!0}function Us(e,t=!1){let n=e,r=Hs(e,t),i=r?`Monitoring`:Rr[n]||e;return{icon:r?js:As[n]??As[A.DORMANT],label:i.toUpperCase(),isMonitoring:r}}function Ws(e){if(!e)return;let t=null,n=()=>{t=null;let n=e.offsetHeight;n>0&&document.documentElement.style.setProperty(`--header-h`,`${n}px`)};new ResizeObserver(()=>{t===null&&(t=requestAnimationFrame(n))}).observe(e)}function Gs(e,t,n){let r=$(`section`,`${e}-section`),i=$(`div`,`${e}-section-head`);return i.append($(`h2`,`${e}-section-title`,t)),n&&i.append($(`span`,`${e}-section-hint`,n)),r.append(i),r}function Ks(e,t,n,r){let i=$(`span`,`${e}-stat`);return r&&(i.dataset.tone=r),i.append($(`span`,`${e}-stat-value`,n),$(`span`,`${e}-stat-label`,t)),i}function qs(e){return Array.isArray(e?.projects)?e.projects:[]}function Js(e){return!e||!!e.closest(`[hidden]`)}function Ys(e){return navigator.clipboard?.writeText?navigator.clipboard.writeText(e):null}function Xs(e,t){e&&t&&e.parentElement!==t&&(e._adoptHome||={parent:e.parentElement,next:e.nextElementSibling},t.appendChild(e))}function Zs(e,t=null){let n=e?._adoptHome;n&&(delete e._adoptHome,n.parent?.isConnected?n.next&&n.next.parentElement===n.parent?n.parent.insertBefore(e,n.next):n.parent.appendChild(e):t&&t.appendChild(e))}var Qs=new Set([`ArrowUp`,`ArrowDown`,`ArrowLeft`,`ArrowRight`,`PageUp`,`PageDown`]);function $s(e,t){return e.value!==``&&Qs.has(t.key)}function ec(e){let t=document.activeElement;return t instanceof HTMLElement?t.isContentEditable?!0:t instanceof HTMLTextAreaElement&&t.dataset.dashboardShortcuts===`allowed`?$s(t,e):(t.tagName===`INPUT`||t.tagName===`TEXTAREA`)&&!t.classList.contains(`xterm-helper-textarea`):!1}export{Zo as $,Hn as $t,Ts as A,$e as An,ba as At,yo as B,Ur as Bt,rs as C,cn as Cn,qa as Ct,Ss as D,ct as Dn,ia as Dt,Ds as E,bt as En,_a as Et,io as F,va as Ft,go as G,Br as Gt,wo as H,Rr as Ht,ro as I,ca as It,Mo as J,kr as Jt,bo as K,A as Kt,vo as L,gi as Lt,ls as M,Me as Mn,ma as Mt,as as N,Ne as Nn,ha as Nt,os as O,De as On,Ta as Ot,ws as P,pe as Pn,Ia as Pt,Ko as Q,rr as Qt,xo as R,ni as Rt,is as S,ln as Sn,Za as St,ks as T,Ct as Tn,G as Tt,Wo as U,zr as Ut,Co as V,qr as Vt,qo as W,Vr as Wt,Io as X,Xn as Xt,ho as Y,Zn as Yt,Po as Z,Qn as Zt,Is as _,Lt as _n,Ya as _t,Rs as a,At as an,Uo as at,As as b,tn as bn,Qa as bt,Vs as c,Ft as cn,Lo as ct,ec as d,S as dn,Eo as dt,zn as en,Ho as et,Ws as f,Yt as fn,mo as ft,Zs as g,Pt as gn,Ua as gt,zs as h,Xt as hn,to as ht,Ls as i,jt as in,Ao as it,gs as j,He as jn,xa as jt,Os as k,ye as kn,Da as kt,Hs as l,kt as ln,Ro as lt,Bs as m,Zt as mn,$a as mt,Gs as n,kn as nn,Do as nt,$ as o,Mt as on,$o as ot,qs as p,$t as pn,So as pt,jo as q,Ar as qt,Ks as r,Nt as rn,Jo as rt,Fs as s,sn,Fo as st,Xs as t,Ln as tn,ko as tt,Js as u,It as un,To as ut,Us as v,an as vn,Ja as vt,Es as w,b as wn,K as wt,Ms as x,en as xn,Xa as xt,Ys as y,on as yn,Ka as yt,_o as z,Hr as zt};
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{_ as e,a as t,f as n,l as r,m as i,n as a,r as o,u as s}from"./zod-BRLv4KqJ.js";import{C as c,n as l,o as u,p as ee,r as d,u as f}from"./dom-helpers-xJduxDcc.js";import{u as p}from"./control-ws-CAcwW-r9.js";import{i as m,s as h,t as g}from"./action-status-BwqYb9eF.js";import{a as _}from"./modal-mWl2H7A_.js";import{Bt as v,Rt as y,zt as b}from"./index-D6m--U7B.js";var te=n(i(),e());s({glimmervoidId:i().min(1),event:i().min(1),token:i().nullable().optional(),payload:te}),s({id:i().min(1),name:i().min(1),event:i().min(1),matcher:i().optional(),type:a([`command`,`http`]),command:i().optional(),url:i().optional(),timeout:r().int().positive().optional(),enabled:t(),projects:o(i()).optional()}).passthrough();var ne=`Claude Code hooks injected into every session Glimmervoid spawns.`,re=`Loading hooks`,ie=`No hooks yet. A hook runs a command, or calls a URL, when a Claude Code event fires in a Glimmervoid session. Start from one of these, or add your own.`,ae=`Start from`,oe=`Filter by name, event or command`,se=`Nothing matches that filter.`,ce=`Preview`,le=`The entry this becomes in the per-session settings file.`,ue=`Duplicate`,de=`Discard changes`,fe=`Close the editor and lose the unsaved changes?`,pe=`Esc cancels. Ctrl+Enter saves.`,me=4,he=`A change reaches a session at its next start or restart. Claude Code sessions only; Codex and Grok sessions do not read this file.`,ge=`Glimmervoid's own hooks`,_e=`Always present, read-only. Status detection depends on them.`,ve=`Your hooks`,ye=`New hook`,be=`Edit hook`,xe=`Saved to config.json.`,x=`All projects`,Se=`This event takes no matcher.`,Ce=`Blank uses Claude Code's default for the event.`,we=Object.freeze([{value:`command`,label:`Command`,hint:`Run a shell command. It receives the event JSON on stdin.`},{value:`http`,label:`HTTP`,hint:`POST the event JSON to a URL.`}]),Te=Object.freeze([{id:`lint`,label:`Lint after edits`,summary:`PostToolUse on Edit|Write`,draft:{name:`Lint after edits`,event:`PostToolUse`,matcher:`Edit|Write`,type:`command`,command:`npx biome check --write "$(jq -r .tool_input.file_path)"`}},{id:`notify`,label:`Notify on Stop`,summary:`Stop, command`,draft:{name:`Notify on Stop`,event:`Stop`,matcher:``,type:`command`,command:`command -v notify-send >/dev/null 2>&1 && notify-send "Claude finished a turn" || { command -v osascript >/dev/null 2>&1 && osascript -e 'display notification "Claude finished a turn" with title "Claude Code"'; }`}},{id:`guard`,label:`Guard destructive Bash`,summary:`PreToolUse on Bash, exit 2 blocks`,draft:{name:`Guard destructive Bash`,event:`PreToolUse`,matcher:`Bash`,type:`command`,command:`jq -r .tool_input.command | grep -Eq "rm -rf|git push --force" && exit 2 || exit 0`}},{id:`log`,label:`Log every prompt`,summary:`UserPromptSubmit, appends JSON`,draft:{name:`Log every prompt`,event:`UserPromptSubmit`,matcher:``,type:`command`,command:`cat >> ~/.claude/prompts.jsonl`}}]),Ee=Object.freeze({hooks:[],builtin:[],events:[]});function De(e){return!e||typeof e.error==`string`}function Oe(e){return!e||typeof e.error!=`string`?``:e.error}function S(e,t){let n=e?.[t];return Array.isArray(n)?n:Ee[t]}var C=e=>S(e,`hooks`),w=e=>S(e,`builtin`),T=e=>S(e,`events`);function E(e){let t=e?.limits?.maxTimeoutSec;return typeof t==`number`&&Number.isInteger(t)&&t>0?t:600}function ke(e){let t=C(e),n=t.filter(e=>e.enabled!==!1).length;return[{label:`yours`,value:String(t.length),tone:null},{label:`enabled`,value:String(n),tone:t.length>0&&n===0?`warn`:null},{label:`built in`,value:String(w(e).length),tone:null}]}function Ae(e,t){let n=new Map(t.map((e,t)=>[e.name,t])),r=e=>n.get(e.event)??t.length;return[...e].sort((e,t)=>{let n=r(e)-r(t);return n===0?String(e.name).localeCompare(String(t.name)):n})}function je(e,t){let n=String(t||``).trim().toLowerCase();return n?e.filter(e=>[e.name,e.event,e.matcher,e.command,e.url].some(e=>typeof e==`string`&&e.toLowerCase().includes(n))):e}function Me(e){return e.length>=me}function Ne(e){let t=[];for(let n of e){let e=t[t.length-1];e&&e.event===n.event?e.hooks.push(n):t.push({event:n.event,hooks:[n]})}return t}function Pe(e){let t=e.type===`http`?{type:`http`,url:e.url||``}:{type:`command`,command:e.command||``};Number.isInteger(e.timeout)&&Number(e.timeout)>0&&(t.timeout=e.timeout);let n=e.matcher?{matcher:e.matcher,hooks:[t]}:{hooks:[t]};return JSON.stringify({hooks:{[e.event]:[n]}},null,2)}function Fe(e){return`${e} copy`}function D(e,t){return e.find(e=>e.name===t)||null}function O(e,t){let n=D(e,t);return n?n.matcher?`Matches ${n.matcher}. Blank matches every ${n.name}.`:Se:``}function Ie(e){return e.type===`http`?e.url||``:e.command||``}function Le(e){let t=we.find(t=>t.value===e);return t?t.label:String(e||``)}function Re(e){return!Number.isInteger(e.timeout)||Number(e.timeout)<=0?``:`${e.timeout}s timeout`}function ze(e,t){let n=Array.isArray(e.projects)?e.projects:[];return n.length===0?x:n.map(e=>{let n=t.find(t=>t.id===e);return n?n.name:e}).join(`, `)}function Be(e){return e.matcher?`${e.event} / ${e.matcher}`:e.event}function Ve(e){return Be(e)}function He(e,t){let n=Array.isArray(e.projects)?e.projects:[],r=new Set(t.map(e=>e.id));return n.filter(e=>!r.has(e))}function k(e){let t=e[0];return{id:null,name:``,event:t?t.name:``,matcher:``,type:`command`,command:``,url:``,timeout:``,enabled:!0,projects:[]}}function A(e){return{id:e.id??null,name:e.name||``,event:e.event||``,matcher:e.matcher||``,type:e.type===`http`?`http`:`command`,command:e.command||``,url:e.url||``,timeout:Number.isInteger(e.timeout)?String(e.timeout):``,enabled:e.enabled!==!1,projects:Array.isArray(e.projects)?[...e.projects]:[]}}function Ue(e,t,n=600){if(!e.name.trim())return`Give the hook a name.`;let r=D(t,e.event);if(!r)return`Pick an event.`;if(e.matcher.trim()&&!r.matcher)return`${r.name} takes no matcher.`;if(e.type===`http`&&r.http===!1)return`${r.name} does not support HTTP hooks.`;if(e.type===`command`&&!e.command.trim())return`Enter the command to run.`;if(e.type===`http`&&!/^https?:\/\/\S+$/i.test(e.url.trim()))return`Enter a URL starting with http:// or https://.`;if(e.timeout.trim()!==``){let t=Number(e.timeout);if(!Number.isInteger(t)||t<1||t>n)return`Timeout must be a whole number of seconds from 1 to ${n}.`}return null}function j(e){let t={name:e.name.trim(),event:e.event,type:e.type,enabled:e.enabled!==!1};return e.id&&(t.id=e.id),e.matcher.trim()&&(t.matcher=e.matcher.trim()),e.type===`command`&&(t.command=e.command.trim()),e.type===`http`&&(t.url=e.url.trim()),e.timeout.trim()!==``&&(t.timeout=Number(e.timeout)),e.projects.length>0&&(t.projects=[...e.projects]),t}function We(e,t){let n={...k(t),...e.draft};return D(t,n.event)||(n.event=k(t).event),n}function Ge(e,t){return JSON.stringify(j(e))!==JSON.stringify(t)}function Ke(e){return{...e,enabled:e.enabled===!1}}function qe(e){return`Delete the hook "${e.name}"? Sessions already running keep it until they restart.`}var M=y(),N=null,P=null,F=null,I=null,L=null,R=null,z=!1,B=``,V=new Set,H=new Set,U=new Map,W=!1,G=(e,t)=>l(`hooks`,e,t);function K(e,t,n){let r=u(`p`,e,t);return n&&(r.dataset.tone=n),r}function q(e,t,n,r){let i=u(`button`,e,t);return i.type=`button`,r&&i.setAttribute(`aria-label`,r),i.addEventListener(`click`,n),i}async function Je(e,t){try{let n=await p(e,t,{timeoutMs:g});if((n.type===`save-hook-result`||n.type===`delete-hook-result`)&&n.ok)return null;let r=e===`save-hook`?`Could not save the hook.`:`Could not delete the hook.`;return`error`in n&&typeof n.error==`string`&&n.error?n.error:r}catch(e){return h(e,g)}}async function Ye(e,t,n,r){H.add(e),U.set(e,{tone:`busy`,text:r}),$({force:!0});let i=await Je(t,n);H.delete(e),i&&U.set(e,{tone:`error`,text:i}),i||U.delete(e),$({force:!0}),b()}function J(e,t,n){let r=u(`label`,`hooks-field`);return r.append(u(`span`,`hooks-field-label`,e),t),n&&r.append(u(`span`,`hooks-field-hint`,n)),r}function Y(e,t,n){let r=u(`input`,`settings-view-input`);return r.type=`text`,r.value=e,r.autocomplete=`off`,r.spellcheck=!1,t&&(r.placeholder=t),r.addEventListener(`input`,()=>n(r.value)),r}function Xe(e,t){let n=u(`textarea`,`settings-view-input hooks-command`);return n.rows=3,n.value=e,n.spellcheck=!1,n.addEventListener(`input`,()=>t(n.value)),n}function Ze(e,t,n){let r=u(`select`,`settings-view-input hooks-select`);for(let n of t){let t=u(`option`,null,n.name);t.value=n.name,t.title=n.description,n.name===e.event&&(t.selected=!0),r.append(t)}return r.addEventListener(`change`,()=>n(r.value)),r}function Qe(e,t){let n=u(`div`,`hooks-type-row`);n.setAttribute(`role`,`radiogroup`);for(let r of we){let i=u(`label`,`settings-view-toggle hooks-choice`),a=u(`input`,`settings-view-checkbox`);a.type=`radio`,a.name=`hooks-type`,a.value=r.value,a.checked=e.type===r.value,a.title=r.hint,a.addEventListener(`change`,()=>{a.checked&&t(r.value)}),i.append(a,u(`span`,null,r.label)),n.append(i)}return n}function $e(e,t){let n=u(`div`,`hooks-projects`);if(t.length===0)return n.append(u(`span`,`hooks-field-hint`,x)),n;let r=u(`label`,`settings-view-project-choice hooks-choice`),i=u(`input`,`settings-view-checkbox`);i.type=`checkbox`,i.checked=e.projects.length===0,r.append(i,u(`span`,null,x)),n.append(r);let a=[];for(let r of t){let t=u(`label`,`settings-view-project-choice hooks-choice`),o=u(`input`,`settings-view-checkbox`);o.type=`checkbox`,o.value=r.id,o.checked=e.projects.includes(r.id),o.addEventListener(`change`,()=>{e.projects=a.filter(e=>e.checked).map(e=>e.value),i.checked=e.projects.length===0}),a.push(o),t.append(o,u(`span`,null,r.name)),r.agent!==`claude-code`&&(t.append(u(`span`,`hooks-choice-note`,r.agent)),t.title=`Not a Claude Code project: this hook will not reach its sessions.`),n.append(t)}return i.addEventListener(`change`,()=>{if(!i.checked)i.checked=e.projects.length===0;else{for(let e of a)e.checked=!1;e.projects=[]}}),n}function et(e){let t=u(`div`,`hooks-templates`);t.append(u(`span`,`hooks-templates-label`,ae));for(let n of Te){let r=q(`hooks-chip`,n.label,()=>Z(null,We(n,e)));r.title=n.summary,t.append(r)}return t}function X(e){L&&(e?L.show(`error`,e):L.clear())}function tt(e){let t=T(M.report),n=ee(M.report),r=G(e.id?be:ye,xe);r.classList.add(`hooks-editor`);let i=u(`form`,`hooks-form`);i.addEventListener(`submit`,e=>{e.preventDefault(),rt()}),i.addEventListener(`keydown`,e=>{e.key===`Escape`?(e.preventDefault(),nt()):e.key===`Enter`&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),rt())}),e.id||i.append(et(t));let a=u(`span`,`hooks-field-hint`,O(t,e.event)),o=Y(e.matcher,``,t=>{e.matcher=t}),s=J(`Command`,Xe(e.command,t=>{e.command=t}),`Runs through the shell with the event JSON on stdin. Exit 2 blocks the action where the event allows it.`),c=J(`URL`,Y(e.url,`http://127.0.0.1:8080/hook`,t=>{e.url=t}),`Claude Code POSTs the event JSON to it.`),l=()=>{s.hidden=e.type!==`command`,c.hidden=e.type!==`http`};l();let d=J(`Matcher`,o,null);d.append(a);let f=()=>{let n=t.find(t=>t.name===e.event);a.textContent=O(t,e.event),o.disabled=!!n&&!n.matcher,o.disabled&&(o.value=``,e.matcher=``)};f();let p=u(`input`,`settings-view-input hooks-timeout`);p.type=`number`,p.inputMode=`numeric`,p.min=`1`,p.max=String(E(M.report)),p.value=e.timeout,p.addEventListener(`input`,()=>{e.timeout=p.value});let h=u(`label`,`settings-view-toggle hooks-choice`),g=u(`input`,`settings-view-checkbox`);g.type=`checkbox`,g.checked=e.enabled,g.addEventListener(`change`,()=>{e.enabled=g.checked}),h.append(g,u(`span`,null,`Enabled`)),i.append(J(`Name`,Y(e.name,`Lint after edits`,t=>{e.name=t}),null),J(`Event`,Ze(e,t,t=>{e.event=t,f()}),null),d,J(`Type`,Qe(e,t=>{e.type=t,l()}),null),s,c,J(`Timeout (seconds)`,p,Ce),J(`Projects`,$e(e,n),null),J(``,h,null)),L=m(`hooks-editor-status`);let _=u(`div`,`hooks-editor-footer`),v=u(`span`,`hooks-editor-shortcut`,pe),y=q(`btn-dialog btn-dialog-cancel`,`Cancel`,nt),b=u(`button`,`btn-dialog btn-dialog-confirm`,e.id?`Save changes`:`Add hook`);return b.type=`submit`,R=b,_.append(L.element,v,y,b),i.append(_),r.append(i),r}function Z(e,t=null){P=t||(e?A(e):k(T(M.report))),F=j(e?A(e):k(T(M.report))),I=tt(P),$({force:!0}),I.scrollIntoView({block:`nearest`});let n=I.querySelector(`input[type=text]`);n instanceof HTMLInputElement&&n.focus()}function Q(){P=null,F=null,I=null,L=null,R=null,z=!1,W=!0,$({force:!0})}function nt(){!P||!F||!Ge(P,F)?Q():_({title:de,message:fe,confirmLabel:`Discard`,danger:!0,onConfirm:Q})}async function rt(){if(!P||z)return;let e=Ue(P,T(M.report),E(M.report));if(e){X(e);return}let t=L,n=R;z=!0,t?.show(`busy`,`Saving the hook.`),n&&(n.disabled=!0);let r=await Je(`save-hook`,{hook:j(P)});z=!1,n&&(n.disabled=!1),t===L&&(r?X(r):(Q(),b()))}function it(e){let t=u(`details`,`hooks-preview`);t.open=V.has(e.id),t.addEventListener(`toggle`,()=>{t.open?V.add(e.id):V.delete(e.id)});let n=u(`summary`,`hooks-preview-summary`,ce);n.title=le;let r=u(`pre`,`hooks-preview-code`,Pe(e));return t.append(n,r),t}function at(e,{grouped:t=!1}={}){let n=ee(M.report),r=u(`article`,`hooks-row`);r.setAttribute(`aria-label`,e.name),e.enabled===!1&&(r.dataset.state=`off`);let i=u(`div`,`hooks-row-main`),a=u(`div`,`hooks-row-head`);a.append(u(`span`,`hooks-row-name`,e.name));let o=t?e.matcher||``:Be(e);o&&a.append(u(`span`,`hooks-row-event`,o));let s=u(`code`,`hooks-row-target`,Ie(e));s.title=Ie(e);let c=u(`p`,`hooks-row-meta`,[Le(e.type),Re(e),ze(e,n)].filter(Boolean).join(` / `));i.append(a,s,c);let l=He(e,n);l.length>0&&i.append(K(`hooks-row-meta`,`Scoped to a project no longer in config: ${l.join(`, `)}`,`warn`)),i.append(it(e));let d=U.get(e.id);if(d){let e=m(`hooks-row-status`);e.show(d.tone,d.text),i.append(e.element)}let f=u(`div`,`hooks-row-actions`),p=u(`label`,`settings-view-toggle hooks-choice`),h=u(`input`,`settings-view-checkbox`);h.type=`checkbox`,h.checked=e.enabled!==!1,h.disabled=H.has(e.id),h.setAttribute(`aria-label`,`${e.name} enabled`),h.addEventListener(`change`,()=>{Ye(e.id,`save-hook`,{hook:Ke(e)},h.checked?`Turning the hook on.`:`Turning the hook off.`)}),p.append(h,u(`span`,null,`On`));let g=q(`hooks-btn`,`Edit`,()=>Z(e),`Edit ${e.name}`),v=q(`hooks-btn`,ue,()=>{let t=A({...e,name:Fe(e.name)});t.id=null,Z(null,t)},`Duplicate ${e.name}`),y=q(`hooks-btn hooks-btn-danger`,`Delete`,()=>{_({title:`Delete hook`,message:qe(e),confirmLabel:`Delete`,danger:!0,onConfirm:()=>{Ye(e.id,`delete-hook`,{id:e.id},`Deleting the hook.`)}})},`Delete ${e.name}`);return y.disabled=H.has(e.id),f.append(p,g,v,y),r.append(i,f),r}function ot(e){let t=u(`article`,`hooks-row hooks-row-builtin`),n=u(`div`,`hooks-row-main`);return n.append(u(`span`,`hooks-row-event`,Ve(e)),u(`p`,`hooks-row-meta`,e.purpose)),t.append(n),t}function st(){let e=G(`Hooks`,ne),t=u(`div`,`hooks-stats`);for(let e of ke(M.report))t.append(d(`hooks`,e.label,e.value,e.tone));return e.append(t,K(`hooks-meta`,he)),e}function ct(){let e=u(`input`,`settings-view-input hooks-filter`);return e.type=`search`,e.value=B,e.placeholder=oe,e.setAttribute(`aria-label`,oe),e.addEventListener(`input`,()=>{B=e.value;let t=N?.querySelector(`.hooks-list-yours`);t&&t.replaceWith(ut())}),e}function lt(){let e=u(`div`,`hooks-empty-state`);return e.append(K(`hooks-empty`,ie),et(T(M.report))),e}function ut(){let e=u(`div`,`hooks-list-yours`),t=C(M.report);if(t.length===0)return e.append(lt()),e;let n=je(Ae(t,T(M.report)),B);if(n.length===0)return e.append(K(`hooks-empty`,se)),e;for(let t of Ne(n)){let n=u(`div`,`hooks-group`);n.append(u(`h3`,`hooks-group-title`,t.event));let r=u(`div`,`hooks-list`);for(let e of t.hooks)r.append(at(e,{grouped:!0}));n.append(r),e.append(n)}return e}function dt(){let e=G(ve,null),t=q(`hooks-btn hooks-btn-add`,`+ New hook`,()=>Z(null));t.disabled=!!P;let n=e.querySelector(`.hooks-section-head`);return n&&n.append(t),Me(C(M.report))&&e.append(ct()),e.append(ut()),e}function ft(){let e=u(`details`,`hooks-builtin`),t=u(`summary`,`hooks-builtin-summary`);t.append(u(`span`,`hooks-section-title`,`${ge} (${w(M.report).length})`),u(`span`,`hooks-section-hint`,_e));let n=u(`div`,`hooks-list`);for(let e of w(M.report))n.append(ot(e));return e.append(t,n),e}function pt(){let e=u(`div`,`hooks-content`);return M.report?De(M.report)?(e.append(K(`hooks-warning`,Oe(M.report))),e):(e.append(st()),I&&e.append(I),e.append(dt(),ft()),e):(e.append(M.hasReportSendFailed?K(`hooks-warning`,c):K(`hooks-empty`,re)),e)}function $({force:e=!1}={}){if(!N||!e&&f(N)||(M=y(),N.replaceChildren(pt()),!W))return;W=!1;let t=N.querySelector(`.hooks-btn-add`);t instanceof HTMLButtonElement&&t.focus()}function mt(e){N||(N=u(`div`,`hooks-panel`),e.append(N),v(()=>$()),$({force:!0}))}function ht(e){e===`shown`&&$({force:!0}),b()}var gt={mount:mt,refresh:ht};export{gt as view};
|
|
Binary file
|