hanoman 0.9.32 → 0.9.33

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 (25) hide show
  1. package/dist/build-info.json +3 -3
  2. package/dist/cli.js +240 -130
  3. package/dist/server.js +21995 -20480
  4. package/package.json +1 -1
  5. package/prisma/migrations/20261020120000_lead_session_inbox/migration.sql +42 -0
  6. package/prisma/schema.prisma +46 -0
  7. package/web/assets/{DalangHanomanScreen-DdsEmtBl.js → DalangHanomanScreen-DAXIQxrw.js} +1 -1
  8. package/web/assets/{DocPreviewModal-BbOqdfaH.js → DocPreviewModal-Cu0UFzPH.js} +1 -1
  9. package/web/assets/{DocsWorkspace-Cr7AXz9z.js → DocsWorkspace-DElNcoar.js} +1 -1
  10. package/web/assets/{IdeScreen-hdbQW-ui.js → IdeScreen-BBr567gf.js} +1 -1
  11. package/web/assets/LeadScreen-CYn8RS3H.js +1 -0
  12. package/web/assets/{ReviewScreen-BIkpEspG.js → ReviewScreen-zAvwSL50.js} +1 -1
  13. package/web/assets/{SchedulerScreen-3KVE-d_d.js → SchedulerScreen-BptlSAOx.js} +1 -1
  14. package/web/assets/{SettingsScreen-B0-W2TeR.js → SettingsScreen-a0Cx4M4j.js} +3 -3
  15. package/web/assets/{TeamScreen-DNdt2P1g.js → TeamScreen-Cm_phItS.js} +1 -1
  16. package/web/assets/{TerminalScreen-BjQF48XI.js → TerminalScreen-CFuNRq6d.js} +1 -1
  17. package/web/assets/{TriageScreen-CzM99CrG.js → TriageScreen-ChTidhCT.js} +1 -1
  18. package/web/assets/{VpsScreen-SGB_BpbS.js → VpsScreen-8vz0QHO-.js} +1 -1
  19. package/web/assets/{fields-of8G961J.js → fields-Bhl01LnE.js} +1 -1
  20. package/web/assets/{index-C5P4ykKO.js → index-R2HBkTbR.js} +207 -207
  21. package/web/assets/{live-DQen7wLm.js → live-V9nWiHoE.js} +1 -1
  22. package/web/assets/{sched-lead-shared-C34TvLVv.js → sched-lead-shared-Dr48bY7n.js} +1 -1
  23. package/web/assets/{settings-rebase-DHIWk4mV.js → settings-rebase-DOqNAynI.js} +1 -1
  24. package/web/index.html +1 -1
  25. package/web/assets/LeadScreen-BWE4mfJI.js +0 -1
@@ -1 +1 @@
1
- import{u as l,j as s,n as f}from"./index-C5P4ykKO.js";import{R as o}from"./react-DfGhg7ZW.js";const m=6e3;function p({className:a="",style:r={}}){const e=l(),t=!e.idle&&!e.connected&&!e.paused,[i,n]=o.useState(()=>Date.now());o.useEffect(()=>{if(!t)return;n(Date.now());const u=setInterval(()=>n(Date.now()),1e3);return()=>clearInterval(u)},[t,e.since]);const c=t&&i-e.since>=m;return s.jsx("span",{role:"status","aria-live":"polite",className:`hn-live-status ${a}`.trim(),style:r,children:c&&s.jsx(f,{tone:"warn",variant:"soft",icon:"wifi-off",children:"koneksi terputus · menyambung ulang…"})})}export{p as L};
1
+ import{u as l,j as s,n as f}from"./index-R2HBkTbR.js";import{R as o}from"./react-DfGhg7ZW.js";const m=6e3;function p({className:a="",style:r={}}){const e=l(),t=!e.idle&&!e.connected&&!e.paused,[i,n]=o.useState(()=>Date.now());o.useEffect(()=>{if(!t)return;n(Date.now());const u=setInterval(()=>n(Date.now()),1e3);return()=>clearInterval(u)},[t,e.since]);const c=t&&i-e.since>=m;return s.jsx("span",{role:"status","aria-live":"polite",className:`hn-live-status ${a}`.trim(),style:r,children:c&&s.jsx(f,{tone:"warn",variant:"soft",icon:"wifi-off",children:"koneksi terputus · menyambung ulang…"})})}export{p as L};
@@ -1 +1 @@
1
- import{j as s,B as m,a1 as f}from"./index-C5P4ykKO.js";import{R as c}from"./react-DfGhg7ZW.js";import"./markdown-CWEY34jk.js";/* empty css */function p(t,e=Date.now()){return f(t,e)||"—"}function b(t,e=Date.now()){if(!t)return"—";const r=new Date(t).getTime()-e;if(r<=0)return"jatuh tempo";const n=Math.ceil(r/6e4);return n<60?`${n} menit lagi`:`${Math.ceil(n/60)} jam lagi`}function g(t,e,r,n,a=!0){const i=t.trim()===""?NaN:Number(t.replace(",","."));if(!Number.isFinite(i))return n;const o=a?Math.round(i):i;return Math.min(r,Math.max(e,o))}function D(){return Intl.DateTimeFormat().resolvedOptions().timeZone}function y(t,e){if(!t)return"—";const r=new Date(t);if(Number.isNaN(r.getTime()))return"—";const n={dateStyle:"medium",timeStyle:"short"};try{return new Intl.DateTimeFormat("id-ID",e?{...n,timeZone:e}:n).format(r)}catch(a){if(a instanceof RangeError)return new Intl.DateTimeFormat("id-ID",n).format(r);throw a}}function w({message:t,onRetry:e,busy:r=!1}){return s.jsxs("div",{role:"alert",className:"hn-sched-error",children:[s.jsx("span",{className:"hn-sched-error-text",children:t}),s.jsx(m,{size:"sm",variant:"secondary",leftIcon:"rotate-ccw",disabled:r,onClick:e,children:"Coba lagi"})]})}function x(t){const[e,r]=c.useState(t),n=c.useRef(t),a=JSON.stringify(t);c.useEffect(()=>{const o=JSON.stringify(n.current);n.current=t,r(u=>JSON.stringify(u)===o?t:u)},[a]);const i=JSON.stringify(e)!==a;return{draft:e,setDraft:r,dirty:i}}export{w as I,p as a,D as b,g as c,b as d,y as f,x as u};
1
+ import{j as s,B as m,a1 as f}from"./index-R2HBkTbR.js";import{R as c}from"./react-DfGhg7ZW.js";import"./markdown-CWEY34jk.js";/* empty css */function p(t,e=Date.now()){return f(t,e)||"—"}function b(t,e=Date.now()){if(!t)return"—";const r=new Date(t).getTime()-e;if(r<=0)return"jatuh tempo";const n=Math.ceil(r/6e4);return n<60?`${n} menit lagi`:`${Math.ceil(n/60)} jam lagi`}function g(t,e,r,n,a=!0){const i=t.trim()===""?NaN:Number(t.replace(",","."));if(!Number.isFinite(i))return n;const o=a?Math.round(i):i;return Math.min(r,Math.max(e,o))}function D(){return Intl.DateTimeFormat().resolvedOptions().timeZone}function y(t,e){if(!t)return"—";const r=new Date(t);if(Number.isNaN(r.getTime()))return"—";const n={dateStyle:"medium",timeStyle:"short"};try{return new Intl.DateTimeFormat("id-ID",e?{...n,timeZone:e}:n).format(r)}catch(a){if(a instanceof RangeError)return new Intl.DateTimeFormat("id-ID",n).format(r);throw a}}function w({message:t,onRetry:e,busy:r=!1}){return s.jsxs("div",{role:"alert",className:"hn-sched-error",children:[s.jsx("span",{className:"hn-sched-error-text",children:t}),s.jsx(m,{size:"sm",variant:"secondary",leftIcon:"rotate-ccw",disabled:r,onClick:e,children:"Coba lagi"})]})}function x(t){const[e,r]=c.useState(t),n=c.useRef(t),a=JSON.stringify(t);c.useEffect(()=>{const o=JSON.stringify(n.current);n.current=t,r(u=>JSON.stringify(u)===o?t:u)},[a]);const i=JSON.stringify(e)!==a;return{draft:e,setDraft:r,dirty:i}}export{w as I,p as a,D as b,g as c,b as d,y as f,x as u};
@@ -1 +1 @@
1
- import{j as a,cr as g,aI as k,F as m,cl as p,b2 as N,cs as $,g as x,aK as S,cg as f,ct as A,cu as T,ab as I,cv as L,bO as F,co as R}from"./index-C5P4ykKO.js";import{R as v}from"./react-DfGhg7ZW.js";import"./markdown-CWEY34jk.js";/* empty css */const y=[{id:"claude",label:f.claude},{id:"codex",label:f.codex},{id:"antigravity",label:f.antigravity}],_=[{value:"inline",label:"Inline — agen fase mengerjakan task sendiri (cepat)"},{value:"subagent",label:"Subagen per task — implementer + review tiap task (lebih lambat)"}],M={model:null,effort:null};function w({flow:s,phase:n,runtime:i,cell:e,disabled:t,onPick:d}){const o=i==="antigravity",r=T(i),h=I(i,e.model??""),b=i==="codex"?F:R,E=o?L.map(l=>({value:l,label:l})):[{value:"",label:"— warisi orchestrator"},...e.model&&!r.some(l=>l.id===e.model)?[{value:e.model,label:e.model}]:[],...r.map(l=>({value:l.id,label:l.label}))],C=[{value:"",label:"— warisi"},...e.effort&&!h.includes(e.effort)?[{value:e.effort,label:e.effort}]:[],...h.map(l=>({value:l,label:l}))];return a.jsxs("div",{className:"hn-sched-picks",children:[a.jsx(x,{size:"sm","aria-label":`Model ${s} ${n} ${i}`,value:e.model??(o?"inherit":""),className:"hn-sched-pick-model",options:E,disabled:t,onChange:l=>{const u=l.target.value||null;d({model:u,effort:o?null:u&&e.effort?b(u,e.effort):e.effort},`${n} (${i}) → ${u??"warisi"}`)}}),a.jsx(x,{size:"sm","aria-label":`Effort ${s} ${n} ${i}`,value:e.effort??"",className:"hn-sched-pick-effort",options:o?[{value:"",label:"Tidak tersedia · effort native tidak diketahui"}]:C,disabled:t||o,onChange:l=>d({...e,effort:l.target.value||null},`${n} (${i}) effort → ${l.target.value||"warisi"}`)}),o&&a.jsx("span",{children:"Effort child tidak diketahui; invoke/recall asynchronous ditunggu melalui protokol. Reviewer read-only instruksional, tanpa enforcement native."})]})}function O({flow:s,f:n,putFlow:i}){return a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:"hn-sched-flow-row",children:[a.jsx("span",{className:"hn-sched-flow-status",children:n.enabled?"Fase dikerjakan subagen":"Satu sesi biasa (subagen nonaktif)"}),a.jsx(N,{checked:n.enabled,"aria-label":`Orkestrasi ${s}`,onChange:e=>i(s,{...n,enabled:e},`Orkestrasi ${m[s]} · ${e?"aktif":"nonaktif"}`)})]}),$.has(s)&&a.jsxs("div",{className:"hn-sched-flow-mode",children:[a.jsx("span",{className:"hn-sched-flow-mode-label",children:"Cara mengerjakan rencana"}),a.jsx(x,{size:"sm","aria-label":`Mode Execute ${s}`,value:n.executeMode??"inline",className:"hn-sched-flow-mode-select",options:_,disabled:!n.enabled,onChange:e=>{const t=e.target.value==="subagent"?"subagent":"inline";i(s,{...n,executeMode:t},`Mode Execute ${m[s]} · ${t==="subagent"?"subagen per task":"inline"}`)}}),a.jsx("span",{className:"hn-sched-flow-mode-note",children:"khusus sesi Claude · Codex dan Antigravity selalu inline"})]}),a.jsx(S,{children:a.jsxs("table",{className:"hn-sched-matrix",children:[a.jsx("thead",{children:a.jsxs("tr",{children:[a.jsx("th",{children:"Fase"}),y.map(e=>a.jsx("th",{children:e.label},e.id))]})}),a.jsx("tbody",{children:A[s].map(e=>a.jsxs("tr",{children:[a.jsx("td",{children:e}),y.map(t=>a.jsx("td",{children:a.jsx(w,{flow:s,phase:e,runtime:t.id,cell:n[t.id][e]??M,disabled:!n.enabled,onPick:(d,o)=>i(s,{...n,[t.id]:{...n[t.id],[e]:d}},o)})},t.id))]},e))})]})})]})}function P({flow:s,f:n,putFlow:i}){const[e,t]=v.useState(!1),d=v.useId();return a.jsxs("div",{className:"hn-sched-flow","data-testid":`orch-flow-${s}`,children:[a.jsxs("button",{type:"button",className:"hn-sched-flow-head hn-touch-target","aria-expanded":e,"aria-controls":d,onClick:()=>t(o=>!o),children:[a.jsx("span",{children:m[s]}),a.jsx("span",{className:"hn-sched-flow-state",children:n.enabled?"aktif":"nonaktif"})]}),a.jsx("div",{id:d,className:"hn-sched-flow-body",hidden:!e,children:a.jsx(O,{flow:s,f:n,putFlow:i})})]})}function B({orchestration:s,onChange:n,variant:i="cards"}){const e=s??p,t=r=>e[r]??p[r],d=(r,h,b)=>n({...e,[r]:h},b),o=a.jsxs("div",{className:"hn-sched-group-hint",children:["Sesi utama berperan sebagai ",a.jsx("b",{children:"pengatur"}),"; setiap fase dikerjakan subagen dengan model & effort di bawah. ",a.jsx("b",{children:"Warisi"})," memakai pengaturan sesi utama yang dipilih saat ",a.jsx("b",{children:"Start"}),". Subagen selalu berjalan di runtime yang sama dengan sesi utama: sesi Claude memakai kolom Claude Code, sesi Codex kolom Codex CLI, sesi Antigravity kolom Antigravity CLI. Flow yang dimatikan berjalan sebagai satu sesi biasa seperti sebelumnya."]});return i==="accordion"?a.jsxs("div",{className:"hn-sched-panel",children:[o,g.map(r=>a.jsx(P,{flow:r,f:t(r),putFlow:d},r))]}):a.jsxs(a.Fragment,{children:[a.jsx(k,{eyebrow:"orkestrasi",title:"Orkestrasi subagen per fase",children:o}),g.map(r=>a.jsx("div",{"data-testid":`orch-flow-${r}`,children:a.jsx(k,{eyebrow:"flow",title:m[r],children:a.jsx(O,{flow:r,f:t(r),putFlow:d})})},r))]})}const c=s=>!!s&&typeof s=="object"&&!Array.isArray(s)&&Object.getPrototypeOf(s)===Object.prototype,j=(s,n)=>{if(s===n)return!0;if(Array.isArray(s)&&Array.isArray(n))return s.length===n.length&&s.every((i,e)=>j(i,n[e]));if(c(s)&&c(n)){const i=Object.keys(s).filter(t=>s[t]!==void 0),e=Object.keys(n).filter(t=>n[t]!==void 0);return i.length===e.length&&i.every(t=>j(s[t],n[t]))}return!1};function U(s,n,i){if(j(n,s)&&i!==void 0)return i;if(!c(s)||!c(n)||!c(i))return n;const e={...i};for(const t of Object.keys(n))e[t]=U(s[t],n[t],i[t]);return e}export{B as O,U as r};
1
+ import{j as a,ct as g,aI as k,F as m,cn as p,b2 as N,cu as $,g as x,aK as S,ci as f,cv as A,cw as T,ab as I,cx as L,bQ as F,cq as R}from"./index-R2HBkTbR.js";import{R as v}from"./react-DfGhg7ZW.js";import"./markdown-CWEY34jk.js";/* empty css */const y=[{id:"claude",label:f.claude},{id:"codex",label:f.codex},{id:"antigravity",label:f.antigravity}],_=[{value:"inline",label:"Inline — agen fase mengerjakan task sendiri (cepat)"},{value:"subagent",label:"Subagen per task — implementer + review tiap task (lebih lambat)"}],M={model:null,effort:null};function w({flow:s,phase:n,runtime:i,cell:e,disabled:t,onPick:d}){const o=i==="antigravity",r=T(i),h=I(i,e.model??""),b=i==="codex"?F:R,O=o?L.map(l=>({value:l,label:l})):[{value:"",label:"— warisi orchestrator"},...e.model&&!r.some(l=>l.id===e.model)?[{value:e.model,label:e.model}]:[],...r.map(l=>({value:l.id,label:l.label}))],C=[{value:"",label:"— warisi"},...e.effort&&!h.includes(e.effort)?[{value:e.effort,label:e.effort}]:[],...h.map(l=>({value:l,label:l}))];return a.jsxs("div",{className:"hn-sched-picks",children:[a.jsx(x,{size:"sm","aria-label":`Model ${s} ${n} ${i}`,value:e.model??(o?"inherit":""),className:"hn-sched-pick-model",options:O,disabled:t,onChange:l=>{const u=l.target.value||null;d({model:u,effort:o?null:u&&e.effort?b(u,e.effort):e.effort},`${n} (${i}) → ${u??"warisi"}`)}}),a.jsx(x,{size:"sm","aria-label":`Effort ${s} ${n} ${i}`,value:e.effort??"",className:"hn-sched-pick-effort",options:o?[{value:"",label:"Tidak tersedia · effort native tidak diketahui"}]:C,disabled:t||o,onChange:l=>d({...e,effort:l.target.value||null},`${n} (${i}) effort → ${l.target.value||"warisi"}`)}),o&&a.jsx("span",{children:"Effort child tidak diketahui; invoke/recall asynchronous ditunggu melalui protokol. Reviewer read-only instruksional, tanpa enforcement native."})]})}function E({flow:s,f:n,putFlow:i}){return a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:"hn-sched-flow-row",children:[a.jsx("span",{className:"hn-sched-flow-status",children:n.enabled?"Fase dikerjakan subagen":"Satu sesi biasa (subagen nonaktif)"}),a.jsx(N,{checked:n.enabled,"aria-label":`Orkestrasi ${s}`,onChange:e=>i(s,{...n,enabled:e},`Orkestrasi ${m[s]} · ${e?"aktif":"nonaktif"}`)})]}),$.has(s)&&a.jsxs("div",{className:"hn-sched-flow-mode",children:[a.jsx("span",{className:"hn-sched-flow-mode-label",children:"Cara mengerjakan rencana"}),a.jsx(x,{size:"sm","aria-label":`Mode Execute ${s}`,value:n.executeMode??"inline",className:"hn-sched-flow-mode-select",options:_,disabled:!n.enabled,onChange:e=>{const t=e.target.value==="subagent"?"subagent":"inline";i(s,{...n,executeMode:t},`Mode Execute ${m[s]} · ${t==="subagent"?"subagen per task":"inline"}`)}}),a.jsx("span",{className:"hn-sched-flow-mode-note",children:"khusus sesi Claude · Codex dan Antigravity selalu inline"})]}),a.jsx(S,{children:a.jsxs("table",{className:"hn-sched-matrix",children:[a.jsx("thead",{children:a.jsxs("tr",{children:[a.jsx("th",{children:"Fase"}),y.map(e=>a.jsx("th",{children:e.label},e.id))]})}),a.jsx("tbody",{children:A[s].map(e=>a.jsxs("tr",{children:[a.jsx("td",{children:e}),y.map(t=>a.jsx("td",{children:a.jsx(w,{flow:s,phase:e,runtime:t.id,cell:n[t.id][e]??M,disabled:!n.enabled,onPick:(d,o)=>i(s,{...n,[t.id]:{...n[t.id],[e]:d}},o)})},t.id))]},e))})]})})]})}function P({flow:s,f:n,putFlow:i}){const[e,t]=v.useState(!1),d=v.useId();return a.jsxs("div",{className:"hn-sched-flow","data-testid":`orch-flow-${s}`,children:[a.jsxs("button",{type:"button",className:"hn-sched-flow-head hn-touch-target","aria-expanded":e,"aria-controls":d,onClick:()=>t(o=>!o),children:[a.jsx("span",{children:m[s]}),a.jsx("span",{className:"hn-sched-flow-state",children:n.enabled?"aktif":"nonaktif"})]}),a.jsx("div",{id:d,className:"hn-sched-flow-body",hidden:!e,children:a.jsx(E,{flow:s,f:n,putFlow:i})})]})}function B({orchestration:s,onChange:n,variant:i="cards"}){const e=s??p,t=r=>e[r]??p[r],d=(r,h,b)=>n({...e,[r]:h},b),o=a.jsxs("div",{className:"hn-sched-group-hint",children:["Sesi utama berperan sebagai ",a.jsx("b",{children:"pengatur"}),"; setiap fase dikerjakan subagen dengan model & effort di bawah. ",a.jsx("b",{children:"Warisi"})," memakai pengaturan sesi utama yang dipilih saat ",a.jsx("b",{children:"Start"}),". Subagen selalu berjalan di runtime yang sama dengan sesi utama: sesi Claude memakai kolom Claude Code, sesi Codex kolom Codex CLI, sesi Antigravity kolom Antigravity CLI. Flow yang dimatikan berjalan sebagai satu sesi biasa seperti sebelumnya."]});return i==="accordion"?a.jsxs("div",{className:"hn-sched-panel",children:[o,g.map(r=>a.jsx(P,{flow:r,f:t(r),putFlow:d},r))]}):a.jsxs(a.Fragment,{children:[a.jsx(k,{eyebrow:"orkestrasi",title:"Orkestrasi subagen per fase",children:o}),g.map(r=>a.jsx("div",{"data-testid":`orch-flow-${r}`,children:a.jsx(k,{eyebrow:"flow",title:m[r],children:a.jsx(E,{flow:r,f:t(r),putFlow:d})})},r))]})}const c=s=>!!s&&typeof s=="object"&&!Array.isArray(s)&&Object.getPrototypeOf(s)===Object.prototype,j=(s,n)=>{if(s===n)return!0;if(Array.isArray(s)&&Array.isArray(n))return s.length===n.length&&s.every((i,e)=>j(i,n[e]));if(c(s)&&c(n)){const i=Object.keys(s).filter(t=>s[t]!==void 0),e=Object.keys(n).filter(t=>n[t]!==void 0);return i.length===e.length&&i.every(t=>j(s[t],n[t]))}return!1};function U(s,n,i){if(j(n,s)&&i!==void 0)return i;if(!c(s)||!c(n)||!c(i))return n;const e={...i};for(const t of Object.keys(n))e[t]=U(s[t],n[t],i[t]);return e}export{B as O,U as r};
package/web/index.html CHANGED
@@ -12,7 +12,7 @@
12
12
  <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400&amp;family=IBM+Plex+Serif:ital,wght@0,400;0,500;0,600;0,700;1,400&amp;family=IBM+Plex+Mono:ital,wght@0,400;0,500;0,600;1,400&amp;display=swap" /></noscript>
13
13
  <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
14
14
  <title>hanoman</title>
15
- <script type="module" crossorigin src="/assets/index-C5P4ykKO.js"></script>
15
+ <script type="module" crossorigin src="/assets/index-R2HBkTbR.js"></script>
16
16
  <link rel="modulepreload" crossorigin href="/assets/react-DfGhg7ZW.js">
17
17
  <link rel="modulepreload" crossorigin href="/assets/markdown-CWEY34jk.js">
18
18
  <link rel="modulepreload" crossorigin href="/assets/xterm-3VOAfa_q.js">
@@ -1 +0,0 @@
1
- import{d as Ee,q as Q,r as Fe,h as L,i as O,K as Me,G as _e,j as e,L as ze,m as Re,x as Oe,Q as qe,w as Ke,g as ke,bd as fe,aY as Z,C as Ge,R as Je,X as $e,n as J,B as g,e as X,f as Y,be as Te,V as pe,D as He,aJ as ye,Z as te,bf as Ue,bg as We,bh as Ve,bi as Qe,bj as Xe,bk as Ze,l as Ye,bl as ea,a2 as aa}from"./index-C5P4ykKO.js";import{R as l}from"./react-DfGhg7ZW.js";import{L as na}from"./live-DQen7wLm.js";import"./markdown-CWEY34jk.js";import{u as sa,I as be,a as we,c as ie}from"./sched-lead-shared-C34TvLVv.js";import"./xterm-3VOAfa_q.js";/* empty css */const ia=5e3,K=20,je=400,ta={aktif:"aktif",jeda:"dijeda",mati:"mati"},la=[{key:"semua",label:"Semua"},{key:"keputusan",label:"Keputusan"},{key:"rangkaian",label:"Rangkaian"}],ra={berlaku:"ok",ditimpa:"warn",dibatalkan:"neutral",gagal:"err"},da={menunggu:"warn",sebagian:"info",selesai:"ok",dibatalkan:"neutral"},ca=new Set(["menunggu","sebagian"]),q=n=>({everyMin:String(n.everyMin),timeoutSec:String(n.timeoutSec),maxAutoAnswers:String(n.maxAutoAnswers),requireGreen:n.requireGreenBeforeIntegrate}),ua={everyMin:"5",timeoutSec:"600",maxAutoAnswers:"3",requireGreen:!0};function xe({total:n,page:u,onPage:i,unit:o}){const k=te(n,u,K);return e.jsx(aa,{page:k.page,pageCount:k.pageCount,total:n,from:k.from,to:k.to,onPage:i,unit:o})}function oa({page:n,pageCount:u,onPage:i}){return u<=1?null:e.jsxs("div",{className:"hn-lead-footer",children:[e.jsxs("span",{children:["Halaman ",n," dari ",u," · keputusan dan rangkaian"]}),e.jsxs("span",{className:"hn-lead-chips",children:[e.jsx(g,{size:"sm",variant:"ghost","aria-label":"Sebelumnya",disabled:n<=1,onClick:()=>i(n-1),children:"Sebelumnya"}),e.jsx(g,{size:"sm",variant:"ghost","aria-label":"Berikutnya",disabled:n>=u,onClick:()=>i(n+1),children:"Berikutnya"})]})]})}function ha({sid:n,title:u,label:i,needsYou:o,onGoto:k,onAnswered:h,onError:t}){const[N,P]=l.useState(null),[I,C]=l.useState("idle"),[D,f]=l.useState([]),[w,E]=l.useState(!1);l.useEffect(()=>{if(!o)return;let d=!0;return C("loading"),Promise.resolve().then(()=>L.sessionDialog(n)).then(j=>{d&&(P(j),C(j&&j.dialog.options.length>0?"ready":"unavailable"))},()=>{d&&C("unavailable")}),()=>{d=!1}},[n,o]);async function F(d,j){if(N){E(!0);try{await L.answerSessionDialog(n,j?{screenHash:N.screenHash,choice:d[0]}:{screenHash:N.screenHash,choices:d}),f([]),h()}catch(A){t(O("menjawab sesi",A))}finally{E(!1)}}}const v=d=>f(j=>j.includes(d)?j.filter(A=>A!==d):[...j,d]),p=N==null?void 0:N.dialog;return e.jsxs("li",{className:"hn-lead-wait",children:[e.jsxs("div",{className:"hn-lead-wait-head",children:[e.jsx("span",{className:"hn-lead-wait-title",children:u}),e.jsx(J,{tone:o?"warn":"ok",size:"sm",children:i})]}),o&&I==="loading"&&e.jsx("p",{className:"hn-lead-note",children:"Membaca pertanyaannya…"}),o&&I==="unavailable"&&e.jsx("p",{className:"hn-lead-note",children:"Pertanyaan ini belum bisa dijawab dari sini. Jawab di Terminal."}),o&&I==="ready"&&p&&e.jsxs(e.Fragment,{children:[p.title&&e.jsx("p",{className:"hn-lead-wait-question",children:p.title}),p.multi?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"hn-lead-options-multi",role:"group","aria-label":p.title||"Pilihan jawaban",children:p.options.map(d=>e.jsx(ye,{checked:D.includes(d.n),label:d.label,disabled:w,onChange:()=>v(d.n)},d.n))}),e.jsx("div",{className:"hn-lead-wait-foot",children:e.jsx(g,{size:"sm",disabled:w||D.length===0,onClick:()=>void F(D,!1),children:"Kirim pilihan"})})]}):e.jsx("div",{className:"hn-lead-options",role:"group","aria-label":p.title||"Pilihan jawaban",children:p.options.map(d=>e.jsx(g,{size:"sm",variant:"secondary",disabled:w,onClick:()=>void F([d.n],!0),children:d.label},d.n))}),(p.freeIndex!=null||p.notes)&&e.jsx("p",{className:"hn-lead-note",children:"Jawaban bebas: jawab di Terminal."})]}),e.jsx("div",{className:"hn-lead-wait-foot",children:e.jsx(g,{size:"sm",variant:"ghost",leftIcon:"terminal",onClick:k,children:"Buka di Terminal"})})]})}function ma({label:n,options:u,multi:i,value:o,onChange:k}){return i?e.jsx("div",{role:"group","aria-label":n,className:"hn-lead-options-multi",children:u.map(h=>e.jsx(ye,{checked:o.includes(h),label:h,onChange:()=>k(o.includes(h)?o.filter(t=>t!==h):[...o,h])},h))}):e.jsx(fe,{"aria-label":n,value:o[0]??"",onChange:h=>k([h]),children:u.map(h=>e.jsx(Z,{value:h,label:h},h))})}function ga({d:n,projectName:u,onOverride:i,onCancel:o,busyId:k,ask:h}){var _;const[t,N]=l.useState(!1),[P,I]=l.useState(""),[C,D]=l.useState([]),f=(n.choices??[]).length>0?n.choices:n.choiceIndex!=null&&n.choice?[{index:n.choiceIndex,option:n.choice}]:[],w=n.options??[],E=((_=n.select)==null?void 0:_.mode)==="multi",F=[u(n.projectId),n.specId].filter(Boolean).join(" · "),v=n.action!=="none"?Ue[n.action]:void 0,p=n.question.length>je?`${n.question.slice(0,je)}…`:n.question,d=k===n.id,j=()=>{N(!1),I(""),D([])},A=f.length?f.map(y=>y.option).join(" · "):n.answer||"tidak ada jawaban",M=P.trim()||C.join("; "),$=async()=>{let y=!1;await h({title:"Ubah jawaban keputusan ini?",eyebrow:"lead · ubah jawaban",impact:[`Jawaban sekarang: ${A}`,`Jadi: ${M}`],confirmLabel:"Ubah jawaban",icon:"edit-3",tone:"default",run:async()=>{y=await i(n.id,M,C)}}),y&&j()};return e.jsxs("li",{className:"hn-lead-item",children:[e.jsxs("div",{className:"hn-lead-item-head",children:[e.jsx(J,{tone:ra[n.status]??"neutral",size:"sm",children:We[n.status]??n.status}),n.weighty&&e.jsx(J,{tone:"warn",size:"sm",children:"berbobot"}),e.jsx("span",{className:"hn-lead-item-time",children:we(n.createdAt)})]}),e.jsx("div",{className:"hn-lead-item-question",children:p}),e.jsx("div",{className:"hn-lead-item-answer",children:f.length?f.map(y=>y.option).join(" · "):n.answer||e.jsx("em",{children:"tidak ada jawaban"})}),n.reason&&e.jsx("div",{className:"hn-lead-item-reason",children:n.reason}),e.jsxs("div",{className:"hn-lead-item-meta",children:[e.jsx("span",{children:Ve[n.kind]??n.kind}),e.jsx("span",{children:Qe[n.gate]??n.gate}),e.jsx("span",{children:Xe[n.confidence]??n.confidence}),f.length>0&&w.length>0&&e.jsx("span",{children:f.length>1?`${f.length} dari ${w.length} opsi`:`opsi ${f[0].index} dari ${w.length}`}),(n.missing??[]).length>0&&e.jsx("span",{children:"kurang konteks"}),e.jsxs("span",{children:[F,v?` · ${v}`:""]})]}),(n.missing??[]).length>0&&e.jsxs("div",{className:"hn-lead-item-reason",children:["Yang kurang: ",n.missing.join(" · ")]}),n.refs.length>0&&e.jsx("div",{className:"hn-lead-refs",children:n.refs.map(y=>e.jsx("span",{className:"hn-lead-ref",children:y},y))}),n.status==="berlaku"&&!t&&e.jsx("div",{className:"hn-lead-item-foot",children:e.jsxs("span",{className:"hn-lead-chips",children:[e.jsx(g,{size:"sm",variant:"ghost",leftIcon:"edit-3",onClick:()=>N(!0),children:"Ubah jawaban"}),e.jsx(g,{size:"sm",variant:"ghost",leftIcon:"x-circle",disabled:d,onClick:()=>o(n),children:"Batalkan"})]})}),t&&e.jsxs("div",{className:"hn-lead-change",children:[w.length>0&&e.jsx(ma,{label:`Pilihan jawaban${n.specId?` untuk ${n.specId}`:""}`,options:w,multi:E,value:C,onChange:D}),e.jsxs("div",{className:"hn-lead-change-row",children:[e.jsx(Y,{className:"hn-lead-change-input","aria-label":`Jawaban kamu${n.specId?` untuk ${n.specId}`:""}`,placeholder:"mis. pilih opsi 2, pakai Node 22",value:P,onChange:y=>I(y.target.value)}),e.jsx(g,{size:"sm",variant:"ghost",disabled:d,onClick:j,children:"Batal"}),e.jsx(g,{size:"sm",leftIcon:"check",disabled:!P.trim()&&C.length===0||d,onClick:()=>void $(),children:"Kirim jawaban"})]})]})]})}function ka({f:n,busyId:u,onClose:i}){return e.jsxs("li",{className:"hn-lead-item",children:[e.jsxs("div",{className:"hn-lead-item-head",children:[e.jsx(J,{tone:da[n.status]??"neutral",size:"sm",children:Ze[n.status]??n.status}),e.jsx("span",{className:"hn-lead-item-time",children:we(n.openedAt)})]}),e.jsx("div",{className:"hn-lead-item-answer",children:n.title}),e.jsxs("div",{className:"hn-lead-item-meta",children:[e.jsxs("span",{children:[n.steps," langkah"]}),n.closeReason&&e.jsx("span",{children:Ye(ea,n.closeReason)})]}),ca.has(n.status)&&e.jsx("div",{className:"hn-lead-item-foot",children:e.jsxs("span",{className:"hn-lead-chips",children:[e.jsx(g,{size:"sm",leftIcon:"check",disabled:u===n.id,onClick:()=>i(n,"submit"),children:"Kirim rangkaian"}),e.jsx(g,{size:"sm",variant:"ghost",leftIcon:"x-circle",disabled:u===n.id,onClick:()=>i(n,"cancel"),children:"Batalkan rangkaian"})]})})]})}function Na({projects:n,onProjectChanged:u,onToast:i,onGotoTerminal:o}){var ge;const{confirm:k,dialog:h}=Ee(),[t,N]=l.useState(null),[P,I]=l.useState([]),[C,D]=l.useState([]),[f,w]=l.useState(!1),[E,F]=l.useState(0),[v,p]=Q("lead","decPage",1,pe),[d,j]=l.useState(0),[A,M]=Q("lead","flowPage",1,pe),[$,_]=l.useState("loading"),[y,ee]=l.useState(null),[z,le]=l.useState(!1),[T,B]=l.useState(null),[S,ae]=Q("lead","filter","all",He),[R,ve]=Q("lead","kind","semua",Fe("semua","keputusan","rangkaian")),H=l.useRef(!1),U=l.useCallback(a=>{var s;return((s=n.find(r=>r.id===a))==null?void 0:s.name)??"Project lain"},[n]),m=l.useCallback((a=!1)=>{!a&&!H.current&&_("loading"),Promise.all([L.getLeadStatus(),L.getLeadDecisions({projectId:S==="all"?void 0:S,page:v,limit:K}),L.getLeadFlows({projectId:S==="all"?void 0:S,page:A,limit:K}).catch(()=>null)]).then(([s,r,x])=>{H.current=!0,N(s),I(r.items??[]),F(r.total??0),x?(D(x.items??[]),j(x.total??0),w(!1)):w(!0),ee(null),_("ready")}).catch(s=>{if(!H.current){_("error");return}a||ee(O("memuat keputusan",s))})},[S,v,A]);l.useEffect(()=>{m()},[m]),Me(S,()=>{p(1),M(1)}),_e({topic:"lead",params:{projectId:S==="all"?void 0:S,decPage:v,flowPage:A,limit:K},apply:a=>{H.current=!0,N(a.status),I(a.decisions.items),F(a.decisions.total),D(a.flows.items),j(a.flows.total),w(!1),ee(null),_("ready")},refetch:()=>m(!0),pollMs:ia});const b=(t==null?void 0:t.config)??null,c=sa(b?q(b):ua),ne=c.dirty,G=l.useCallback(async(a,s=!1)=>{le(!0);try{return await L.putLeadConfig(a),s||i("Setelan lead tersimpan","ok","save"),m(!0),!0}catch(r){return i(O("menyimpan setelan lead",r),"err","x-circle"),!1}finally{le(!1)}},[m,i]),Ne=async()=>{if(!b)return;const a={...b,everyMin:ie(c.draft.everyMin,1,1440,b.everyMin),timeoutSec:ie(c.draft.timeoutSec,10,900,b.timeoutSec),maxAutoAnswers:ie(c.draft.maxAutoAnswers,1,20,b.maxAutoAnswers),requireGreenBeforeIntegrate:c.draft.requireGreen};if(JSON.stringify(q(a))===JSON.stringify(q(b))){c.setDraft(q(b));return}c.setDraft(q(a)),await G(a)},re=l.useCallback(async(a,s)=>{B(a);try{await L.updateProject(a,{leadOptIn:s}),await u(a),m(!0),i(s?"Project diserahkan ke lead":"Project ditarik dari lead","ok")}catch(r){i(O("mengubah lead untuk project",r),"err","x-circle")}finally{B(null)}},[m,u,i]),de=l.useCallback(async(a,s)=>{if(!t)return;const r=new Set(t.config.pausedProjects);s?r.add(a):r.delete(a),await G({...t.config,pausedProjects:[...r]},!0)},[t,G]),Se=l.useCallback(async(a,s,r=[])=>{B(a);try{const x=await L.overrideLeadDecision(a,s,"",r);return i(x.delivered?"Jawaban kamu dikirim ke sesi":"Keputusan diubah","ok","check"),m(!0),!0}catch(x){return i(O("mengubah keputusan",x),"err","x-circle"),!1}finally{B(null)}},[m,i]),ce=l.useCallback(async(a,s)=>{B(a);try{await(s==="submit"?L.submitLeadFlow(a):L.cancelLeadFlow(a)),i(s==="submit"?"Rangkaian dikirim":"Rangkaian ditutup tanpa dikirim","ok","check"),m(!0)}catch(r){i(O("menutup rangkaian",r),"err","x-circle")}finally{B(null)}},[m,i]),Le=l.useCallback(async a=>{B(a);try{await L.cancelLeadDecision(a),i("Keputusan dibatalkan","ok"),m(!0)}catch(s){i(O("membatalkan keputusan",s),"err","x-circle")}finally{B(null)}},[m,i]),Ce=(a,s)=>{k(s==="submit"?{title:"Kirim rangkaian ini?",eyebrow:"lead · rangkaian",message:"Semua jawaban yang sudah terkumpul dikirim ke sesi peminta. Rangkaian lalu ditutup dan tidak bisa ditambah lagi.",confirmLabel:"Kirim rangkaian",icon:"check",tone:"default",run:()=>ce(a.id,"submit")}:{title:"Batalkan rangkaian ini?",eyebrow:"lead · rangkaian",message:"Rangkaian ditutup tanpa dikirim. Jawaban yang sudah terkumpul tidak sampai ke sesi peminta.",confirmLabel:"Tutup tanpa mengirim",icon:"x-circle",tone:"danger",run:()=>ce(a.id,"cancel")})},Ae=a=>{k({title:"Batalkan keputusan ini?",eyebrow:"lead · keputusan",message:"Keputusan ini ditandai dibatalkan dan tidak lagi berlaku.",confirmLabel:"Batalkan keputusan",icon:"x-circle",tone:"danger",run:()=>Le(a.id)})},Ie=a=>{if(b){if(a==="mati"){k({title:"Matikan lead?",eyebrow:"lead · kendali",message:"Lead berhenti memutuskan untuk semua project. Sesi yang sudah berjalan tidak diubah, dan pertanyaan yang menunggu tetap menunggu kamu.",confirmLabel:"Matikan lead",icon:"ban",tone:"danger",run:()=>G({...b,enabled:!1,paused:!1}).then(()=>{})});return}G({...b,enabled:!0,paused:a==="jeda"})}};if($==="loading")return e.jsx(ze,{rows:4,label:"Memuat lead…"});if($==="error"||!t)return e.jsx(Re,{kind:"error",hint:"Gagal memuat status lead.",action:()=>m(),actionLabel:"Coba lagi"});const ue=t.config.enabled?t.config.paused?"jeda":"aktif":"mati",oe=new Set(t.projects.map(a=>a.projectId)),W=t.waiting,he=new Set(t.deciding),se=new Set(t.queued??[]),V=t.gate??{inFlight:0,queued:0,capacity:1},De=a=>{const s=(t.queue??[]).find(x=>x.sessionId===a);if(s)return[U(s.projectId),s.specId].filter(Boolean).join(" · ");const r=P.find(x=>x.sessionId===a);return r?[U(r.projectId),r.specId].filter(Boolean).join(" · "):"Sesi (rincian ada di riwayat)"},me=[...R!=="rangkaian"?P.map(a=>({key:`d:${a.id}`,at:a.createdAt,d:a})):[],...R!=="keputusan"&&!f?C.map(a=>({key:`f:${a.id}`,at:a.openedAt,f:a})):[]].sort((a,s)=>Date.parse(s.at)-Date.parse(a.at)),Pe=R==="semua"?e.jsx(oa,{page:v,pageCount:Math.max(te(E,v,K).pageCount,te(d,v,K).pageCount),onPage:a=>{p(a),M(a)}}):R==="keputusan"?e.jsx(xe,{total:E,page:v,onPage:p,unit:"keputusan"}):e.jsx(xe,{total:d,page:A,onPage:M,unit:"rangkaian"}),Be=S==="all"?[]:[{key:"project",label:`Project: ${U(S)}`,onRemove:()=>ae("all")}];return e.jsxs("div",{className:"hn-lead",children:[e.jsxs("p",{className:"hn-lead-summary",children:["Lead ",ta[ue]," · ",W.length," menunggu kamu · ",se.size," antre"]}),e.jsxs("div",{className:"hn-lead-layout",children:[e.jsxs("div",{className:"hn-lead-main",children:[e.jsxs("section",{className:"hn-lead-section","aria-labelledby":"lead-menunggu-h",children:[e.jsxs("h2",{id:"lead-menunggu-h",className:"hn-lead-h",children:["Menunggu kamu (",W.length,")"]}),V.queued>0&&e.jsxs("p",{className:"hn-lead-note",children:["Antrean keputusan penuh: ",V.inFlight," dari ",V.capacity," sedang diputuskan, ",V.queued," menunggu giliran."]}),W.length===0?e.jsx("p",{className:"hn-lead-note",children:"Tidak ada sesi yang menunggu keputusanmu. Lead menangani sisanya."}):e.jsx("ul",{className:"hn-lead-waits",children:W.map(a=>{const s=he.has(a)?"Sedang diputuskan":se.has(a)?"Antre giliran":"Menunggu kamu",r=!he.has(a)&&!se.has(a);return e.jsx(ha,{sid:a,title:De(a),label:s,needsYou:r,onGoto:()=>o(a),onAnswered:()=>{i("Jawaban kamu dikirim ke sesi","ok","check"),m(!0)},onError:x=>i(x,"err","x-circle")},a)})})]}),e.jsxs("section",{className:"hn-lead-section","aria-labelledby":"lead-riwayat-h",children:[e.jsx("h2",{id:"lead-riwayat-h",className:"hn-lead-h",children:"Riwayat"}),e.jsx("div",{className:"hn-lead-chips",role:"group","aria-label":"Jenis riwayat",children:la.map(a=>e.jsx("button",{type:"button",className:"hn-lead-chip","aria-pressed":R===a.key,onClick:()=>{a.key==="semua"&&M(v),ve(a.key)},children:a.label},a.key))}),e.jsx(Oe,{label:"Filter riwayat",chips:Be,filters:e.jsx(Ke,{gap:3,children:e.jsx(ke,{size:"sm",value:S,"aria-label":"saring project",onChange:a=>ae(a.target.value),options:[{value:"all",label:"semua project"},...n.map(a=>({value:a.id,label:a.name}))]})}),filtersLabel:"Project",onReset:()=>ae("all"),resetLabel:"Hapus filter",actions:e.jsxs(e.Fragment,{children:[e.jsx(qe,{screen:"lead",active:S==="all"?0:1}),e.jsx(na,{})]})}),y&&e.jsx(be,{message:y,onRetry:()=>m()}),f&&R!=="keputusan"&&e.jsx(be,{message:"Gagal memuat rangkaian keputusan.",onRetry:()=>m()}),me.length===0?e.jsx("p",{className:"hn-lead-note",children:R==="rangkaian"?"Belum ada rangkaian. Satu rangkaian adalah satu urusan: beberapa pertanyaan berurutan sampai kamu kirim.":"Belum ada keputusan. Lead menulis satu baris di sini setiap kali ia memutuskan."}):e.jsx("ul",{className:"hn-lead-timeline","aria-label":"Riwayat keputusan dan rangkaian",children:me.map(a=>a.d?e.jsx(ga,{d:a.d,projectName:U,onOverride:Se,onCancel:Ae,busyId:T,ask:k},a.key):e.jsx(ka,{f:a.f,busyId:T,onClose:Ce},a.key))}),Pe]})]}),e.jsxs("aside",{className:"hn-lead-side","aria-label":"Kendali lead",children:[e.jsxs("section",{className:"hn-lead-section","aria-labelledby":"lead-kendali-h",children:[e.jsx("h2",{id:"lead-kendali-h",className:"hn-lead-h",children:"Kendali"}),e.jsx("div",{className:"hn-lead-mode",children:e.jsxs(fe,{label:"Mode lead",value:ue,onChange:a=>Ie(a),children:[e.jsx(Z,{value:"aktif",label:"Aktif",description:"Lead memutuskan untuk project yang diurusnya.",disabled:z}),e.jsx(Z,{value:"jeda",label:"Jeda",description:"Keputusan baru berhenti. Sesi yang berjalan tidak diubah.",disabled:z}),e.jsx(Z,{value:"mati",label:"Mati",description:"Lead berhenti total. Pertanyaan yang menunggu tetap menunggu kamu.",disabled:z})]})}),e.jsx(Ge,{tone:"info",title:"Dikunci secara teknis",children:"Produksi, VPS, dan penghapusan data tetap terkunci untuk lead, apa pun setelannya."})]}),e.jsxs("details",{className:"hn-lead-disclosure",children:[e.jsxs("summary",{children:["Project yang dipimpin · ",oe.size," dari ",n.length," diurus lead"]}),e.jsx("p",{className:"hn-lead-hint",children:"Lead hanya menyentuh project yang diserahkan kepadanya. Default: tidak diserahkan."}),n.length===0?e.jsx("p",{className:"hn-lead-note",children:"Belum ada project."}):e.jsx(Je,{label:"Project yang dipimpin lead",children:n.map(a=>{const s=t.projects.find(x=>x.projectId===a.id),r=oe.has(a.id);return e.jsxs($e,{actions:e.jsxs(e.Fragment,{children:[r&&(s!=null&&s.paused?e.jsx(g,{size:"sm",variant:"ghost",leftIcon:"play",disabled:z,onClick:()=>de(a.id,!1),children:"Lanjutkan"}):e.jsx(g,{size:"sm",variant:"ghost",leftIcon:"pause",disabled:z,onClick:()=>de(a.id,!0),children:"Jeda"})),r?e.jsx(g,{size:"sm",variant:"ghost",leftIcon:"ban",disabled:T===a.id,onClick:()=>re(a.id,!1),children:"Tarik dari lead"}):e.jsx(g,{size:"sm",leftIcon:"check",disabled:T===a.id,onClick:()=>re(a.id,!0),children:"Serahkan ke lead"})]}),children:[e.jsx("span",{className:"hn-lead-project-name",children:a.name}),s&&e.jsxs("span",{className:"hn-lead-project-meta",children:[s.decisions24h," keputusan 24 jam terakhir · ",s.openSessions," sesi terbuka"]}),e.jsx(J,{tone:r?s!=null&&s.paused?"warn":"ok":"neutral",size:"sm",children:r?s!=null&&s.paused?"dijeda":"diurus lead":"tidak diurus"})]},a.id)})})]}),e.jsxs("details",{className:"hn-lead-disclosure",children:[e.jsx("summary",{children:"Pengaturan lead"}),e.jsxs("div",{className:"hn-lead-settings",children:[e.jsxs("div",{className:"hn-lead-settings-grid",children:[e.jsx(X,{label:"Lead memeriksa tiap (menit)",hint:"1–1440. Berlaku setelah Simpan.",children:e.jsx(Y,{type:"number",min:1,max:1440,"aria-label":"lead memeriksa tiap (menit)",placeholder:"mis. 5",value:c.draft.everyMin,disabled:!b,onChange:a=>c.setDraft({...c.draft,everyMin:a.target.value})})}),e.jsx(X,{label:"Batas waktu keputusan (detik)",hint:"10–900. Lewat dari ini, keputusan gagal.",children:e.jsx(Y,{type:"number",min:10,max:900,"aria-label":"batas waktu keputusan (detik)",placeholder:"mis. 600",value:c.draft.timeoutSec,disabled:!b,onChange:a=>c.setDraft({...c.draft,timeoutSec:a.target.value})})}),e.jsx(X,{label:"Jawaban berulang per pertanyaan (maks)",hint:"1–20. Bila pertanyaan yang sama terus kembali sesudah dijawab sebanyak ini, pertanyaan itu diserahkan ke kamu. Pertanyaan berbeda tak dihitung.",children:e.jsx(Y,{type:"number",min:1,max:20,"aria-label":"maksimum jawaban berulang per pertanyaan",placeholder:"mis. 3",value:c.draft.maxAutoAnswers,disabled:!b,onChange:a=>c.setDraft({...c.draft,maxAutoAnswers:a.target.value})})}),e.jsx(X,{label:"Syarat integrasi ke main",hint:"Berlaku untuk integrasi yang diputuskan lead.",children:e.jsx(ke,{size:"sm","aria-label":"syarat integrasi ke main",value:c.draft.requireGreen?"wajib":"bebas",onChange:a=>c.setDraft({...c.draft,requireGreen:a.target.value==="wajib"}),options:[{value:"wajib",label:"plan harus tuntas dulu"},{value:"bebas",label:"tanpa syarat"}]})})]}),e.jsxs("div",{"data-testid":"lead-engine-line",className:"hn-lead-note",children:["Model lead: ",(ge=t.config.engine)!=null&&ge.enabled?e.jsxs(e.Fragment,{children:[Te[t.config.engine.agent]," · ",e.jsx("code",{children:t.config.engine.model})," · ",e.jsx("code",{children:t.config.engine.effort})]}):e.jsx(e.Fragment,{children:"ikut default global · atur di Settings → Model sesi"})]}),e.jsxs("div",{className:"hn-lead-footer",children:[e.jsx("span",{role:"status","aria-live":"polite",children:ne?"Ada perubahan yang belum disimpan.":""}),e.jsxs("span",{className:"hn-lead-chips",children:[e.jsx(g,{size:"sm",variant:"ghost",disabled:!ne||z,onClick:()=>c.setDraft(q(t.config)),children:"Batal"}),e.jsx(g,{size:"sm",leftIcon:"check",disabled:!ne||z||!b,onClick:()=>void Ne(),children:"Simpan pengaturan"})]})]})]})]})]})]}),h]})}export{Na as LeadScreen};