@wjarka/cezarion 0.14.8-pr540.823 → 0.14.9-dev.1004

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.
Files changed (174) hide show
  1. package/README.md +56 -3
  2. package/dist/automations/scheduler.d.ts +6 -0
  3. package/dist/automations/scheduler.js +45 -17
  4. package/dist/automations/scheduler.js.map +1 -1
  5. package/dist/automations/store.d.ts +12 -4
  6. package/dist/automations/store.js +199 -22
  7. package/dist/automations/store.js.map +1 -1
  8. package/dist/automations/types.d.ts +2 -0
  9. package/dist/automations/types.js +1 -0
  10. package/dist/automations/types.js.map +1 -1
  11. package/dist/contract/automations.d.ts +6 -0
  12. package/dist/contract/delegation.d.ts +29 -0
  13. package/dist/contract/discovery.d.ts +134 -0
  14. package/dist/contract/index.d.ts +1 -0
  15. package/dist/contract/index.js +1520 -1447
  16. package/dist/contract/projects.d.ts +40 -0
  17. package/dist/contract/runs.d.ts +43 -0
  18. package/dist/contract/skills.d.ts +5 -0
  19. package/dist/core/claude-cli-runner.js +1 -1
  20. package/dist/core/claude-cli-runner.js.map +1 -1
  21. package/dist/core/cursor-acp-runner.d.ts +2 -0
  22. package/dist/core/cursor-acp-runner.js +159 -26
  23. package/dist/core/cursor-acp-runner.js.map +1 -1
  24. package/dist/core/cursor-provider-error.d.ts +3 -0
  25. package/dist/core/cursor-provider-error.js +14 -1
  26. package/dist/core/cursor-provider-error.js.map +1 -1
  27. package/dist/core/opencode-server-runner.js +12 -5
  28. package/dist/core/opencode-server-runner.js.map +1 -1
  29. package/dist/core/pi-runner.js +17 -4
  30. package/dist/core/pi-runner.js.map +1 -1
  31. package/dist/core/provider-auth.d.ts +99 -1
  32. package/dist/core/provider-auth.js +203 -2
  33. package/dist/core/provider-auth.js.map +1 -1
  34. package/dist/delegation/cli.d.ts +1 -0
  35. package/dist/delegation/cli.js +1 -1
  36. package/dist/delegation/cli.js.map +1 -1
  37. package/dist/delegation/policy.d.ts +3 -2
  38. package/dist/delegation/policy.js +3 -1
  39. package/dist/delegation/policy.js.map +1 -1
  40. package/dist/delegation/process-liveness.d.ts +66 -0
  41. package/dist/delegation/process-liveness.js +215 -0
  42. package/dist/delegation/process-liveness.js.map +1 -0
  43. package/dist/delegation/provision.d.ts +1 -1
  44. package/dist/delegation/provision.js +5 -2
  45. package/dist/delegation/provision.js.map +1 -1
  46. package/dist/delegation/results.js +10 -6
  47. package/dist/delegation/results.js.map +1 -1
  48. package/dist/delegation/routes.d.ts +101 -54
  49. package/dist/delegation/routes.js +3 -2
  50. package/dist/delegation/routes.js.map +1 -1
  51. package/dist/delegation/service.d.ts +8 -1
  52. package/dist/delegation/service.js +56 -7
  53. package/dist/delegation/service.js.map +1 -1
  54. package/dist/delegation/transport.d.ts +40 -4
  55. package/dist/discovery/catalog.d.ts +14 -0
  56. package/dist/discovery/catalog.js +31 -0
  57. package/dist/discovery/catalog.js.map +1 -0
  58. package/dist/discovery/cli.d.ts +8 -0
  59. package/dist/discovery/cli.js +104 -0
  60. package/dist/discovery/cli.js.map +1 -0
  61. package/dist/git-worktree.d.ts +3 -1
  62. package/dist/git-worktree.js +26 -4
  63. package/dist/git-worktree.js.map +1 -1
  64. package/dist/index.js +20 -0
  65. package/dist/index.js.map +1 -1
  66. package/dist/runs/agent-tmpdir.d.ts +2 -0
  67. package/dist/runs/agent-tmpdir.js +5 -2
  68. package/dist/runs/agent-tmpdir.js.map +1 -1
  69. package/dist/runs/retention.d.ts +7 -2
  70. package/dist/runs/retention.js +39 -7
  71. package/dist/runs/retention.js.map +1 -1
  72. package/dist/runs/store.d.ts +22 -0
  73. package/dist/runs/store.js +82 -1
  74. package/dist/runs/store.js.map +1 -1
  75. package/dist/runs/webhook.d.ts +125 -0
  76. package/dist/runs/webhook.js +256 -0
  77. package/dist/runs/webhook.js.map +1 -0
  78. package/dist/server/provider-auth-runtime.d.ts +30 -4
  79. package/dist/server/provider-auth-runtime.js +71 -6
  80. package/dist/server/provider-auth-runtime.js.map +1 -1
  81. package/dist/server/server.d.ts +3673 -2420
  82. package/dist/server/server.js +139 -11
  83. package/dist/server/server.js.map +1 -1
  84. package/dist/server-install/platforms/ubuntu-vps.d.ts +5 -1
  85. package/dist/server-install/platforms/ubuntu-vps.js +160 -18
  86. package/dist/server-install/platforms/ubuntu-vps.js.map +1 -1
  87. package/dist/server-install/steps.d.ts +4 -2
  88. package/dist/server-install/steps.js +5 -4
  89. package/dist/server-install/steps.js.map +1 -1
  90. package/dist/skills-remote.d.ts +30 -5
  91. package/dist/skills-remote.js +122 -32
  92. package/dist/skills-remote.js.map +1 -1
  93. package/dist/skills.js +15 -6
  94. package/dist/skills.js.map +1 -1
  95. package/dist/task-cli/cli.js +124 -7
  96. package/dist/task-cli/cli.js.map +1 -1
  97. package/dist/task-cli/discovery.js +6 -5
  98. package/dist/task-cli/discovery.js.map +1 -1
  99. package/dist/task-cli/http.d.ts +3 -0
  100. package/dist/task-cli/http.js.map +1 -1
  101. package/dist/task-cli/watch.d.ts +19 -0
  102. package/dist/task-cli/watch.js +35 -2
  103. package/dist/task-cli/watch.js.map +1 -1
  104. package/dist/workflows/run.d.ts +67 -2
  105. package/dist/workflows/run.js +325 -27
  106. package/dist/workflows/run.js.map +1 -1
  107. package/dist/workspace/agent-profiles.d.ts +22 -0
  108. package/dist/workspace/agent-profiles.js +15 -0
  109. package/dist/workspace/agent-profiles.js.map +1 -1
  110. package/dist/workspace/config.d.ts +9 -0
  111. package/dist/workspace/config.js +13 -1
  112. package/dist/workspace/config.js.map +1 -1
  113. package/dist/workspace/projects.d.ts +24 -1
  114. package/dist/workspace/projects.js +14 -1
  115. package/dist/workspace/projects.js.map +1 -1
  116. package/package.json +5 -5
  117. package/scripts/mock-claude.mjs +26 -0
  118. package/scripts/mock-codex-app-server.mjs +26 -0
  119. package/scripts/mock-cursor-acp.mjs +51 -3
  120. package/scripts/mock-cursor-hang-stdin-late.mjs +35 -0
  121. package/scripts/mock-cursor-hang-stdin.mjs +30 -0
  122. package/scripts/mock-opencode-serve.mjs +33 -0
  123. package/scripts/mock-pi-rpc.mjs +22 -4
  124. package/web/dist/assets/agent-accounts-CerclGiO.js +1 -0
  125. package/web/dist/assets/centered-state-DH8qtCz-.js +43 -0
  126. package/web/dist/assets/{collapsible-Bb2y0asn.js → collapsible-De2G0xqQ.js} +1 -1
  127. package/web/dist/assets/{commit-list-DpxX-bA4.js → commit-list-CQubP1iS.js} +1 -1
  128. package/web/dist/assets/compare-variants-C_NijJvg.js +1 -0
  129. package/web/dist/assets/{diff-rDeblLVZ2.js → diff-8M5HlDxq2.js} +2 -2
  130. package/web/dist/assets/{diff-controls-frbAqBK1.js → diff-controls-B6ok0TtQ.js} +1 -1
  131. package/web/dist/assets/{diff-stat-Cn7rzy1H.js → diff-stat-D1AODN2a.js} +1 -1
  132. package/web/dist/assets/{diff-view-D6N_QzSq.js → diff-view-Bs5Gh7UF.js} +2 -2
  133. package/web/dist/assets/{dropdown-menu-Bwvi4Ono.js → dropdown-menu-7KGQMoFj.js} +1 -1
  134. package/web/dist/assets/{git-toolbar-5TyOh819.js → git-toolbar-DqbapMXr.js} +1 -1
  135. package/web/dist/assets/github-lMHiuYSx.js +1 -0
  136. package/web/dist/assets/{image-preview-B618kDBH.js → image-preview-jzHoEyLM.js} +1 -1
  137. package/web/dist/assets/index-D4OJTArJ.js +7 -0
  138. package/web/dist/assets/index-D5NkwqY7.css +1 -0
  139. package/web/dist/assets/{markdown-BnjmXdz2.js → markdown-DvbymqXz.js} +1 -1
  140. package/web/dist/assets/pill-BL6ugwXo.js +1 -0
  141. package/web/dist/assets/{project-router-BSpCQc8A.js → project-router-ChC5Rb-Y.js} +1 -1
  142. package/web/dist/assets/{prompt-templates-BsHnTixc.js → prompt-templates-j8qlK7c-.js} +3 -3
  143. package/web/dist/assets/repo-git-BbPAgkqb.js +1 -0
  144. package/web/dist/assets/{run-diff-CFeYdPGE.js → run-diff-BuATgZpx.js} +2 -2
  145. package/web/dist/assets/run-header-DuAWswYM.js +1 -0
  146. package/web/dist/assets/skills-DiC2XrU1.js +1 -0
  147. package/web/dist/assets/{tab-link-BXDesc8g.js → tab-link-BmGKj9Rt.js} +1 -1
  148. package/web/dist/assets/{task-changes-DfF08cUG.js → task-changes-CP9kPnsy.js} +1 -1
  149. package/web/dist/assets/{task-commits-BMmpYP5e.js → task-commits-D6NfTw5r.js} +1 -1
  150. package/web/dist/assets/{task-files-D_dKDdRK.js → task-files-W-b_gtcb.js} +2 -2
  151. package/web/dist/assets/task-thread-Bw_nQuTx.css +1 -0
  152. package/web/dist/assets/task-thread-Q7Nj33DH.js +9 -0
  153. package/web/dist/assets/{textarea-COQtp9cB.js → textarea-ByZ-txS7.js} +1 -1
  154. package/web/dist/assets/thread-loading-DHT9p5o5.js +1 -0
  155. package/web/dist/assets/{token-metrics-CFWQYcgY.js → token-metrics-k4XoovDS.js} +1 -1
  156. package/web/dist/assets/{utils-DKheTxGD.js → utils-BTFBhZ55.js} +1 -1
  157. package/web/dist/assets/workflows-DqQszPHJ.js +11 -0
  158. package/web/dist/assets/{zoomable-image-YW3Qdrr_.js → zoomable-image-Ba6y6Wyl.js} +1 -1
  159. package/web/dist/index.html +14 -14
  160. package/web/dist/assets/agent-accounts-B7aDlJ4I.js +0 -1
  161. package/web/dist/assets/centered-state-wm14n-hB.js +0 -43
  162. package/web/dist/assets/compare-variants-DbPcvMtU.js +0 -1
  163. package/web/dist/assets/github-Dyo38xkh.js +0 -1
  164. package/web/dist/assets/ibm-plex-mono-regular-BF3vfe7_.ttf +0 -0
  165. package/web/dist/assets/index-dgQfUHKO.css +0 -1
  166. package/web/dist/assets/index-yCn9jZqm.js +0 -7
  167. package/web/dist/assets/pill-DqEXer06.js +0 -1
  168. package/web/dist/assets/repo-git-Cw1UOtWI.js +0 -1
  169. package/web/dist/assets/run-header-G5PQQyme.js +0 -1
  170. package/web/dist/assets/skills-DMvpMI_E.js +0 -1
  171. package/web/dist/assets/task-thread-BL7keYuU.js +0 -9
  172. package/web/dist/assets/task-thread-BQFdz1dJ.css +0 -1
  173. package/web/dist/assets/thread-loading-B7mgkPaL.js +0 -1
  174. package/web/dist/assets/workflows-DLCH6MDH.js +0 -11
@@ -13,6 +13,9 @@ const write = (value) => process.stdout.write(`${JSON.stringify(value)}\n`);
13
13
  // turn. Steers accepted by a scripted turn are read just before it settles: a user
14
14
  // message_start/end, then an echo, unless the turn is `late` (never read).
15
15
  let activeTurn = null;
16
+ // Pi 0.87 defaults steeringMode to one-at-a-time (#551). Cezar's runner must
17
+ // send set_steering_mode all for a burst to reach the same next step.
18
+ let steeringMode = 'one-at-a-time';
16
19
  // The prompt a queued handler is running; pi records it as the turn's user message.
17
20
  let currentPrompt;
18
21
  const send = (value) => {
@@ -29,15 +32,17 @@ const send = (value) => {
29
32
  }
30
33
  if (value?.type === 'agent_settled' && activeTurn) {
31
34
  const turn = activeTurn; activeTurn = null;
32
- if (!turn.late) for (const text of turn.steers) {
35
+ const deliverNow = turn.late ? [] : (steeringMode === 'all' ? turn.steers : turn.steers.slice(0, 1));
36
+ const defer = turn.late ? turn.steers : (steeringMode === 'all' ? [] : turn.steers.slice(1));
37
+ for (const text of deliverNow) {
33
38
  write({ type: 'message_start', message: { role: 'user', content: [{ type: 'text', text }] } });
34
39
  write({ type: 'message_end', message: { role: 'user', content: [{ type: 'text', text }] } });
35
40
  sendText([text]);
36
41
  write({ type: 'message_end', message: { role: 'assistant', usage: { input: 1, output: 1, cacheRead: 0, cacheWrite: 0, cost: { total: 0 } } } });
37
42
  }
38
43
  write(value);
39
- // A steer that arrived after the final model call runs as the next prompt.
40
- if (turn.late) for (const text of turn.steers) queue = queue.then(() => { currentPrompt = text; return handle({ type: 'prompt', message: text }); });
44
+ // one-at-a-time leftover, or a late steer, runs as the next prompt.
45
+ for (const text of defer) queue = queue.then(() => { currentPrompt = text; return handle({ type: 'prompt', message: text }); });
41
46
  return;
42
47
  }
43
48
  write(value);
@@ -101,7 +106,7 @@ async function handle(command) {
101
106
  thinkingLevel: 'medium',
102
107
  isStreaming: false,
103
108
  isCompacting: false,
104
- steeringMode: 'all',
109
+ steeringMode,
105
110
  followUpMode: 'one-at-a-time',
106
111
  autoCompactionEnabled: true,
107
112
  messageCount: 0,
@@ -176,6 +181,13 @@ async function handle(command) {
176
181
  send({ type: 'turn_start' });
177
182
  sendText(['parity done: the task is complete\n\nCEZ:DONE']);
178
183
  sendTurnEnd();
184
+ } else if (command.type === 'prompt' && command.message.includes('mock:ask-snapshot')) {
185
+ // #401: authoritative text_end without deltas, using rpc-lifecycle frames.
186
+ send({ id: command.id, type: 'response', command: 'prompt', success: true });
187
+ send({ type: 'agent_start' });
188
+ send({ type: 'turn_start' });
189
+ send({ type: 'message_update', message: {}, assistantMessageEvent: { type: 'text_end', contentIndex: 0, content: 'Choose a test library.\nCEZ:ASK {"questions":[{"header":"Library","question":"Which test library?","options":[{"label":"Vitest"},{"label":"Node test"}]}]}', partial: {} } });
190
+ sendTurnEnd();
179
191
  } else if (command.type === 'prompt' && command.message.includes('mock:ask-bad')) {
180
192
  // A marker whose JSON body is invalid. `parseAskMarker` must render no card
181
193
  // and the turn must still end (harness parity R4) — pi has no native ask
@@ -306,6 +318,12 @@ async function handle(command) {
306
318
  });
307
319
  }, 250);
308
320
  }
321
+ } else if (command.type === 'set_steering_mode') {
322
+ if (command.mode === 'all' || command.mode === 'one-at-a-time') steeringMode = command.mode;
323
+ if (process.env.CEZ_MOCK_STDIN_FILE) {
324
+ try { appendFileSync(process.env.CEZ_MOCK_STDIN_FILE, `${JSON.stringify({ type: 'set_steering_mode', mode: command.mode })}\n`); } catch { /* best effort */ }
325
+ }
326
+ send({ ...(command.id ? { id: command.id } : {}), type: 'response', command: 'set_steering_mode', success: true });
309
327
  } else if (command.type === 'abort') {
310
328
  send({ type: 'response', command: 'abort', success: true });
311
329
  }
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{i as t,t as n}from"./react-runtime-CCIEwYL0.js";import{C as r,D as i,I as a,M as o,N as s,O as c,Qn as l,S as u,T as d,b as f,j as p,k as m,un as h,w as g,x as _,z as v}from"./centered-state-DH8qtCz-.js";import{t as y}from"./utils-BTFBhZ55.js";import{_ as b,g as x,h as ee,m as te,p as S}from"./dropdown-menu-7KGQMoFj.js";var C=e(t(),1),w=n(),T=`Popover`,[E,ne]=o(T,[b]),D=b(),[O,k]=E(T),A=e=>{let{__scopePopover:t,children:n,open:r,defaultOpen:a,onOpenChange:o,modal:s=!1}=e,c=D(t),l=C.useRef(null),[u,d]=C.useState(!1),[f,p]=m({prop:r,defaultProp:a??!1,onChange:o,caller:T});return(0,w.jsx)(x,{...c,children:(0,w.jsx)(O,{scope:t,contentId:i(),triggerRef:l,open:f,onOpenChange:p,onOpenToggle:C.useCallback(()=>p(e=>!e),[p]),hasCustomAnchor:u,onCustomAnchorAdd:C.useCallback(()=>d(!0),[]),onCustomAnchorRemove:C.useCallback(()=>d(!1),[]),modal:s,children:n})})};A.displayName=T;var j=`PopoverAnchor`,M=C.forwardRef((e,t)=>{let{__scopePopover:n,...r}=e,i=k(j,n),a=D(n),{onCustomAnchorAdd:o,onCustomAnchorRemove:s}=i;return C.useEffect(()=>(o(),()=>s()),[o,s]),(0,w.jsx)(S,{...a,...r,ref:t})});M.displayName=j;var N=`PopoverTrigger`,P=C.forwardRef((e,t)=>{let{__scopePopover:n,...r}=e,i=k(N,n),a=D(n),o=v(t,i.triggerRef),c=(0,w.jsx)(s.button,{type:`button`,"aria-haspopup":`dialog`,"aria-expanded":i.open,"aria-controls":i.open?i.contentId:void 0,"data-state":J(i.open),...r,ref:o,onClick:p(e.onClick,i.onOpenToggle)});return i.hasCustomAnchor?c:(0,w.jsx)(S,{asChild:!0,...a,children:c})});P.displayName=N;var F=`PopoverPortal`,[re,I]=E(F,{forceMount:void 0}),L=e=>{let{__scopePopover:t,forceMount:n,children:i,container:a}=e,o=k(F,t);return(0,w.jsx)(re,{scope:t,forceMount:n,children:(0,w.jsx)(c,{present:n||o.open,children:(0,w.jsx)(r,{asChild:!0,container:a,children:i})})})};L.displayName=F;var R=`PopoverContent`,z=C.forwardRef((e,t)=>{let n=I(R,e.__scopePopover),{forceMount:r=n.forceMount,...i}=e,a=k(R,e.__scopePopover);return(0,w.jsx)(c,{present:r||a.open,children:a.modal?(0,w.jsx)(V,{...i,ref:t}):(0,w.jsx)(H,{...i,ref:t})})});z.displayName=R;var B=a(`PopoverContent.RemoveScroll`),V=C.forwardRef((e,t)=>{let n=k(R,e.__scopePopover),r=C.useRef(null),i=v(t,r),a=C.useRef(!1);return C.useEffect(()=>{let e=r.current;if(e)return f(e)},[]),(0,w.jsx)(_,{as:B,allowPinchZoom:!0,children:(0,w.jsx)(U,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:p(e.onCloseAutoFocus,e=>{e.preventDefault(),a.current||n.triggerRef.current?.focus()}),onPointerDownOutside:p(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0,r=t.button===2||n;a.current=r},{checkForDefaultPrevented:!1}),onFocusOutside:p(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1})})})}),H=C.forwardRef((e,t)=>{let n=k(R,e.__scopePopover),r=C.useRef(!1),i=C.useRef(!1);return(0,w.jsx)(U,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(r.current||n.triggerRef.current?.focus(),t.preventDefault()),r.current=!1,i.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(r.current=!0,t.detail.originalEvent.type===`pointerdown`&&(i.current=!0));let a=t.target;n.triggerRef.current?.contains(a)&&t.preventDefault(),t.detail.originalEvent.type===`focusin`&&i.current&&t.preventDefault()}})}),U=C.forwardRef((e,t)=>{let{__scopePopover:n,trapFocus:r,onOpenAutoFocus:i,onCloseAutoFocus:a,disableOutsidePointerEvents:o,onEscapeKeyDown:s,onPointerDownOutside:c,onFocusOutside:l,onInteractOutside:f,...p}=e,m=k(R,n),h=D(n);return u(),(0,w.jsx)(g,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:i,onUnmountAutoFocus:a,children:(0,w.jsx)(d,{asChild:!0,disableOutsidePointerEvents:o,onInteractOutside:f,onEscapeKeyDown:s,onPointerDownOutside:c,onFocusOutside:l,onDismiss:()=>m.onOpenChange(!1),deferPointerDownOutside:!0,children:(0,w.jsx)(ee,{"data-state":J(m.open),role:`dialog`,id:m.contentId,...h,...p,ref:t,style:{...p.style,"--radix-popover-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-popover-content-available-width":`var(--radix-popper-available-width)`,"--radix-popover-content-available-height":`var(--radix-popper-available-height)`,"--radix-popover-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-popover-trigger-height":`var(--radix-popper-anchor-height)`}})})})}),W=`PopoverClose`,G=C.forwardRef((e,t)=>{let{__scopePopover:n,...r}=e,i=k(W,n);return(0,w.jsx)(s.button,{type:`button`,...r,ref:t,onClick:p(e.onClick,()=>i.onOpenChange(!1))})});G.displayName=W;var K=`PopoverArrow`,q=C.forwardRef((e,t)=>{let{__scopePopover:n,...r}=e,i=D(n);return(0,w.jsx)(te,{...i,...r,ref:t})});q.displayName=K;function J(e){return e?`open`:`closed`}var Y=A,X=M,Z=P,ie=L,ae=z;function Q(e){let t=e.visualViewport;return t?Math.max(0,Math.round(e.innerHeight-t.height-t.offsetTop)):0}function oe(e,t,n,r=250){let i=e.visualViewport;if(!i)return t(0),()=>{};let a,o=()=>{let i=Q(e);t(i),n&&(clearTimeout(a),a=setTimeout(()=>n(i),r))};return t(Q(e)),i.addEventListener(`resize`,o),i.addEventListener(`scroll`,o),()=>{clearTimeout(a),i.removeEventListener(`resize`,o),i.removeEventListener(`scroll`,o),t(0)}}function se(e){let t=e.visualViewport;return t?{top:Math.max(0,Math.round(t.offsetTop)),bottom:Q(e)}:{top:0,bottom:0}}function ce(e,t=0){let n=typeof t==`number`?{top:t,right:t,bottom:t,left:t}:t;return{top:(n.top??0)+e.top,right:n.right??0,bottom:(n.bottom??0)+e.bottom,left:n.left??0}}function le(e,t){let n=e.visualViewport;if(!n)return t({top:0,bottom:0}),()=>{};let r=()=>t(se(e));return r(),n.addEventListener(`resize`,r),n.addEventListener(`scroll`,r),()=>{n.removeEventListener(`resize`,r),n.removeEventListener(`scroll`,r)}}function ue(){let[e,t]=(0,C.useState)({top:0,bottom:0});return(0,C.useEffect)(()=>le(window,e=>t(t=>t.top===e.top&&t.bottom===e.bottom?t:e)),[]),e}function de(e){let t=(0,C.useRef)(e);t.current=e,(0,C.useEffect)(()=>{let e=document.documentElement;return oe(window,t=>e.style.setProperty(`--kb`,`${t}px`),e=>t.current?.(e))},[])}var $=C.createContext(null);function fe({...e}){let t=C.useRef(!1);return(0,w.jsx)($,{value:t,children:(0,w.jsx)(Y,{"data-slot":`popover`,...e})})}function pe({onPointerDownCapture:e,onKeyDownCapture:t,...n}){let r=C.useContext($);return(0,w.jsx)(Z,{"data-slot":`popover-trigger`,...n,onPointerDownCapture:t=>{r&&(r.current=t.pointerType===`touch`),e?.(t)},onKeyDownCapture:e=>{r&&(r.current=!1),t?.(e)}})}function me({className:e,align:t=`center`,sideOffset:n=4,collisionPadding:r,onOpenAutoFocus:i,...a}){let o=ue(),s=C.useContext($);return(0,w.jsx)(ie,{children:(0,w.jsx)(ae,{"data-slot":`popover-content`,align:t,sideOffset:n,onOpenAutoFocus:e=>{let t=s?.current;if(s&&(s.current=!1),i?.(e),e.defaultPrevented||!t)return;let n=e.target;n instanceof HTMLElement&&n.querySelector(`[cmdk-input]`)&&(e.preventDefault(),n.focus({preventScroll:!0}))},collisionPadding:ce(o,r),className:y(`z-50 w-72 max-w-(--radix-popover-content-available-width) [overflow-wrap:anywhere] origin-(--radix-popover-content-transform-origin) rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-hidden data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95`,e),...a})})}function he({...e}){return(0,w.jsx)(X,{"data-slot":`popover-anchor`,...e})}function ge(){let e=h(),t=l(),n=(e.data?.profiles??[]).map(e=>({provider:e.provider,id:e.id,label:e.label,configDir:e.configDir})),r=t.data?.info?.root;return{accounts:n,repoAccount:r?e.data?.selections?.[r]:void 0}}function _e(e,t){return e.filter(e=>e.provider===t).length>1}export{me as a,he as i,ge as n,pe as o,fe as r,de as s,_e as t};