cli-jaw 2.17.44 → 2.17.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.
Files changed (219) hide show
  1. package/README.ja.md +5 -7
  2. package/README.ko.md +5 -7
  3. package/README.md +19 -7
  4. package/README.zh-CN.md +5 -7
  5. package/dist/bin/commands/dispatch.js +93 -18
  6. package/dist/bin/commands/dispatch.js.map +1 -1
  7. package/dist/bin/commands/doctor.js +0 -70
  8. package/dist/bin/commands/doctor.js.map +1 -1
  9. package/dist/bin/commands/provider.js +16 -28
  10. package/dist/bin/commands/provider.js.map +1 -1
  11. package/dist/bin/commands/slack.js +65 -2
  12. package/dist/bin/commands/slack.js.map +1 -1
  13. package/dist/bin/commands/tui/slash-command-runner.js +1 -1
  14. package/dist/bin/commands/tui/slash-command-runner.js.map +1 -1
  15. package/dist/bin/commands/tui/types.js +0 -4
  16. package/dist/bin/commands/tui/types.js.map +1 -1
  17. package/dist/scripts/fresh-install-smoke.js +1 -1
  18. package/dist/scripts/fresh-install-smoke.js.map +1 -1
  19. package/dist/server.js +5 -3
  20. package/dist/server.js.map +1 -1
  21. package/dist/src/agent/args.js +1 -176
  22. package/dist/src/agent/args.js.map +1 -1
  23. package/dist/src/agent/claude-runtime-pool.js +11 -7
  24. package/dist/src/agent/claude-runtime-pool.js.map +1 -1
  25. package/dist/src/agent/cli-helpers.js +1 -3
  26. package/dist/src/agent/cli-helpers.js.map +1 -1
  27. package/dist/src/agent/error-classifier.js +1 -1
  28. package/dist/src/agent/error-classifier.js.map +1 -1
  29. package/dist/src/agent/error-cooldown.js +1 -3
  30. package/dist/src/agent/error-cooldown.js.map +1 -1
  31. package/dist/src/agent/events/claude.js +4 -56
  32. package/dist/src/agent/events/claude.js.map +1 -1
  33. package/dist/src/agent/events/helpers.js +3 -5
  34. package/dist/src/agent/events/helpers.js.map +1 -1
  35. package/dist/src/agent/events/index.js +12 -18
  36. package/dist/src/agent/events/index.js.map +1 -1
  37. package/dist/src/agent/kiro-runtime.js +3 -16
  38. package/dist/src/agent/kiro-runtime.js.map +1 -1
  39. package/dist/src/agent/lifecycle-handler.js +17 -12
  40. package/dist/src/agent/lifecycle-handler.js.map +1 -1
  41. package/dist/src/agent/native-runtime-run.js +7 -2
  42. package/dist/src/agent/native-runtime-run.js.map +1 -1
  43. package/dist/src/agent/prompt-context.js +4 -5
  44. package/dist/src/agent/prompt-context.js.map +1 -1
  45. package/dist/src/agent/resume-classifier.js +0 -5
  46. package/dist/src/agent/resume-classifier.js.map +1 -1
  47. package/dist/src/agent/runtime/acp/cursor-session.js +21 -3
  48. package/dist/src/agent/runtime/acp/cursor-session.js.map +1 -1
  49. package/dist/src/agent/runtime-pool.js +127 -51
  50. package/dist/src/agent/runtime-pool.js.map +1 -1
  51. package/dist/src/agent/session-persistence.js +1 -6
  52. package/dist/src/agent/session-persistence.js.map +1 -1
  53. package/dist/src/agent/spawn/resume.js +3 -3
  54. package/dist/src/agent/spawn/resume.js.map +1 -1
  55. package/dist/src/agent/spawn.js +27 -96
  56. package/dist/src/agent/spawn.js.map +1 -1
  57. package/dist/src/cli/claude-models.js +1 -1
  58. package/dist/src/cli/claude-models.js.map +1 -1
  59. package/dist/src/cli/cli-status-worker.js +1 -8
  60. package/dist/src/cli/cli-status-worker.js.map +1 -1
  61. package/dist/src/cli/compact.js +2 -6
  62. package/dist/src/cli/compact.js.map +1 -1
  63. package/dist/src/cli/employee-handler.js +4 -0
  64. package/dist/src/cli/employee-handler.js.map +1 -1
  65. package/dist/src/cli/handlers-completions.js +1 -1
  66. package/dist/src/cli/handlers-completions.js.map +1 -1
  67. package/dist/src/cli/handlers-runtime.js +18 -8
  68. package/dist/src/cli/handlers-runtime.js.map +1 -1
  69. package/dist/src/cli/handlers.js +3 -31
  70. package/dist/src/cli/handlers.js.map +1 -1
  71. package/dist/src/cli/opencodex-models.js +0 -5
  72. package/dist/src/cli/opencodex-models.js.map +1 -1
  73. package/dist/src/cli/readiness.js +1 -20
  74. package/dist/src/cli/readiness.js.map +1 -1
  75. package/dist/src/cli/registry-live.js +1 -51
  76. package/dist/src/cli/registry-live.js.map +1 -1
  77. package/dist/src/cli/registry.js +0 -64
  78. package/dist/src/cli/registry.js.map +1 -1
  79. package/dist/src/core/chat-sessions.js +3 -2
  80. package/dist/src/core/chat-sessions.js.map +1 -1
  81. package/dist/src/core/cli-detection.js +2 -178
  82. package/dist/src/core/cli-detection.js.map +1 -1
  83. package/dist/src/core/compact.js +2 -4
  84. package/dist/src/core/compact.js.map +1 -1
  85. package/dist/src/core/config.js +5 -4
  86. package/dist/src/core/config.js.map +1 -1
  87. package/dist/src/core/runtime-settings.js +5 -20
  88. package/dist/src/core/runtime-settings.js.map +1 -1
  89. package/dist/src/core/session-ops.js +4 -6
  90. package/dist/src/core/session-ops.js.map +1 -1
  91. package/dist/src/core/windows-launch-spec.js +1 -1
  92. package/dist/src/http/full-access.js +42 -0
  93. package/dist/src/http/full-access.js.map +1 -0
  94. package/dist/src/manager/proxy.js +1 -0
  95. package/dist/src/manager/proxy.js.map +1 -1
  96. package/dist/src/messaging/send.js +30 -8
  97. package/dist/src/messaging/send.js.map +1 -1
  98. package/dist/src/orchestrator/dispatch-admission.js +424 -0
  99. package/dist/src/orchestrator/dispatch-admission.js.map +1 -0
  100. package/dist/src/orchestrator/distribute.js +63 -21
  101. package/dist/src/orchestrator/distribute.js.map +1 -1
  102. package/dist/src/orchestrator/gateway.js +6 -4
  103. package/dist/src/orchestrator/gateway.js.map +1 -1
  104. package/dist/src/orchestrator/worker-registry.js +8 -1
  105. package/dist/src/orchestrator/worker-registry.js.map +1 -1
  106. package/dist/src/prompt/builder.js +40 -16
  107. package/dist/src/prompt/builder.js.map +1 -1
  108. package/dist/src/prompt/templates/employee.md +4 -4
  109. package/dist/src/routes/messaging.js +34 -18
  110. package/dist/src/routes/messaging.js.map +1 -1
  111. package/dist/src/routes/orchestrate.js +139 -64
  112. package/dist/src/routes/orchestrate.js.map +1 -1
  113. package/dist/src/routes/settings.js +1 -30
  114. package/dist/src/routes/settings.js.map +1 -1
  115. package/dist/src/routes/slack-tools.js +6 -4
  116. package/dist/src/routes/slack-tools.js.map +1 -1
  117. package/dist/src/security/path-guards.js +15 -1
  118. package/dist/src/security/path-guards.js.map +1 -1
  119. package/dist/src/slack/search-quote.js +9 -5
  120. package/dist/src/slack/search-quote.js.map +1 -1
  121. package/dist/src/slack/send-handler.js +1 -25
  122. package/dist/src/slack/send-handler.js.map +1 -1
  123. package/dist/src/slack/slack-file.js +105 -53
  124. package/dist/src/slack/slack-file.js.map +1 -1
  125. package/dist/src/slack/tool-access.js +10 -2
  126. package/dist/src/slack/tool-access.js.map +1 -1
  127. package/dist/src/slack/tool-capabilities.js +16 -8
  128. package/dist/src/slack/tool-capabilities.js.map +1 -1
  129. package/dist/src/types/cli-engine.js +26 -3
  130. package/dist/src/types/cli-engine.js.map +1 -1
  131. package/dist/src/types/cli-events.js +1 -1
  132. package/dist/src/types/cli-events.js.map +1 -1
  133. package/dist/src/workflows/employee-boundary.js +9 -5
  134. package/dist/src/workflows/employee-boundary.js.map +1 -1
  135. package/dist/src/workflows/scope-sandbox.js +5 -2
  136. package/dist/src/workflows/scope-sandbox.js.map +1 -1
  137. package/package.json +2 -6
  138. package/public/dist/.vite/manifest.json +115 -115
  139. package/public/dist/assets/Agent-CKX93LQ8.js +1 -0
  140. package/public/dist/assets/Employees-BuFw6-fT.js +1 -0
  141. package/public/dist/assets/Heartbeat-BmkZshEU.js +1 -0
  142. package/public/dist/assets/Memory-DsK_yOCW.js +1 -0
  143. package/public/dist/assets/ModelProvider-L_hW6YWJ.js +1 -0
  144. package/public/dist/assets/agent-meta-CkRJlOmN.js +1 -0
  145. package/public/dist/assets/{app-9OQNfmqw.js → app-B_JTnXIY.js} +4 -4
  146. package/public/dist/assets/{bgtask-badge-BvxHqMGi.js → bgtask-badge-BLdI7Ara.js} +1 -1
  147. package/public/dist/assets/bgtask-badge-DOhTsE9l.js +1 -0
  148. package/public/dist/assets/cli-engine-NdU0lzs_.js +1 -0
  149. package/public/dist/assets/constants-DmRtjRj3.js +1 -0
  150. package/public/dist/assets/{employees-CkUqN4oh.js → employees-DGoVBWQd.js} +1 -1
  151. package/public/dist/assets/iframe-renderer-Dw5vTqFX.js +1 -0
  152. package/public/dist/assets/{iframe-renderer-C2gchtOj.js → iframe-renderer-mBjdW5ZV.js} +2 -2
  153. package/public/dist/assets/{manager-rb5X-4DJ.js → manager-iX7KosWI.js} +1 -1
  154. package/public/dist/assets/memory-DuHc2no-.js +1 -0
  155. package/public/dist/assets/{memory-BiWzpoBq.js → memory-Hq9y-GQB.js} +1 -1
  156. package/public/dist/assets/message-history-DT0VaJRd.js +1 -0
  157. package/public/dist/assets/{message-history-CuFefS02.js → message-history-H7G4apTo.js} +1 -1
  158. package/public/dist/assets/{provider-icons-Det0fC-4.js → provider-icons-Bge6teOj.js} +1 -1
  159. package/public/dist/assets/{render-DUGqq9Mu.js → render-OT0puqo3.js} +1 -1
  160. package/public/dist/assets/settings-BW8q_Rnq.js +1 -0
  161. package/public/dist/assets/{settings-DQ1fLygB.js → settings-DjCtFSpd.js} +3 -3
  162. package/public/dist/assets/{settings-BqUHavbH.js → settings-KIPNUOIV.js} +1 -1
  163. package/public/dist/assets/settings-core-CVO3_bn9.js +1 -0
  164. package/public/dist/assets/settings-core-DiStY7KC.js +2 -0
  165. package/public/dist/assets/{settings-embedding-BAKFrVLV.js → settings-embedding-DIqST-91.js} +1 -1
  166. package/public/dist/assets/{sidebar-CvGbp9x5.js → sidebar-DiS6dGEP.js} +3 -3
  167. package/public/dist/assets/{skills-abLMqY5_.js → skills-D_mbeyb3.js} +1 -1
  168. package/public/dist/assets/skills-NzM-geDj.js +1 -0
  169. package/public/dist/assets/slash-commands-DUk5bLQ1.js +1 -0
  170. package/public/dist/assets/{slash-commands-D8o9pqOS.js → slash-commands-PWDX9hXL.js} +1 -1
  171. package/public/dist/assets/{trace-drawer-C6RvkUAd.js → trace-drawer-DSn3xg8f.js} +1 -1
  172. package/public/dist/assets/{ui-Bxapl_Eu.js → ui-Dzebjyzl.js} +1 -1
  173. package/public/dist/assets/ui-TcZtZTFR.js +1 -0
  174. package/public/dist/index.html +1 -3
  175. package/public/dist/manager/index.html +1 -1
  176. package/public/dist/settings/index.html +1 -1
  177. package/public/index.html +0 -2
  178. package/public/js/constants.ts +1 -46
  179. package/public/js/features/employees.ts +1 -1
  180. package/public/js/features/retired-runtime-option.ts +2 -2
  181. package/public/js/features/settings-channel.ts +4 -2
  182. package/public/js/features/settings-cli-status-render.ts +2 -2
  183. package/public/js/features/settings-cli-status.ts +0 -2
  184. package/public/js/provider-icons.ts +1 -3
  185. package/public/manager/src/settings/pages/Heartbeat.tsx +2 -2
  186. package/public/manager/src/settings/pages/Memory.tsx +2 -2
  187. package/public/manager/src/settings/pages/ModelProvider.tsx +7 -4
  188. package/public/manager/src/settings/pages/components/agent/FlushAgentSection.tsx +2 -2
  189. package/public/manager/src/settings/pages/components/agent/RuntimeEmployeeRow.tsx +2 -2
  190. package/public/manager/src/settings/pages/components/agent/RuntimeHeader.tsx +2 -2
  191. package/public/manager/src/settings/pages/components/agent/agent-meta.ts +4 -35
  192. package/public/manager/src/settings/pages/components/employees-helpers.ts +0 -2
  193. package/public/manager/src/settings/pages/components/heartbeat-helpers.ts +0 -2
  194. package/scripts/bundle-sidecar.sh +0 -24
  195. package/scripts/check-electron-sidecar-no-jwc.cjs +12 -4
  196. package/scripts/fresh-install-smoke.ts +1 -1
  197. package/scripts/install.sh +0 -5
  198. package/scripts/retired-runtime-package-smoke.mjs +2 -12
  199. package/scripts/verify-fresh-install.sh +0 -14
  200. package/dist/src/agent/claude-e-runtime.js +0 -44
  201. package/dist/src/agent/claude-e-runtime.js.map +0 -1
  202. package/public/dist/assets/Agent-CNad_A6t.js +0 -1
  203. package/public/dist/assets/Employees-B6uviPeN.js +0 -1
  204. package/public/dist/assets/Heartbeat-C3S3d8xW.js +0 -1
  205. package/public/dist/assets/Memory-BgeIbQSr.js +0 -1
  206. package/public/dist/assets/ModelProvider-AnxBVYws.js +0 -1
  207. package/public/dist/assets/agent-meta-BWHASq1a.js +0 -1
  208. package/public/dist/assets/bgtask-badge-DeSZJGNN.js +0 -1
  209. package/public/dist/assets/cli-engine-Bw0QTAVX.js +0 -1
  210. package/public/dist/assets/constants-D8XAqfHk.js +0 -1
  211. package/public/dist/assets/iframe-renderer-DfvACXIn.js +0 -1
  212. package/public/dist/assets/memory-Ckp1Eq5a.js +0 -1
  213. package/public/dist/assets/message-history-Bv0l_t7O.js +0 -1
  214. package/public/dist/assets/settings-C81Kf9uX.js +0 -1
  215. package/public/dist/assets/settings-core-CzdXfoOK.js +0 -2
  216. package/public/dist/assets/settings-core-DO_5M7Lv.js +0 -1
  217. package/public/dist/assets/skills-DFpPmMUR.js +0 -1
  218. package/public/dist/assets/slash-commands-BU58xYih.js +0 -1
  219. package/public/dist/assets/ui-CUB4iwz3.js +0 -1
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{t}from"./cli-engine-Bw0QTAVX.js";import{t as n}from"./react-C_pPTFsM.js";import{t as r}from"./jsx-runtime-NZYk81nU.js";import{t as i}from"./error-normalize-CL69Bl7z.js";import{a,i as o,n as s,r as c,t as l}from"./page-shell-BeGD0rRQ.js";import{a as u,i as d,n as f,r as p,s as m}from"./fields-mlGpofqQ.js";import{a as h,d as g,i as _,o as v,r as y}from"./agent-meta-BWHASq1a.js";import{t as b}from"./path-utils-B6vBr0DD.js";var x=e(n(),1),S=r(),C=[`basic`,`openai`,`anthropic`,`vertex`],w=`[hidden], [inert], [aria-disabled="true"], fieldset[disabled]`;function T(e){return Array.from(e.querySelectorAll(`button, input, select, textarea, a[href], [tabindex]`)).filter(e=>{if(e.tabIndex<0||e.matches(`:disabled`)||e.closest(w))return!1;for(let t=e;t;t=t.parentElement){let e=t.ownerDocument.defaultView?.getComputedStyle(t);if(e?.display===`none`||e?.visibility===`hidden`||e?.visibility===`collapse`)return!1}return!0})}function E(e){return e===`anthropic`?`https://api.anthropic.com/v1/messages`:e===`vertex`?`https://LOCATION-aiplatform.googleapis.com/v1`:`http://127.0.0.1:18645/v1`}function D({client:e,pi:t,provider:n,model:r,onClose:i,onRegistered:a}){let o=(0,x.useRef)(null),s=(0,x.useMemo)(()=>t?.profiles?.find(e=>e.id===n)||t?.profiles?.[0],[t,n]),[c,l]=(0,x.useState)(s?.mode||`basic`),[u,f]=(0,x.useState)(s?.id||n||`progrok`),[p,h]=(0,x.useState)(s?.endpoint||E(c)),[g,_]=(0,x.useState)(r||s?.model||`grok-composer-2.5-fast`),[v,y]=(0,x.useState)(``),[b,D]=(0,x.useState)(!1),[O,k]=(0,x.useState)(null);(0,x.useEffect)(()=>{let e=o.current;if(!e||e.closest(w))return;let t=e.ownerDocument.activeElement,n=T(e);return(n.find(e=>e.id===`pi-profile-id`)??n[0])?.focus(),()=>{t instanceof HTMLElement&&t.isConnected&&!t.matches(`:disabled`)&&!t.closest(w)&&t.focus({preventScroll:!0})}},[]),(0,x.useEffect)(()=>{h(e=>e||E(c))},[c]);let A=e=>{let t=o.current;if(!(!t||t.closest(w)||e.defaultPrevented)){if(e.key===`Escape`)e.preventDefault(),e.stopPropagation(),i();else if(e.key===`Tab`){let n=T(t),r=n[0],i=n.at(-1),a=t.ownerDocument.activeElement;(!r||!n.some(e=>e===a)||(e.shiftKey?a===r:a===i))&&(e.preventDefault(),(e.shiftKey?i??t:r??t).focus())}}},j=async()=>{let t=o.current,n=t?.querySelector(`.settings-action-save`);t&&n&&t.ownerDocument.activeElement===n&&!t.closest(w)&&T(t).find(e=>e!==n)?.focus(),D(!0),k(null);try{let t=(await e.post(`/api/pi/profiles/register`,{id:u,label:u,mode:c,endpoint:p,model:g,apiKey:v})).data;a({provider:u,model:g,models:t.models||[],pi:t.settings?.pi}),i()}catch(e){k(e instanceof Error?e.message:String(e))}finally{D(!1)}};return(0,S.jsx)(`div`,{className:`settings-memory-modal settings-pi-modal`,ref:o,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`pi-profile-title`,tabIndex:-1,onKeyDown:A,children:(0,S.jsxs)(`div`,{className:`settings-memory-modal-card`,children:[(0,S.jsxs)(`header`,{className:`settings-memory-modal-header`,children:[(0,S.jsx)(`h3`,{id:`pi-profile-title`,children:`Pi Settings`}),(0,S.jsx)(`button`,{type:`button`,className:`settings-action settings-action-discard`,onClick:i,children:`Close`})]}),(0,S.jsxs)(`div`,{className:`settings-page-form`,children:[(0,S.jsx)(d,{id:`pi-profile-mode`,label:`Mode`,value:c,options:C.map(e=>({value:e,label:e})),onChange:e=>l(e)}),(0,S.jsx)(m,{id:`pi-profile-id`,label:`Provider`,value:u,onChange:f,placeholder:`progrok`}),(0,S.jsx)(m,{id:`pi-profile-endpoint`,label:`Endpoint`,value:p,onChange:h,placeholder:E(c)}),(0,S.jsx)(m,{id:`pi-profile-model`,label:`Model`,value:g,onChange:_,placeholder:`grok-composer-2.5-fast`}),(0,S.jsx)(m,{id:`pi-profile-key`,label:`API Key`,value:v,onChange:y,placeholder:s?.apiKeySet?`set (${s.apiKeyLast4||`****`})`:`empty for local proxy`}),(0,S.jsx)(`p`,{className:`settings-empty`,children:`Default: grok-composer-2.5-fast. Bare grok-composer-2.5 currently has no verified team access.`}),O?(0,S.jsx)(`p`,{className:`settings-field-error`,role:`alert`,children:O}):null,(0,S.jsx)(`button`,{type:`button`,className:`settings-action settings-action-save`,disabled:b,onClick:()=>void j(),children:b?`Registering...`:`Register`})]})]})})}function O(e,t,n=``){let r=new Set;n&&r.add(n);for(let n of e?.discoveredModels?.[t]||[])r.add(n);let i=e?.profiles?.find(e=>e.id===t);return i?.model&&r.add(i.model),[...r]}function k(e,t=``){let n=new Set;t&&n.add(t);for(let t of e?.profiles||[])n.add(t.id);return[...n]}function A(e){return e===`cursor`||e===`grok`||e===`claude`}function j(e){return e===`native`||e===`print`}var M=`unrecognized`,N=[{value:`native`,label:`Native session (opt-in)`},{value:`print`,label:`Print compatibility`}];function P({cli:e,original:t,dirty:n,disabled:r=!1,setEntry:i}){let a=A(e)?`perCli.${e}.transport`:null,o=(0,x.useSyncExternalStore)(n.subscribe,()=>a===null?void 0:n.pending.get(a)),s=(0,x.useRef)(r);(0,x.useLayoutEffect)(()=>(s.current=r,()=>{s.current=!0}),[r]);let c=t===void 0?`print`:t,l=o?o.value:c,u=j(l);return a===null?null:(0,S.jsxs)(`div`,{children:[(0,S.jsx)(d,{id:`percli-${e}-transport`,label:`Runtime transport`,value:u?l:M,options:u?N:[...N,{value:M,label:`Unrecognized transport`}],disabled:r,error:u?null:`Choose a supported runtime transport.`,onChange:e=>{!s.current&&j(e)&&i(a,{value:e,original:c,valid:!0})}}),u?null:(0,S.jsx)(`p`,{className:`settings-field-error`,role:`alert`,children:`Stored runtime transport is unrecognized.`}),(0,S.jsx)(`p`,{className:`settings-percli-note`,children:`Applies to the next run. Independent of Activity / Legacy presentation.`}),l===`native`?(0,S.jsx)(`p`,{className:`settings-percli-note`,children:e===`claude`?`Claude native supports Auto (YOLO) / Safe permissions.`:`Native requires Auto (YOLO) permissions; no native worker assignments.`}):null]})}function F(e,t,n=!0){return{value:e,original:t,valid:n}}function ee({cli:e,meta:t,original:n,value:r,setValue:i,setEntry:a,dirty:o,disabled:s=!1,client:c,pi:l,setPi:f,onPiRegistered:p}){let h=`percli-${e}-models`,g=e===`pi`,[v,b]=(0,x.useState)(!1),C=(0,x.useRef)(s);(0,x.useLayoutEffect)(()=>(C.current=s,()=>{C.current=!0}),[s]);let w=r.provider||t.defaultProvider||t.providers?.[0]||`claude`,T=g?O(l,w,r.model||``):[],E=!g&&(t.providers?.length??0)>0,j=g?T:E?t.modelsByProvider?.[w]??t.models:t.models,M=E?t.effortsByProvider?.[w]??t.efforts:void 0,N=_(t,r.model||``,M,E?w:void 0);return(0,S.jsxs)(`div`,{className:`settings-percli-row`,"data-cli":e,children:[(0,S.jsx)(`h3`,{className:`settings-percli-title`,children:t.label}),(0,S.jsxs)(`div`,{className:`settings-percli-grid${g?` settings-percli-grid--pi`:``}`,children:[g&&k(l,w).length?(0,S.jsx)(d,{id:`percli-${e}-provider`,label:`Provider`,disabled:s,value:w,options:k(l,w).map(e=>({value:e,label:e})),onChange:t=>{if(C.current)return;let o=O(l,t),s=o.includes(r.model||``)?r.model||``:o[0]||``;i({...r,provider:t,model:s}),a(`perCli.${e}.provider`,F(t,n.provider??`progrok`)),a(`perCli.${e}.model`,F(s,n.model??``))}}):E?(0,S.jsx)(d,{id:`percli-${e}-provider`,label:`Provider`,disabled:s,value:w,options:(t.providers??[]).map(e=>({value:e,label:e})),onChange:o=>{if(C.current)return;let s=t.modelsByProvider?.[o]??[],c=t.effortsByProvider?.[o]??[],l=s.includes(r.model||``)?r.model||``:s[0]||``,u=y(t,l,r.effort??``,c,o);i({...r,provider:o,model:l,effort:u}),a(`perCli.${e}.provider`,F(o,n.provider??t.defaultProvider??`claude`)),a(`perCli.${e}.model`,F(l,n.model??``)),a(`perCli.${e}.effort`,F(u,n.effort??``))}}):null,(0,S.jsxs)(`div`,{className:`settings-percli-model`,children:[g&&j.length>0?(0,S.jsx)(d,{id:`percli-${e}-model`,label:`Model`,disabled:s,value:r.model??j[0]??``,options:j.map(e=>({value:e,label:e})),onChange:o=>{if(C.current)return;let s=y(t,o,r.effort??``,M,E?w:void 0);i({...r,model:o,effort:s}),a(`perCli.${e}.model`,F(o,n.model??``)),s!==(r.effort??``)&&a(`perCli.${e}.effort`,F(s,n.effort??``))}}):(0,S.jsx)(m,{id:`percli-${e}-model`,label:`Model`,disabled:s,value:r.model??``,onChange:t=>{C.current||(i({...r,model:t}),a(`perCli.${e}.model`,F(t,n.model??``)))},placeholder:j[0]??`model id`}),t.modelNote?(0,S.jsx)(`p`,{className:`settings-percli-note`,children:t.modelNote}):null,j.length>0?(0,S.jsx)(`datalist`,{id:h,children:j.map(e=>(0,S.jsx)(`option`,{value:e},e))}):null]}),N.length>0?(0,S.jsxs)(`div`,{className:`settings-percli-effort`,children:[(0,S.jsx)(d,{id:`percli-${e}-effort`,label:`Effort`,disabled:s,value:r.effort??``,options:[{value:``,label:`(default)`},...N.map(e=>({value:e,label:e}))],onChange:t=>{C.current||(i({...r,effort:t}),a(`perCli.${e}.effort`,F(t,n.effort??``)))}}),t.effortNote?(0,S.jsx)(`p`,{className:`settings-percli-note`,children:t.effortNote}):null]}):t.effortNote?(0,S.jsx)(`p`,{className:`settings-percli-note settings-percli-note--effort`,children:t.effortNote}):null,A(e)?(0,S.jsx)(P,{cli:e,original:n.transport,dirty:o,disabled:s,setEntry:a}):null,(0,S.jsx)(u,{id:`percli-${e}-fastmode`,label:`Fast mode`,disabled:s,value:!!r.fastMode,onChange:t=>{C.current||(i({...r,fastMode:t}),a(`perCli.${e}.fastMode`,F(t,!!n.fastMode)))}}),g&&c?(0,S.jsx)(`button`,{type:`button`,className:`settings-action`,disabled:s,onClick:()=>{C.current||b(!0)},children:`Settings`}):null]}),g&&c&&v?(0,S.jsx)(`div`,{inert:s,"aria-busy":s,children:(0,S.jsx)(D,{client:c,pi:l,provider:w,model:r.model||`grok-composer-2.5-fast`,onClose:()=>b(!1),onRegistered:t=>{if(p){p(t);return}if(C.current)return;let{provider:o,model:s,pi:c}=t;c&&f&&f(c),i({...r,provider:o,model:s}),a(`perCli.${e}.provider`,F(o,n.provider??`progrok`)),a(`perCli.${e}.model`,F(s,n.model??``))}})}):null]})}var I=e=>e===`fallbackOrder`||e.startsWith(`perCli.`);function L(e){let t=e&&typeof e==`object`&&`data`in e?e.data:e;if(!t||typeof t!=`object`||Array.isArray(t))throw Error(`Invalid settings response. Refresh before retrying.`);return t}function te(e){return g(e).sort((e,t)=>e===`pi`?-1:t===`pi`?1:e===`ai-e`?t===`pi`?1:-1:t===`ai-e`?e===`pi`?-1:1:0)}function ne(e){let t=new Set;for(let n of Object.keys(e.activeOverrides||{}))t.add(n);for(let n of Object.keys(e.perCli||{}))t.add(n);let n={};for(let e of t)n[e]={model:``,effort:``};return{activeOverrides:n}}function R({port:e,client:n,dirty:r,registerSave:u}){let d=(0,x.useMemo)(()=>({client:n,port:e,dirty:r}),[n,e,r]),m=(0,x.useRef)(null),g=(0,x.useRef)(null),_=(0,x.useRef)(0),y=(0,x.useMemo)(()=>({...n,get:async(e,t)=>({instance:d,value:await n.get(e,t)})}),[n,d]),{state:C,refresh:w,setData:T}=a(y,`/api/settings`,[e]),E=(0,x.useMemo)(()=>C.kind===`ready`?C.data.instance===d?{kind:`ready`,data:C.data.value}:{kind:`loading`}:C,[C,d]),D=(0,x.useCallback)(e=>T({instance:d,value:e}),[d,T]),[O,k]=(0,x.useState)({}),[A,j]=(0,x.useState)(void 0),[M,N]=(0,x.useState)([]),[P,F]=(0,x.useState)({}),[R,z]=(0,x.useState)(!1),[re,B]=(0,x.useState)(null),[V,H]=(0,x.useState)(null),[U,W]=(0,x.useState)(!1),[ie,G]=(0,x.useState)(null);(0,x.useLayoutEffect)(()=>(m.current=d,g.current=null,++_.current,W(!1),z(!1),H(null),B(null),G(null),()=>{m.current=null,g.current=null,++_.current}),[d]);let K=(0,x.useCallback)(()=>m.current===d&&!g.current,[d]),q=(0,x.useCallback)(async()=>{if(m.current!==d)return;let e=++_.current;try{let t=await n.get(`/api/cli-registry`);if(m.current!==d||e!==_.current)return;let r=t&&typeof t==`object`&&`data`in t?t.data:t;G(v(r))}catch{m.current===d&&e===_.current&&G(null)}},[n,d]);(0,x.useEffect)(()=>{q()},[q]),(0,x.useEffect)(()=>{if(E.kind!==`ready`)return;let e={...E.data.perCli||{}},t=Object.fromEntries(Object.entries(r.saveBundle()).filter(([e])=>I(e))),n=b(t).perCli;if(n&&typeof n==`object`&&!Array.isArray(n))for(let[t,r]of Object.entries(n))r&&typeof r==`object`&&!Array.isArray(r)&&(e[t]={...e[t],...r});k(e),j(E.data.pi),N([...E.data.fallbackOrder||[]]);let i=e.codex||{},a={};typeof i.contextWindowSize==`number`&&(a.contextWindowSize=i.contextWindowSize),typeof i.contextWindowCompactLimit==`number`&&(a.contextWindowCompactLimit=i.contextWindowCompactLimit),F(a)},[E,r]);let ae=(0,x.useCallback)(e=>{if(m.current!==d)return;let t=E.kind===`ready`?E.data.perCli?.pi:void 0;e.pi&&j(e.pi),k(t=>({...t,pi:{...t.pi,provider:e.provider,model:e.model}})),r.set(`perCli.pi.provider`,{value:e.provider,original:t?.provider??`progrok`,valid:!0}),r.set(`perCli.pi.model`,{value:e.model,original:t?.model??``,valid:!0})},[r,d,E]);(0,x.useEffect)(()=>()=>{for(let e of Array.from(r.pending.keys()))I(e)&&r.remove(e)},[r,d]);let J=(0,x.useCallback)((e,t)=>{K()&&I(e)&&r.set(e,t)},[r,K]),Y=(0,x.useCallback)(()=>{if(m.current!==d)return Promise.resolve();let e=g.current;if(e)return e.kind===`save`?e.promise:Promise.reject(Error(`Wait for the active override reset before saving.`));let t=Object.fromEntries(Object.entries(r.saveBundle()).filter(([e])=>I(e)));if(Object.keys(t).length===0)return Promise.resolve();let i=b(t),a=new Map([...r.pending].filter(([e])=>Object.hasOwn(t,e)));W(!0),H(null);let o={instance:d,kind:`save`,promise:Promise.resolve()};return o.promise=Promise.resolve().then(async()=>{if(m.current!==d)return;let e=await n.put(`/api/settings`,i);if(m.current!==d)return;let t=L(e);for(let[e,t]of a)r.pending.get(e)===t&&r.remove(e);D(t),await w(),await q()}).catch(e=>{if(m.current===d)throw e}).finally(()=>{g.current===o&&(g.current=null),m.current===d&&W(!1)}),g.current=o,o.promise},[n,r,d,q,w,D]);(0,x.useEffect)(()=>{if(u)return u(Y),()=>u(null)},[u,Y]);let oe=(0,x.useCallback)(()=>{if(!K()||E.kind!==`ready`||!window.confirm(`Reset all active overrides?`))return;z(!0),B(null);let e=ne(E.data),t={instance:d,kind:`reset`,promise:Promise.resolve()};return t.promise=Promise.resolve().then(async()=>{if(m.current!==d)return;let t=await n.put(`/api/settings`,e);if(m.current!==d)return;let r=L(t);D(r),await w()}).catch(e=>{m.current===d&&B(i(e))}).finally(()=>{g.current===t&&(g.current=null),m.current===d&&z(!1)}),g.current=t,t.promise},[K,n,d,w,D,E]);if(E.kind===`loading`)return(0,S.jsx)(s,{});if(E.kind===`offline`)return(0,S.jsx)(c,{port:e});if(E.kind===`error`)return(0,S.jsx)(l,{message:E.message});let X=E.data,Z=X.perCli||{},se=te(Object.keys(Z)),Q=Z.codex||{},ce=X.activeOverrides||{},$=Object.entries(ce);return(0,S.jsxs)(`form`,{className:`settings-page-form`,onSubmit:e=>{e.preventDefault(),Y().catch(e=>{m.current===d&&H(i(e))})},children:[V?(0,S.jsx)(l,{message:V}):null,(0,S.jsx)(o,{title:`Model defaults`,hint:`Per-CLI model and runtime defaults. Runtime transport applies to the next run; display and permissions stay separate.`,children:se.length===0?(0,S.jsx)(`p`,{className:`settings-empty`,children:`No CLIs registered for this instance.`}):se.map(e=>(0,S.jsx)(ee,{cli:e,meta:h(e,ie),original:Z[e]||{},value:O[e]||Z[e]||{},dirty:r,disabled:U||R,setValue:t=>{K()&&k({...O,[e]:t})},setEntry:J,client:n,pi:A,setPi:e=>{K()&&j(e)},onPiRegistered:ae},e))}),Z.codex?(0,S.jsxs)(o,{title:`Codex context window`,hint:`Codex-only sliders. Other CLIs ignore these values.`,children:[(0,S.jsx)(p,{id:`model-codex-ctx`,label:`Context window size`,disabled:U||R,value:P.contextWindowSize??(typeof Q.contextWindowSize==`number`?Q.contextWindowSize:1e6),min:0,step:1e4,onChange:e=>{K()&&(F({...P,contextWindowSize:e}),J(`perCli.codex.contextWindowSize`,{value:e,original:Q.contextWindowSize??1e6,valid:Number.isFinite(e)&&e>=0}))}}),(0,S.jsx)(p,{id:`model-codex-compact`,label:`Compact limit`,disabled:U||R,value:P.contextWindowCompactLimit??(typeof Q.contextWindowCompactLimit==`number`?Q.contextWindowCompactLimit:9e5),min:0,step:1e4,onChange:e=>{K()&&(F({...P,contextWindowCompactLimit:e}),J(`perCli.codex.contextWindowCompactLimit`,{value:e,original:Q.contextWindowCompactLimit??9e5,valid:Number.isFinite(e)&&e>=0}))}})]}):null,(0,S.jsx)(o,{title:`Fallback order`,hint:`Order of CLIs used when the active CLI fails. Press Enter to add a chip; Backspace to remove the last.`,children:(0,S.jsx)(f,{id:`model-fallbackOrder`,label:`Fallback order`,error:M.some(t)?`A saved JWC fallback is retired. Remove it before changing this order.`:null,disabled:U||R,value:M,onChange:e=>{K()&&(N(e),J(`fallbackOrder`,{value:e,original:X.fallbackOrder||[],valid:!e.some(t)}))},placeholder:`cli name`})}),(0,S.jsxs)(o,{title:`Active overrides`,hint:`Per-session overrides applied on top of per-CLI defaults.`,children:[$.length===0?(0,S.jsx)(`p`,{className:`settings-empty`,children:`No active overrides.`}):(0,S.jsxs)(`table`,{className:`settings-overrides-table`,children:[(0,S.jsx)(`thead`,{children:(0,S.jsxs)(`tr`,{children:[(0,S.jsx)(`th`,{scope:`col`,children:`CLI`}),(0,S.jsx)(`th`,{scope:`col`,children:`Model`}),(0,S.jsx)(`th`,{scope:`col`,children:`Effort`})]})}),(0,S.jsx)(`tbody`,{children:$.map(([e,t])=>(0,S.jsxs)(`tr`,{children:[(0,S.jsx)(`td`,{children:e}),(0,S.jsx)(`td`,{children:(0,S.jsx)(`code`,{children:t?.model||`—`})}),(0,S.jsx)(`td`,{children:(0,S.jsx)(`code`,{children:t?.effort||`—`})})]},e))})]}),(0,S.jsxs)(`div`,{className:`settings-overrides-actions`,children:[(0,S.jsx)(`button`,{type:`button`,className:`settings-action settings-action-discard`,onClick:()=>void oe(),disabled:U||R||$.length===0,children:R?`Resetting…`:`Reset overrides`}),re?(0,S.jsx)(`span`,{className:`settings-field-error`,role:`alert`,children:re}):null]})]})]})}export{ne as buildResetOverridesPatch,R as default,te as orderModelCliKeys};
@@ -1 +0,0 @@
1
- import{t as e}from"./cli-engine-Bw0QTAVX.js";var t=[`gpt-5.5`,`gpt-5.4`,`gpt-5.4-mini`,`gpt-5.3-codex-spark`,`gpt-5.6-sol`,`gpt-5.6-terra`,`gpt-5.6-luna`],n=[`pi`,`claude`,`claude-e`,`agy`,`codex`,`cursor`,`kiro-code`,`gemini`],r={agy:{label:`Antigravity`,models:[`Gemini 3.7 Flash (Medium)`,`Gemini 3.6 Flash (Medium)`],efforts:[],modelNote:`AGY model override is version-dependent. Observed AGY 1.1.13 supports --model; cli-jaw probes the installed binary and emits this field only when supported. Leave empty to use native AGY selection.`,effortNote:`AGY has no separate effort flag.`},pi:{label:`Pi`,defaultProvider:`progrok`,providers:[`progrok`],models:[`grok-composer-2.5-fast`,`grok-4.6`,`grok-4.5`,`grok-4.3`],efforts:[`low`,`medium`,`high`,`xhigh`,`max`],effortNote:`Pi runs through --mode rpc. grok-composer-2.5-fast is the verified default; bare grok-composer-2.5 currently has no team access.`},"ai-e":{label:`AI-E`,defaultProvider:`claude`,providers:[`claude`,`codex`,`gemini`,`grok`,`copilot`,`kiro`],models:[`opus`,`sonnet`,`haiku`,...t,`gemini-3-flash-preview`,`grok-build`,`grok-composer-2.5-fast`,`gpt-5-mini`],efforts:[`low`,`medium`,`high`,`xhigh`,`max`],modelsByProvider:{claude:[`claude-fable-5`,`claude-opus-5`,`claude-opus-4-8`,`opus`,`sonnet`,`haiku`],codex:t,gemini:[`gemini-3-flash-preview`],grok:[`grok-build`,`grok-composer-2.5-fast`],copilot:[`gpt-5-mini`],kiro:[`auto`,`gpt-5.6-sol`,`gpt-5.6-terra`,`gpt-5.6-luna`,`claude-sonnet-5`,`claude-opus-5`,`claude-sonnet-4.6`,`deepseek-3.2`,`minimax-m2.5`,`glm-5`,`qwen3-coder-next`]},effortsByProvider:{claude:[`low`,`medium`,`high`,`xhigh`,`max`],codex:[`low`,`medium`,`high`,`xhigh`],gemini:[],grok:[],copilot:[`low`,`medium`,`high`],kiro:[`low`,`medium`,`high`,`xhigh`]}},claude:{label:`Claude`,models:[`opus`,`sonnet`,`sonnet[1m]`,`haiku`,`claude-fable-5-1`,`claude-fable-5`,`claude-fable-5[1m]`,`claude-sonnet-5`,`claude-sonnet-5[1m]`,`claude-opus-5`,`claude-opus-5[1m]`,`claude-opus-4-8`,`claude-opus-4-8[1m]`,`claude-opus-4-7`,`claude-opus-4-7[1m]`,`claude-opus-4-6`,`claude-opus-4-6[1m]`,`claude-sonnet-4-6`,`claude-sonnet-4-6[1m]`,`claude-haiku-4-5`],efforts:[`low`,`medium`,`high`,`xhigh`,`max`]},"claude-e":{label:`Claude E`,models:[`opus`,`sonnet`,`haiku`,`claude-fable-5`,`claude-sonnet-5`,`claude-opus-5`,`claude-opus-4-8`,`claude-opus-4-7`,`claude-sonnet-4-6`,`claude-haiku-4-5`],efforts:[`low`,`medium`,`high`,`xhigh`,`max`]},codex:{label:`Codex`,models:t,efforts:[`low`,`medium`,`high`,`xhigh`]},"codex-app":{label:`Codex App`,models:t,efforts:[`low`,`medium`,`high`,`xhigh`]},cursor:{label:`Cursor`,models:`auto,composer-2.5,gpt-5.5,gpt-5.6-sol,gpt-5.6-terra,gpt-5.6-luna,gpt-5.4,gpt-5.4-mini,gpt-5.4-nano,gpt-5.3-codex,gpt-5.2,gpt-5.2-codex,gpt-5.1-codex-max,gpt-5.1-codex-mini,gpt-5.1,claude-sonnet-5,claude-fable-5,claude-fable-5-thinking,claude-opus-5,claude-opus-4-8,claude-opus-4-8-thinking,claude-opus-4-7,claude-opus-4-7-thinking,claude-4.6-opus,claude-4.6-sonnet,claude-4.5-opus-high,claude-4.5-sonnet,claude-4-sonnet,gemini-3.1-pro,gemini-3-flash,gemini-3-pro,gemini-3.5-flash,grok-4.6,grok-4.5,gpt-5-mini,glm-5.2,glm-5.3,gpt-5.5-extra,kimi-k2.7-code,kimi-k3,gemini-3.6-flash,gemini-3.7-flash`.split(`,`),efforts:[`none`,`none-fast`,`low`,`low-fast`,`medium`,`medium-fast`,`high`,`high-fast`,`xhigh`,`xhigh-fast`,`max`,`max-fast`],effortNote:`Cursor effort resolves to model IDs; no separate --effort flag`},"kiro-code":{label:`Kiro`,models:[`auto`,`gpt-5.6-sol`,`gpt-5.6-terra`,`gpt-5.6-luna`,`claude-fable-5`,`claude-sonnet-5`,`claude-opus-5`,`claude-opus-4.8`,`claude-opus-4.7`,`claude-opus-4.6`,`claude-sonnet-4.6`,`claude-opus-4.5`,`claude-sonnet-4.5`,`claude-sonnet-4`,`claude-haiku-4.5`,`deepseek-3.2`,`minimax-m2.5`,`minimax-m2.1`,`glm-5`,`qwen3-coder-next`],efforts:[`low`,`medium`,`high`,`xhigh`],effortNote:`Kiro CLI forwards --effort; cli-jaw maps xhigh to Kiro max on the wire`},gemini:{label:`Gemini`,models:[`gemini-3-pro-preview`,`gemini-2.5-pro`,`gemini-3-flash-preview`],efforts:[]},grok:{label:`Grok`,models:[`grok-build`,`grok-composer-2.5-fast`],efforts:[],effortNote:`unsupported by grok-build/composer; do not pass --effort`},opencode:{label:`OpenCode`,models:[`opencode-go/kimi-k2.7-code`,`opencode-go/glm-5.2`,`opencode-go/glm-5.1`,`opencode-go/kimi-k2.6`,`opencode-go/mimo-v2.5-pro`,`opencode-go/mimo-v2.5`,`opencode-go/minimax-m2.7`,`opencode-go/qwen3.7-plus`,`opencode-go/qwen3.6-plus`,`opencode-go/deepseek-v4-pro`,`opencode-go/deepseek-v4-flash`],efforts:[`minimal`,`low`,`high`,`max`]},copilot:{label:`Copilot`,models:[`gpt-5.6-sol`,`gpt-5.6-terra`,`gpt-5.6-luna`,`gpt-5.5`,`claude-fable-5`,`claude-opus-4.8`,`claude-opus-4.7`,`claude-sonnet-4.6`,`gpt-5.4`],efforts:[`low`,`medium`,`high`]}};function i(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}function a(e){if(!e||typeof e!=`object`||Array.isArray(e))return;let t={};for(let[n,r]of Object.entries(e))t[n]=i(r);return t}function o(e){if(!e||typeof e!=`object`||Array.isArray(e))return;let t={};for(let[n,r]of Object.entries(e))typeof r==`string`&&(t[n]=r);return t}function s(e){if(!e||typeof e!=`object`||Array.isArray(e))return;let t={};for(let[n,r]of Object.entries(e)){let e=a(r);e&&(t[n]=e)}return t}function c(e){if(!e||typeof e!=`object`||Array.isArray(e))return;let t={};for(let[n,r]of Object.entries(e)){let e=o(r);e&&(t[n]=e)}return t}function l(t){if(!t||typeof t!=`object`||Array.isArray(t))return{};let n={};for(let[r,l]of Object.entries(t)){if(e(r)||!l||typeof l!=`object`||Array.isArray(l))continue;let t=l,u=a(t.modelsByProvider),d=a(t.effortsByProvider),f=a(t.effortsByModel),p=o(t.defaultEffortByModel),m=s(t.effortsByModelByProvider),h=c(t.defaultEffortByModelByProvider);n[r]={label:typeof t.label==`string`?t.label:r,models:i(t.models),efforts:i(t.efforts),...typeof t.defaultProvider==`string`?{defaultProvider:t.defaultProvider}:{},...t.providers?{providers:i(t.providers)}:{},...u?{modelsByProvider:u}:{},...d?{effortsByProvider:d}:{},...f?{effortsByModel:f}:{},...p?{defaultEffortByModel:p}:{},...m?{effortsByModelByProvider:m}:{},...h?{defaultEffortByModelByProvider:h}:{},...typeof t.modelSource==`string`?{modelSource:t.modelSource}:{},...typeof t.effortNote==`string`?{effortNote:t.effortNote}:{},...typeof t.modelNote==`string`?{modelNote:t.modelNote}:{}}}return n}function u(e,t,n,r){let i=(t||``).trim();if(r){let t=e.effortsByModelByProvider?.[r]?.[i];if(t)return t}return e.effortsByModel?.[i]||(n??e.efforts)}function d(e,t,n,r,i){let a=u(e,t,r,i);if(n&&a.includes(n))return n;let o=(t||``).trim(),s=(i?e.defaultEffortByModelByProvider?.[i]?.[o]:void 0)??e.defaultEffortByModel?.[o]??``;return a.includes(s)?s:``}function f(t,n){return e(t)?{label:`JWC (retired)`,models:[],efforts:[]}:n?.[t]||r[t]||{label:t,models:[],efforts:[]}}function p(t){return t.filter(t=>!e(t))}function m(e){let t=p(e),r=n.filter(e=>t.includes(e)),i=t.filter(e=>!n.includes(e));return[...r,...i]}function h(e,t={},n={}){return n[e]?.model||t[e]?.model||``}function g(e,t={},n={}){return n[e]?.effort||t[e]?.effort||``}function _(e,t=``){let n=new Set;t&&n.add(t);for(let t of e)n.add(t);return Array.from(n).map(e=>({value:e,label:e}))}export{f as a,m as c,p as d,u as i,g as l,n,l as o,d as r,_ as s,r as t,h as u};
@@ -1 +0,0 @@
1
- import{r as e,t}from"./bgtask-badge-BvxHqMGi.js";export{t as applyBgtaskUpdate,e as refreshBgtaskBadge};
@@ -1 +0,0 @@
1
- function e(e){return e===`jwc`}export{e as t};
@@ -1 +0,0 @@
1
- import{n as e}from"./api-CUtiCd2-.js";import{t}from"./cli-engine-Bw0QTAVX.js";var n={agy:{label:`Antigravity`,efforts:[],effortNote:`AGY has no separate effort flag`,models:[`Gemini 3.7 Flash (Medium)`,`Gemini 3.6 Flash (Medium)`]},"ai-e":{label:`AI-E`,defaultProvider:`claude`,providers:[`claude`,`codex`,`gemini`,`grok`,`copilot`,`kiro`],efforts:[`low`,`medium`,`high`,`xhigh`,`max`],models:[`opus`,`sonnet`,`haiku`,`gpt-5.5`,`gpt-5.4`,`gpt-5.4-mini`,`gpt-5.3-codex-spark`,`gpt-5.6-sol`,`gpt-5.6-terra`,`gpt-5.6-luna`,`gemini-3-flash-preview`,`grok-build`,`grok-composer-2.5-fast`,`gpt-5-mini`],modelsByProvider:{claude:[`claude-fable-5`,`claude-opus-5`,`claude-opus-4-8`,`opus`,`sonnet`,`haiku`],codex:[`gpt-5.5`,`gpt-5.4`,`gpt-5.4-mini`,`gpt-5.3-codex-spark`,`gpt-5.6-sol`,`gpt-5.6-terra`,`gpt-5.6-luna`],gemini:[`gemini-3-flash-preview`],grok:[`grok-build`,`grok-composer-2.5-fast`],copilot:[`gpt-5-mini`],kiro:[`auto`,`gpt-5.6-sol`,`gpt-5.6-terra`,`gpt-5.6-luna`,`claude-sonnet-5`,`claude-opus-5`,`claude-sonnet-4.6`,`deepseek-3.2`,`minimax-m2.5`,`glm-5`,`qwen3-coder-next`]},effortsByProvider:{claude:[`low`,`medium`,`high`,`xhigh`,`max`],codex:[`low`,`medium`,`high`,`xhigh`],gemini:[],grok:[],copilot:[`low`,`medium`,`high`],kiro:[`low`,`medium`,`high`,`xhigh`]}},claude:{label:`Claude`,efforts:[`low`,`medium`,`high`,`xhigh`,`max`],models:[`opus`,`sonnet`,`sonnet[1m]`,`haiku`,`claude-fable-5-1`,`claude-fable-5`,`claude-fable-5[1m]`,`claude-sonnet-5`,`claude-sonnet-5[1m]`,`claude-opus-5`,`claude-opus-5[1m]`,`claude-opus-4-8`,`claude-opus-4-8[1m]`,`claude-opus-4-7`,`claude-opus-4-7[1m]`,`claude-opus-4-6`,`claude-opus-4-6[1m]`,`claude-sonnet-4-6`,`claude-sonnet-4-6[1m]`,`claude-haiku-4-5`]},"claude-e":{label:`Claude E`,efforts:[`low`,`medium`,`high`,`xhigh`,`max`],models:[`opus`,`sonnet`,`haiku`,`claude-fable-5`,`claude-sonnet-5`,`claude-opus-5`,`claude-opus-4-8`,`claude-opus-4-7`,`claude-sonnet-4-6`,`claude-haiku-4-5`]},codex:{label:`Codex`,efforts:[`low`,`medium`,`high`,`xhigh`],models:[`gpt-5.5`,`gpt-5.4`,`gpt-5.4-mini`,`gpt-5.3-codex-spark`,`gpt-5.6-sol`,`gpt-5.6-terra`,`gpt-5.6-luna`]},"codex-app":{label:`Codex App`,efforts:[`low`,`medium`,`high`,`xhigh`],models:[`gpt-5.5`,`gpt-5.4`,`gpt-5.4-mini`,`gpt-5.3-codex-spark`,`gpt-5.6-sol`,`gpt-5.6-terra`,`gpt-5.6-luna`]},cursor:{label:`Cursor`,efforts:[`none`,`none-fast`,`low`,`low-fast`,`medium`,`medium-fast`,`high`,`high-fast`,`xhigh`,`xhigh-fast`,`max`,`max-fast`],effortNote:`Cursor effort resolves to model IDs; cli-jaw never passes --effort`,models:`auto,composer-2.5,gpt-5.5,gpt-5.6-sol,gpt-5.6-terra,gpt-5.6-luna,gpt-5.4,gpt-5.4-mini,gpt-5.4-nano,gpt-5.3-codex,gpt-5.2,gpt-5.2-codex,gpt-5.1-codex-max,gpt-5.1-codex-mini,gpt-5.1,claude-sonnet-5,claude-fable-5,claude-fable-5-thinking,claude-opus-5,claude-opus-4-8,claude-opus-4-8-thinking,claude-opus-4-7,claude-opus-4-7-thinking,claude-4.6-opus,claude-4.6-sonnet,claude-4.5-opus-high,claude-4.5-sonnet,claude-4-sonnet,gemini-3.1-pro,gemini-3-flash,gemini-3-pro,gemini-3.5-flash,grok-4.6,grok-4.5,gpt-5-mini,glm-5.2,glm-5.3,gpt-5.5-extra,kimi-k2.7-code,kimi-k3,gemini-3.6-flash,gemini-3.7-flash`.split(`,`)},"kiro-code":{label:`Kiro`,efforts:[`low`,`medium`,`high`,`xhigh`],effortNote:`Kiro CLI forwards --effort; cli-jaw maps xhigh to Kiro max on the wire`,models:[`auto`,`gpt-5.6-sol`,`gpt-5.6-terra`,`gpt-5.6-luna`,`claude-fable-5`,`claude-sonnet-5`,`claude-opus-5`,`claude-opus-4.8`,`claude-opus-4.7`,`claude-opus-4.6`,`claude-sonnet-4.6`,`claude-opus-4.5`,`claude-sonnet-4.5`,`claude-sonnet-4`,`claude-haiku-4.5`,`deepseek-3.2`,`minimax-m2.5`,`minimax-m2.1`,`glm-5`,`qwen3-coder-next`]},gemini:{label:`Gemini`,efforts:[],models:[`gemini-3.0-pro-preview`,`gemini-3.1-pro-preview`,`gemini-2.5-pro`,`gemini-3-flash-preview`,`gemini-2.5-flash`]},grok:{label:`Grok`,efforts:[],effortNote:`unsupported by grok-build/composer; do not pass --effort`,models:[`grok-build`,`grok-composer-2.5-fast`]},opencode:{label:`OpenCode`,efforts:[`minimal`,`low`,`high`,`max`],models:[`opencode-go/kimi-k2.7-code`,`opencode-go/kimi-k3`,`opencode-go/kimi-k2.6`,`opencode-go/kimi-k2.5`,`opencode-go/glm-5.3`,`opencode-go/glm-5.2`,`opencode-go/glm-5.1`,`opencode-go/glm-5`,`opencode-go/grok-4.6`,`opencode-go/grok-4.5`,`opencode-go/minimax-m3`,`opencode-go/minimax-m2.7`,`opencode-go/minimax-m2.5`,`opencode-go/qwen3.7-max`,`opencode-go/qwen3.7-plus`,`opencode-go/qwen3.6-plus`,`opencode-go/qwen3.5-plus`,`opencode-go/mimo-v2.5-pro`,`opencode-go/mimo-v2.5`,`opencode-go/mimo-v2-pro`,`opencode-go/mimo-v2-omni`,`opencode-go/deepseek-v4-pro`,`opencode-go/deepseek-v4-flash`,`opencode-go/hy3`]},copilot:{label:`Copilot`,efforts:[`low`,`medium`,`high`],effortNote:`-> ~/.copilot/config.json`,models:[`gpt-5.6-sol`,`gpt-5.6-terra`,`gpt-5.6-luna`,`gpt-5.5`,`claude-fable-5`,`claude-opus-4.8`,`claude-sonnet-4.6`,`claude-haiku-4.5`,`gpt-5.4`,`gpt-5.3-codex`,`gpt-5.2-codex`,`gpt-5.1-codex`,`gpt-4.1`,`gpt-5-mini`,`gemini-3-pro-preview`]}};function r(e){let t={};for(let[n,r]of Object.entries(e))t[n]=Array.isArray(r?.models)?[...r.models]:[];return t}function i(e){let n={};for(let[r,i]of Object.entries(e||{})){if(t(r)||!i||typeof i!=`object`)continue;let e=i,a={label:e.label||r,efforts:Array.isArray(e.efforts)?[...e.efforts]:[],models:Array.isArray(e.models)?[...e.models]:[]};typeof e.effortNote==`string`&&e.effortNote.trim()&&(a.effortNote=e.effortNote),typeof e.modelNote==`string`&&e.modelNote.trim()&&(a.modelNote=e.modelNote),typeof e.defaultProvider==`string`&&(a.defaultProvider=e.defaultProvider),Array.isArray(e.providers)&&(a.providers=[...e.providers]),e.modelsByProvider&&typeof e.modelsByProvider==`object`&&(a.modelsByProvider=Object.fromEntries(Object.entries(e.modelsByProvider).filter(e=>Array.isArray(e[1])).map(([e,t])=>[e,[...t]]))),e.effortsByProvider&&typeof e.effortsByProvider==`object`&&(a.effortsByProvider=Object.fromEntries(Object.entries(e.effortsByProvider).filter(e=>Array.isArray(e[1])).map(([e,t])=>[e,[...t]]))),e.effortsByModel&&typeof e.effortsByModel==`object`&&(a.effortsByModel=Object.fromEntries(Object.entries(e.effortsByModel).filter(e=>Array.isArray(e[1])).map(([e,t])=>[e,t.filter(e=>typeof e==`string`)]))),e.defaultEffortByModel&&typeof e.defaultEffortByModel==`object`&&(a.defaultEffortByModel=Object.fromEntries(Object.entries(e.defaultEffortByModel).filter(e=>typeof e[1]==`string`))),typeof e.modelSource==`string`&&(a.modelSource=e.modelSource),e.effortsByModelByProvider&&typeof e.effortsByModelByProvider==`object`&&(a.effortsByModelByProvider=Object.fromEntries(Object.entries(e.effortsByModelByProvider).filter(e=>!!e[1]&&typeof e[1]==`object`&&!Array.isArray(e[1])).map(([e,t])=>[e,Object.fromEntries(Object.entries(t).filter(e=>Array.isArray(e[1])).map(([e,t])=>[e,t.filter(e=>typeof e==`string`)]))]))),e.defaultEffortByModelByProvider&&typeof e.defaultEffortByModelByProvider==`object`&&(a.defaultEffortByModelByProvider=Object.fromEntries(Object.entries(e.defaultEffortByModelByProvider).filter(e=>!!e[1]&&typeof e[1]==`object`&&!Array.isArray(e[1])).map(([e,t])=>[e,Object.fromEntries(Object.entries(t).filter(e=>typeof e[1]==`string`))]))),n[r]=a}return n}var a=i(n),o=Object.keys(a),s=r(a);function c(e){let t=i(e);return Object.keys(t).length?(a=t,o=Object.keys(t),s=r(t),!0):!1}async function l(){try{let t=await e(`/api/cli-registry`);if(!t||!c(t))throw Error(`invalid registry`)}catch(e){console.warn(`[cli-registry] fallback:`,e.message),c(n)}return a}function u(){return o}function d(e){return a[e]||null}var f=[`pi`,`claude`,`claude-e`,`agy`,`codex`,`cursor`,`kiro-code`,`gemini`],p=[{value:`frontend`,labelKey:`role.label.frontend`,label:`Frontend`,prompt:`Frontend employee — UI/UX, CSS, components`,skill:`jaw-dev-frontend`},{value:`backend`,labelKey:`role.label.backend`,label:`Backend`,prompt:`Backend employee — API, DB, server logic`,skill:`jaw-dev-backend`},{value:`data`,labelKey:`role.label.data`,label:`Data`,prompt:`Data employee — data pipeline, analysis, ML`,skill:`jaw-dev-data`},{value:`docs`,labelKey:`role.label.docs`,label:`Docs`,prompt:`Docs employee — documentation, README, API docs`,skill:`documentation`},{value:`security`,labelKey:`role.label.security`,label:`Security`,prompt:`Security reviewer — auth, secrets, injection, destructive-command, sandbox, and data exposure risks`,skill:`jaw-dev-security`},{value:`testing`,labelKey:`role.label.testing`,label:`Testing`,prompt:`Testing reviewer — unit, integration, regression, smoke, and edge-case coverage`,skill:`jaw-dev-testing`},{value:`custom`,labelKey:`role.label.custom`,label:`Custom...`,prompt:``,skill:null}];export{d as a,u as i,f as n,l as o,p as r,s as t};
@@ -1 +0,0 @@
1
- import{a as e}from"./iframe-renderer-C2gchtOj.js";export{e as refreshFileWidget};
@@ -1 +0,0 @@
1
- import{a as e}from"./memory-BiWzpoBq.js";export{e as refreshMemorySidebar};
@@ -1 +0,0 @@
1
- import{o as e,s as t}from"./message-history-CuFefS02.js";export{e as historyReloadInFlight,t as loadMessages};
@@ -1 +0,0 @@
1
- import{c as e,n as t}from"./settings-core-CzdXfoOK.js";import"./settings-DQ1fLygB.js";export{t as loadSettings,e as updateSettings};
@@ -1,2 +0,0 @@
1
- import{a as e,i as t,n,t as r}from"./api-CUtiCd2-.js";import{O as i,P as a,S as o}from"./render-DUGqq9Mu.js";import{n as s}from"./locale-B9w_kUtW.js";import{t as c}from"./cli-engine-Bw0QTAVX.js";import{a as l,i as u,n as d,o as f,t as p}from"./constants-D8XAqfHk.js";import{a as m}from"./settings-types-D3cd6SWy.js";import{s as h}from"./pi-settings-tRVfevu-.js";import{n as g,r as _}from"./provider-icons-Det0fC-4.js";import{n as ee,t as v}from"./presentation-preference-D9u6LD07.js";function y(e,t){if(!c(t))return;let n=Array.from(e.options).find(e=>e.value===t);n||(n=e.ownerDocument.createElement(`option`),n.value=t,e.prepend(n)),n.disabled=!0,n.textContent=`JWC (retired — choose another runtime)`,e.value=t,e.title=`The saved runtime is retired and cannot execute.`}var te=/^\/(?:Users|home)\/[^/]+/,b=32;function ne(e){return e.replace(te,`~`)}function x(e){if(e.length<=b)return e;let t=e.split(`/`);return t.length<=3?e:`${t.slice(0,2).join(`/`)}/…/${t[t.length-1]}`}function re(e){let t=(e||[]).filter(e=>typeof e==`string`&&e.trim());return t.length===0?null:{text:`${x(ne(t[0]))}${t.length>1?` +${t.length-1}`:``}`,title:t.join(`
2
- `)}}function S(){return document.getElementById(`headerGitStatus`)}function C(){let e=S();e&&(e.hidden=!0,e.textContent=``,e.removeAttribute(`title`),e.removeAttribute(`aria-label`))}function w(e){if(!e?.available)return null;let t=e.branch||e.head;if(!t)return null;let n=[`/`,`⑂ ${t}`];e.trackedChangedCount>0&&n.push(`*${e.trackedChangedCount}`),e.untrackedCount>0&&n.push(`?${e.untrackedCount}`);let r=[`Git: ${e.branch?`branch ${e.branch}`:`detached ${e.head}`}`];return e.trackedChangedCount>0&&r.push(`${e.trackedChangedCount} tracked changes`),e.untrackedCount>0&&r.push(`${e.untrackedCount} untracked files`),{text:n.join(` `),title:r.join(`, `)}}function ie(e){let t=S();if(!t)return;let n=w(e);if(!n){C();return}t.hidden=!1,t.textContent=n.text,t.title=n.title,t.setAttribute(`aria-label`,n.title)}async function T(){ie(await n(`/api/project/git-summary`))}function E(e){(Array.isArray(e.changedKeys)?e.changedKeys:[]).includes(`projectDirs`)&&T()}var D=new Set,O,k=!1,A=0;function j(e){return!e||typeof e!=`object`?null:`settings`in e&&e.settings?e.settings:`data`in e&&e.data?e.data:e}async function ae(t){if(t.runtimeDefaultMigration?.state!==`pending`)return t;let n=window.confirm(`신규 설치의 기본 런타임이 Codex App으로 변경되었습니다. 지금 Codex App을 사용하시겠습니까?`)?`accept`:`keep`;try{let i=await e(),a=await fetch(`${r}/api/settings/runtime-default-migration`,{method:`POST`,headers:{"Content-Type":`application/json`,...i?{Authorization:`Bearer ${i}`}:{}},body:JSON.stringify({action:n})}),o=await a.json().catch(()=>null);if(m(a.status))return j(o)??t;window.alert(`런타임 선택을 저장하지 못했습니다 (${a.status}). 다음 설정 진입 때 다시 안내합니다.`)}catch{window.alert(`런타임 선택을 저장하지 못했습니다. 다음 설정 진입 때 다시 안내합니다.`)}return t}async function M(t){if(t.multiSessionDefaultMigration?.state!==`pending`)return t;let n=window.confirm(`이제 대화 세션을 여러 개 열 수 있습니다. 켜면 동시 실행도 2로 올라가서, 두 번째 세션이 첫 번째가 끝나기를 기다리지 않습니다. 지금 켤까요?`)?`accept`:`keep`;try{let i=await e(),a=await fetch(`${r}/api/settings/multi-session-default-migration`,{method:`POST`,headers:{"Content-Type":`application/json`,...i?{Authorization:`Bearer ${i}`}:{}},body:JSON.stringify({action:n})}),o=await a.json().catch(()=>null);if(m(a.status))return j(o)??t;window.alert(`세션 선택을 저장하지 못했습니다 (${a.status}). 다음 설정 진입 때 다시 안내합니다.`)}catch{window.alert(`세션 선택을 저장하지 못했습니다. 다음 설정 진입 때 다시 안내합니다.`)}return t}function N(e){let t=document.getElementById(`headerCli`);if(!t)return;let n=g(e),r=F(e);t.innerHTML=n?`${n} ${i(r)}`:i(r)}function P(e){let t=document.getElementById(`headerProject`);if(!t)return;oe(t),t.hidden=!1;let n=re(e);if(!n){t.classList.add(`is-empty`),t.textContent=`Project: not set`,t.title=`Click to choose the project root folder`;return}t.classList.remove(`is-empty`),t.textContent=`Project ${n.text}`,t.title=`${n.title}\n(click to change)`}function oe(e){if(e.dataset.pickerBound)return;e.dataset.pickerBound=`1`,e.setAttribute(`role`,`button`),e.setAttribute(`tabindex`,`0`);let n=async()=>{if(e.classList.contains(`is-picking`))return;e.classList.add(`is-picking`);let n=e.textContent;e.textContent=`Choosing folder…`;try{let n=await t(`/api/project/pick`,`POST`,{});if(n&&!n.cancelled&&`projectDirs`in n){e.classList.remove(`is-picking`),P(n.projectDirs);return}}catch{}e.classList.remove(`is-picking`),e.textContent=n};e.addEventListener(`click`,()=>{n()}),e.addEventListener(`keydown`,e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),n())})}function se(e){typeof e.cli==`string`&&e.cli&&N(e.cli),`projectDirs`in e&&P(e.projectDirs),E(e)}function F(e){return l(e)?.label||_(e)||e}function I(e){let t=e.finally(()=>{D.delete(t)});return D.add(t),t}async function ce(){for(;D.size;)await Promise.all(D)}function L(e,t,{includeCustom:n=!1,includeDefault:r=!1,selected:o=``}={}){if(!e)return;let s=r?`<option value="default">default</option>`:``,c=n?`<option value="__custom__">${a(`model.customOption`)}</option>`:``;e.innerHTML=s+(t||[]).map(e=>`<option value="${i(e)}">${i(e)}</option>`).join(``)+c,o&&Array.from(e.options).some(e=>e.value===o)&&(e.value=o)}function R(e,t){if(!e||!t||Array.from(e.options).some(e=>e.value===t))return;let n=document.createElement(`option`);n.value=t,n.textContent=t;let r=e.querySelector(`option[value="__custom__"]`);r?e.insertBefore(n,r):e.appendChild(n)}function z(e=null){let t=u().filter(e=>!c(e)),n=document.getElementById(`selCli`);if(n){let r=e?.cli||n.value||t[0]||`claude`,o=e=>d.includes(e),s=!o(r)&&t.includes(r),u=n.dataset.expanded===`1`,f=t.filter(o),p=t.filter(e=>!o(e)),m=f.length===0||s||u,h=f.map(e=>{let t=l(e)?.label||e;return`<option value="${i(e)}">${i(t)}</option>`}).join(``);p.length>0&&(m?(h+=`<option disabled>──────</option>`,h+=p.map(e=>{let t=l(e)?.label||e;return`<option value="${i(e)}">${i(t)}</option>`}).join(``)):h+=`<option value="__show_more__">${a(`cli.showMore`)}</option>`),n.innerHTML=h,n.title=c(r)?`The saved runtime is retired and cannot execute.`:``,y(n,r),Array.from(n.options).some(e=>e.value===r)&&(n.value=r)}let r=document.getElementById(`flushCli`);if(r){let n=e?.memory?.cli||r.value||``;r.innerHTML=`<option value="">(active CLI)</option>`+t.map(e=>`<option value="${i(e)}">${i(F(e))}</option>`).join(``),y(r,n),Array.from(r.options).some(e=>e.value===n)&&(r.value=n)}}function B(e,t){return(t||``).trim()}function V(e,t,n,r){let i=(t||``).trim();if(r){let t=e?.effortsByModelByProvider?.[r]?.[i];if(t)return t}return e?.effortsByModel?.[i]||n||e?.efforts||[]}function H(e,t,n){let r=(t||``).trim();return(n?e?.defaultEffortByModelByProvider?.[n]?.[r]:void 0)??e?.defaultEffortByModel?.[r]??``}function U(){return document.getElementById(`selEffort`)?.value||``}function W(e,t=``,n){let r=document.getElementById(`selEffort`);if(!r)return;let a=l(e),o=e!==`pi`&&a?.providers?.length?G(e):``,s=o?a?.effortsByProvider?.[o]||[]:null,c=B(e,n??document.getElementById(`selModel`)?.value??``),u=V(a,c,s,o||void 0);if(u.length===0){let e=a?.effortNote||`— none`;r.innerHTML=`<option value="">${i(e)}</option>`,r.title=e,r.disabled=!0;return}let d=[``].concat(u);r.innerHTML=[...new Set(d)].map(e=>e?`<option value="${i(e)}">${i(e)}</option>`:`<option value="">— none</option>`).join(``),r.disabled=!1,r.title=a?.effortNote||``;let f=!t||u.includes(t)?t:H(a,c,o||void 0);Array.from(r.options).some(e=>e.value===f)&&(r.value=f)}function le(e,t,n){return e?(e.innerHTML=n.map(e=>`<option value="${i(e)}">${i(_(e)||e)}</option>`).join(``),Array.from(e.options).some(e=>e.value===t)?e.value=t:e.options.length>0&&(e.value=e.options[0]?.value||t),e.value||t):t}function G(e){let t=document.getElementById(`selCliProvider`),n=l(e);return t?.value||n?.defaultProvider||``}function K(e,t){let n=document.getElementById(`cliProviderWrap`),r=document.getElementById(`selCliProvider`),i=document.getElementById(`cliProviderLabel`),a=l(t);if(!(t!==`pi`&&(a?.providers?.length??0)>0))return n&&(n.style.display=`none`),a?.defaultProvider||``;i&&(i.textContent=`Provider`);let o=le(r,e?.perCli?.[t]?.provider||r?.value||a?.defaultProvider||``,a.providers);return n&&(n.style.display=``),o}async function q(){let e=A;await f();let t=ee(),r=await n(`/api/settings`);if(!r)return;v(r,t),r=await ae(r),r=await M(r),s(r.locale??``),z(r),h(r.pi),K(r,r.cli||``);let a=document.getElementById(`selCli`);a&&Array.from(a.options).some(e=>e.value===r.cli)&&(a.value=r.cli,a.dataset.prev=r.cli);let o=document.getElementById(`inpCwd`);o&&(o.textContent=r.workingDir);let c=document.getElementById(`headerCli`);if(c){let e=g(r.cli),t=F(r.cli);c.innerHTML=e?`${e} ${i(t)}`:i(t)}P(r.projectDirs),await T(),e===A&&!k&&X(r.permissions,!1),Z(!1);let l=r.activeOverrides?.[r.cli]||{},u=r.perCli?.[r.cli]||{},d=l.model||u.model,p=l.effort??u.effort??``,m=document.getElementById(`selModel`);if(d&&m){let e=B(r.cli,d);e&&!Array.from(m.options).some(t=>t.value===e)&&R(m,e),m.value=e}W(r.cli,p)}async function J(){let e=document.getElementById(`selCli`)?.value||`claude`,n={cli:e},r=l(e);return e!==`pi`&&r?.providers?.length&&(n.perCli={[e]:{provider:G(e)}}),I((async()=>{let r=await t(`/api/settings`,`PUT`,n);if(!r){await q();return}let i=r.cli||e,a=document.getElementById(`selCli`);a&&Array.from(a.options).some(e=>e.value===i)&&(a.value=i,a.dataset.prev=i),N(i),o([`instances`],`active-cli-changed`)})())}function ue(e){return e===`auto`?`Auto (YOLO)`:e===`safe`?`Safe`:e==null?`Not provided`:Array.isArray(e)&&e.every(e=>typeof e==`string`)?`Custom (${e.length} ${e.length===1?`entry`:`entries`})`:`Unrecognized`}function Y(){let e=O,t=ue(e),n=document.getElementById(`configuredPermText`);n&&(n.textContent=`Configured policy: ${t}`);let r=document.getElementById(`configuredPerm`);r?.classList.toggle(`active`,e===`auto`),r?.classList.toggle(`perm-auto`,e===`auto`);let i=document.getElementById(`selPerm`);i&&(i.options[0].textContent=`Configured policy: ${t}`,i.value=e===`auto`||e===`safe`?e:``,i.disabled=k,i.setAttribute(`aria-busy`,String(k)))}async function X(e,n=!0){if(!n){O=e,Y();return}if(e!==`auto`&&e!==`safe`||e===O||k)return;k=!0,A++,Y();let r=document.getElementById(`permSaveError`);return r&&(r.hidden=!0,r.textContent=``),I((async()=>{try{let n=await t(`/api/settings`,`PUT`,{permissions:e});if(!n)throw Error(`Permission settings save failed`);O=n.permissions}catch{r&&(r.textContent=`Could not save permissions. Please try again.`,r.hidden=!1)}finally{k=!1,A++,Y()}})())}function Z(e=!0){let t=document.getElementById(`selCli`);if(!t)return;if(t.value===`__show_more__`){let e=t.dataset.prev||u()[0]||`claude`;t.dataset.expanded=`1`,z(null),Array.from(t.options).some(t=>t.value===e)&&(t.value=e);try{t.showPicker()}catch{}return}t.dataset.prev=t.value;let r=t.value||`claude`;c(r)||(t.title=``);let o=K(null,r),s=l(r),d=o&&s?.modelsByProvider?.[o]?s.modelsByProvider[o]:p[r]||[],f=document.getElementById(`selModel`);if(c(r)){f&&(f.disabled=!0,f.title=`The saved runtime is retired and cannot execute.`),N(r),W(r);return}s?.modelNote&&f?(f.innerHTML=`<option value="">${i(s.modelNote)}</option>`,f.title=s.modelNote,f.disabled=!0):(L(f,d,{includeCustom:!0,includeDefault:!0}),f&&(f.disabled=!1,f.title=``)),N(r),W(r);let m=document.getElementById(`selModelCustom`);m&&m.remove();let h=document.createElement(`input`);if(h.type=`text`,h.id=`selModelCustom`,h.className=`custom-model-input`,h.placeholder=a(`model.placeholder`),h.style.display=`none`,h.onchange=function(){let e=this.value.trim();e&&f&&(R(f,e),f.value=e,this.style.display=`none`,W(r,U(),e),Q())},!f){e&&J();return}f.parentElement?.appendChild(h),f.onchange=function(){this.value===`__custom__`?(h.style.display=`block`,h.focus()):(h.style.display=`none`,W(r,U(),this.value),Q())},n(`/api/settings`).then(e=>{if(!e)return;let t=e.activeOverrides?.[r]||{},n=e.perCli?.[r]||{},i=t.model||n.model,a=t.effort??n.effort??``;if(i&&f){let t=l(r);if(r!==`pi`&&t?.providers?.length&&(e.perCli?.[r]?.provider||t.defaultProvider||``)!==G(r)){W(r,a);return}let n=B(r,i);R(f,n),f.value=n}W(r,a)}),e&&J()}async function Q(){let e=document.getElementById(`selCli`)?.value||`claude`,n=document.getElementById(`selModel`)?.value||`default`;n===`__custom__`&&(n=document.getElementById(`selModelCustom`)?.value?.trim()||`default`);let r=document.getElementById(`selEffort`),i={};i[e]={model:n},r&&!r.disabled&&(i[e].effort=r.value||``);let a={activeOverrides:i},s=l(e);e!==`pi`&&s?.providers?.length&&(a.perCli={[e]:{provider:G(e)}}),await t(`/api/settings`,`PUT`,a)&&o([`instances`],`active-cli-changed`)}function de(){let e=document.getElementById(`flushCli`)?.value||document.getElementById(`selCli`)?.value||`claude`,t=p[e]||[];L(document.getElementById(`flushModel`),t,{includeDefault:!0}),$(),pe()}async function fe(){let e=await n(`/api/memory-files`);if(!e)return;let t=document.getElementById(`flushCli`),r=document.getElementById(`flushModel`);t&&e.cli&&(t.value=e.cli);let i=e.cli||document.getElementById(`selCli`)?.value||`claude`;L(r,p[i]||[],{includeDefault:!0}),r&&e.model&&(R(r,e.model),r.value=e.model),$()}async function pe(){let e=document.getElementById(`flushCli`)?.value||``,n=document.getElementById(`flushModel`)?.value||``;await t(`/api/memory-files/settings`,`PUT`,{cli:e,model:n})}function $(){let e=document.getElementById(`flushAgentBadge`);if(!e)return;let t=document.getElementById(`flushCli`)?.value||``,n=document.getElementById(`flushModel`)?.value||``,r=t||document.getElementById(`selCli`)?.value||``,i=[];r&&i.push(t?F(r):`${F(r)}*`),n&&n!=="default"&&i.push(n),e.textContent=i.length?`(${i.join(` / `)})`:``}export{se as a,J as c,de as i,ce as l,q as n,Q as o,Z as r,X as s,fe as t};
@@ -1 +0,0 @@
1
- import{a as e}from"./settings-core-CzdXfoOK.js";export{e as refreshHeaderFromSettingsChange};
@@ -1 +0,0 @@
1
- import{n as e}from"./skills-abLMqY5_.js";export{e as loadSkills};
@@ -1 +0,0 @@
1
- import{a as e}from"./slash-commands-D8o9pqOS.js";export{e as loadCommands};
@@ -1 +0,0 @@
1
- import{p as e}from"./iframe-renderer-C2gchtOj.js";import{I as t,s as n}from"./message-history-CuFefS02.js";import{r}from"./ui-Bxapl_Eu.js";export{r as cleanupToolActivity,n as loadMessages,e as reconcileChatBottomAfterRestore,t as updateQueueBadge};