jinn-cli 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/bin/jimmy.js +0 -0
- package/dist/src/cli/chrome-allow.d.ts.map +1 -1
- package/dist/src/cli/chrome-allow.js +14 -5
- package/dist/src/cli/chrome-allow.js.map +1 -1
- package/dist/src/cli/list.js +1 -1
- package/dist/src/cli/list.js.map +1 -1
- package/dist/src/cli/nuke.js +2 -2
- package/dist/src/cli/nuke.js.map +1 -1
- package/dist/src/cli/setup.d.ts.map +1 -1
- package/dist/src/cli/setup.js +2 -1
- package/dist/src/cli/setup.js.map +1 -1
- package/dist/src/connectors/slack/index.d.ts +9 -1
- package/dist/src/connectors/slack/index.d.ts.map +1 -1
- package/dist/src/connectors/slack/index.js +172 -8
- package/dist/src/connectors/slack/index.js.map +1 -1
- package/dist/src/connectors/slack/threads.d.ts +1 -4
- package/dist/src/connectors/slack/threads.d.ts.map +1 -1
- package/dist/src/connectors/slack/threads.js +17 -7
- package/dist/src/connectors/slack/threads.js.map +1 -1
- package/dist/src/connectors/slack/threads.test.js +42 -8
- package/dist/src/connectors/slack/threads.test.js.map +1 -1
- package/dist/src/cron/runner.d.ts.map +1 -1
- package/dist/src/cron/runner.js +16 -5
- package/dist/src/cron/runner.js.map +1 -1
- package/dist/src/engines/claude.d.ts.map +1 -1
- package/dist/src/engines/claude.js +19 -4
- package/dist/src/engines/claude.js.map +1 -1
- package/dist/src/gateway/api.d.ts.map +1 -1
- package/dist/src/gateway/api.js +207 -3
- package/dist/src/gateway/api.js.map +1 -1
- package/dist/src/gateway/lifecycle.d.ts.map +1 -1
- package/dist/src/gateway/lifecycle.js +16 -6
- package/dist/src/gateway/lifecycle.js.map +1 -1
- package/dist/src/gateway/org.d.ts.map +1 -1
- package/dist/src/gateway/org.js +1 -0
- package/dist/src/gateway/org.js.map +1 -1
- package/dist/src/gateway/server.d.ts.map +1 -1
- package/dist/src/gateway/server.js +40 -1
- package/dist/src/gateway/server.js.map +1 -1
- package/dist/src/gateway/watcher.d.ts.map +1 -1
- package/dist/src/gateway/watcher.js +9 -2
- package/dist/src/gateway/watcher.js.map +1 -1
- package/dist/src/mcp/gateway-server.d.ts +13 -0
- package/dist/src/mcp/gateway-server.d.ts.map +1 -0
- package/dist/src/mcp/gateway-server.js +375 -0
- package/dist/src/mcp/gateway-server.js.map +1 -0
- package/dist/src/mcp/resolver.d.ts +19 -0
- package/dist/src/mcp/resolver.d.ts.map +1 -0
- package/dist/src/mcp/resolver.js +153 -0
- package/dist/src/mcp/resolver.js.map +1 -0
- package/dist/src/sessions/context.d.ts +1 -0
- package/dist/src/sessions/context.d.ts.map +1 -1
- package/dist/src/sessions/context.js +34 -3
- package/dist/src/sessions/context.js.map +1 -1
- package/dist/src/sessions/limits.d.ts +7 -0
- package/dist/src/sessions/limits.d.ts.map +1 -0
- package/dist/src/sessions/limits.js +42 -0
- package/dist/src/sessions/limits.js.map +1 -0
- package/dist/src/sessions/manager.d.ts +3 -1
- package/dist/src/sessions/manager.d.ts.map +1 -1
- package/dist/src/sessions/manager.js +38 -17
- package/dist/src/sessions/manager.js.map +1 -1
- package/dist/src/sessions/registry.d.ts +6 -0
- package/dist/src/sessions/registry.d.ts.map +1 -1
- package/dist/src/sessions/registry.js +34 -5
- package/dist/src/sessions/registry.js.map +1 -1
- package/dist/src/shared/effort.d.ts +17 -0
- package/dist/src/shared/effort.d.ts.map +1 -0
- package/dist/src/shared/effort.js +44 -0
- package/dist/src/shared/effort.js.map +1 -0
- package/dist/src/shared/paths.d.ts +2 -0
- package/dist/src/shared/paths.d.ts.map +1 -1
- package/dist/src/shared/paths.js +2 -0
- package/dist/src/shared/paths.js.map +1 -1
- package/dist/src/shared/types.d.ts +57 -1
- package/dist/src/shared/types.d.ts.map +1 -1
- package/dist/src/stt/stt.d.ts +24 -0
- package/dist/src/stt/stt.d.ts.map +1 -0
- package/dist/src/stt/stt.js +203 -0
- package/dist/src/stt/stt.js.map +1 -0
- package/dist/web/404.html +1 -1
- package/dist/web/_next/static/chunks/198-3e82ded4f04a0aae.js +1 -0
- package/dist/web/_next/static/chunks/{704-af2893821e1d18dc.js → 704-ca24be493a922639.js} +1 -1
- package/dist/web/_next/static/chunks/{73-c226535579393e21.js → 73-2d6e730cea0fe6c8.js} +1 -1
- package/dist/web/_next/static/chunks/app/_not-found/{page-bb075b0779827928.js → page-7d43a486b7014af3.js} +1 -1
- package/dist/web/_next/static/chunks/app/chat/page-2f3c561ed768ed58.js +1 -0
- package/dist/web/_next/static/chunks/app/costs/{page-d6c03718defdb599.js → page-13a6f2c65a827f8a.js} +1 -1
- package/dist/web/_next/static/chunks/app/cron/{page-4c563eef2b6231fe.js → page-0ee07a679c7b79aa.js} +1 -1
- package/dist/web/_next/static/chunks/app/kanban/{page-55a73165a36f4077.js → page-a7facadd4194faae.js} +1 -1
- package/dist/web/_next/static/chunks/app/layout-fd975d16033dab25.js +1 -0
- package/dist/web/_next/static/chunks/app/logs/page-6de6b16523e85193.js +1 -0
- package/dist/web/_next/static/chunks/app/org/{page-d5cd8d9b7864737b.js → page-cd9d362e77f4799e.js} +1 -1
- package/dist/web/_next/static/chunks/app/{page-b81992940fd1dbc6.js → page-b98417ed4f4d45a0.js} +1 -1
- package/dist/web/_next/static/chunks/app/sessions/page-7148306182017841.js +1 -0
- package/dist/web/_next/static/chunks/app/settings/page-34c9276e2a012445.js +1 -0
- package/dist/web/_next/static/chunks/app/skills/page-18cf3b7bb9a7339c.js +1 -0
- package/dist/web/_next/static/chunks/main-app-0c65af8a0fd99888.js +1 -0
- package/dist/web/_next/static/css/24da9dfc818cea32.css +1 -0
- package/dist/web/chat.html +1 -1
- package/dist/web/chat.txt +5 -5
- package/dist/web/costs.html +2 -2
- package/dist/web/costs.txt +5 -5
- package/dist/web/cron.html +1 -1
- package/dist/web/cron.txt +5 -5
- package/dist/web/index.html +1 -1
- package/dist/web/index.txt +5 -5
- package/dist/web/kanban.html +1 -1
- package/dist/web/kanban.txt +5 -5
- package/dist/web/logs.html +2 -2
- package/dist/web/logs.txt +5 -5
- package/dist/web/org.html +1 -1
- package/dist/web/org.txt +5 -5
- package/dist/web/sessions.html +1 -1
- package/dist/web/sessions.txt +5 -5
- package/dist/web/settings.html +1 -1
- package/dist/web/settings.txt +5 -5
- package/dist/web/skills.html +1 -1
- package/dist/web/skills.txt +5 -5
- package/package.json +9 -9
- package/template/config.default.yaml +32 -0
- package/template/docs/mcp.md +108 -0
- package/dist/web/_next/static/chunks/198-fd91406a158c5c25.js +0 -1
- package/dist/web/_next/static/chunks/app/chat/page-6d5bc707a45c92c6.js +0 -1
- package/dist/web/_next/static/chunks/app/layout-5129b67d5f126cf0.js +0 -1
- package/dist/web/_next/static/chunks/app/logs/page-e18889d67e48c9c9.js +0 -1
- package/dist/web/_next/static/chunks/app/sessions/page-c83c890177c18258.js +0 -1
- package/dist/web/_next/static/chunks/app/settings/page-2583d55551abdf72.js +0 -1
- package/dist/web/_next/static/chunks/app/skills/page-df9465e314561bb5.js +0 -1
- package/dist/web/_next/static/chunks/main-app-437f51faf74fbb3b.js +0 -1
- package/dist/web/_next/static/css/4a6a5bca9238c104.css +0 -1
- /package/dist/web/_next/static/{jt8R5JvUgfB9CMfFwWFr0 → Zn588p2VvgjCSLr44R__1}/_buildManifest.js +0 -0
- /package/dist/web/_next/static/{jt8R5JvUgfB9CMfFwWFr0 → Zn588p2VvgjCSLr44R__1}/_ssgManifest.js +0 -0
package/dist/web/_next/static/chunks/app/costs/{page-d6c03718defdb599.js → page-13a6f2c65a827f8a.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[783],{667:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>j});var a=r(8111),n=r(3073),s=r(5271),o=r(6059),l=r(3176);let i={"claude-sonnet-4-6":{inputPer1M:3,outputPer1M:15},"claude-sonnet-4-5":{inputPer1M:3,outputPer1M:15},"claude-haiku-4-5":{inputPer1M:.8,outputPer1M:4},"claude-opus-4-6":{inputPer1M:15,outputPer1M:75},"claude-3-5-sonnet":{inputPer1M:3,outputPer1M:15},"claude-3-5-haiku":{inputPer1M:.8,outputPer1M:4},"claude-3-haiku":{inputPer1M:.25,outputPer1M:1.25}},d={inputPer1M:3,outputPer1M:15};function c(e){if(i[e])return i[e];for(let t of Object.keys(i))if(e.startsWith(t))return i[t];return d}function u(e){if(0===e.length)return 0;let t=[...e].sort((e,t)=>e-t),r=Math.floor(t.length/2);return t.length%2!=0?t[r]:(t[r-1]+t[r])/2}function p(e){return e<.01&&e>0?"<$0.01":"$".concat(e.toFixed(2))}function h(e){return e>=1e6?"".concat((e/1e6).toFixed(1),"M"):e>=1e3?"".concat((e/1e3).toFixed(1),"K"):String(e)}function m(e){let{label:t,children:r}=e;return(0,a.jsxs)("div",{style:{background:"var(--material-regular)",border:"1px solid var(--separator)",borderRadius:"var(--radius-md)",padding:"var(--space-4)"},children:[(0,a.jsx)("div",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)",fontWeight:500,marginBottom:"var(--space-1)"},children:t}),r]})}function g(e){let{dailyCosts:t}=e,r=(0,s.useRef)(null),n=(0,s.useRef)(null),o=(0,s.useCallback)(()=>{let e=r.current,a=n.current;if(!e||!a||0===t.length)return;let s=window.devicePixelRatio||1,o=a.getBoundingClientRect().width;e.width=o*s,e.height=220*s,e.style.width="".concat(o,"px"),e.style.height="".concat(220,"px");let l=e.getContext("2d");if(!l)return;l.scale(s,s);let i=getComputedStyle(document.documentElement),d=i.getPropertyValue("--text-tertiary").trim()||"#888",c=i.getPropertyValue("--separator").trim()||"#333",u=i.getPropertyValue("--accent").trim()||"#007AFF",p=o-50-12,h=Math.max(...t.map(e=>e.cost),.01),m=Math.max(6,Math.min(40,(p-2*t.length)/t.length));for(let e of(l.clearRect(0,0,o,220),l.font="9px -apple-system, sans-serif",l.textAlign="right",[0,.25*h,.5*h,.75*h,h])){let t=192-e/h*180;l.strokeStyle=c,l.lineWidth=.5,l.beginPath(),l.moveTo(50,t),l.lineTo(o-12,t),l.stroke(),l.fillStyle=d,l.fillText("$".concat(e.toFixed(2)),44,t+3)}for(let e=0;e<t.length;e++){let r=t[e],a=r.cost/h*180,n=50+e*(m+2),s=192-a;l.fillStyle=u,l.globalAlpha=.8;let o=Math.max(1,a);l.beginPath(),l.moveTo(n+2,s),l.lineTo(n+m-2,s),l.quadraticCurveTo(n+m,s,n+m,s+2),l.lineTo(n+m,s+o),l.lineTo(n,s+o),l.lineTo(n,s+2),l.quadraticCurveTo(n,s,n+2,s),l.closePath(),l.fill(),l.globalAlpha=1,(0===e||e===t.length-1||e%7==0)&&(l.fillStyle=d,l.textAlign="center",l.font="8px -apple-system, sans-serif",l.fillText(r.date.slice(5),n+m/2,214))}},[t]);return((0,s.useEffect)(()=>(o(),window.addEventListener("resize",o),()=>window.removeEventListener("resize",o)),[o]),0===t.length)?null:(0,a.jsxs)("div",{ref:n,style:{background:"var(--material-regular)",border:"1px solid var(--separator)",borderRadius:"var(--radius-md)",padding:"var(--space-4)"},children:[(0,a.jsx)("div",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)",fontWeight:500,marginBottom:"var(--space-3)"},children:"Daily Estimated Cost"}),(0,a.jsx)("canvas",{ref:r,style:{display:"block",width:"100%"}})]})}function x(e){let{breakdown:t}=e;if(0===t.length)return null;let r=["var(--system-blue)","var(--system-green)","var(--accent)","var(--system-orange)","var(--system-purple)"];return(0,a.jsxs)("div",{style:{background:"var(--material-regular)",border:"1px solid var(--separator)",borderRadius:"var(--radius-md)",padding:"var(--space-4)"},children:[(0,a.jsx)("div",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)",fontWeight:500,marginBottom:"var(--space-3)"},children:"Model Breakdown"}),(0,a.jsx)("div",{style:{display:"flex",height:20,borderRadius:"var(--radius-sm)",overflow:"hidden",marginBottom:"var(--space-3)"},children:t.map((e,t)=>(0,a.jsx)("div",{style:{width:"".concat(e.pct,"%"),background:r[t%r.length],minWidth:2*(e.pct>0)}},e.model))}),(0,a.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:"var(--space-2)",fontSize:"var(--text-caption1)"},children:t.map((e,t)=>(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4},children:[(0,a.jsx)("span",{style:{width:8,height:8,borderRadius:2,background:r[t%r.length],flexShrink:0}}),(0,a.jsx)("span",{style:{color:"var(--text-secondary)",fontWeight:500},children:e.model}),(0,a.jsxs)("span",{style:{color:"var(--text-tertiary)",fontVariantNumeric:"tabular-nums"},children:[e.pct.toFixed(0),"% (",h(e.tokens),")"]})]},e.model))})]})}function v(e){let{jobCosts:t,jobName:r}=e,[n,o]=(0,s.useState)("totalCost"),[l,i]=(0,s.useState)("desc"),d=e=>{n===e?i(e=>"asc"===e?"desc":"asc"):(o(e),i("desc"))},c=[...t].sort((e,t)=>{let a=0;return a="jobId"===n?r(e.jobId).localeCompare(r(t.jobId)):e[n]-t[n],"asc"===l?a:-a}),u=e=>n!==e?"":"asc"===l?" ▲":" ▼",m={cursor:"pointer",userSelect:"none",fontSize:"var(--text-caption1)",color:"var(--text-tertiary)",fontWeight:500};return 0===t.length?null:(0,a.jsxs)("div",{style:{background:"var(--material-regular)",border:"1px solid var(--separator)",borderRadius:"var(--radius-md)",overflow:"hidden"},children:[(0,a.jsxs)("div",{className:"flex items-center",style:{padding:"var(--space-2) var(--space-4)",borderBottom:"1px solid var(--separator)",gap:"var(--space-3)"},children:[(0,a.jsxs)("span",{style:{...m,flex:2,minWidth:0},onClick:()=>d("jobId"),children:["Job",u("jobId")]}),(0,a.jsxs)("span",{style:{...m,width:50,textAlign:"right"},onClick:()=>d("runs"),children:["Runs",u("runs")]}),(0,a.jsx)("span",{style:{...m,width:80,textAlign:"right"},children:"Input"}),(0,a.jsx)("span",{style:{...m,width:80,textAlign:"right"},children:"Output"}),(0,a.jsx)("span",{className:"hidden-mobile",style:{...m,width:80,textAlign:"right"},children:"Cache"}),(0,a.jsxs)("span",{style:{...m,width:80,textAlign:"right"},onClick:()=>d("totalCost"),children:["Est. Cost",u("totalCost")]})]}),c.map((e,t)=>(0,a.jsxs)("div",{className:"flex items-center",style:{padding:"var(--space-3) var(--space-4)",borderBottom:t<c.length-1?"1px solid var(--separator)":void 0,fontSize:"var(--text-footnote)",color:"var(--text-primary)",gap:"var(--space-3)"},children:[(0,a.jsx)("span",{style:{flex:2,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontWeight:500},children:r(e.jobId)}),(0,a.jsx)("span",{style:{width:50,textAlign:"right",color:"var(--text-secondary)",fontVariantNumeric:"tabular-nums"},children:e.runs}),(0,a.jsx)("span",{style:{width:80,textAlign:"right",color:"var(--text-secondary)",fontVariantNumeric:"tabular-nums"},children:h(e.totalInputTokens)}),(0,a.jsx)("span",{style:{width:80,textAlign:"right",color:"var(--text-secondary)",fontVariantNumeric:"tabular-nums"},children:h(e.totalOutputTokens)}),(0,a.jsx)("span",{className:"hidden-mobile",style:{width:80,textAlign:"right",color:"var(--text-tertiary)",fontVariantNumeric:"tabular-nums"},children:h(e.totalCacheTokens)}),(0,a.jsx)("span",{style:{width:80,textAlign:"right",fontWeight:600,fontVariantNumeric:"tabular-nums"},children:p(e.totalCost)})]},e.jobId))]})}function f(e){let{anomalies:t,jobName:r}=e;return 0===t.length?null:(0,a.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"var(--space-2)",padding:"var(--space-3) var(--space-4)",background:"rgba(255, 149, 0, 0.08)",border:"1px solid rgba(255, 149, 0, 0.25)",borderRadius:"var(--radius-md)",marginBottom:"var(--space-4)",fontSize:"var(--text-footnote)",color:"var(--system-orange)"},children:[(0,a.jsxs)("div",{style:{fontWeight:600,display:"flex",alignItems:"center",gap:"var(--space-2)"},children:[(0,a.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0},children:[(0,a.jsx)("path",{d:"M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z"}),(0,a.jsx)("line",{x1:"12",y1:"9",x2:"12",y2:"13"}),(0,a.jsx)("line",{x1:"12",y1:"17",x2:"12.01",y2:"17"})]}),t.length," anomal",1===t.length?"y":"ies"," ","detected"]}),t.map((e,t)=>(0,a.jsxs)("div",{style:{paddingLeft:24},children:[(0,a.jsx)("span",{style:{fontWeight:500},children:r(e.jobId)})," -- ",h(e.totalTokens)," tokens (",e.ratio.toFixed(1),"x median of"," ",h(e.medianTokens),") on ",new Date(e.ts).toLocaleDateString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})]},"".concat(e.ts,"-").concat(e.jobId,"-").concat(t)))]})}function y(){let[e,t]=(0,s.useState)(null),[r,n]=(0,s.useState)({}),[i,d]=(0,s.useState)(!0),[y,j]=(0,s.useState)(null);(0,s.useEffect)(()=>{d(!0),j(null),l.F.getCronJobs().then(async e=>{let r={};for(let t of e)r[t.id]=t.name;n(r);let a=await Promise.allSettled(e.map(e=>l.F.getCronRuns(e.id).then(t=>t.map(t=>{var r;return{...t,jobId:null!=(r=t.jobId)?r:e.id}})))),s=[];for(let e of a)"fulfilled"===e.status&&s.push(...e.value);t(function(e){let t=function(e){let t=new Map;for(let a of e){var r;let e=null!=(r=t.get(a.jobId))?r:[];e.push(a),t.set(a.jobId,e)}let a=[];for(let[e,r]of t)a.push({jobId:e,runs:r.length,totalInputTokens:r.reduce((e,t)=>e+t.inputTokens,0),totalOutputTokens:r.reduce((e,t)=>e+t.outputTokens,0),totalCacheTokens:r.reduce((e,t)=>e+t.cacheTokens,0),totalCost:r.reduce((e,t)=>e+t.minCost,0),medianCost:u(r.map(e=>e.minCost))});return a.sort((e,t)=>t.totalCost-e.totalCost)}(e),r=function(e){let t=new Map;for(let a of e){var r;let e=new Date(a.ts).toISOString().slice(0,10),n=null!=(r=t.get(e))?r:{cost:0,runs:0};n.cost+=a.minCost,n.runs+=1,t.set(e,n)}return Array.from(t.entries()).map(e=>{let[t,r]=e;return{date:t,cost:r.cost,runs:r.runs}}).sort((e,t)=>e.date.localeCompare(t.date))}(e),a=function(e){let t=new Map,r=0;for(let n of e){var a;t.set(n.model,(null!=(a=t.get(n.model))?a:0)+n.totalTokens),r+=n.totalTokens}return 0===r?[]:Array.from(t.entries()).map(e=>{let[t,a]=e;return{model:t,tokens:a,pct:a/r*100}}).sort((e,t)=>t.tokens-e.tokens)}(e),n=function(e,t){var r,a,n;let s=new Map;for(let e of t)s.set(e.jobId,e.runs);let o=new Map;for(let t of e){let e=null!=(r=o.get(t.jobId))?r:[];e.push(t.totalTokens),o.set(t.jobId,e)}let l=new Map;for(let[e,t]of o)l.set(e,u(t));let i=[];for(let t of e){if((null!=(a=s.get(t.jobId))?a:0)<3)continue;let e=null!=(n=l.get(t.jobId))?n:0;if(0===e)continue;let r=t.totalTokens/e;r>5&&i.push({ts:t.ts,jobId:t.jobId,totalTokens:t.totalTokens,medianTokens:e,ratio:r})}return i.sort((e,t)=>t.ratio-e.ratio)}(e,t),s=t.reduce((e,t)=>e+t.totalCost,0),o=t.length>0?{jobId:t[0].jobId,cost:t[0].totalCost}:null,l=function(e){let t=Date.now(),r=t-6048e5,a=t-12096e5,n=0,s=0;for(let t of e)t.ts>=r?n+=t.minCost:t.ts>=a&&(s+=t.minCost);let o=s>0?(n-s)/s*100:null;return{thisWeek:n,lastWeek:s,changePct:o}}(e),i=function(e){let t=0,r=0;for(let a of e)if(a.cacheTokens>0){t+=a.cacheTokens;let e=c(a.model);r+=a.cacheTokens*e.inputPer1M/1e6}return{cacheTokens:t,estimatedSavings:r}}(e);return{totalCost:s,topSpender:o,anomalies:n,jobCosts:t,dailyCosts:r,modelBreakdown:a,runCosts:e,weekOverWeek:l,cacheSavings:i}}(function(e){let t=[];for(let n of e){var r,a;if(!n.usage)continue;let e=c(null!=(r=n.model)?r:""),s=n.usage.input_tokens,o=n.usage.output_tokens,l=n.usage.total_tokens,i=Math.max(0,l-s-o),d=(s*e.inputPer1M+o*e.outputPer1M)/1e6;t.push({ts:n.ts,jobId:n.jobId,model:null!=(a=n.model)?a:"unknown",inputTokens:s,outputTokens:o,totalTokens:l,cacheTokens:i,minCost:d})}return t}(s))),d(!1)}).catch(e=>{j(e instanceof Error?e.message:"Unknown error"),d(!1)})},[]);let b=e=>r[e]||e,k=e&&e.runCosts.length>0?{oldest:new Date(Math.min(...e.runCosts.map(e=>e.ts))),newest:new Date(Math.max(...e.runCosts.map(e=>e.ts)))}:null;return(0,a.jsxs)("div",{className:"h-full flex flex-col overflow-hidden",style:{background:"var(--bg)"},children:[(0,a.jsxs)("header",{className:"sticky top-0 z-10 flex-shrink-0",style:{background:"var(--material-regular)",backdropFilter:"blur(40px) saturate(180%)",WebkitBackdropFilter:"blur(40px) saturate(180%)",borderBottom:"1px solid var(--separator)",padding:"var(--space-4) var(--space-6)"},children:[(0,a.jsx)("h1",{style:{fontSize:"var(--text-title1)",fontWeight:700,color:"var(--text-primary)",letterSpacing:"-0.5px",lineHeight:1.2},children:"Costs"}),!i&&e&&(0,a.jsxs)("p",{style:{fontSize:"var(--text-footnote)",color:"var(--text-secondary)",marginTop:"var(--space-1)"},children:[k?"".concat(k.oldest.toLocaleDateString()," - ").concat(k.newest.toLocaleDateString()):"No data"," \xb7 ",e.runCosts.length," run",1!==e.runCosts.length?"s":""," with cost data"]})]}),(0,a.jsxs)("div",{className:"flex-1 overflow-y-auto",style:{padding:"var(--space-4) var(--space-6) var(--space-6)",minHeight:0},children:[y&&(0,a.jsx)("div",{style:{textAlign:"center",padding:"var(--space-8)",color:"var(--system-red)",fontSize:"var(--text-footnote)"},children:y}),i&&(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"costs-summary-grid",style:{display:"grid",gridTemplateColumns:"repeat(4, 1fr)",gap:"var(--space-3)",marginBottom:"var(--space-4)"},children:[1,2,3,4].map(e=>(0,a.jsxs)("div",{style:{background:"var(--material-regular)",border:"1px solid var(--separator)",borderRadius:"var(--radius-md)",padding:"var(--space-4)"},children:[(0,a.jsx)(o.E,{style:{width:100,height:10,marginBottom:8}}),(0,a.jsx)(o.E,{style:{width:60,height:20}})]},e))}),(0,a.jsx)("div",{style:{background:"var(--material-regular)",border:"1px solid var(--separator)",borderRadius:"var(--radius-md)",overflow:"hidden"},children:[1,2,3,4].map(e=>(0,a.jsxs)("div",{className:"flex items-center",style:{padding:"var(--space-3) var(--space-4)",borderBottom:e<4?"1px solid var(--separator)":void 0,gap:"var(--space-3)"},children:[(0,a.jsx)(o.E,{style:{width:140,height:14}}),(0,a.jsx)(o.E,{style:{width:60,height:14,flex:1}}),(0,a.jsx)(o.E,{style:{width:80,height:14}})]},e))})]}),!i&&!y&&(!e||0===e.runCosts.length)&&(0,a.jsx)("div",{style:{textAlign:"center",padding:"var(--space-8)",color:"var(--text-tertiary)",fontSize:"var(--text-footnote)"},children:"No cost data -- runs without usage metadata will not appear here."}),!i&&!y&&e&&e.runCosts.length>0&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(f,{anomalies:e.anomalies,jobName:b}),(0,a.jsxs)("div",{className:"costs-summary-grid",style:{display:"grid",gridTemplateColumns:"repeat(4, 1fr)",gap:"var(--space-3)",marginBottom:"var(--space-4)"},children:[(0,a.jsx)(m,{label:"Total Estimated Cost",children:(0,a.jsx)("div",{className:"flex items-center",style:{gap:"var(--space-2)"},children:(0,a.jsx)("span",{style:{fontSize:"var(--text-title2)",color:"var(--text-primary)",fontWeight:700,fontVariantNumeric:"tabular-nums"},children:p(e.totalCost)})})}),(0,a.jsx)(m,{label:"Top Spender",children:e.topSpender?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{style:{fontSize:"var(--text-footnote)",fontWeight:600,color:"var(--text-primary)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:b(e.topSpender.jobId)}),(0,a.jsx)("div",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)",fontVariantNumeric:"tabular-nums",marginTop:2},children:p(e.topSpender.cost)})]}):(0,a.jsx)("span",{style:{color:"var(--text-tertiary)"},children:"--"})}),(0,a.jsxs)(m,{label:"Week over Week",children:[(0,a.jsx)("div",{className:"flex items-center",style:{gap:"var(--space-2)"},children:(0,a.jsx)("span",{style:{fontSize:"var(--text-title2)",fontWeight:700,fontVariantNumeric:"tabular-nums",color:null!==e.weekOverWeek.changePct?e.weekOverWeek.changePct<=0?"var(--system-green)":"var(--system-red)":"var(--text-primary)"},children:null!==e.weekOverWeek.changePct?"".concat(e.weekOverWeek.changePct>0?"+":"").concat(e.weekOverWeek.changePct.toFixed(0),"%"):"--"})}),(0,a.jsxs)("div",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)",marginTop:2},children:[p(e.weekOverWeek.thisWeek)," vs"," ",p(e.weekOverWeek.lastWeek)]})]}),(0,a.jsxs)(m,{label:"Cache Savings",children:[(0,a.jsx)("div",{style:{fontSize:"var(--text-title2)",color:"var(--system-green)",fontWeight:700,fontVariantNumeric:"tabular-nums"},children:p(e.cacheSavings.estimatedSavings)}),(0,a.jsxs)("div",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)",marginTop:2},children:[h(e.cacheSavings.cacheTokens)," cache tokens"]})]})]}),(0,a.jsxs)("div",{className:"charts-row",style:{display:"grid",gridTemplateColumns:"2fr 1fr",gap:"var(--space-4)",marginBottom:"var(--space-4)"},children:[(0,a.jsx)(g,{dailyCosts:e.dailyCosts}),(0,a.jsx)(x,{breakdown:e.modelBreakdown})]}),(0,a.jsx)(v,{jobCosts:e.jobCosts,jobName:b})]})]}),(0,a.jsx)("style",{children:"\n @media (max-width: 768px) {\n .costs-summary-grid {\n grid-template-columns: repeat(2, 1fr) !important;\n }\n .charts-row {\n grid-template-columns: 1fr !important;\n }\n }\n @media (max-width: 640px) {\n .costs-summary-grid {\n grid-template-columns: 1fr !important;\n }\n .hidden-mobile { display: none !important; }\n }\n "})]})}function j(){return(0,a.jsx)(n.M,{children:(0,a.jsx)(y,{})})}},1397:(e,t,r)=>{"use strict";r.d(t,{cn:()=>s});var a=r(5242),n=r(3065);function s(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,n.QP)((0,a.$)(t))}},4520:(e,t,r)=>{Promise.resolve().then(r.bind(r,667))},6059:(e,t,r)=>{"use strict";r.d(t,{E:()=>s});var a=r(8111),n=r(1397);function s(e){let{className:t,width:r,height:s,style:o,...l}=e;return(0,a.jsx)("div",{className:(0,n.cn)("animate-shimmer rounded-md",t),style:{background:"linear-gradient(90deg, var(--fill-secondary) 25%, var(--fill-tertiary) 50%, var(--fill-secondary) 75%)",backgroundSize:"200% 100%",width:r,height:s,...o},...l})}}},e=>{e.O(0,[704,590,73,814,743,358],()=>e(e.s=4520)),_N_E=e.O()}]);
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[783],{667:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>j});var a=r(8111),n=r(3073),s=r(5271),o=r(6059),l=r(3176);let i={"claude-sonnet-4-6":{inputPer1M:3,outputPer1M:15},"claude-sonnet-4-5":{inputPer1M:3,outputPer1M:15},"claude-haiku-4-5":{inputPer1M:.8,outputPer1M:4},"claude-opus-4-6":{inputPer1M:15,outputPer1M:75},"claude-3-5-sonnet":{inputPer1M:3,outputPer1M:15},"claude-3-5-haiku":{inputPer1M:.8,outputPer1M:4},"claude-3-haiku":{inputPer1M:.25,outputPer1M:1.25}},d={inputPer1M:3,outputPer1M:15};function c(e){if(i[e])return i[e];for(let t of Object.keys(i))if(e.startsWith(t))return i[t];return d}function u(e){if(0===e.length)return 0;let t=[...e].sort((e,t)=>e-t),r=Math.floor(t.length/2);return t.length%2!=0?t[r]:(t[r-1]+t[r])/2}function p(e){return e<.01&&e>0?"<$0.01":"$".concat(e.toFixed(2))}function h(e){return e>=1e6?"".concat((e/1e6).toFixed(1),"M"):e>=1e3?"".concat((e/1e3).toFixed(1),"K"):String(e)}function m(e){let{label:t,children:r}=e;return(0,a.jsxs)("div",{style:{background:"var(--material-regular)",border:"1px solid var(--separator)",borderRadius:"var(--radius-md)",padding:"var(--space-4)"},children:[(0,a.jsx)("div",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)",fontWeight:500,marginBottom:"var(--space-1)"},children:t}),r]})}function g(e){let{dailyCosts:t}=e,r=(0,s.useRef)(null),n=(0,s.useRef)(null),o=(0,s.useCallback)(()=>{let e=r.current,a=n.current;if(!e||!a||0===t.length)return;let s=window.devicePixelRatio||1,o=a.getBoundingClientRect().width;e.width=o*s,e.height=220*s,e.style.width="".concat(o,"px"),e.style.height="".concat(220,"px");let l=e.getContext("2d");if(!l)return;l.scale(s,s);let i=getComputedStyle(document.documentElement),d=i.getPropertyValue("--text-tertiary").trim()||"#888",c=i.getPropertyValue("--separator").trim()||"#333",u=i.getPropertyValue("--accent").trim()||"#007AFF",p=o-50-12,h=Math.max(...t.map(e=>e.cost),.01),m=Math.max(6,Math.min(40,(p-2*t.length)/t.length));for(let e of(l.clearRect(0,0,o,220),l.font="9px -apple-system, sans-serif",l.textAlign="right",[0,.25*h,.5*h,.75*h,h])){let t=192-e/h*180;l.strokeStyle=c,l.lineWidth=.5,l.beginPath(),l.moveTo(50,t),l.lineTo(o-12,t),l.stroke(),l.fillStyle=d,l.fillText("$".concat(e.toFixed(2)),44,t+3)}for(let e=0;e<t.length;e++){let r=t[e],a=r.cost/h*180,n=50+e*(m+2),s=192-a;l.fillStyle=u,l.globalAlpha=.8;let o=Math.max(1,a);l.beginPath(),l.moveTo(n+2,s),l.lineTo(n+m-2,s),l.quadraticCurveTo(n+m,s,n+m,s+2),l.lineTo(n+m,s+o),l.lineTo(n,s+o),l.lineTo(n,s+2),l.quadraticCurveTo(n,s,n+2,s),l.closePath(),l.fill(),l.globalAlpha=1,(0===e||e===t.length-1||e%7==0)&&(l.fillStyle=d,l.textAlign="center",l.font="8px -apple-system, sans-serif",l.fillText(r.date.slice(5),n+m/2,214))}},[t]);return((0,s.useEffect)(()=>(o(),window.addEventListener("resize",o),()=>window.removeEventListener("resize",o)),[o]),0===t.length)?null:(0,a.jsxs)("div",{ref:n,style:{background:"var(--material-regular)",border:"1px solid var(--separator)",borderRadius:"var(--radius-md)",padding:"var(--space-4)"},children:[(0,a.jsx)("div",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)",fontWeight:500,marginBottom:"var(--space-3)"},children:"Daily Estimated Cost"}),(0,a.jsx)("canvas",{ref:r,style:{display:"block",width:"100%"}})]})}function x(e){let{breakdown:t}=e;if(0===t.length)return null;let r=["var(--system-blue)","var(--system-green)","var(--accent)","var(--system-orange)","var(--system-purple)"];return(0,a.jsxs)("div",{style:{background:"var(--material-regular)",border:"1px solid var(--separator)",borderRadius:"var(--radius-md)",padding:"var(--space-4)"},children:[(0,a.jsx)("div",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)",fontWeight:500,marginBottom:"var(--space-3)"},children:"Model Breakdown"}),(0,a.jsx)("div",{style:{display:"flex",height:20,borderRadius:"var(--radius-sm)",overflow:"hidden",marginBottom:"var(--space-3)"},children:t.map((e,t)=>(0,a.jsx)("div",{style:{width:"".concat(e.pct,"%"),background:r[t%r.length],minWidth:2*(e.pct>0)}},e.model))}),(0,a.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:"var(--space-2)",fontSize:"var(--text-caption1)"},children:t.map((e,t)=>(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4},children:[(0,a.jsx)("span",{style:{width:8,height:8,borderRadius:2,background:r[t%r.length],flexShrink:0}}),(0,a.jsx)("span",{style:{color:"var(--text-secondary)",fontWeight:500},children:e.model}),(0,a.jsxs)("span",{style:{color:"var(--text-tertiary)",fontVariantNumeric:"tabular-nums"},children:[e.pct.toFixed(0),"% (",h(e.tokens),")"]})]},e.model))})]})}function v(e){let{jobCosts:t,jobName:r}=e,[n,o]=(0,s.useState)("totalCost"),[l,i]=(0,s.useState)("desc"),d=e=>{n===e?i(e=>"asc"===e?"desc":"asc"):(o(e),i("desc"))},c=[...t].sort((e,t)=>{let a=0;return a="jobId"===n?r(e.jobId).localeCompare(r(t.jobId)):e[n]-t[n],"asc"===l?a:-a}),u=e=>n!==e?"":"asc"===l?" ▲":" ▼",m={cursor:"pointer",userSelect:"none",fontSize:"var(--text-caption1)",color:"var(--text-tertiary)",fontWeight:500};return 0===t.length?null:(0,a.jsxs)("div",{style:{background:"var(--material-regular)",border:"1px solid var(--separator)",borderRadius:"var(--radius-md)",overflow:"hidden"},children:[(0,a.jsxs)("div",{className:"flex items-center",style:{padding:"var(--space-2) var(--space-4)",borderBottom:"1px solid var(--separator)",gap:"var(--space-3)"},children:[(0,a.jsxs)("span",{style:{...m,flex:2,minWidth:0},onClick:()=>d("jobId"),children:["Job",u("jobId")]}),(0,a.jsxs)("span",{style:{...m,width:50,textAlign:"right"},onClick:()=>d("runs"),children:["Runs",u("runs")]}),(0,a.jsx)("span",{style:{...m,width:80,textAlign:"right"},children:"Input"}),(0,a.jsx)("span",{style:{...m,width:80,textAlign:"right"},children:"Output"}),(0,a.jsx)("span",{className:"hidden-mobile",style:{...m,width:80,textAlign:"right"},children:"Cache"}),(0,a.jsxs)("span",{style:{...m,width:80,textAlign:"right"},onClick:()=>d("totalCost"),children:["Est. Cost",u("totalCost")]})]}),c.map((e,t)=>(0,a.jsxs)("div",{className:"flex items-center",style:{padding:"var(--space-3) var(--space-4)",borderBottom:t<c.length-1?"1px solid var(--separator)":void 0,fontSize:"var(--text-footnote)",color:"var(--text-primary)",gap:"var(--space-3)"},children:[(0,a.jsx)("span",{style:{flex:2,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontWeight:500},children:r(e.jobId)}),(0,a.jsx)("span",{style:{width:50,textAlign:"right",color:"var(--text-secondary)",fontVariantNumeric:"tabular-nums"},children:e.runs}),(0,a.jsx)("span",{style:{width:80,textAlign:"right",color:"var(--text-secondary)",fontVariantNumeric:"tabular-nums"},children:h(e.totalInputTokens)}),(0,a.jsx)("span",{style:{width:80,textAlign:"right",color:"var(--text-secondary)",fontVariantNumeric:"tabular-nums"},children:h(e.totalOutputTokens)}),(0,a.jsx)("span",{className:"hidden-mobile",style:{width:80,textAlign:"right",color:"var(--text-tertiary)",fontVariantNumeric:"tabular-nums"},children:h(e.totalCacheTokens)}),(0,a.jsx)("span",{style:{width:80,textAlign:"right",fontWeight:600,fontVariantNumeric:"tabular-nums"},children:p(e.totalCost)})]},e.jobId))]})}function f(e){let{anomalies:t,jobName:r}=e;return 0===t.length?null:(0,a.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"var(--space-2)",padding:"var(--space-3) var(--space-4)",background:"rgba(255, 149, 0, 0.08)",border:"1px solid rgba(255, 149, 0, 0.25)",borderRadius:"var(--radius-md)",marginBottom:"var(--space-4)",fontSize:"var(--text-footnote)",color:"var(--system-orange)"},children:[(0,a.jsxs)("div",{style:{fontWeight:600,display:"flex",alignItems:"center",gap:"var(--space-2)"},children:[(0,a.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0},children:[(0,a.jsx)("path",{d:"M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z"}),(0,a.jsx)("line",{x1:"12",y1:"9",x2:"12",y2:"13"}),(0,a.jsx)("line",{x1:"12",y1:"17",x2:"12.01",y2:"17"})]}),t.length," anomal",1===t.length?"y":"ies"," ","detected"]}),t.map((e,t)=>(0,a.jsxs)("div",{style:{paddingLeft:24},children:[(0,a.jsx)("span",{style:{fontWeight:500},children:r(e.jobId)})," -- ",h(e.totalTokens)," tokens (",e.ratio.toFixed(1),"x median of"," ",h(e.medianTokens),") on ",new Date(e.ts).toLocaleDateString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})]},"".concat(e.ts,"-").concat(e.jobId,"-").concat(t)))]})}function y(){let[e,t]=(0,s.useState)(null),[r,n]=(0,s.useState)({}),[i,d]=(0,s.useState)(!0),[y,j]=(0,s.useState)(null);(0,s.useEffect)(()=>{d(!0),j(null),l.F.getCronJobs().then(async e=>{let r={};for(let t of e)r[t.id]=t.name;n(r);let a=await Promise.allSettled(e.map(e=>l.F.getCronRuns(e.id).then(t=>t.map(t=>{var r;return{...t,jobId:null!=(r=t.jobId)?r:e.id}})))),s=[];for(let e of a)"fulfilled"===e.status&&s.push(...e.value);t(function(e){let t=function(e){let t=new Map;for(let a of e){var r;let e=null!=(r=t.get(a.jobId))?r:[];e.push(a),t.set(a.jobId,e)}let a=[];for(let[e,r]of t)a.push({jobId:e,runs:r.length,totalInputTokens:r.reduce((e,t)=>e+t.inputTokens,0),totalOutputTokens:r.reduce((e,t)=>e+t.outputTokens,0),totalCacheTokens:r.reduce((e,t)=>e+t.cacheTokens,0),totalCost:r.reduce((e,t)=>e+t.minCost,0),medianCost:u(r.map(e=>e.minCost))});return a.sort((e,t)=>t.totalCost-e.totalCost)}(e),r=function(e){let t=new Map;for(let a of e){var r;let e=new Date(a.ts).toISOString().slice(0,10),n=null!=(r=t.get(e))?r:{cost:0,runs:0};n.cost+=a.minCost,n.runs+=1,t.set(e,n)}return Array.from(t.entries()).map(e=>{let[t,r]=e;return{date:t,cost:r.cost,runs:r.runs}}).sort((e,t)=>e.date.localeCompare(t.date))}(e),a=function(e){let t=new Map,r=0;for(let n of e){var a;t.set(n.model,(null!=(a=t.get(n.model))?a:0)+n.totalTokens),r+=n.totalTokens}return 0===r?[]:Array.from(t.entries()).map(e=>{let[t,a]=e;return{model:t,tokens:a,pct:a/r*100}}).sort((e,t)=>t.tokens-e.tokens)}(e),n=function(e,t){var r,a,n;let s=new Map;for(let e of t)s.set(e.jobId,e.runs);let o=new Map;for(let t of e){let e=null!=(r=o.get(t.jobId))?r:[];e.push(t.totalTokens),o.set(t.jobId,e)}let l=new Map;for(let[e,t]of o)l.set(e,u(t));let i=[];for(let t of e){if((null!=(a=s.get(t.jobId))?a:0)<3)continue;let e=null!=(n=l.get(t.jobId))?n:0;if(0===e)continue;let r=t.totalTokens/e;r>5&&i.push({ts:t.ts,jobId:t.jobId,totalTokens:t.totalTokens,medianTokens:e,ratio:r})}return i.sort((e,t)=>t.ratio-e.ratio)}(e,t),s=t.reduce((e,t)=>e+t.totalCost,0),o=t.length>0?{jobId:t[0].jobId,cost:t[0].totalCost}:null,l=function(e){let t=Date.now(),r=t-6048e5,a=t-12096e5,n=0,s=0;for(let t of e)t.ts>=r?n+=t.minCost:t.ts>=a&&(s+=t.minCost);let o=s>0?(n-s)/s*100:null;return{thisWeek:n,lastWeek:s,changePct:o}}(e),i=function(e){let t=0,r=0;for(let a of e)if(a.cacheTokens>0){t+=a.cacheTokens;let e=c(a.model);r+=a.cacheTokens*e.inputPer1M/1e6}return{cacheTokens:t,estimatedSavings:r}}(e);return{totalCost:s,topSpender:o,anomalies:n,jobCosts:t,dailyCosts:r,modelBreakdown:a,runCosts:e,weekOverWeek:l,cacheSavings:i}}(function(e){let t=[];for(let n of e){var r,a;if(!n.usage)continue;let e=c(null!=(r=n.model)?r:""),s=n.usage.input_tokens,o=n.usage.output_tokens,l=n.usage.total_tokens,i=Math.max(0,l-s-o),d=(s*e.inputPer1M+o*e.outputPer1M)/1e6;t.push({ts:n.ts,jobId:n.jobId,model:null!=(a=n.model)?a:"unknown",inputTokens:s,outputTokens:o,totalTokens:l,cacheTokens:i,minCost:d})}return t}(s))),d(!1)}).catch(e=>{j(e instanceof Error?e.message:"Unknown error"),d(!1)})},[]);let b=e=>r[e]||e,k=e&&e.runCosts.length>0?{oldest:new Date(Math.min(...e.runCosts.map(e=>e.ts))),newest:new Date(Math.max(...e.runCosts.map(e=>e.ts)))}:null;return(0,a.jsxs)("div",{className:"h-full flex flex-col overflow-hidden",style:{background:"var(--bg)"},children:[(0,a.jsxs)("header",{className:"sticky top-0 z-10 flex-shrink-0",style:{background:"var(--material-regular)",backdropFilter:"blur(40px) saturate(180%)",WebkitBackdropFilter:"blur(40px) saturate(180%)",borderBottom:"1px solid var(--separator)",padding:"var(--space-4) var(--space-6)"},children:[(0,a.jsx)("h1",{style:{fontSize:"var(--text-title1)",fontWeight:700,color:"var(--text-primary)",letterSpacing:"-0.5px",lineHeight:1.2},children:"Costs"}),!i&&e&&(0,a.jsxs)("p",{style:{fontSize:"var(--text-footnote)",color:"var(--text-secondary)",marginTop:"var(--space-1)"},children:[k?"".concat(k.oldest.toLocaleDateString()," - ").concat(k.newest.toLocaleDateString()):"No data"," \xb7 ",e.runCosts.length," run",1!==e.runCosts.length?"s":""," with cost data"]})]}),(0,a.jsxs)("div",{className:"flex-1 overflow-y-auto",style:{padding:"var(--space-4) var(--space-6) var(--space-6)",minHeight:0},children:[y&&(0,a.jsx)("div",{style:{textAlign:"center",padding:"var(--space-8)",color:"var(--system-red)",fontSize:"var(--text-footnote)"},children:y}),i&&(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"costs-summary-grid",style:{display:"grid",gridTemplateColumns:"repeat(4, 1fr)",gap:"var(--space-3)",marginBottom:"var(--space-4)"},children:[1,2,3,4].map(e=>(0,a.jsxs)("div",{style:{background:"var(--material-regular)",border:"1px solid var(--separator)",borderRadius:"var(--radius-md)",padding:"var(--space-4)"},children:[(0,a.jsx)(o.E,{style:{width:100,height:10,marginBottom:8}}),(0,a.jsx)(o.E,{style:{width:60,height:20}})]},e))}),(0,a.jsx)("div",{style:{background:"var(--material-regular)",border:"1px solid var(--separator)",borderRadius:"var(--radius-md)",overflow:"hidden"},children:[1,2,3,4].map(e=>(0,a.jsxs)("div",{className:"flex items-center",style:{padding:"var(--space-3) var(--space-4)",borderBottom:e<4?"1px solid var(--separator)":void 0,gap:"var(--space-3)"},children:[(0,a.jsx)(o.E,{style:{width:140,height:14}}),(0,a.jsx)(o.E,{style:{width:60,height:14,flex:1}}),(0,a.jsx)(o.E,{style:{width:80,height:14}})]},e))})]}),!i&&!y&&(!e||0===e.runCosts.length)&&(0,a.jsx)("div",{style:{textAlign:"center",padding:"var(--space-8)",color:"var(--text-tertiary)",fontSize:"var(--text-footnote)"},children:"No cost data -- runs without usage metadata will not appear here."}),!i&&!y&&e&&e.runCosts.length>0&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(f,{anomalies:e.anomalies,jobName:b}),(0,a.jsxs)("div",{className:"costs-summary-grid",style:{display:"grid",gridTemplateColumns:"repeat(4, 1fr)",gap:"var(--space-3)",marginBottom:"var(--space-4)"},children:[(0,a.jsx)(m,{label:"Total Estimated Cost",children:(0,a.jsx)("div",{className:"flex items-center",style:{gap:"var(--space-2)"},children:(0,a.jsx)("span",{style:{fontSize:"var(--text-title2)",color:"var(--text-primary)",fontWeight:700,fontVariantNumeric:"tabular-nums"},children:p(e.totalCost)})})}),(0,a.jsx)(m,{label:"Top Spender",children:e.topSpender?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{style:{fontSize:"var(--text-footnote)",fontWeight:600,color:"var(--text-primary)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:b(e.topSpender.jobId)}),(0,a.jsx)("div",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)",fontVariantNumeric:"tabular-nums",marginTop:2},children:p(e.topSpender.cost)})]}):(0,a.jsx)("span",{style:{color:"var(--text-tertiary)"},children:"--"})}),(0,a.jsxs)(m,{label:"Week over Week",children:[(0,a.jsx)("div",{className:"flex items-center",style:{gap:"var(--space-2)"},children:(0,a.jsx)("span",{style:{fontSize:"var(--text-title2)",fontWeight:700,fontVariantNumeric:"tabular-nums",color:null!==e.weekOverWeek.changePct?e.weekOverWeek.changePct<=0?"var(--system-green)":"var(--system-red)":"var(--text-primary)"},children:null!==e.weekOverWeek.changePct?"".concat(e.weekOverWeek.changePct>0?"+":"").concat(e.weekOverWeek.changePct.toFixed(0),"%"):"--"})}),(0,a.jsxs)("div",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)",marginTop:2},children:[p(e.weekOverWeek.thisWeek)," vs"," ",p(e.weekOverWeek.lastWeek)]})]}),(0,a.jsxs)(m,{label:"Cache Savings",children:[(0,a.jsx)("div",{style:{fontSize:"var(--text-title2)",color:"var(--system-green)",fontWeight:700,fontVariantNumeric:"tabular-nums"},children:p(e.cacheSavings.estimatedSavings)}),(0,a.jsxs)("div",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)",marginTop:2},children:[h(e.cacheSavings.cacheTokens)," cache tokens"]})]})]}),(0,a.jsxs)("div",{className:"charts-row",style:{display:"grid",gridTemplateColumns:"2fr 1fr",gap:"var(--space-4)",marginBottom:"var(--space-4)"},children:[(0,a.jsx)(g,{dailyCosts:e.dailyCosts}),(0,a.jsx)(x,{breakdown:e.modelBreakdown})]}),(0,a.jsx)(v,{jobCosts:e.jobCosts,jobName:b})]})]}),(0,a.jsx)("style",{children:"\n @media (max-width: 768px) {\n .costs-summary-grid {\n grid-template-columns: repeat(2, 1fr) !important;\n }\n .charts-row {\n grid-template-columns: 1fr !important;\n }\n }\n @media (max-width: 640px) {\n .costs-summary-grid {\n grid-template-columns: 1fr !important;\n }\n .hidden-mobile { display: none !important; }\n }\n "})]})}function j(){return(0,a.jsx)(n.M,{children:(0,a.jsx)(y,{})})}},1397:(e,t,r)=>{"use strict";r.d(t,{cn:()=>s});var a=r(5242),n=r(3065);function s(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,n.QP)((0,a.$)(t))}},6059:(e,t,r)=>{"use strict";r.d(t,{E:()=>s});var a=r(8111),n=r(1397);function s(e){let{className:t,width:r,height:s,style:o,...l}=e;return(0,a.jsx)("div",{className:(0,n.cn)("animate-shimmer rounded-md",t),style:{background:"linear-gradient(90deg, var(--fill-secondary) 25%, var(--fill-tertiary) 50%, var(--fill-secondary) 75%)",backgroundSize:"200% 100%",width:r,height:s,...o},...l})}},6086:(e,t,r)=>{Promise.resolve().then(r.bind(r,667))}},e=>{e.O(0,[704,590,73,814,743,358],()=>e(e.s=6086)),_N_E=e.O()}]);
|
package/dist/web/_next/static/chunks/app/cron/{page-4c563eef2b6231fe.js → page-0ee07a679c7b79aa.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[271],{1142:(e,t,r)=>{"use strict";r.d(t,{Xi:()=>c,av:()=>p,j7:()=>d,tU:()=>s});var a=r(8111);r(5271);var n=r(3916),i=r(7534),o=r(1397);function s(e){let{className:t,orientation:r="horizontal",...n}=e;return(0,a.jsx)(i.bL,{"data-slot":"tabs","data-orientation":r,orientation:r,className:(0,o.cn)("group/tabs flex gap-2 data-[orientation=horizontal]:flex-col",t),...n})}let l=(0,n.F)("rounded-lg p-[3px] group-data-[orientation=horizontal]/tabs:h-9 data-[variant=line]:rounded-none group/tabs-list text-muted-foreground inline-flex w-fit items-center justify-center group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col",{variants:{variant:{default:"bg-muted",line:"gap-1 bg-transparent"}},defaultVariants:{variant:"default"}});function d(e){let{className:t,variant:r="default",...n}=e;return(0,a.jsx)(i.B8,{"data-slot":"tabs-list","data-variant":r,className:(0,o.cn)(l({variant:r}),t),...n})}function c(e){let{className:t,...r}=e;return(0,a.jsx)(i.l9,{"data-slot":"tabs-trigger",className:(0,o.cn)("focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-foreground/60 hover:text-foreground dark:text-muted-foreground dark:hover:text-foreground relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 group-data-[variant=default]/tabs-list:data-[state=active]:shadow-sm group-data-[variant=line]/tabs-list:data-[state=active]:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4","group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:border-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent","data-[state=active]:bg-background dark:data-[state=active]:text-foreground dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 data-[state=active]:text-foreground","after:bg-foreground after:absolute after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-[state=active]:after:opacity-100",t),...r})}function p(e){let{className:t,...r}=e;return(0,a.jsx)(i.UC,{"data-slot":"tabs-content",className:(0,o.cn)("flex-1 outline-none",t),...r})}},1397:(e,t,r)=>{"use strict";r.d(t,{cn:()=>i});var a=r(5242),n=r(3065);function i(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,n.QP)((0,a.$)(t))}},6059:(e,t,r)=>{"use strict";r.d(t,{E:()=>i});var a=r(8111),n=r(1397);function i(e){let{className:t,width:r,height:i,style:o,...s}=e;return(0,a.jsx)("div",{className:(0,n.cn)("animate-shimmer rounded-md",t),style:{background:"linear-gradient(90deg, var(--fill-secondary) 25%, var(--fill-tertiary) 50%, var(--fill-secondary) 75%)",backgroundSize:"200% 100%",width:r,height:i,...o},...s})}},6115:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>b});var a=r(8111),n=r(5271),i=r(3176);let o=["Sundays","Mondays","Tuesdays","Wednesdays","Thursdays","Fridays","Saturdays"];function s(e){if(!e||!e.trim())return"";let t=e.trim().split(/\s+/);if(5!==t.length)return e;let[r,a,n,,i]=t;if("*"===r&&"*"===a&&"*"===n&&"*"===i)return"Every minute";if(r.startsWith("*/")&&"*"===a&&"*"===n&&"*"===i){let e=parseInt(r.slice(2),10);if(!isNaN(e))return"Every ".concat(e," minutes")}if("*"!==r&&"*"===a&&"*"===n&&"*"===i)return"Every hour";let s=parseInt(a,10),l=parseInt(r,10);if(isNaN(s)||isNaN(l))return e;let d=0===l?function(e,t){let r=0===t?"":":".concat(String(t).padStart(2,"0"));return"".concat(e%12||12).concat(r," ").concat(e<12?"AM":"PM")}(s,l):"".concat(s%12||12,":").concat(String(l).padStart(2,"0")," ").concat(s<12?"AM":"PM");if(n.startsWith("*/")&&"*"===i){let e=parseInt(n.slice(2),10);if(!isNaN(e))return"Every ".concat(e," days at ").concat(d)}if("*"!==n&&"*"===i){let e=parseInt(n,10);if(!isNaN(e))return"Monthly on the ".concat(e).concat(1===e?"st":2===e?"nd":3===e?"rd":"th"," at ").concat(d)}if("*"===n&&"1-5"===i)return"Weekdays at ".concat(d);if("*"===n){let e=parseInt(i,10);if(!isNaN(e)&&e>=0&&e<=6)return"".concat(o[e]," at ").concat(d)}return"*"===n&&"*"===i?"Daily at ".concat(d):e}var l=r(3073),d=r(1142),c=r(6059);let p=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],v=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],u={1:0,2:1,3:2,4:3,5:4,6:5,0:6};function x(e){let{slot:t,rect:r,containerRect:n}=e,i=t.cron.enabled?"var(--system-green)":"var(--text-tertiary)",o=r.top-n.top-8,l=r.left-n.left+r.width/2;return(0,a.jsxs)("div",{style:{position:"absolute",top:o,left:l,transform:"translate(-50%, -100%)",background:"var(--material-regular)",border:"1px solid var(--separator)",borderRadius:"var(--radius-md)",padding:"var(--space-3) var(--space-4)",fontSize:"var(--text-caption1)",color:"var(--text-primary)",pointerEvents:"none",zIndex:100,minWidth:200,maxWidth:300,boxShadow:"0 8px 24px rgba(0,0,0,0.4), 0 2px 8px rgba(0,0,0,0.2)"},children:[(0,a.jsx)("div",{style:{position:"absolute",bottom:-5,left:"50%",transform:"translateX(-50%) rotate(45deg)",width:10,height:10,background:"var(--material-regular)",borderRight:"1px solid var(--separator)",borderBottom:"1px solid var(--separator)"}}),(0,a.jsx)("div",{style:{fontWeight:700,fontSize:"var(--text-footnote)",marginBottom:"var(--space-1)",borderLeft:"3px solid ".concat(i),paddingLeft:"var(--space-2)"},children:t.cron.name}),(0,a.jsx)("div",{style:{color:"var(--text-secondary)",fontSize:"var(--text-caption1)",marginBottom:"var(--space-2)"},children:s(t.cron.schedule)}),(0,a.jsx)("div",{style:{fontFamily:"var(--font-mono)",fontSize:"var(--text-caption2)",color:"var(--text-tertiary)",marginBottom:"var(--space-2)"},children:t.cron.schedule}),(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-2)",fontSize:"var(--text-caption1)"},children:[(0,a.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:t.cron.enabled?"var(--system-green)":"var(--text-tertiary)",flexShrink:0}}),(0,a.jsx)("span",{style:{color:t.cron.enabled?"var(--system-green)":"var(--text-tertiary)",fontWeight:500},children:t.cron.enabled?"Enabled":"Disabled"}),t.cron.employee&&(0,a.jsx)("span",{style:{color:"var(--text-tertiary)",marginLeft:"var(--space-1)"},children:t.cron.employee})]})]})}function h(e){let{crons:t}=e,[r,i]=(0,n.useState)(null),o=(0,n.useRef)(null),[l,d]=(0,n.useState)(null),c=(0,n.useCallback)(()=>{o.current&&d(o.current.getBoundingClientRect())},[]);(0,n.useEffect)(()=>{if(c(),o.current)return window.addEventListener("resize",c,{passive:!0}),()=>{window.removeEventListener("resize",c)}},[c]);let{slotsByDayHour:h,activeHours:g}=(0,n.useMemo)(()=>{let e=new Map,r=new Set;for(let a of t){if(!a.enabled)continue;let t=function(e){let t;if(!e||!e.trim())return null;let r=e.trim().split(/\s+/);if(5!==r.length)return null;let[a,n,,,i]=r,o=parseInt(a,10),s=parseInt(n,10);if(isNaN(o)||isNaN(s))return null;if("*"===i)t=[0,1,2,3,4,5,6];else if("1-5"===i)t=[1,2,3,4,5];else if("0-6"===i||"0,1,2,3,4,5,6"===i)t=[0,1,2,3,4,5,6];else if(i.includes(",")){if(0===(t=i.split(",").map(Number).filter(e=>!isNaN(e)&&e>=0&&e<=6)).length)return null}else{let e=parseInt(i,10);if(isNaN(e)||e<0||e>6)return null;t=[e]}return{hour:s,minute:o,days:t}}(a.schedule);if(t)for(let n of t.days){let i=u[n];if(void 0===i)continue;let o="".concat(i,"-").concat(t.hour),s=e.get(o)||[];s.push({cron:a,hour:t.hour,minute:t.minute,col:i}),e.set(o,s),r.add(t.hour)}}for(let[t,r]of e)e.set(t,r.sort((e,t)=>e.minute-t.minute||e.cron.name.localeCompare(t.cron.name)));return{slotsByDayHour:e,activeHours:Array.from(r).sort((e,t)=>e-t)}},[t]),f=new Date,m=u[f.getDay()],y=f.getHours(),b=f.getMinutes()/60,j=(0,n.useMemo)(()=>{let e=new Map;for(let r of g){let a=0;for(let e=0;e<7;e++){var t;let n="".concat(e,"-").concat(r),i=(null==(t=h.get(n))?void 0:t.length)||0;i>a&&(a=i)}e.set(r,a)}return e},[g,h]);return((0,n.useEffect)(()=>{if(!r)return;let e=()=>i(null);return document.addEventListener("click",e),()=>document.removeEventListener("click",e)},[r]),0===g.length)?(0,a.jsxs)("div",{className:"flex flex-col items-center justify-center",style:{height:200,color:"var(--text-secondary)",gap:"var(--space-2)"},children:[(0,a.jsxs)("svg",{width:"32",height:"32",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",style:{color:"var(--text-tertiary)",marginBottom:"var(--space-2)"},children:[(0,a.jsx)("rect",{x:"3",y:"4",width:"18",height:"18",rx:"2",ry:"2"}),(0,a.jsx)("line",{x1:"16",y1:"2",x2:"16",y2:"6"}),(0,a.jsx)("line",{x1:"8",y1:"2",x2:"8",y2:"6"}),(0,a.jsx)("line",{x1:"3",y1:"10",x2:"21",y2:"10"})]}),(0,a.jsx)("span",{style:{fontSize:"var(--text-subheadline)",fontWeight:500},children:"No scheduled jobs to display"}),(0,a.jsx)("span",{style:{fontSize:"var(--text-footnote)",color:"var(--text-tertiary)"},children:"Enable some cron jobs to see the weekly schedule"})]}):(0,a.jsxs)("div",{ref:o,style:{position:"relative"},onClick:()=>i(null),children:[(0,a.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"56px repeat(7, 1fr)",background:"var(--material-regular)",borderRadius:"var(--radius-md)",border:"1px solid var(--separator)",overflow:"hidden"},children:[(0,a.jsx)("div",{style:{padding:"var(--space-3) var(--space-2)",borderBottom:"1px solid var(--separator)",background:"var(--material-thick)"}}),p.map((e,t)=>{let r=t===m;return(0,a.jsxs)("div",{style:{padding:"var(--space-3) var(--space-2)",textAlign:"center",borderBottom:"1px solid var(--separator)",borderLeft:"1px solid var(--separator)",background:r?"var(--accent-fill)":"var(--material-thick)",position:"relative"},children:[(0,a.jsx)("div",{title:v[t],style:{fontSize:"var(--text-footnote)",fontWeight:r?700:600,color:r?"var(--accent)":"var(--text-primary)",letterSpacing:"0.02em"},children:e}),r&&(0,a.jsx)("div",{style:{position:"absolute",bottom:-3,left:"50%",transform:"translateX(-50%)",width:6,height:6,borderRadius:"50%",background:"var(--accent)",zIndex:2}})]},e)}),g.map((e,t)=>{let n=j.get(e)||1,o=8+28*n+(n-1)*4,l=e===y,d=t===g.length-1;return(0,a.jsxs)("div",{style:{display:"contents"},children:[(0,a.jsx)("div",{style:{padding:"var(--space-2)",display:"flex",alignItems:"flex-start",justifyContent:"flex-end",borderBottom:d?"none":"1px solid var(--separator)",minHeight:o,background:l?"var(--accent-fill)":void 0,position:"relative"},children:(0,a.jsx)("span",{style:{fontSize:"var(--text-caption1)",fontFamily:"var(--font-mono)",color:l?"var(--accent)":"var(--text-tertiary)",fontWeight:l?600:400,lineHeight:1.2,whiteSpace:"nowrap",paddingTop:2},title:0===e||24===e?"12 AM":12===e?"12 PM":e<12?"".concat(e," AM"):"".concat(e-12," PM"),children:0===e||24===e?"12a":12===e?"12p":e<12?"".concat(e,"a"):"".concat(e-12,"p")})}),Array.from({length:7},(t,n)=>{let p="".concat(n,"-").concat(e),v=h.get(p)||[],u=n===m,x=u&&l;return(0,a.jsxs)("div",{style:{padding:"".concat(4,"px 4px"),borderLeft:"1px solid var(--separator)",borderBottom:d?"none":"1px solid var(--separator)",minHeight:o,display:"flex",flexDirection:"column",gap:4,background:x?"color-mix(in srgb, var(--accent) 6%, transparent)":u?"color-mix(in srgb, var(--accent) 3%, transparent)":void 0,position:"relative"},children:[x&&(0,a.jsx)("div",{style:{position:"absolute",top:"".concat((100*b).toFixed(1),"%"),left:0,right:0,height:2,background:"var(--system-red)",opacity:.8,zIndex:3,borderRadius:1}}),v.map((e,t)=>{let n=e.cron.enabled?"var(--system-green)":"var(--text-tertiary)",o=(null==r?void 0:r.slot.cron.id)===e.cron.id&&(null==r?void 0:r.slot.col)===e.col&&(null==r?void 0:r.slot.hour)===e.hour;return(0,a.jsxs)("button",{type:"button",title:"".concat(e.cron.name," - ").concat(s(e.cron.schedule)),onClick:t=>{t.stopPropagation();let r=t.currentTarget.getBoundingClientRect();c(),o?i(null):i({slot:e,rect:r})},onMouseEnter:t=>(function(e,t){let r=t.currentTarget.getBoundingClientRect();c(),i({slot:e,rect:r})})(e,t),onMouseLeave:()=>i(null),style:{display:"flex",alignItems:"center",gap:5,height:28,padding:"0 6px",borderRadius:"var(--radius-sm)",border:"none",cursor:"pointer",width:"100%",minWidth:0,background:o?"color-mix(in srgb, ".concat(n," 25%, transparent)"):"color-mix(in srgb, ".concat(n," 12%, transparent)"),borderLeft:"3px solid ".concat(n),transition:"background 150ms ease, box-shadow 150ms ease",boxShadow:o?"0 0 0 1px color-mix(in srgb, ".concat(n," 40%, transparent)"):"none",textAlign:"left",position:"relative",overflow:"hidden"},children:[(0,a.jsx)("span",{style:{width:6,height:6,borderRadius:"50%",flexShrink:0,background:e.cron.enabled?"var(--system-green)":"var(--text-tertiary)"}}),(0,a.jsx)("span",{style:{fontSize:"var(--text-caption2)",fontFamily:"var(--font-mono)",color:"var(--text-tertiary)",flexShrink:0,lineHeight:1},children:":".concat(String(e.minute).padStart(2,"0"))}),(0,a.jsx)("span",{style:{fontSize:"var(--text-caption2)",fontWeight:600,color:n,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0,flex:1,lineHeight:1},children:e.cron.name})]},"".concat(p,"-").concat(t))}),0===v.length&&(0,a.jsx)("div",{style:{flex:1}})]},p)})]},e)})]}),r&&l&&(0,a.jsx)(x,{slot:r.slot,rect:r.rect,containerRect:l})]})}function g(e){let{crons:t}=e;if(0===t.length)return(0,a.jsxs)("div",{style:{background:"var(--material-regular)",border:"1px solid var(--separator)",borderRadius:"var(--radius-md)",padding:"32px 24px",textAlign:"center"},children:[(0,a.jsx)("div",{style:{fontSize:14,fontWeight:700,color:"var(--text-primary)",marginBottom:8},children:"No cron jobs configured"}),(0,a.jsx)("div",{style:{fontSize:12,color:"var(--text-secondary)",maxWidth:480,margin:"0 auto",lineHeight:1.6},children:"Cron jobs will appear here as cards once configured."})]});let r=t.filter(e=>e.enabled),n=t.filter(e=>!e.enabled);return(0,a.jsxs)("div",{children:[r.length>0&&(0,a.jsx)(f,{crons:r,label:"Enabled"}),n.length>0&&(0,a.jsx)(f,{crons:n,label:"Disabled"})]})}function f(e){let{crons:t,label:r}=e;return(0,a.jsxs)("div",{style:{marginBottom:24},children:[(0,a.jsxs)("div",{style:{fontSize:13,fontWeight:700,color:"var(--text-secondary)",marginBottom:12},children:[r," (",t.length,")"]}),(0,a.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(220px, 1fr))",gap:10},children:t.map(e=>{let t=e.enabled?"var(--system-green)":"var(--text-tertiary)";return(0,a.jsxs)("div",{style:{background:"var(--material-regular)",borderRadius:"var(--radius-md)",border:"1px solid var(--separator)",borderLeft:"3px solid ".concat(t),padding:"10px 14px"},children:[(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:4},children:[(0,a.jsx)("div",{style:{width:7,height:7,borderRadius:"50%",background:e.enabled?"var(--system-green)":"var(--text-tertiary)",flexShrink:0}}),(0,a.jsx)("div",{style:{fontSize:12,fontWeight:600,color:"var(--text-primary)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:e.name})]}),(0,a.jsx)("div",{style:{fontSize:10,color:"var(--text-secondary)",marginBottom:2},children:s(e.schedule)}),(0,a.jsx)("div",{style:{fontSize:10,fontFamily:"var(--font-mono)",color:"var(--text-tertiary)",marginBottom:4},children:e.schedule}),(0,a.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",gap:4},children:[e.employee&&(0,a.jsx)("span",{style:{display:"inline-block",fontSize:9,padding:"1px 6px",borderRadius:4,background:"color-mix(in srgb, var(--system-blue) 15%, transparent)",color:"var(--system-blue)"},children:e.employee}),e.engine&&(0,a.jsx)("span",{style:{display:"inline-block",fontSize:9,padding:"1px 6px",borderRadius:4,background:"var(--fill-tertiary)",color:"var(--text-tertiary)"},children:e.engine})]})]},e.id)})})]})}function m(e){if(!e)return"never";let t=new Date(e);if(isNaN(t.getTime()))return"—";let r=Date.now()-t.getTime(),a=Math.floor(r/6e4),n=Math.floor(r/36e5),i=Math.floor(r/864e5);return a<1?"just now":a<60?"".concat(a,"m ago"):n<24?"".concat(n,"h ago"):"".concat(i,"d ago")}function y(e){let{jobId:t}=e,[r,o]=(0,n.useState)(null),[s,l]=(0,n.useState)(!0);return((0,n.useEffect)(()=>{i.F.getCronRuns(t).then(e=>{o(e.slice(0,5)),l(!1)}).catch(()=>{o([]),l(!1)})},[t]),s)?(0,a.jsxs)("div",{style:{marginTop:"var(--space-3)"},children:[(0,a.jsx)("div",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)",fontWeight:600,marginBottom:"var(--space-2)"},children:"Recent Runs"}),[1,2,3].map(e=>(0,a.jsx)(c.E,{style:{height:16,marginBottom:4,width:"80%"}},e))]}):r&&0!==r.length?(0,a.jsxs)("div",{style:{marginTop:"var(--space-3)"},children:[(0,a.jsx)("div",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)",fontWeight:600,marginBottom:"var(--space-2)"},children:"Recent Runs"}),(0,a.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:4},children:r.map((e,t)=>{let r=e.ts||e.startedAt||"",n=e.status||"unknown",i=m(r),o=null!=e.durationMs?function(e){if(e<0||!Number.isFinite(e))return"—";let t=Math.round(e/1e3);if(t<60)return"".concat(t,"s");let r=Math.floor(t/60),a=t%60;if(r<60)return a>0?"".concat(r,"m ").concat(a,"s"):"".concat(r,"m");let n=Math.floor(r/60);return"".concat(n,"h ").concat(r%60,"m")}(e.durationMs):"—";return(0,a.jsxs)("div",{className:"flex items-center",style:{gap:"var(--space-2)",fontSize:"var(--text-caption2)",minHeight:22,padding:"2px 0"},children:[(0,a.jsx)("span",{style:{width:6,height:6,borderRadius:"50%",background:"success"===n||"ok"===n?"var(--system-green)":"error"===n||"failed"===n?"var(--system-red)":"var(--text-tertiary)",flexShrink:0}}),(0,a.jsx)("span",{style:{color:"var(--text-tertiary)",minWidth:52,flexShrink:0},children:i}),(0,a.jsx)("span",{style:{color:"var(--text-secondary)",minWidth:52,flexShrink:0},children:o}),(0,a.jsx)("span",{style:{color:"var(--text-secondary)",textTransform:"capitalize"},children:n}),e.error&&(0,a.jsx)("span",{className:"truncate",style:{color:"var(--system-red)",minWidth:0,flex:1},children:e.error})]},"".concat(r,"-").concat(t))})})]}):(0,a.jsxs)("div",{style:{marginTop:"var(--space-3)"},children:[(0,a.jsx)("div",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)",fontWeight:600,marginBottom:"var(--space-2)"},children:"Recent Runs"}),(0,a.jsx)("div",{style:{fontSize:"var(--text-caption2)",color:"var(--text-tertiary)"},children:"No run history"})]})}function b(){let[e,t]=(0,n.useState)([]),[r,o]=(0,n.useState)(!0),[p,v]=(0,n.useState)(null),[u,x]=(0,n.useState)("all"),[f,b]=(0,n.useState)(null),[k,S]=(0,n.useState)("just now"),[w,z]=(0,n.useState)(new Date),N=(0,n.useCallback)(()=>{v(null),i.F.getCronJobs().then(e=>{t(e),z(new Date)}).catch(e=>v(e instanceof Error?e.message:"Unknown error")).finally(()=>o(!1))},[]);(0,n.useEffect)(()=>{N();let e=setInterval(N,6e4);return()=>clearInterval(e)},[N]),(0,n.useEffect)(()=>{let e=()=>S(m(w.toISOString()));e();let t=setInterval(e,3e4);return()=>clearInterval(t)},[w]);let R=e.filter(e=>e.enabled).length,B=e.filter(e=>!e.enabled).length,W=e.filter(e=>"enabled"===u?e.enabled:"disabled"!==u||!e.enabled);return(0,a.jsx)(l.M,{children:(0,a.jsxs)("div",{className:"h-full flex flex-col overflow-hidden",style:{background:"var(--bg)"},children:[(0,a.jsx)("header",{className:"flex-shrink-0",style:{background:"var(--material-regular)",borderBottom:"1px solid var(--separator)",padding:"var(--space-4) var(--space-6)"},children:(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h1",{style:{fontSize:"var(--text-title1)",fontWeight:700,color:"var(--text-primary)",letterSpacing:"-0.5px",lineHeight:1.2},children:"Cron Jobs"}),!r&&(0,a.jsxs)("p",{style:{fontSize:"var(--text-footnote)",color:"var(--text-secondary)",marginTop:"var(--space-1)"},children:[e.length," total \xb7 ",R," enabled \xb7 ",B," disabled"]})]}),(0,a.jsxs)("div",{className:"flex items-center",style:{gap:"var(--space-3)"},children:[(0,a.jsxs)("span",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)"},children:["Updated ",k]}),(0,a.jsx)("button",{onClick:N,"aria-label":"Refresh cron data",style:{width:32,height:32,display:"flex",alignItems:"center",justifyContent:"center",borderRadius:"var(--radius-sm)",border:"none",background:"transparent",color:"var(--text-tertiary)",cursor:"pointer"},children:(0,a.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,a.jsx)("path",{d:"M21 2v6h-6"}),(0,a.jsx)("path",{d:"M3 12a9 9 0 0 1 15-6.7L21 8"}),(0,a.jsx)("path",{d:"M3 22v-6h6"}),(0,a.jsx)("path",{d:"M21 12a9 9 0 0 1-15 6.7L3 16"})]})})]})]})}),(0,a.jsx)("div",{className:"flex-1 overflow-y-auto",style:{padding:"var(--space-4) var(--space-6) var(--space-6)"},children:p&&0===e.length?(0,a.jsxs)("div",{style:{background:"rgba(255,69,58,0.06)",border:"1px solid var(--system-red)",borderRadius:"var(--radius-md)",padding:"var(--space-4)",color:"var(--system-red)",fontSize:"var(--text-footnote)",marginBottom:"var(--space-4)"},children:["Failed to load cron jobs: ",p,(0,a.jsx)("button",{onClick:N,style:{marginLeft:"var(--space-3)",textDecoration:"underline",background:"none",border:"none",color:"inherit",cursor:"pointer",fontSize:"inherit"},children:"Retry"})]}):r?(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(3, 1fr)",gap:"var(--space-3)",marginBottom:"var(--space-4)"},children:[1,2,3].map(e=>(0,a.jsxs)("div",{style:{background:"var(--material-regular)",border:"1px solid var(--separator)",borderRadius:"var(--radius-md)",padding:"var(--space-4)"},children:[(0,a.jsx)(c.E,{style:{width:60,height:10,marginBottom:8}}),(0,a.jsx)(c.E,{style:{width:80,height:14}})]},e))}),[1,2,3,4].map(e=>(0,a.jsx)(c.E,{style:{height:48,marginBottom:4,borderRadius:"var(--radius-sm)"}},e))]}):(0,a.jsxs)(d.tU,{defaultValue:"overview",children:[(0,a.jsxs)(d.j7,{variant:"line",children:[(0,a.jsx)(d.Xi,{value:"overview",children:"Overview"}),(0,a.jsx)(d.Xi,{value:"schedule",children:"Schedule"}),(0,a.jsx)(d.Xi,{value:"pipelines",children:"Pipelines"})]}),(0,a.jsxs)(d.av,{value:"overview",children:[(0,a.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(3, 1fr)",gap:"var(--space-3)",marginBottom:"var(--space-4)",marginTop:"var(--space-4)"},children:[(0,a.jsx)(j,{label:"Total Jobs",value:e.length}),(0,a.jsx)(j,{label:"Enabled",value:R,color:"var(--system-green)"}),(0,a.jsx)(j,{label:"Disabled",value:B,color:"var(--text-tertiary)"})]}),(0,a.jsx)("div",{className:"flex items-center",style:{gap:"var(--space-2)",marginBottom:"var(--space-3)"},children:["all","enabled","disabled"].map(t=>{let r=u===t,n="all"===t?e.length:"enabled"===t?R:B;return(0,a.jsxs)("button",{onClick:()=>x(t),style:{borderRadius:20,padding:"6px 14px",fontSize:"var(--text-footnote)",fontWeight:500,border:"none",cursor:"pointer",transition:"all 200ms ease",background:r?"var(--accent-fill)":"var(--fill-secondary)",color:r?"var(--accent)":"var(--text-primary)"},children:[t.charAt(0).toUpperCase()+t.slice(1)," (",n,")"]},t)})}),0===W.length?(0,a.jsxs)("div",{className:"flex flex-col items-center justify-center",style:{height:200,color:"var(--text-secondary)",gap:"var(--space-2)"},children:[(0,a.jsxs)("svg",{width:"32",height:"32",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",style:{color:"var(--text-tertiary)",marginBottom:"var(--space-2)"},children:[(0,a.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,a.jsx)("polyline",{points:"12 6 12 12 16 14"})]}),(0,a.jsx)("span",{style:{fontSize:"var(--text-subheadline)",fontWeight:500},children:0===e.length?"No cron jobs configured":"No jobs match this filter"})]}):(0,a.jsx)("div",{style:{borderRadius:"var(--radius-md)",overflow:"hidden",background:"var(--material-regular)",border:"1px solid var(--separator)"},children:W.map((e,r)=>{let n=f===e.id;return(0,a.jsxs)("div",{children:[r>0&&(0,a.jsx)("div",{style:{height:1,background:"var(--separator)",marginLeft:"var(--space-4)",marginRight:"var(--space-4)"}}),(0,a.jsxs)("div",{role:"button",tabIndex:0,"aria-expanded":n,onClick:()=>b(n?null:e.id),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&(t.preventDefault(),b(n?null:e.id))},className:"flex items-center cursor-pointer",style:{minHeight:48,padding:"0 var(--space-4)",borderLeft:"3px solid ".concat(e.enabled?"var(--system-green)":"transparent"),transition:"background 150ms ease"},onMouseEnter:e=>{e.currentTarget.style.background="var(--fill-secondary)"},onMouseLeave:e=>{e.currentTarget.style.background=""},children:[(0,a.jsx)("span",{style:{width:8,height:8,borderRadius:"50%",background:e.enabled?"var(--system-green)":"var(--text-tertiary)",flexShrink:0}}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",style:{marginLeft:12,display:"flex",flexDirection:"column"},children:[(0,a.jsx)("span",{className:"truncate",style:{fontSize:"var(--text-footnote)",fontWeight:600,color:"var(--text-primary)"},children:e.name}),(0,a.jsx)("span",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)"},children:s(e.schedule)})]}),(0,a.jsxs)("div",{className:"flex items-center flex-shrink-0",style:{gap:"var(--space-2)",marginLeft:"auto"},children:[e.employee&&(0,a.jsx)("span",{style:{fontSize:"var(--text-caption1)",padding:"1px 8px",borderRadius:12,background:"color-mix(in srgb, var(--system-blue) 15%, transparent)",color:"var(--system-blue)"},children:e.employee}),e.engine&&(0,a.jsx)("span",{style:{fontSize:"var(--text-caption1)",padding:"1px 8px",borderRadius:12,background:"var(--fill-tertiary)",color:"var(--text-tertiary)"},children:e.engine}),(0,a.jsx)("button",{onClick:r=>{r.stopPropagation();let a=!e.enabled;i.F.updateCronJob(e.id,{enabled:a}).then(()=>{t(t=>t.map(t=>t.id===e.id?{...t,enabled:a}:t))}).catch(()=>{})},"aria-label":e.enabled?"Disable job":"Enable job",style:{position:"relative",display:"inline-flex",alignItems:"center",width:36,height:20,borderRadius:10,border:"none",cursor:"pointer",background:e.enabled?"var(--system-green)":"var(--fill-tertiary)",transition:"background 200ms ease",flexShrink:0},children:(0,a.jsx)("span",{style:{display:"block",width:14,height:14,borderRadius:"50%",background:"white",transition:"transform 200ms ease",transform:e.enabled?"translateX(18px)":"translateX(3px)"}})}),(0,a.jsx)("span",{style:{fontSize:"var(--text-footnote)",color:"var(--text-tertiary)",transition:"transform 200ms ease",transform:n?"rotate(90deg)":"rotate(0deg)",display:"inline-block"},children:"›"})]})]}),n&&(0,a.jsxs)("div",{style:{padding:"0 var(--space-4) var(--space-4) var(--space-4)",marginLeft:3},children:[(0,a.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"auto 1fr",gap:"var(--space-1) var(--space-4)",marginTop:"var(--space-2)",marginBottom:"var(--space-3)"},children:[(0,a.jsx)("span",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)"},children:"Schedule"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{style:{fontSize:"var(--text-caption1)",color:"var(--text-secondary)"},children:s(e.schedule)}),(0,a.jsxs)("div",{style:{fontSize:"var(--text-caption2)",fontFamily:"var(--font-mono)",color:"var(--text-tertiary)",marginTop:2},children:[e.schedule,e.timezone&&(0,a.jsxs)("span",{style:{marginLeft:8},children:["(",e.timezone,")"]})]})]}),(0,a.jsx)("span",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)"},children:"Status"}),(0,a.jsx)("span",{style:{fontSize:"var(--text-caption1)",color:e.enabled?"var(--system-green)":"var(--text-tertiary)",fontWeight:500},children:e.enabled?"Enabled":"Disabled"}),e.engine&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)"},children:"Engine"}),(0,a.jsx)("span",{style:{fontSize:"var(--text-caption1)",color:"var(--text-secondary)"},children:e.engine})]}),e.model&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)"},children:"Model"}),(0,a.jsx)("span",{style:{fontSize:"var(--text-caption1)",color:"var(--text-secondary)",fontFamily:"var(--font-mono)"},children:e.model})]}),e.employee&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)"},children:"Employee"}),(0,a.jsx)("span",{style:{fontSize:"var(--text-caption1)",color:"var(--text-secondary)"},children:e.employee})]})]}),(0,a.jsx)(y,{jobId:e.id})]})]},e.id)})})]}),(0,a.jsx)(d.av,{value:"schedule",children:(0,a.jsx)("div",{style:{marginTop:"var(--space-4)"},children:(0,a.jsx)(h,{crons:e})})}),(0,a.jsx)(d.av,{value:"pipelines",children:(0,a.jsx)("div",{style:{marginTop:"var(--space-4)"},children:(0,a.jsx)(g,{crons:e})})})]})})]})})}function j(e){let{label:t,value:r,color:n}=e;return(0,a.jsxs)("div",{style:{background:"var(--material-regular)",border:"1px solid var(--separator)",borderRadius:"var(--radius-md)",padding:"var(--space-4)"},children:[(0,a.jsx)("div",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)",fontWeight:500,marginBottom:"var(--space-1)"},children:t}),(0,a.jsx)("div",{style:{fontSize:"var(--text-title2)",fontWeight:700,color:n||"var(--text-primary)"},children:r})]})}},6530:(e,t,r)=>{Promise.resolve().then(r.bind(r,6115))}},e=>{e.O(0,[704,590,198,534,73,814,743,358],()=>e(e.s=6530)),_N_E=e.O()}]);
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[271],{1142:(e,t,r)=>{"use strict";r.d(t,{Xi:()=>c,av:()=>p,j7:()=>d,tU:()=>s});var a=r(8111);r(5271);var n=r(3916),i=r(7534),o=r(1397);function s(e){let{className:t,orientation:r="horizontal",...n}=e;return(0,a.jsx)(i.bL,{"data-slot":"tabs","data-orientation":r,orientation:r,className:(0,o.cn)("group/tabs flex gap-2 data-[orientation=horizontal]:flex-col",t),...n})}let l=(0,n.F)("rounded-lg p-[3px] group-data-[orientation=horizontal]/tabs:h-9 data-[variant=line]:rounded-none group/tabs-list text-muted-foreground inline-flex w-fit items-center justify-center group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col",{variants:{variant:{default:"bg-muted",line:"gap-1 bg-transparent"}},defaultVariants:{variant:"default"}});function d(e){let{className:t,variant:r="default",...n}=e;return(0,a.jsx)(i.B8,{"data-slot":"tabs-list","data-variant":r,className:(0,o.cn)(l({variant:r}),t),...n})}function c(e){let{className:t,...r}=e;return(0,a.jsx)(i.l9,{"data-slot":"tabs-trigger",className:(0,o.cn)("focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-foreground/60 hover:text-foreground dark:text-muted-foreground dark:hover:text-foreground relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 group-data-[variant=default]/tabs-list:data-[state=active]:shadow-sm group-data-[variant=line]/tabs-list:data-[state=active]:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4","group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:border-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent","data-[state=active]:bg-background dark:data-[state=active]:text-foreground dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 data-[state=active]:text-foreground","after:bg-foreground after:absolute after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-[state=active]:after:opacity-100",t),...r})}function p(e){let{className:t,...r}=e;return(0,a.jsx)(i.UC,{"data-slot":"tabs-content",className:(0,o.cn)("flex-1 outline-none",t),...r})}},1397:(e,t,r)=>{"use strict";r.d(t,{cn:()=>i});var a=r(5242),n=r(3065);function i(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,n.QP)((0,a.$)(t))}},6059:(e,t,r)=>{"use strict";r.d(t,{E:()=>i});var a=r(8111),n=r(1397);function i(e){let{className:t,width:r,height:i,style:o,...s}=e;return(0,a.jsx)("div",{className:(0,n.cn)("animate-shimmer rounded-md",t),style:{background:"linear-gradient(90deg, var(--fill-secondary) 25%, var(--fill-tertiary) 50%, var(--fill-secondary) 75%)",backgroundSize:"200% 100%",width:r,height:i,...o},...s})}},6115:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>b});var a=r(8111),n=r(5271),i=r(3176);let o=["Sundays","Mondays","Tuesdays","Wednesdays","Thursdays","Fridays","Saturdays"];function s(e){if(!e||!e.trim())return"";let t=e.trim().split(/\s+/);if(5!==t.length)return e;let[r,a,n,,i]=t;if("*"===r&&"*"===a&&"*"===n&&"*"===i)return"Every minute";if(r.startsWith("*/")&&"*"===a&&"*"===n&&"*"===i){let e=parseInt(r.slice(2),10);if(!isNaN(e))return"Every ".concat(e," minutes")}if("*"!==r&&"*"===a&&"*"===n&&"*"===i)return"Every hour";let s=parseInt(a,10),l=parseInt(r,10);if(isNaN(s)||isNaN(l))return e;let d=0===l?function(e,t){let r=0===t?"":":".concat(String(t).padStart(2,"0"));return"".concat(e%12||12).concat(r," ").concat(e<12?"AM":"PM")}(s,l):"".concat(s%12||12,":").concat(String(l).padStart(2,"0")," ").concat(s<12?"AM":"PM");if(n.startsWith("*/")&&"*"===i){let e=parseInt(n.slice(2),10);if(!isNaN(e))return"Every ".concat(e," days at ").concat(d)}if("*"!==n&&"*"===i){let e=parseInt(n,10);if(!isNaN(e))return"Monthly on the ".concat(e).concat(1===e?"st":2===e?"nd":3===e?"rd":"th"," at ").concat(d)}if("*"===n&&"1-5"===i)return"Weekdays at ".concat(d);if("*"===n){let e=parseInt(i,10);if(!isNaN(e)&&e>=0&&e<=6)return"".concat(o[e]," at ").concat(d)}return"*"===n&&"*"===i?"Daily at ".concat(d):e}var l=r(3073),d=r(1142),c=r(6059);let p=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],v=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],u={1:0,2:1,3:2,4:3,5:4,6:5,0:6};function x(e){let{slot:t,rect:r,containerRect:n}=e,i=t.cron.enabled?"var(--system-green)":"var(--text-tertiary)",o=r.top-n.top-8,l=r.left-n.left+r.width/2;return(0,a.jsxs)("div",{style:{position:"absolute",top:o,left:l,transform:"translate(-50%, -100%)",background:"var(--material-regular)",border:"1px solid var(--separator)",borderRadius:"var(--radius-md)",padding:"var(--space-3) var(--space-4)",fontSize:"var(--text-caption1)",color:"var(--text-primary)",pointerEvents:"none",zIndex:100,minWidth:200,maxWidth:300,boxShadow:"0 8px 24px rgba(0,0,0,0.4), 0 2px 8px rgba(0,0,0,0.2)"},children:[(0,a.jsx)("div",{style:{position:"absolute",bottom:-5,left:"50%",transform:"translateX(-50%) rotate(45deg)",width:10,height:10,background:"var(--material-regular)",borderRight:"1px solid var(--separator)",borderBottom:"1px solid var(--separator)"}}),(0,a.jsx)("div",{style:{fontWeight:700,fontSize:"var(--text-footnote)",marginBottom:"var(--space-1)",borderLeft:"3px solid ".concat(i),paddingLeft:"var(--space-2)"},children:t.cron.name}),(0,a.jsx)("div",{style:{color:"var(--text-secondary)",fontSize:"var(--text-caption1)",marginBottom:"var(--space-2)"},children:s(t.cron.schedule)}),(0,a.jsx)("div",{style:{fontFamily:"var(--font-mono)",fontSize:"var(--text-caption2)",color:"var(--text-tertiary)",marginBottom:"var(--space-2)"},children:t.cron.schedule}),(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-2)",fontSize:"var(--text-caption1)"},children:[(0,a.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:t.cron.enabled?"var(--system-green)":"var(--text-tertiary)",flexShrink:0}}),(0,a.jsx)("span",{style:{color:t.cron.enabled?"var(--system-green)":"var(--text-tertiary)",fontWeight:500},children:t.cron.enabled?"Enabled":"Disabled"}),t.cron.employee&&(0,a.jsx)("span",{style:{color:"var(--text-tertiary)",marginLeft:"var(--space-1)"},children:t.cron.employee})]})]})}function g(e){let{crons:t}=e,[r,i]=(0,n.useState)(null),o=(0,n.useRef)(null),[l,d]=(0,n.useState)(null),c=(0,n.useCallback)(()=>{o.current&&d(o.current.getBoundingClientRect())},[]);(0,n.useEffect)(()=>{if(c(),o.current)return window.addEventListener("resize",c,{passive:!0}),()=>{window.removeEventListener("resize",c)}},[c]);let{slotsByDayHour:g,activeHours:h}=(0,n.useMemo)(()=>{let e=new Map,r=new Set;for(let a of t){if(!a.enabled)continue;let t=function(e){let t;if(!e||!e.trim())return null;let r=e.trim().split(/\s+/);if(5!==r.length)return null;let[a,n,,,i]=r,o=parseInt(a,10),s=parseInt(n,10);if(isNaN(o)||isNaN(s))return null;if("*"===i)t=[0,1,2,3,4,5,6];else if("1-5"===i)t=[1,2,3,4,5];else if("0-6"===i||"0,1,2,3,4,5,6"===i)t=[0,1,2,3,4,5,6];else if(i.includes(",")){if(0===(t=i.split(",").map(Number).filter(e=>!isNaN(e)&&e>=0&&e<=6)).length)return null}else{let e=parseInt(i,10);if(isNaN(e)||e<0||e>6)return null;t=[e]}return{hour:s,minute:o,days:t}}(a.schedule);if(t)for(let n of t.days){let i=u[n];if(void 0===i)continue;let o="".concat(i,"-").concat(t.hour),s=e.get(o)||[];s.push({cron:a,hour:t.hour,minute:t.minute,col:i}),e.set(o,s),r.add(t.hour)}}for(let[t,r]of e)e.set(t,r.sort((e,t)=>e.minute-t.minute||e.cron.name.localeCompare(t.cron.name)));return{slotsByDayHour:e,activeHours:Array.from(r).sort((e,t)=>e-t)}},[t]),f=new Date,m=u[f.getDay()],y=f.getHours(),b=f.getMinutes()/60,j=(0,n.useMemo)(()=>{let e=new Map;for(let r of h){let a=0;for(let e=0;e<7;e++){var t;let n="".concat(e,"-").concat(r),i=(null==(t=g.get(n))?void 0:t.length)||0;i>a&&(a=i)}e.set(r,a)}return e},[h,g]);return((0,n.useEffect)(()=>{if(!r)return;let e=()=>i(null);return document.addEventListener("click",e),()=>document.removeEventListener("click",e)},[r]),0===h.length)?(0,a.jsxs)("div",{className:"flex flex-col items-center justify-center",style:{height:200,color:"var(--text-secondary)",gap:"var(--space-2)"},children:[(0,a.jsxs)("svg",{width:"32",height:"32",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",style:{color:"var(--text-tertiary)",marginBottom:"var(--space-2)"},children:[(0,a.jsx)("rect",{x:"3",y:"4",width:"18",height:"18",rx:"2",ry:"2"}),(0,a.jsx)("line",{x1:"16",y1:"2",x2:"16",y2:"6"}),(0,a.jsx)("line",{x1:"8",y1:"2",x2:"8",y2:"6"}),(0,a.jsx)("line",{x1:"3",y1:"10",x2:"21",y2:"10"})]}),(0,a.jsx)("span",{style:{fontSize:"var(--text-subheadline)",fontWeight:500},children:"No scheduled jobs to display"}),(0,a.jsx)("span",{style:{fontSize:"var(--text-footnote)",color:"var(--text-tertiary)"},children:"Enable some cron jobs to see the weekly schedule"})]}):(0,a.jsxs)("div",{ref:o,style:{position:"relative"},onClick:()=>i(null),children:[(0,a.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"56px repeat(7, 1fr)",background:"var(--material-regular)",borderRadius:"var(--radius-md)",border:"1px solid var(--separator)",overflow:"hidden"},children:[(0,a.jsx)("div",{style:{padding:"var(--space-3) var(--space-2)",borderBottom:"1px solid var(--separator)",background:"var(--material-thick)"}}),p.map((e,t)=>{let r=t===m;return(0,a.jsxs)("div",{style:{padding:"var(--space-3) var(--space-2)",textAlign:"center",borderBottom:"1px solid var(--separator)",borderLeft:"1px solid var(--separator)",background:r?"var(--accent-fill)":"var(--material-thick)",position:"relative"},children:[(0,a.jsx)("div",{title:v[t],style:{fontSize:"var(--text-footnote)",fontWeight:r?700:600,color:r?"var(--accent)":"var(--text-primary)",letterSpacing:"0.02em"},children:e}),r&&(0,a.jsx)("div",{style:{position:"absolute",bottom:-3,left:"50%",transform:"translateX(-50%)",width:6,height:6,borderRadius:"50%",background:"var(--accent)",zIndex:2}})]},e)}),h.map((e,t)=>{let n=j.get(e)||1,o=8+28*n+(n-1)*4,l=e===y,d=t===h.length-1;return(0,a.jsxs)("div",{style:{display:"contents"},children:[(0,a.jsx)("div",{style:{padding:"var(--space-2)",display:"flex",alignItems:"flex-start",justifyContent:"flex-end",borderBottom:d?"none":"1px solid var(--separator)",minHeight:o,background:l?"var(--accent-fill)":void 0,position:"relative"},children:(0,a.jsx)("span",{style:{fontSize:"var(--text-caption1)",fontFamily:"var(--font-mono)",color:l?"var(--accent)":"var(--text-tertiary)",fontWeight:l?600:400,lineHeight:1.2,whiteSpace:"nowrap",paddingTop:2},title:0===e||24===e?"12 AM":12===e?"12 PM":e<12?"".concat(e," AM"):"".concat(e-12," PM"),children:0===e||24===e?"12a":12===e?"12p":e<12?"".concat(e,"a"):"".concat(e-12,"p")})}),Array.from({length:7},(t,n)=>{let p="".concat(n,"-").concat(e),v=g.get(p)||[],u=n===m,x=u&&l;return(0,a.jsxs)("div",{style:{padding:"".concat(4,"px 4px"),borderLeft:"1px solid var(--separator)",borderBottom:d?"none":"1px solid var(--separator)",minHeight:o,display:"flex",flexDirection:"column",gap:4,background:x?"color-mix(in srgb, var(--accent) 6%, transparent)":u?"color-mix(in srgb, var(--accent) 3%, transparent)":void 0,position:"relative"},children:[x&&(0,a.jsx)("div",{style:{position:"absolute",top:"".concat((100*b).toFixed(1),"%"),left:0,right:0,height:2,background:"var(--system-red)",opacity:.8,zIndex:3,borderRadius:1}}),v.map((e,t)=>{let n=e.cron.enabled?"var(--system-green)":"var(--text-tertiary)",o=(null==r?void 0:r.slot.cron.id)===e.cron.id&&(null==r?void 0:r.slot.col)===e.col&&(null==r?void 0:r.slot.hour)===e.hour;return(0,a.jsxs)("button",{type:"button",title:"".concat(e.cron.name," - ").concat(s(e.cron.schedule)),onClick:t=>{t.stopPropagation();let r=t.currentTarget.getBoundingClientRect();c(),o?i(null):i({slot:e,rect:r})},onMouseEnter:t=>(function(e,t){let r=t.currentTarget.getBoundingClientRect();c(),i({slot:e,rect:r})})(e,t),onMouseLeave:()=>i(null),style:{display:"flex",alignItems:"center",gap:5,height:28,padding:"0 6px",borderRadius:"var(--radius-sm)",border:"none",cursor:"pointer",width:"100%",minWidth:0,background:o?"color-mix(in srgb, ".concat(n," 25%, transparent)"):"color-mix(in srgb, ".concat(n," 12%, transparent)"),borderLeft:"3px solid ".concat(n),transition:"background 150ms ease, box-shadow 150ms ease",boxShadow:o?"0 0 0 1px color-mix(in srgb, ".concat(n," 40%, transparent)"):"none",textAlign:"left",position:"relative",overflow:"hidden"},children:[(0,a.jsx)("span",{style:{width:6,height:6,borderRadius:"50%",flexShrink:0,background:e.cron.enabled?"var(--system-green)":"var(--text-tertiary)"}}),(0,a.jsx)("span",{style:{fontSize:"var(--text-caption2)",fontFamily:"var(--font-mono)",color:"var(--text-tertiary)",flexShrink:0,lineHeight:1},children:":".concat(String(e.minute).padStart(2,"0"))}),(0,a.jsx)("span",{style:{fontSize:"var(--text-caption2)",fontWeight:600,color:n,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0,flex:1,lineHeight:1},children:e.cron.name})]},"".concat(p,"-").concat(t))}),0===v.length&&(0,a.jsx)("div",{style:{flex:1}})]},p)})]},e)})]}),r&&l&&(0,a.jsx)(x,{slot:r.slot,rect:r.rect,containerRect:l})]})}function h(e){let{crons:t}=e;if(0===t.length)return(0,a.jsxs)("div",{style:{background:"var(--material-regular)",border:"1px solid var(--separator)",borderRadius:"var(--radius-md)",padding:"32px 24px",textAlign:"center"},children:[(0,a.jsx)("div",{style:{fontSize:14,fontWeight:700,color:"var(--text-primary)",marginBottom:8},children:"No cron jobs configured"}),(0,a.jsx)("div",{style:{fontSize:12,color:"var(--text-secondary)",maxWidth:480,margin:"0 auto",lineHeight:1.6},children:"Cron jobs will appear here as cards once configured."})]});let r=t.filter(e=>e.enabled),n=t.filter(e=>!e.enabled);return(0,a.jsxs)("div",{children:[r.length>0&&(0,a.jsx)(f,{crons:r,label:"Enabled"}),n.length>0&&(0,a.jsx)(f,{crons:n,label:"Disabled"})]})}function f(e){let{crons:t,label:r}=e;return(0,a.jsxs)("div",{style:{marginBottom:24},children:[(0,a.jsxs)("div",{style:{fontSize:13,fontWeight:700,color:"var(--text-secondary)",marginBottom:12},children:[r," (",t.length,")"]}),(0,a.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(220px, 1fr))",gap:10},children:t.map(e=>{let t=e.enabled?"var(--system-green)":"var(--text-tertiary)";return(0,a.jsxs)("div",{style:{background:"var(--material-regular)",borderRadius:"var(--radius-md)",border:"1px solid var(--separator)",borderLeft:"3px solid ".concat(t),padding:"10px 14px"},children:[(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:4},children:[(0,a.jsx)("div",{style:{width:7,height:7,borderRadius:"50%",background:e.enabled?"var(--system-green)":"var(--text-tertiary)",flexShrink:0}}),(0,a.jsx)("div",{style:{fontSize:12,fontWeight:600,color:"var(--text-primary)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:e.name})]}),(0,a.jsx)("div",{style:{fontSize:10,color:"var(--text-secondary)",marginBottom:2},children:s(e.schedule)}),(0,a.jsx)("div",{style:{fontSize:10,fontFamily:"var(--font-mono)",color:"var(--text-tertiary)",marginBottom:4},children:e.schedule}),(0,a.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",gap:4},children:[e.employee&&(0,a.jsx)("span",{style:{display:"inline-block",fontSize:9,padding:"1px 6px",borderRadius:4,background:"color-mix(in srgb, var(--system-blue) 15%, transparent)",color:"var(--system-blue)"},children:e.employee}),e.engine&&(0,a.jsx)("span",{style:{display:"inline-block",fontSize:9,padding:"1px 6px",borderRadius:4,background:"var(--fill-tertiary)",color:"var(--text-tertiary)"},children:e.engine})]})]},e.id)})})]})}function m(e){if(!e)return"never";let t=new Date(e);if(isNaN(t.getTime()))return"—";let r=Date.now()-t.getTime(),a=Math.floor(r/6e4),n=Math.floor(r/36e5),i=Math.floor(r/864e5);return a<1?"just now":a<60?"".concat(a,"m ago"):n<24?"".concat(n,"h ago"):"".concat(i,"d ago")}function y(e){let{jobId:t}=e,[r,o]=(0,n.useState)(null),[s,l]=(0,n.useState)(!0);return((0,n.useEffect)(()=>{i.F.getCronRuns(t).then(e=>{o(e.slice(0,5)),l(!1)}).catch(()=>{o([]),l(!1)})},[t]),s)?(0,a.jsxs)("div",{style:{marginTop:"var(--space-3)"},children:[(0,a.jsx)("div",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)",fontWeight:600,marginBottom:"var(--space-2)"},children:"Recent Runs"}),[1,2,3].map(e=>(0,a.jsx)(c.E,{style:{height:16,marginBottom:4,width:"80%"}},e))]}):r&&0!==r.length?(0,a.jsxs)("div",{style:{marginTop:"var(--space-3)"},children:[(0,a.jsx)("div",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)",fontWeight:600,marginBottom:"var(--space-2)"},children:"Recent Runs"}),(0,a.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:4},children:r.map((e,t)=>{let r=e.ts||e.startedAt||"",n=e.status||"unknown",i=m(r),o=null!=e.durationMs?function(e){if(e<0||!Number.isFinite(e))return"—";let t=Math.round(e/1e3);if(t<60)return"".concat(t,"s");let r=Math.floor(t/60),a=t%60;if(r<60)return a>0?"".concat(r,"m ").concat(a,"s"):"".concat(r,"m");let n=Math.floor(r/60);return"".concat(n,"h ").concat(r%60,"m")}(e.durationMs):"—";return(0,a.jsxs)("div",{className:"flex items-center",style:{gap:"var(--space-2)",fontSize:"var(--text-caption2)",minHeight:22,padding:"2px 0"},children:[(0,a.jsx)("span",{style:{width:6,height:6,borderRadius:"50%",background:"success"===n||"ok"===n?"var(--system-green)":"error"===n||"failed"===n?"var(--system-red)":"var(--text-tertiary)",flexShrink:0}}),(0,a.jsx)("span",{style:{color:"var(--text-tertiary)",minWidth:52,flexShrink:0},children:i}),(0,a.jsx)("span",{style:{color:"var(--text-secondary)",minWidth:52,flexShrink:0},children:o}),(0,a.jsx)("span",{style:{color:"var(--text-secondary)",textTransform:"capitalize"},children:n}),e.error&&(0,a.jsx)("span",{className:"truncate",style:{color:"var(--system-red)",minWidth:0,flex:1},children:e.error})]},"".concat(r,"-").concat(t))})})]}):(0,a.jsxs)("div",{style:{marginTop:"var(--space-3)"},children:[(0,a.jsx)("div",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)",fontWeight:600,marginBottom:"var(--space-2)"},children:"Recent Runs"}),(0,a.jsx)("div",{style:{fontSize:"var(--text-caption2)",color:"var(--text-tertiary)"},children:"No run history"})]})}function b(){let[e,t]=(0,n.useState)([]),[r,o]=(0,n.useState)(!0),[p,v]=(0,n.useState)(null),[u,x]=(0,n.useState)("all"),[f,b]=(0,n.useState)(null),[k,S]=(0,n.useState)("just now"),[w,z]=(0,n.useState)(new Date),[N,R]=(0,n.useState)(null),B=(0,n.useCallback)(()=>{v(null),i.F.getCronJobs().then(e=>{t(e),z(new Date)}).catch(e=>v(e instanceof Error?e.message:"Unknown error")).finally(()=>o(!1))},[]);(0,n.useEffect)(()=>{B();let e=setInterval(B,6e4);return()=>clearInterval(e)},[B]),(0,n.useEffect)(()=>{let e=()=>S(m(w.toISOString()));e();let t=setInterval(e,3e4);return()=>clearInterval(t)},[w]);let W=e.filter(e=>e.enabled).length,C=e.filter(e=>!e.enabled).length,M=e.filter(e=>"enabled"===u?e.enabled:"disabled"!==u||!e.enabled);return(0,a.jsx)(l.M,{children:(0,a.jsxs)("div",{className:"h-full flex flex-col overflow-hidden",style:{background:"var(--bg)"},children:[(0,a.jsx)("header",{className:"flex-shrink-0",style:{background:"var(--material-regular)",borderBottom:"1px solid var(--separator)",padding:"var(--space-4) var(--space-6)"},children:(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h1",{style:{fontSize:"var(--text-title1)",fontWeight:700,color:"var(--text-primary)",letterSpacing:"-0.5px",lineHeight:1.2},children:"Cron Jobs"}),!r&&(0,a.jsxs)("p",{style:{fontSize:"var(--text-footnote)",color:"var(--text-secondary)",marginTop:"var(--space-1)"},children:[e.length," total \xb7 ",W," enabled \xb7 ",C," disabled"]})]}),(0,a.jsxs)("div",{className:"flex items-center",style:{gap:"var(--space-3)"},children:[(0,a.jsxs)("span",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)"},children:["Updated ",k]}),(0,a.jsx)("button",{onClick:B,"aria-label":"Refresh cron data",style:{width:32,height:32,display:"flex",alignItems:"center",justifyContent:"center",borderRadius:"var(--radius-sm)",border:"none",background:"transparent",color:"var(--text-tertiary)",cursor:"pointer"},children:(0,a.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,a.jsx)("path",{d:"M21 2v6h-6"}),(0,a.jsx)("path",{d:"M3 12a9 9 0 0 1 15-6.7L21 8"}),(0,a.jsx)("path",{d:"M3 22v-6h6"}),(0,a.jsx)("path",{d:"M21 12a9 9 0 0 1-15 6.7L3 16"})]})})]})]})}),(0,a.jsx)("div",{className:"flex-1 overflow-y-auto",style:{padding:"var(--space-4) var(--space-6) var(--space-6)"},children:p&&0===e.length?(0,a.jsxs)("div",{style:{background:"rgba(255,69,58,0.06)",border:"1px solid var(--system-red)",borderRadius:"var(--radius-md)",padding:"var(--space-4)",color:"var(--system-red)",fontSize:"var(--text-footnote)",marginBottom:"var(--space-4)"},children:["Failed to load cron jobs: ",p,(0,a.jsx)("button",{onClick:B,style:{marginLeft:"var(--space-3)",textDecoration:"underline",background:"none",border:"none",color:"inherit",cursor:"pointer",fontSize:"inherit"},children:"Retry"})]}):r?(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(3, 1fr)",gap:"var(--space-3)",marginBottom:"var(--space-4)"},children:[1,2,3].map(e=>(0,a.jsxs)("div",{style:{background:"var(--material-regular)",border:"1px solid var(--separator)",borderRadius:"var(--radius-md)",padding:"var(--space-4)"},children:[(0,a.jsx)(c.E,{style:{width:60,height:10,marginBottom:8}}),(0,a.jsx)(c.E,{style:{width:80,height:14}})]},e))}),[1,2,3,4].map(e=>(0,a.jsx)(c.E,{style:{height:48,marginBottom:4,borderRadius:"var(--radius-sm)"}},e))]}):(0,a.jsxs)(d.tU,{defaultValue:"overview",children:[(0,a.jsxs)(d.j7,{variant:"line",children:[(0,a.jsx)(d.Xi,{value:"overview",children:"Overview"}),(0,a.jsx)(d.Xi,{value:"schedule",children:"Schedule"}),(0,a.jsx)(d.Xi,{value:"pipelines",children:"Pipelines"})]}),(0,a.jsxs)(d.av,{value:"overview",children:[(0,a.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(3, 1fr)",gap:"var(--space-3)",marginBottom:"var(--space-4)",marginTop:"var(--space-4)"},children:[(0,a.jsx)(j,{label:"Total Jobs",value:e.length}),(0,a.jsx)(j,{label:"Enabled",value:W,color:"var(--system-green)"}),(0,a.jsx)(j,{label:"Disabled",value:C,color:"var(--text-tertiary)"})]}),(0,a.jsx)("div",{className:"flex items-center",style:{gap:"var(--space-2)",marginBottom:"var(--space-3)"},children:["all","enabled","disabled"].map(t=>{let r=u===t,n="all"===t?e.length:"enabled"===t?W:C;return(0,a.jsxs)("button",{onClick:()=>x(t),style:{borderRadius:20,padding:"6px 14px",fontSize:"var(--text-footnote)",fontWeight:500,border:"none",cursor:"pointer",transition:"all 200ms ease",background:r?"var(--accent-fill)":"var(--fill-secondary)",color:r?"var(--accent)":"var(--text-primary)"},children:[t.charAt(0).toUpperCase()+t.slice(1)," (",n,")"]},t)})}),0===M.length?(0,a.jsxs)("div",{className:"flex flex-col items-center justify-center",style:{height:200,color:"var(--text-secondary)",gap:"var(--space-2)"},children:[(0,a.jsxs)("svg",{width:"32",height:"32",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",style:{color:"var(--text-tertiary)",marginBottom:"var(--space-2)"},children:[(0,a.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,a.jsx)("polyline",{points:"12 6 12 12 16 14"})]}),(0,a.jsx)("span",{style:{fontSize:"var(--text-subheadline)",fontWeight:500},children:0===e.length?"No cron jobs configured":"No jobs match this filter"})]}):(0,a.jsx)("div",{style:{borderRadius:"var(--radius-md)",overflow:"hidden",background:"var(--material-regular)",border:"1px solid var(--separator)"},children:M.map((e,r)=>{let n=f===e.id;return(0,a.jsxs)("div",{children:[r>0&&(0,a.jsx)("div",{style:{height:1,background:"var(--separator)",marginLeft:"var(--space-4)",marginRight:"var(--space-4)"}}),(0,a.jsxs)("div",{role:"button",tabIndex:0,"aria-expanded":n,onClick:()=>b(n?null:e.id),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&(t.preventDefault(),b(n?null:e.id))},className:"flex items-center cursor-pointer",style:{minHeight:48,padding:"0 var(--space-4)",borderLeft:"3px solid ".concat(e.enabled?"var(--system-green)":"transparent"),transition:"background 150ms ease"},onMouseEnter:e=>{e.currentTarget.style.background="var(--fill-secondary)"},onMouseLeave:e=>{e.currentTarget.style.background=""},children:[(0,a.jsx)("span",{style:{width:8,height:8,borderRadius:"50%",background:e.enabled?"var(--system-green)":"var(--text-tertiary)",flexShrink:0}}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",style:{marginLeft:12,display:"flex",flexDirection:"column"},children:[(0,a.jsx)("span",{className:"truncate",style:{fontSize:"var(--text-footnote)",fontWeight:600,color:"var(--text-primary)"},children:e.name}),(0,a.jsx)("span",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)"},children:s(e.schedule)})]}),(0,a.jsxs)("div",{className:"flex items-center flex-shrink-0",style:{gap:"var(--space-2)",marginLeft:"auto"},children:[e.employee&&(0,a.jsx)("span",{style:{fontSize:"var(--text-caption1)",padding:"1px 8px",borderRadius:12,background:"color-mix(in srgb, var(--system-blue) 15%, transparent)",color:"var(--system-blue)"},children:e.employee}),e.engine&&(0,a.jsx)("span",{style:{fontSize:"var(--text-caption1)",padding:"1px 8px",borderRadius:12,background:"var(--fill-tertiary)",color:"var(--text-tertiary)"},children:e.engine}),(0,a.jsx)("button",{onClick:r=>{r.stopPropagation();let a=!e.enabled;i.F.updateCronJob(e.id,{enabled:a}).then(()=>{t(t=>t.map(t=>t.id===e.id?{...t,enabled:a}:t))}).catch(()=>{})},"aria-label":e.enabled?"Disable job":"Enable job",style:{position:"relative",display:"inline-flex",alignItems:"center",width:36,height:20,borderRadius:10,border:"none",cursor:"pointer",background:e.enabled?"var(--system-green)":"var(--fill-tertiary)",transition:"background 200ms ease",flexShrink:0},children:(0,a.jsx)("span",{style:{display:"block",width:14,height:14,borderRadius:"50%",background:"white",transition:"transform 200ms ease",transform:e.enabled?"translateX(18px)":"translateX(3px)"}})}),(0,a.jsx)("span",{style:{fontSize:"var(--text-footnote)",color:"var(--text-tertiary)",transition:"transform 200ms ease",transform:n?"rotate(90deg)":"rotate(0deg)",display:"inline-block"},children:"›"})]})]}),n&&(0,a.jsxs)("div",{style:{padding:"0 var(--space-4) var(--space-4) var(--space-4)",marginLeft:3},children:[(0,a.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"auto 1fr",gap:"var(--space-1) var(--space-4)",marginTop:"var(--space-2)",marginBottom:"var(--space-3)"},children:[(0,a.jsx)("span",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)"},children:"Schedule"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{style:{fontSize:"var(--text-caption1)",color:"var(--text-secondary)"},children:s(e.schedule)}),(0,a.jsxs)("div",{style:{fontSize:"var(--text-caption2)",fontFamily:"var(--font-mono)",color:"var(--text-tertiary)",marginTop:2},children:[e.schedule,e.timezone&&(0,a.jsxs)("span",{style:{marginLeft:8},children:["(",e.timezone,")"]})]})]}),(0,a.jsx)("span",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)"},children:"Status"}),(0,a.jsx)("span",{style:{fontSize:"var(--text-caption1)",color:e.enabled?"var(--system-green)":"var(--text-tertiary)",fontWeight:500},children:e.enabled?"Enabled":"Disabled"}),e.engine&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)"},children:"Engine"}),(0,a.jsx)("span",{style:{fontSize:"var(--text-caption1)",color:"var(--text-secondary)"},children:e.engine})]}),e.model&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)"},children:"Model"}),(0,a.jsx)("span",{style:{fontSize:"var(--text-caption1)",color:"var(--text-secondary)",fontFamily:"var(--font-mono)"},children:e.model})]}),e.employee&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)"},children:"Employee"}),(0,a.jsx)("span",{style:{fontSize:"var(--text-caption1)",color:"var(--text-secondary)"},children:e.employee})]})]}),(0,a.jsx)("div",{style:{marginBottom:"var(--space-3)"},children:(0,a.jsx)("button",{onClick:t=>{t.stopPropagation(),R(e.id),i.F.triggerCronJob(e.id).then(()=>{setTimeout(B,2e3)}).catch(()=>{}).finally(()=>{setTimeout(()=>R(null),2e3)})},disabled:N===e.id,style:{display:"inline-flex",alignItems:"center",gap:6,padding:"6px 14px",borderRadius:"var(--radius-sm)",border:"1px solid var(--separator)",background:N===e.id?"var(--fill-tertiary)":"var(--material-regular)",color:N===e.id?"var(--system-green)":"var(--text-secondary)",fontSize:"var(--text-caption1)",fontWeight:600,cursor:N===e.id?"default":"pointer",transition:"all 200ms ease"},children:N===e.id?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{style:{fontSize:14},children:"✓"}),"Triggered"]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"currentColor",stroke:"none",children:(0,a.jsx)("polygon",{points:"5,3 19,12 5,21"})}),"Run Now"]})})}),(0,a.jsx)(y,{jobId:e.id})]})]},e.id)})})]}),(0,a.jsx)(d.av,{value:"schedule",children:(0,a.jsx)("div",{style:{marginTop:"var(--space-4)"},children:(0,a.jsx)(g,{crons:e})})}),(0,a.jsx)(d.av,{value:"pipelines",children:(0,a.jsx)("div",{style:{marginTop:"var(--space-4)"},children:(0,a.jsx)(h,{crons:e})})})]})})]})})}function j(e){let{label:t,value:r,color:n}=e;return(0,a.jsxs)("div",{style:{background:"var(--material-regular)",border:"1px solid var(--separator)",borderRadius:"var(--radius-md)",padding:"var(--space-4)"},children:[(0,a.jsx)("div",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)",fontWeight:500,marginBottom:"var(--space-1)"},children:t}),(0,a.jsx)("div",{style:{fontSize:"var(--text-title2)",fontWeight:700,color:n||"var(--text-primary)"},children:r})]})}},7828:(e,t,r)=>{Promise.resolve().then(r.bind(r,6115))}},e=>{e.O(0,[704,590,198,534,73,814,743,358],()=>e(e.s=7828)),_N_E=e.O()}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[636],{543:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>A});var a=r(8111),i=r(5271);let n=(0,r(1983).A)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);var o=r(3176);let s="jinn-kanban",l=new Set(["backlog","todo","in-progress","review","done"]),d=new Set(["low","medium","high"]),c=new Set(["idle","starting","working","done","failed"]);function p(e,t,r){let a=e[t];return a?{...e,[t]:{...a,...r,updatedAt:Date.now()}}:e}var u=r(3073);let v=[{id:"backlog",title:"Backlog"},{id:"todo",title:"To Do"},{id:"in-progress",title:"In Progress"},{id:"review",title:"Review"},{id:"done",title:"Done"}],x={low:"var(--system-green)",medium:"var(--system-orange)",high:"var(--system-red)"};function g(e){let{column:t,tickets:r,onDrop:o,onCreateTicket:s,renderTicket:l}=e,[d,c]=(0,i.useState)(!1);return(0,a.jsxs)("div",{onDragOver:function(e){e.preventDefault(),e.dataTransfer.dropEffect="move",c(!0)},onDragLeave:function(e){e.currentTarget.contains(e.relatedTarget)||c(!1)},onDrop:function(e){e.preventDefault(),c(!1);let r=e.dataTransfer.getData("text/plain");r&&o(r,t.id)},style:{display:"flex",flexDirection:"column",minWidth:280,maxWidth:320,flex:"1 0 280px",height:"100%",borderRadius:"var(--radius-lg)",background:d?"var(--fill-secondary)":"var(--fill-tertiary)",border:d?"2px dashed var(--accent)":"2px dashed transparent",transition:"background 200ms var(--ease-smooth), border-color 200ms var(--ease-smooth)"},children:[(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"var(--space-3) var(--space-4)",flexShrink:0},children:[(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-2)"},children:[(0,a.jsx)("span",{style:{fontSize:"var(--text-footnote)",fontWeight:"var(--weight-semibold)",color:"var(--text-primary)",letterSpacing:"-0.01em"},children:t.title}),(0,a.jsx)("span",{style:{fontSize:"var(--text-caption2)",fontWeight:"var(--weight-medium)",color:"var(--text-tertiary)",background:"var(--fill-secondary)",borderRadius:"var(--radius-sm)",padding:"1px 6px",minWidth:20,textAlign:"center"},children:r.length})]}),"backlog"===t.id&&s&&(0,a.jsx)("button",{onClick:s,"aria-label":"Create new ticket",style:{display:"flex",alignItems:"center",justifyContent:"center",width:24,height:24,borderRadius:"var(--radius-sm)",border:"none",background:"transparent",color:"var(--text-secondary)",cursor:"pointer",padding:0,transition:"color 150ms var(--ease-smooth)"},children:(0,a.jsx)(n,{size:16})})]}),(0,a.jsxs)("div",{style:{flex:1,overflowY:"auto",padding:"0 var(--space-2) var(--space-2)",display:"flex",flexDirection:"column",gap:"var(--space-2)"},children:[r.map(e=>(0,a.jsx)("div",{children:l(e)},e.id)),0===r.length&&(0,a.jsx)("div",{style:{padding:"var(--space-8) var(--space-4)",textAlign:"center",fontSize:"var(--text-caption1)",color:"var(--text-tertiary)"},children:"No tickets"})]})]})}let f={low:"Low",medium:"Med",high:"High"};function h(e){let{ticket:t,assigneeName:r,onClick:n}=e,[o,s]=(0,i.useState)(!1);return(0,a.jsxs)("div",{draggable:!0,onDragStart:function(e){e.dataTransfer.setData("text/plain",t.id),e.dataTransfer.effectAllowed="move",s(!0)},onDragEnd:function(){s(!1)},onClick:n,role:"button",tabIndex:0,onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),n())},style:{background:"var(--material-regular)",borderRadius:"var(--radius-md)",padding:"var(--space-3)",cursor:o?"grabbing":"grab",opacity:o?.6:1,border:"1px solid var(--separator)",borderLeft:"3px solid ".concat(x[t.priority]),display:"flex",flexDirection:"column",gap:"var(--space-2)",userSelect:"none",transition:"opacity 150ms var(--ease-smooth)"},children:[(0,a.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",gap:"var(--space-2)"},children:[(0,a.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:3,fontSize:"var(--text-caption2)",fontWeight:600,color:x[t.priority],flexShrink:0,marginTop:2},children:[(0,a.jsx)("span",{style:{width:6,height:6,borderRadius:"50%",background:x[t.priority]}}),f[t.priority]]}),(0,a.jsx)("span",{style:{fontSize:"var(--text-footnote)",fontWeight:"var(--weight-semibold)",color:"var(--text-primary)",lineHeight:1.3,display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",overflow:"hidden",wordBreak:"break-word"},children:t.title})]}),t.description&&(0,a.jsx)("div",{style:{fontSize:"var(--text-caption2)",color:"var(--text-tertiary)",lineHeight:1.4,display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",overflow:"hidden",wordBreak:"break-word"},children:t.description}),(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-2)",flexWrap:"wrap"},children:[r&&(0,a.jsx)("span",{style:{fontSize:"var(--text-caption2)",fontWeight:"var(--weight-medium)",color:"var(--text-secondary)",background:"var(--fill-tertiary)",borderRadius:"var(--radius-sm)",padding:"1px var(--space-2)",lineHeight:1.5},children:r}),(0,a.jsx)("span",{style:{fontSize:"var(--text-caption2)",color:"var(--text-quaternary)",marginLeft:"auto"},title:new Date(t.createdAt).toLocaleString(),children:function(e){let t=Math.floor((Date.now()-e)/6e4);if(t<1)return"just now";if(t<60)return"".concat(t,"m ago");let r=Math.floor(t/60);if(r<24)return"".concat(r,"h ago");let a=Math.floor(r/24);return a<30?"".concat(a,"d ago"):"".concat(Math.floor(a/30),"mo ago")}(t.createdAt)})]})]})}function y(e){let{tickets:t,employees:r,onTicketClick:i,onMoveTicket:n,onCreateTicket:o,filterEmployeeId:s}=e;return(0,a.jsx)("div",{style:{display:"flex",gap:"var(--space-3)",height:"100%",overflowX:"auto",overflowY:"hidden",padding:"var(--space-2) 0",WebkitOverflowScrolling:"touch"},children:v.map(e=>{var l;let d=(l=e.id,Object.values(t).filter(e=>e.status===l).sort((e,t)=>t.updatedAt-e.updatedAt)),c=s?d.filter(e=>e.assigneeId===s):d;return(0,a.jsx)(g,{column:e,tickets:c,onDrop:n,onCreateTicket:"backlog"===e.id?o:void 0,renderTicket:e=>{var t;let n=r.find(t=>t.name===e.assigneeId);return(0,a.jsx)(h,{ticket:e,assigneeName:null!=(t=null==n?void 0:n.displayName)?t:null,onClick:()=>i(e)})}},e.id)})})}let m={executive:"Exec",manager:"Mgr",senior:"Sr",employee:""};function b(e){var t;let{employees:r,value:n,onChange:o}=e,[s,l]=(0,i.useState)(!1),[d,c]=(0,i.useState)(""),[p,u]=(0,i.useState)(0),v=(0,i.useRef)(null),x=(0,i.useRef)(null),g=(0,i.useRef)(null),f=null!=(t=r.find(e=>e.name===n))?t:null,h=d.trim()?r.filter(e=>{let t=d.toLowerCase();return e.name.toLowerCase().includes(t)||e.displayName.toLowerCase().includes(t)||e.department.toLowerCase().includes(t)}):r,y=!d.trim()||"unassigned".includes(d.toLowerCase());(0,i.useEffect)(()=>{u(0)},[d]),(0,i.useEffect)(()=>{s?setTimeout(()=>{var e;return null==(e=x.current)?void 0:e.focus()},0):c("")},[s]),(0,i.useEffect)(()=>{if(s)return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e);function e(e){v.current&&!v.current.contains(e.target)&&l(!1)}},[s]),(0,i.useEffect)(()=>{if(!s||!g.current)return;let e=g.current.querySelectorAll("[data-employee-option]")[p];e&&e.scrollIntoView({block:"nearest"})},[p,s]);let b=+!!y+h.length,k=(0,i.useCallback)(e=>{if(!s){("Enter"===e.key||" "===e.key||"ArrowDown"===e.key)&&(e.preventDefault(),l(!0));return}if("Escape"===e.key){e.preventDefault(),l(!1);return}if("ArrowDown"===e.key)e.preventDefault(),u(e=>Math.min(e+1,b-1));else if("ArrowUp"===e.key)e.preventDefault(),u(e=>Math.max(e-1,0));else if("Enter"===e.key){if(e.preventDefault(),y&&0===p)o("");else{let e=y?p-1:p;h[e]&&o(h[e].name)}l(!1)}},[s,p,b,y,h,o]);return(0,a.jsxs)("div",{ref:v,style:{position:"relative"},onKeyDown:k,children:[(0,a.jsx)("button",{type:"button",onClick:()=>l(!s),"aria-haspopup":"listbox","aria-expanded":s,style:{width:"100%",display:"flex",alignItems:"center",gap:"var(--space-2)",padding:"8px 12px",fontSize:"var(--text-body)",color:f?"var(--text-primary)":"var(--text-tertiary)",cursor:"pointer",textAlign:"left",border:"1px solid var(--separator)",borderRadius:"var(--radius-md)",background:"var(--fill-tertiary)",backgroundImage:"url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E\")",backgroundRepeat:"no-repeat",backgroundPosition:"right 12px center",paddingRight:36,minHeight:40,fontFamily:"inherit"},children:f?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{style:{fontWeight:"var(--weight-medium)"},children:f.displayName}),m[f.rank]&&(0,a.jsx)("span",{style:{fontSize:"var(--text-caption2)",color:"var(--text-tertiary)",background:"var(--fill-secondary)",borderRadius:"var(--radius-sm)",padding:"1px 6px"},children:m[f.rank]})]}):(0,a.jsx)("span",{children:"Unassigned"})}),s&&(0,a.jsxs)("div",{style:{position:"absolute",top:"100%",left:0,right:0,marginTop:4,zIndex:50,background:"var(--material-regular)",border:"1px solid var(--separator)",borderRadius:"var(--radius-md)",boxShadow:"0 8px 32px rgba(0,0,0,0.3)",overflow:"hidden"},children:[(0,a.jsx)("div",{style:{padding:"8px 8px 4px"},children:(0,a.jsx)("input",{ref:x,type:"text",placeholder:"Search employees...",value:d,onChange:e=>c(e.target.value),style:{width:"100%",padding:"6px 10px",fontSize:"var(--text-footnote)",border:"1px solid var(--separator)",borderRadius:"var(--radius-sm)",background:"var(--fill-tertiary)",color:"var(--text-primary)",outline:"none",fontFamily:"inherit"}})}),(0,a.jsxs)("div",{ref:g,role:"listbox",style:{maxHeight:280,overflowY:"auto",padding:"4px"},children:[y&&(0,a.jsxs)("div",{"data-employee-option":!0,role:"option","aria-selected":""===n,onClick:()=>{o(""),l(!1)},style:{display:"flex",alignItems:"center",gap:"var(--space-2)",padding:"8px 10px",borderRadius:"var(--radius-sm)",cursor:"pointer",background:0===p?"var(--fill-secondary)":"transparent",transition:"background 100ms"},onMouseEnter:()=>u(0),children:[(0,a.jsx)("div",{style:{width:32,height:32,borderRadius:8,background:"var(--fill-tertiary)",display:"flex",alignItems:"center",justifyContent:"center",fontSize:14,color:"var(--text-tertiary)",flexShrink:0},children:"—"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{style:{fontSize:"var(--text-footnote)",fontWeight:"var(--weight-medium)",color:"var(--text-secondary)"},children:"Unassigned"}),(0,a.jsx)("div",{style:{fontSize:"var(--text-caption2)",color:"var(--text-tertiary)"},children:"No employee assigned"})]}),""===n&&(0,a.jsx)("span",{style:{marginLeft:"auto",color:"var(--accent)",fontSize:13,flexShrink:0},children:"✓"})]}),h.map((e,t)=>{let r=y?t+1:t,i=p===r,s=n===e.name;return(0,a.jsxs)("div",{"data-employee-option":!0,role:"option","aria-selected":s,onClick:()=>{o(e.name),l(!1)},onMouseEnter:()=>u(r),style:{display:"flex",alignItems:"center",gap:"var(--space-2)",padding:"8px 10px",borderRadius:"var(--radius-sm)",cursor:"pointer",background:i?"var(--fill-secondary)":"transparent",transition:"background 100ms"},children:[(0,a.jsx)("div",{style:{width:32,height:32,borderRadius:8,background:"var(--accent)",display:"flex",alignItems:"center",justifyContent:"center",fontSize:14,color:"#fff",fontWeight:600,flexShrink:0},children:e.displayName.charAt(0).toUpperCase()}),(0,a.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-1)"},children:[(0,a.jsx)("span",{style:{fontSize:"var(--text-footnote)",fontWeight:"var(--weight-semibold)",color:"var(--text-primary)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.displayName}),m[e.rank]&&(0,a.jsx)("span",{style:{fontSize:"var(--text-caption2)",color:"var(--text-tertiary)",background:"var(--fill-secondary)",borderRadius:"var(--radius-sm)",padding:"0 4px",flexShrink:0},children:m[e.rank]})]}),(0,a.jsx)("div",{style:{fontSize:"var(--text-caption2)",color:"var(--text-tertiary)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.department||e.name})]}),s&&(0,a.jsx)("span",{style:{color:"var(--accent)",fontSize:13,flexShrink:0},children:"✓"})]},e.name)}),0===h.length&&!y&&(0,a.jsxs)("div",{style:{padding:"var(--space-4)",textAlign:"center",fontSize:"var(--text-footnote)",color:"var(--text-tertiary)"},children:["No employees match “",d,"”"]})]})]})]})}var k=r(1240);let w=["low","medium","high"],j={low:"Low",medium:"Medium",high:"High"},S={title:"",description:"",priority:"medium",assigneeId:""};function z(e){let{open:t,onOpenChange:r,employees:o,onSubmit:s}=e,[l,d]=(0,i.useState)(S),c=(0,i.useCallback)(()=>{d(S)},[]);return(0,a.jsx)(k.lG,{open:t,onOpenChange:function(e){e||c(),r(e)},children:(0,a.jsxs)(k.Cf,{showCloseButton:!0,style:{background:"var(--bg)",border:"1px solid var(--separator)",borderRadius:"var(--radius-lg)",boxShadow:"var(--shadow-card)",maxWidth:480},children:[(0,a.jsxs)(k.c7,{children:[(0,a.jsx)(k.L3,{style:{fontSize:"var(--text-title3)",fontWeight:"var(--weight-bold)",color:"var(--text-primary)"},children:"Create Ticket"}),(0,a.jsx)(k.rr,{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)"},children:"Add a new ticket to the backlog."})]}),(0,a.jsxs)("form",{onSubmit:function(e){e.preventDefault(),l.title.trim()&&(s({title:l.title.trim(),description:l.description.trim(),priority:l.priority,assigneeId:l.assigneeId||null}),c(),r(!1))},style:{display:"flex",flexDirection:"column",gap:"var(--space-4)"},children:[(0,a.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"var(--space-1)"},children:[(0,a.jsx)("label",{htmlFor:"ticket-title",style:{fontSize:"var(--text-caption1)",fontWeight:"var(--weight-medium)",color:"var(--text-secondary)"},children:"Title"}),(0,a.jsx)("input",{id:"ticket-title",type:"text",placeholder:"What needs to be done?",value:l.title,onChange:e=>d(t=>({...t,title:e.target.value})),required:!0,autoFocus:!0,style:{fontSize:"var(--text-body)",color:"var(--text-primary)",padding:"8px 12px",border:"1px solid var(--separator)",borderRadius:"var(--radius-md)",background:"var(--fill-tertiary)",outline:"none",fontFamily:"inherit"}})]}),(0,a.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"var(--space-1)"},children:[(0,a.jsx)("label",{htmlFor:"ticket-description",style:{fontSize:"var(--text-caption1)",fontWeight:"var(--weight-medium)",color:"var(--text-secondary)"},children:"Description"}),(0,a.jsx)("textarea",{id:"ticket-description",placeholder:"Add details...",rows:3,value:l.description,onChange:e=>d(t=>({...t,description:e.target.value})),style:{fontSize:"var(--text-body)",color:"var(--text-primary)",resize:"vertical",minHeight:72,padding:"8px 12px",border:"1px solid var(--separator)",borderRadius:"var(--radius-md)",background:"var(--fill-tertiary)",outline:"none",fontFamily:"inherit"}})]}),(0,a.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"var(--space-2)"},children:[(0,a.jsx)("span",{style:{fontSize:"var(--text-caption1)",fontWeight:"var(--weight-medium)",color:"var(--text-secondary)"},children:"Priority"}),(0,a.jsx)("div",{style:{display:"flex",gap:"var(--space-2)"},children:w.map(e=>{let t=l.priority===e;return(0,a.jsxs)("button",{type:"button",onClick:()=>d(t=>({...t,priority:e})),style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",gap:"var(--space-1)",padding:"var(--space-2) var(--space-3)",borderRadius:"var(--radius-md)",border:t?"2px solid ".concat(x[e]):"2px solid var(--separator)",background:t?"var(--fill-tertiary)":"transparent",cursor:"pointer",fontSize:"var(--text-caption1)",fontWeight:"var(--weight-medium)",color:t?"var(--text-primary)":"var(--text-tertiary)",transition:"all 150ms var(--ease-smooth)"},children:[(0,a.jsx)("span",{style:{width:8,height:8,borderRadius:"50%",background:x[e],flexShrink:0}}),j[e]]},e)})})]}),(0,a.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"var(--space-1)"},children:[(0,a.jsx)("label",{style:{fontSize:"var(--text-caption1)",fontWeight:"var(--weight-medium)",color:"var(--text-secondary)"},children:"Assignee"}),(0,a.jsx)(b,{employees:o,value:l.assigneeId,onChange:e=>d(t=>({...t,assigneeId:e}))})]}),(0,a.jsxs)("button",{type:"submit",disabled:!l.title.trim(),style:{borderRadius:"var(--radius-md)",padding:"12px 20px",width:"100%",fontSize:"var(--text-body)",fontWeight:"var(--weight-semibold)",border:"none",display:"flex",alignItems:"center",justifyContent:"center",gap:"var(--space-2)",marginTop:"var(--space-2)",background:"var(--accent)",color:"#fff",cursor:l.title.trim()?"pointer":"default",opacity:l.title.trim()?1:.5,transition:"opacity 150ms ease"},children:[(0,a.jsx)(n,{size:16}),"Create Ticket"]})]})]})})}function C(e){let{priority:t}=e;return(0,a.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:"var(--space-1)",fontSize:"var(--text-caption2)",fontWeight:600,color:x[t],textTransform:"uppercase",letterSpacing:"0.5px"},children:[(0,a.jsx)("span",{style:{width:6,height:6,borderRadius:"50%",background:x[t]}}),t]})}function I(e){var t,r;let{status:i}=e,n=null!=(r=null==(t=v.find(e=>e.id===i))?void 0:t.title)?r:i;return(0,a.jsx)("span",{style:{fontSize:"var(--text-caption2)",fontWeight:600,color:"var(--text-secondary)",background:"var(--fill-tertiary)",padding:"2px var(--space-2)",borderRadius:"var(--radius-sm)",textTransform:"uppercase",letterSpacing:"0.3px"},children:n})}function D(e){var t,r;let{ticket:n,employees:o,onClose:s,onStatusChange:l,onAssigneeChange:d,onDelete:c}=e,p=(0,i.useRef)(null);(0,i.useEffect)(()=>{function e(e){"Escape"===e.key&&s()}return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[s]),(0,i.useEffect)(()=>{var e;null==(e=p.current)||e.focus()},[]);let u=null!=(t=o.find(e=>e.name===n.assigneeId))?t:null,x="var(--accent)";return(0,a.jsx)("div",{style:{position:"absolute",top:0,right:0,bottom:0,zIndex:30},children:(0,a.jsxs)("div",{style:{width:420,maxWidth:"100vw",height:"100%",background:"var(--material-regular)",boxShadow:"-4px 0 24px rgba(0,0,0,0.25)",display:"flex",flexDirection:"column"},children:[(0,a.jsx)("div",{style:{height:3,background:x,flexShrink:0}}),(0,a.jsxs)("div",{style:{flex:1,overflowY:"auto"},children:[(0,a.jsx)("div",{style:{padding:"var(--space-4) var(--space-5) 0",display:"flex",justifyContent:"flex-end",gap:"var(--space-2)"},children:(0,a.jsx)("button",{ref:p,onClick:s,"aria-label":"Close detail panel",style:{width:28,height:28,borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",background:"var(--fill-secondary)",color:"var(--text-secondary)",border:"none",cursor:"pointer",fontSize:"var(--text-footnote)",transition:"all 150ms var(--ease-spring)"},children:"✕"})}),(0,a.jsxs)("div",{style:{padding:"var(--space-2) var(--space-5) var(--space-4)"},children:[(0,a.jsx)("h2",{style:{fontSize:"var(--text-title3)",fontWeight:700,letterSpacing:"-0.3px",color:"var(--text-primary)",margin:0,lineHeight:1.25},children:n.title}),(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-3)",marginTop:"var(--space-2)"},children:[(0,a.jsx)(I,{status:n.status}),(0,a.jsx)(C,{priority:n.priority})]}),u?(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-2)",marginTop:"var(--space-3)",fontSize:"var(--text-footnote)",color:"var(--text-secondary)"},children:[(0,a.jsx)("span",{children:u.displayName}),(0,a.jsx)("span",{style:{fontSize:"var(--text-caption2)",color:"var(--text-tertiary)",background:"var(--fill-secondary)",borderRadius:"var(--radius-sm)",padding:"0 4px"},children:u.rank})]}):(0,a.jsx)("div",{style:{marginTop:"var(--space-3)",fontSize:"var(--text-footnote)",color:"var(--text-tertiary)",fontStyle:"italic"},children:"Unassigned"})]}),(0,a.jsxs)("div",{style:{padding:"0 var(--space-5) var(--space-4)"},children:[(0,a.jsx)("div",{style:{fontSize:"var(--text-caption1)",fontWeight:600,color:"var(--text-tertiary)",textTransform:"uppercase",letterSpacing:"0.5px",marginBottom:"var(--space-2)"},children:"Move to"}),(0,a.jsx)("div",{style:{display:"flex",gap:"var(--space-1)",flexWrap:"wrap"},children:v.map(e=>{let t=e.id===n.status;return(0,a.jsx)("button",{onClick:()=>{t||l(e.id)},disabled:t,style:{fontSize:"var(--text-caption2)",fontWeight:600,padding:"3px var(--space-2)",borderRadius:"var(--radius-sm)",border:"none",cursor:t?"default":"pointer",background:t?x:"var(--fill-tertiary)",color:t?"#fff":"var(--text-secondary)",opacity:t?1:.8,transition:"all 120ms ease"},children:e.title},e.id)})})]}),(0,a.jsxs)("div",{style:{padding:"0 var(--space-5) var(--space-4)"},children:[(0,a.jsx)("div",{style:{fontSize:"var(--text-caption1)",fontWeight:600,color:"var(--text-tertiary)",textTransform:"uppercase",letterSpacing:"0.5px",marginBottom:"var(--space-2)"},children:"Assignee"}),(0,a.jsx)(b,{employees:o,value:null!=(r=n.assigneeId)?r:"",onChange:e=>d(e||null)})]}),n.description&&(0,a.jsxs)("div",{style:{padding:"0 var(--space-5) var(--space-4)"},children:[(0,a.jsx)("div",{style:{height:1,background:"var(--separator)",marginBottom:"var(--space-3)"}}),(0,a.jsx)("div",{style:{fontSize:"var(--text-caption1)",fontWeight:600,color:"var(--text-tertiary)",textTransform:"uppercase",letterSpacing:"0.5px",marginBottom:"var(--space-2)"},children:"Description"}),(0,a.jsx)("div",{style:{fontSize:"var(--text-footnote)",color:"var(--text-secondary)",lineHeight:1.5,whiteSpace:"pre-wrap"},children:n.description})]})]}),(0,a.jsx)("div",{style:{flexShrink:0,padding:"var(--space-2) var(--space-5) var(--space-4)",borderTop:"1px solid var(--separator)"},children:(0,a.jsx)("button",{onClick:function(){window.confirm('Delete ticket "'.concat(n.title,'"? This cannot be undone.'))&&c()},style:{width:"100%",padding:"var(--space-2) var(--space-3)",borderRadius:"var(--radius-md)",border:"1px solid var(--system-red)",background:"transparent",color:"var(--system-red)",fontSize:"var(--text-footnote)",fontWeight:600,cursor:"pointer",transition:"all 120ms ease"},children:"Delete Ticket"})})]})})}function A(){let[e,t]=(0,i.useState)({}),[r,v]=(0,i.useState)([]),[x,g]=(0,i.useState)(!0),[f,h]=(0,i.useState)(null),[m,b]=(0,i.useState)(!1),[k,w]=(0,i.useState)(null),[j,S]=(0,i.useState)(null),C=(0,i.useCallback)(()=>{g(!0),h(null),o.F.getOrg().then(async e=>{v(await Promise.all(e.employees.map(async e=>{try{return await o.F.getEmployee(e)}catch(t){return{name:e,displayName:e,department:"",rank:"employee",engine:"unknown",model:"unknown",persona:""}}})));let r={};for(let t of e.departments)try{let e=await o.F.getDepartmentBoard(t);if(Array.isArray(e))for(let t of e){let e={todo:"todo",in_progress:"in-progress","in-progress":"in-progress",done:"done",backlog:"backlog",review:"review"}[t.status]||"todo",a={low:"low",medium:"medium",high:"high"}[t.priority||"medium"]||"medium";r[t.id]={id:t.id,title:t.title,description:t.description||"",status:e,priority:a,assigneeId:t.assignee||null,workState:"idle",createdAt:t.createdAt?new Date(t.createdAt).getTime():Date.now(),updatedAt:t.updatedAt?new Date(t.updatedAt).getTime():Date.now()}}}catch(e){}t({...function(){try{let e=localStorage.getItem(s);if(!e)return{};let t=JSON.parse(e),r={};for(let e of Object.keys(t)){let a=function(e,t){if("string"!=typeof t.title||!t.title)return null;let r=l.has(t.status)?t.status:"backlog",a=d.has(t.priority)?t.priority:"medium",i=c.has(t.workState)?t.workState:"idle";return{id:e,title:t.title,description:"string"==typeof t.description?t.description:"",status:r,priority:a,assigneeId:"string"==typeof t.assigneeId?t.assigneeId:null,workState:i,createdAt:"number"==typeof t.createdAt?t.createdAt:0,updatedAt:"number"==typeof t.updatedAt?t.updatedAt:"number"==typeof t.createdAt?t.createdAt:0}}(e,t[e]);a&&(("working"===a.workState||"starting"===a.workState)&&(a.status="todo",a.workState="idle"),r[e]=a)}return r}catch(e){return{}}}(),...r})}).catch(e=>h(e.message)).finally(()=>g(!1))},[]);function I(e,r){t(t=>p(t,e,{status:r}))}if((0,i.useEffect)(()=>{C()},[C]),(0,i.useEffect)(()=>{x||function(e){try{localStorage.setItem(s,JSON.stringify(e))}catch(e){}}(e)},[e,x]),(0,i.useEffect)(()=>{if(k&&e[k.id]){let t=e[k.id];t.updatedAt!==k.updatedAt&&w(t)}},[e,k]),f)return(0,a.jsx)(u.M,{children:(0,a.jsxs)("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%",gap:"var(--space-4)",color:"var(--text-tertiary)"},children:[(0,a.jsxs)("div",{style:{borderRadius:"var(--radius-md)",background:"color-mix(in srgb, var(--system-red) 10%, transparent)",border:"1px solid color-mix(in srgb, var(--system-red) 30%, transparent)",padding:"var(--space-3) var(--space-4)",fontSize:"var(--text-body)",color:"var(--system-red)"},children:["Failed to load employees: ",f]}),(0,a.jsx)("button",{onClick:C,style:{padding:"var(--space-2) var(--space-4)",borderRadius:"var(--radius-md)",background:"var(--accent)",color:"var(--accent-contrast)",border:"none",cursor:"pointer",fontSize:"var(--text-body)",fontWeight:"var(--weight-semibold)"},children:"Retry"})]})});let A=Object.keys(e).length,W=new Set(Object.values(e).map(e=>e.assigneeId).filter(Boolean)),R=r.filter(e=>W.has(e.name));return(0,a.jsx)(u.M,{children:(0,a.jsxs)("div",{className:"flex h-full relative",style:{background:"var(--bg)"},children:[(0,a.jsxs)("div",{className:"flex-1 h-full flex flex-col",style:{minWidth:0},children:[(0,a.jsxs)("div",{style:{padding:"var(--space-4) var(--space-5)",display:"flex",alignItems:"center",justifyContent:"space-between",flexShrink:0,borderBottom:"1px solid var(--separator)"},children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h1",{style:{fontSize:"var(--text-title2)",fontWeight:"var(--weight-bold)",color:"var(--text-primary)",margin:0,letterSpacing:"-0.3px"},children:"Kanban Board"}),(0,a.jsxs)("p",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)",margin:"2px 0 0"},children:[A," ticket",1!==A?"s":""]})]}),(0,a.jsxs)("button",{onClick:()=>b(!0),style:{borderRadius:"var(--radius-md)",padding:"8px 16px",fontSize:"var(--text-footnote)",fontWeight:"var(--weight-semibold)",border:"none",display:"flex",alignItems:"center",gap:"var(--space-2)",background:"var(--accent)",color:"#fff",cursor:"pointer"},children:[(0,a.jsx)(n,{size:16}),"New Ticket"]})]}),R.length>0&&(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-2)",padding:"var(--space-2) var(--space-5)",overflowX:"auto",flexShrink:0},children:[(0,a.jsx)("button",{onClick:()=>S(null),style:{display:"flex",alignItems:"center",gap:"var(--space-1)",padding:"4px 12px",borderRadius:"var(--radius-full)",border:"none",fontSize:"var(--text-caption1)",fontWeight:600,cursor:"pointer",background:null===j?"var(--accent)":"var(--fill-tertiary)",color:null===j?"white":"var(--text-secondary)",flexShrink:0},children:"All"}),R.map(e=>(0,a.jsx)("button",{onClick:()=>S(j===e.name?null:e.name),style:{display:"flex",alignItems:"center",gap:"var(--space-1)",padding:"4px 12px",borderRadius:"var(--radius-full)",border:"none",fontSize:"var(--text-caption1)",fontWeight:600,cursor:"pointer",background:j===e.name?"var(--accent)":"var(--fill-tertiary)",color:j===e.name?"white":"var(--text-secondary)",flexShrink:0},children:e.displayName},e.name))]}),(0,a.jsx)("div",{style:{flex:1,padding:"0 var(--space-3)",minHeight:0},children:x?(0,a.jsx)("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",height:"100%",color:"var(--text-tertiary)",fontSize:"var(--text-caption1)"},children:"Loading..."}):(0,a.jsx)(y,{tickets:e,employees:r,onTicketClick:function(e){w(e)},onMoveTicket:I,onCreateTicket:()=>b(!0),filterEmployeeId:j})})]}),k&&(0,a.jsx)("div",{className:"fixed inset-0 z-30 lg:hidden",style:{background:"rgba(0,0,0,0.5)"},onClick:()=>w(null)}),k&&(0,a.jsx)(D,{ticket:k,employees:r,onClose:()=>w(null),onStatusChange:e=>I(k.id,e),onAssigneeChange:e=>{var r;return r=k.id,void t(t=>p(t,r,{assigneeId:e}))},onDelete:()=>{var e;return e=k.id,void(t(t=>(function(e,t){let r={...e};return delete r[t],r})(t,e)),w(null))}}),(0,a.jsx)(z,{open:m,onOpenChange:b,employees:r,onSubmit:function(e){t(t=>(function(e,t){let r=crypto.randomUUID(),a=Date.now();return{...e,[r]:{...t,id:r,workState:"idle",createdAt:a,updatedAt:a}}})(t,{...e,status:"backlog"}))}})]})})}},1240:(e,t,r)=>{"use strict";r.d(t,{lG:()=>s,Cf:()=>c,rr:()=>v,c7:()=>p,L3:()=>u});var a=r(8111);r(5271);var i=r(1061),n=r(6573),o=r(1397);function s(e){let{...t}=e;return(0,a.jsx)(n.bL,{"data-slot":"dialog",...t})}function l(e){let{...t}=e;return(0,a.jsx)(n.ZL,{"data-slot":"dialog-portal",...t})}function d(e){let{className:t,...r}=e;return(0,a.jsx)(n.hJ,{"data-slot":"dialog-overlay",className:(0,o.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",t),...r})}function c(e){let{className:t,children:r,showCloseButton:s=!0,...c}=e;return(0,a.jsxs)(l,{"data-slot":"dialog-portal",children:[(0,a.jsx)(d,{}),(0,a.jsxs)(n.UC,{"data-slot":"dialog-content",className:(0,o.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 outline-none sm:max-w-lg",t),...c,children:[r,s&&(0,a.jsxs)(n.bm,{"data-slot":"dialog-close",className:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",children:[(0,a.jsx)(i.A,{}),(0,a.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function p(e){let{className:t,...r}=e;return(0,a.jsx)("div",{"data-slot":"dialog-header",className:(0,o.cn)("flex flex-col gap-2 text-center sm:text-left",t),...r})}function u(e){let{className:t,...r}=e;return(0,a.jsx)(n.hE,{"data-slot":"dialog-title",className:(0,o.cn)("text-lg leading-none font-semibold",t),...r})}function v(e){let{className:t,...r}=e;return(0,a.jsx)(n.VY,{"data-slot":"dialog-description",className:(0,o.cn)("text-muted-foreground text-sm",t),...r})}(0,r(3916).F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--system-blue)]",{variants:{variant:{default:"bg-[var(--accent)] text-black font-semibold btn-scale hover:shadow-[0_0_24px_var(--accent-fill)]",destructive:"bg-[var(--system-red)] text-white btn-scale",outline:"border border-[var(--separator)] bg-transparent shadow-[var(--shadow-subtle)] hover:bg-[var(--fill-secondary)] hover:text-[var(--text-primary)]",secondary:"bg-[var(--accent-fill)] text-[var(--accent)] font-semibold btn-scale",ghost:"bg-transparent text-[var(--text-secondary)] hover:bg-[var(--fill-secondary)] hover:text-[var(--text-primary)]",link:"text-[var(--system-blue)] underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 text-sm has-[>svg]:px-3",xs:"h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-8 rounded-md gap-1.5 px-3 text-sm has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 text-base has-[>svg]:px-4",icon:"size-9","icon-xs":"size-6 rounded-md [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-8","icon-lg":"size-10"}},defaultVariants:{variant:"default",size:"default"}})},1397:(e,t,r)=>{"use strict";r.d(t,{cn:()=>n});var a=r(5242),i=r(3065);function n(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,i.QP)((0,a.$)(t))}},8151:(e,t,r)=>{Promise.resolve().then(r.bind(r,543))}},e=>{e.O(0,[704,590,198,573,73,814,743,358],()=>e(e.s=8151)),_N_E=e.O()}]);
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[636],{543:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>A});var a=r(8111),i=r(5271);let n=(0,r(1983).A)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);var o=r(3176);let s="jinn-kanban",l=new Set(["backlog","todo","in-progress","review","done"]),d=new Set(["low","medium","high"]),c=new Set(["idle","starting","working","done","failed"]);function p(e,t,r){let a=e[t];return a?{...e,[t]:{...a,...r,updatedAt:Date.now()}}:e}var u=r(3073);let v=[{id:"backlog",title:"Backlog"},{id:"todo",title:"To Do"},{id:"in-progress",title:"In Progress"},{id:"review",title:"Review"},{id:"done",title:"Done"}],x={low:"var(--system-green)",medium:"var(--system-orange)",high:"var(--system-red)"};function g(e){let{column:t,tickets:r,onDrop:o,onCreateTicket:s,renderTicket:l}=e,[d,c]=(0,i.useState)(!1);return(0,a.jsxs)("div",{onDragOver:function(e){e.preventDefault(),e.dataTransfer.dropEffect="move",c(!0)},onDragLeave:function(e){e.currentTarget.contains(e.relatedTarget)||c(!1)},onDrop:function(e){e.preventDefault(),c(!1);let r=e.dataTransfer.getData("text/plain");r&&o(r,t.id)},style:{display:"flex",flexDirection:"column",minWidth:280,maxWidth:320,flex:"1 0 280px",height:"100%",borderRadius:"var(--radius-lg)",background:d?"var(--fill-secondary)":"var(--fill-tertiary)",border:d?"2px dashed var(--accent)":"2px dashed transparent",transition:"background 200ms var(--ease-smooth), border-color 200ms var(--ease-smooth)"},children:[(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"var(--space-3) var(--space-4)",flexShrink:0},children:[(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-2)"},children:[(0,a.jsx)("span",{style:{fontSize:"var(--text-footnote)",fontWeight:"var(--weight-semibold)",color:"var(--text-primary)",letterSpacing:"-0.01em"},children:t.title}),(0,a.jsx)("span",{style:{fontSize:"var(--text-caption2)",fontWeight:"var(--weight-medium)",color:"var(--text-tertiary)",background:"var(--fill-secondary)",borderRadius:"var(--radius-sm)",padding:"1px 6px",minWidth:20,textAlign:"center"},children:r.length})]}),"backlog"===t.id&&s&&(0,a.jsx)("button",{onClick:s,"aria-label":"Create new ticket",style:{display:"flex",alignItems:"center",justifyContent:"center",width:24,height:24,borderRadius:"var(--radius-sm)",border:"none",background:"transparent",color:"var(--text-secondary)",cursor:"pointer",padding:0,transition:"color 150ms var(--ease-smooth)"},children:(0,a.jsx)(n,{size:16})})]}),(0,a.jsxs)("div",{style:{flex:1,overflowY:"auto",padding:"0 var(--space-2) var(--space-2)",display:"flex",flexDirection:"column",gap:"var(--space-2)"},children:[r.map(e=>(0,a.jsx)("div",{children:l(e)},e.id)),0===r.length&&(0,a.jsx)("div",{style:{padding:"var(--space-8) var(--space-4)",textAlign:"center",fontSize:"var(--text-caption1)",color:"var(--text-tertiary)"},children:"No tickets"})]})]})}let f={low:"Low",medium:"Med",high:"High"};function h(e){let{ticket:t,assigneeName:r,onClick:n}=e,[o,s]=(0,i.useState)(!1);return(0,a.jsxs)("div",{draggable:!0,onDragStart:function(e){e.dataTransfer.setData("text/plain",t.id),e.dataTransfer.effectAllowed="move",s(!0)},onDragEnd:function(){s(!1)},onClick:n,role:"button",tabIndex:0,onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),n())},style:{background:"var(--material-regular)",borderRadius:"var(--radius-md)",padding:"var(--space-3)",cursor:o?"grabbing":"grab",opacity:o?.6:1,border:"1px solid var(--separator)",borderLeft:"3px solid ".concat(x[t.priority]),display:"flex",flexDirection:"column",gap:"var(--space-2)",userSelect:"none",transition:"opacity 150ms var(--ease-smooth)"},children:[(0,a.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",gap:"var(--space-2)"},children:[(0,a.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:3,fontSize:"var(--text-caption2)",fontWeight:600,color:x[t.priority],flexShrink:0,marginTop:2},children:[(0,a.jsx)("span",{style:{width:6,height:6,borderRadius:"50%",background:x[t.priority]}}),f[t.priority]]}),(0,a.jsx)("span",{style:{fontSize:"var(--text-footnote)",fontWeight:"var(--weight-semibold)",color:"var(--text-primary)",lineHeight:1.3,display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",overflow:"hidden",wordBreak:"break-word"},children:t.title})]}),t.description&&(0,a.jsx)("div",{style:{fontSize:"var(--text-caption2)",color:"var(--text-tertiary)",lineHeight:1.4,display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",overflow:"hidden",wordBreak:"break-word"},children:t.description}),(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-2)",flexWrap:"wrap"},children:[r&&(0,a.jsx)("span",{style:{fontSize:"var(--text-caption2)",fontWeight:"var(--weight-medium)",color:"var(--text-secondary)",background:"var(--fill-tertiary)",borderRadius:"var(--radius-sm)",padding:"1px var(--space-2)",lineHeight:1.5},children:r}),(0,a.jsx)("span",{style:{fontSize:"var(--text-caption2)",color:"var(--text-quaternary)",marginLeft:"auto"},title:new Date(t.createdAt).toLocaleString(),children:function(e){let t=Math.floor((Date.now()-e)/6e4);if(t<1)return"just now";if(t<60)return"".concat(t,"m ago");let r=Math.floor(t/60);if(r<24)return"".concat(r,"h ago");let a=Math.floor(r/24);return a<30?"".concat(a,"d ago"):"".concat(Math.floor(a/30),"mo ago")}(t.createdAt)})]})]})}function y(e){let{tickets:t,employees:r,onTicketClick:i,onMoveTicket:n,onCreateTicket:o,filterEmployeeId:s}=e;return(0,a.jsx)("div",{style:{display:"flex",gap:"var(--space-3)",height:"100%",overflowX:"auto",overflowY:"hidden",padding:"var(--space-2) 0",WebkitOverflowScrolling:"touch"},children:v.map(e=>{var l;let d=(l=e.id,Object.values(t).filter(e=>e.status===l).sort((e,t)=>t.updatedAt-e.updatedAt)),c=s?d.filter(e=>e.assigneeId===s):d;return(0,a.jsx)(g,{column:e,tickets:c,onDrop:n,onCreateTicket:"backlog"===e.id?o:void 0,renderTicket:e=>{var t;let n=r.find(t=>t.name===e.assigneeId);return(0,a.jsx)(h,{ticket:e,assigneeName:null!=(t=null==n?void 0:n.displayName)?t:null,onClick:()=>i(e)})}},e.id)})})}let m={executive:"Exec",manager:"Mgr",senior:"Sr",employee:""};function b(e){var t;let{employees:r,value:n,onChange:o}=e,[s,l]=(0,i.useState)(!1),[d,c]=(0,i.useState)(""),[p,u]=(0,i.useState)(0),v=(0,i.useRef)(null),x=(0,i.useRef)(null),g=(0,i.useRef)(null),f=null!=(t=r.find(e=>e.name===n))?t:null,h=d.trim()?r.filter(e=>{let t=d.toLowerCase();return e.name.toLowerCase().includes(t)||e.displayName.toLowerCase().includes(t)||e.department.toLowerCase().includes(t)}):r,y=!d.trim()||"unassigned".includes(d.toLowerCase());(0,i.useEffect)(()=>{u(0)},[d]),(0,i.useEffect)(()=>{s?setTimeout(()=>{var e;return null==(e=x.current)?void 0:e.focus()},0):c("")},[s]),(0,i.useEffect)(()=>{if(s)return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e);function e(e){v.current&&!v.current.contains(e.target)&&l(!1)}},[s]),(0,i.useEffect)(()=>{if(!s||!g.current)return;let e=g.current.querySelectorAll("[data-employee-option]")[p];e&&e.scrollIntoView({block:"nearest"})},[p,s]);let b=+!!y+h.length,k=(0,i.useCallback)(e=>{if(!s){("Enter"===e.key||" "===e.key||"ArrowDown"===e.key)&&(e.preventDefault(),l(!0));return}if("Escape"===e.key){e.preventDefault(),l(!1);return}if("ArrowDown"===e.key)e.preventDefault(),u(e=>Math.min(e+1,b-1));else if("ArrowUp"===e.key)e.preventDefault(),u(e=>Math.max(e-1,0));else if("Enter"===e.key){if(e.preventDefault(),y&&0===p)o("");else{let e=y?p-1:p;h[e]&&o(h[e].name)}l(!1)}},[s,p,b,y,h,o]);return(0,a.jsxs)("div",{ref:v,style:{position:"relative"},onKeyDown:k,children:[(0,a.jsx)("button",{type:"button",onClick:()=>l(!s),"aria-haspopup":"listbox","aria-expanded":s,style:{width:"100%",display:"flex",alignItems:"center",gap:"var(--space-2)",padding:"8px 12px",fontSize:"var(--text-body)",color:f?"var(--text-primary)":"var(--text-tertiary)",cursor:"pointer",textAlign:"left",border:"1px solid var(--separator)",borderRadius:"var(--radius-md)",background:"var(--fill-tertiary)",backgroundImage:"url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E\")",backgroundRepeat:"no-repeat",backgroundPosition:"right 12px center",paddingRight:36,minHeight:40,fontFamily:"inherit"},children:f?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{style:{fontWeight:"var(--weight-medium)"},children:f.displayName}),m[f.rank]&&(0,a.jsx)("span",{style:{fontSize:"var(--text-caption2)",color:"var(--text-tertiary)",background:"var(--fill-secondary)",borderRadius:"var(--radius-sm)",padding:"1px 6px"},children:m[f.rank]})]}):(0,a.jsx)("span",{children:"Unassigned"})}),s&&(0,a.jsxs)("div",{style:{position:"absolute",top:"100%",left:0,right:0,marginTop:4,zIndex:50,background:"var(--material-regular)",border:"1px solid var(--separator)",borderRadius:"var(--radius-md)",boxShadow:"0 8px 32px rgba(0,0,0,0.3)",overflow:"hidden"},children:[(0,a.jsx)("div",{style:{padding:"8px 8px 4px"},children:(0,a.jsx)("input",{ref:x,type:"text",placeholder:"Search employees...",value:d,onChange:e=>c(e.target.value),style:{width:"100%",padding:"6px 10px",fontSize:"var(--text-footnote)",border:"1px solid var(--separator)",borderRadius:"var(--radius-sm)",background:"var(--fill-tertiary)",color:"var(--text-primary)",outline:"none",fontFamily:"inherit"}})}),(0,a.jsxs)("div",{ref:g,role:"listbox",style:{maxHeight:280,overflowY:"auto",padding:"4px"},children:[y&&(0,a.jsxs)("div",{"data-employee-option":!0,role:"option","aria-selected":""===n,onClick:()=>{o(""),l(!1)},style:{display:"flex",alignItems:"center",gap:"var(--space-2)",padding:"8px 10px",borderRadius:"var(--radius-sm)",cursor:"pointer",background:0===p?"var(--fill-secondary)":"transparent",transition:"background 100ms"},onMouseEnter:()=>u(0),children:[(0,a.jsx)("div",{style:{width:32,height:32,borderRadius:8,background:"var(--fill-tertiary)",display:"flex",alignItems:"center",justifyContent:"center",fontSize:14,color:"var(--text-tertiary)",flexShrink:0},children:"—"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{style:{fontSize:"var(--text-footnote)",fontWeight:"var(--weight-medium)",color:"var(--text-secondary)"},children:"Unassigned"}),(0,a.jsx)("div",{style:{fontSize:"var(--text-caption2)",color:"var(--text-tertiary)"},children:"No employee assigned"})]}),""===n&&(0,a.jsx)("span",{style:{marginLeft:"auto",color:"var(--accent)",fontSize:13,flexShrink:0},children:"✓"})]}),h.map((e,t)=>{let r=y?t+1:t,i=p===r,s=n===e.name;return(0,a.jsxs)("div",{"data-employee-option":!0,role:"option","aria-selected":s,onClick:()=>{o(e.name),l(!1)},onMouseEnter:()=>u(r),style:{display:"flex",alignItems:"center",gap:"var(--space-2)",padding:"8px 10px",borderRadius:"var(--radius-sm)",cursor:"pointer",background:i?"var(--fill-secondary)":"transparent",transition:"background 100ms"},children:[(0,a.jsx)("div",{style:{width:32,height:32,borderRadius:8,background:"var(--accent)",display:"flex",alignItems:"center",justifyContent:"center",fontSize:14,color:"#fff",fontWeight:600,flexShrink:0},children:e.displayName.charAt(0).toUpperCase()}),(0,a.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-1)"},children:[(0,a.jsx)("span",{style:{fontSize:"var(--text-footnote)",fontWeight:"var(--weight-semibold)",color:"var(--text-primary)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.displayName}),m[e.rank]&&(0,a.jsx)("span",{style:{fontSize:"var(--text-caption2)",color:"var(--text-tertiary)",background:"var(--fill-secondary)",borderRadius:"var(--radius-sm)",padding:"0 4px",flexShrink:0},children:m[e.rank]})]}),(0,a.jsx)("div",{style:{fontSize:"var(--text-caption2)",color:"var(--text-tertiary)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.department||e.name})]}),s&&(0,a.jsx)("span",{style:{color:"var(--accent)",fontSize:13,flexShrink:0},children:"✓"})]},e.name)}),0===h.length&&!y&&(0,a.jsxs)("div",{style:{padding:"var(--space-4)",textAlign:"center",fontSize:"var(--text-footnote)",color:"var(--text-tertiary)"},children:["No employees match “",d,"”"]})]})]})]})}var k=r(1240);let w=["low","medium","high"],j={low:"Low",medium:"Medium",high:"High"},S={title:"",description:"",priority:"medium",assigneeId:""};function z(e){let{open:t,onOpenChange:r,employees:o,onSubmit:s}=e,[l,d]=(0,i.useState)(S),c=(0,i.useCallback)(()=>{d(S)},[]);return(0,a.jsx)(k.lG,{open:t,onOpenChange:function(e){e||c(),r(e)},children:(0,a.jsxs)(k.Cf,{showCloseButton:!0,style:{background:"var(--bg)",border:"1px solid var(--separator)",borderRadius:"var(--radius-lg)",boxShadow:"var(--shadow-card)",maxWidth:480},children:[(0,a.jsxs)(k.c7,{children:[(0,a.jsx)(k.L3,{style:{fontSize:"var(--text-title3)",fontWeight:"var(--weight-bold)",color:"var(--text-primary)"},children:"Create Ticket"}),(0,a.jsx)(k.rr,{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)"},children:"Add a new ticket to the backlog."})]}),(0,a.jsxs)("form",{onSubmit:function(e){e.preventDefault(),l.title.trim()&&(s({title:l.title.trim(),description:l.description.trim(),priority:l.priority,assigneeId:l.assigneeId||null}),c(),r(!1))},style:{display:"flex",flexDirection:"column",gap:"var(--space-4)"},children:[(0,a.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"var(--space-1)"},children:[(0,a.jsx)("label",{htmlFor:"ticket-title",style:{fontSize:"var(--text-caption1)",fontWeight:"var(--weight-medium)",color:"var(--text-secondary)"},children:"Title"}),(0,a.jsx)("input",{id:"ticket-title",type:"text",placeholder:"What needs to be done?",value:l.title,onChange:e=>d(t=>({...t,title:e.target.value})),required:!0,autoFocus:!0,style:{fontSize:"var(--text-body)",color:"var(--text-primary)",padding:"8px 12px",border:"1px solid var(--separator)",borderRadius:"var(--radius-md)",background:"var(--fill-tertiary)",outline:"none",fontFamily:"inherit"}})]}),(0,a.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"var(--space-1)"},children:[(0,a.jsx)("label",{htmlFor:"ticket-description",style:{fontSize:"var(--text-caption1)",fontWeight:"var(--weight-medium)",color:"var(--text-secondary)"},children:"Description"}),(0,a.jsx)("textarea",{id:"ticket-description",placeholder:"Add details...",rows:3,value:l.description,onChange:e=>d(t=>({...t,description:e.target.value})),style:{fontSize:"var(--text-body)",color:"var(--text-primary)",resize:"vertical",minHeight:72,padding:"8px 12px",border:"1px solid var(--separator)",borderRadius:"var(--radius-md)",background:"var(--fill-tertiary)",outline:"none",fontFamily:"inherit"}})]}),(0,a.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"var(--space-2)"},children:[(0,a.jsx)("span",{style:{fontSize:"var(--text-caption1)",fontWeight:"var(--weight-medium)",color:"var(--text-secondary)"},children:"Priority"}),(0,a.jsx)("div",{style:{display:"flex",gap:"var(--space-2)"},children:w.map(e=>{let t=l.priority===e;return(0,a.jsxs)("button",{type:"button",onClick:()=>d(t=>({...t,priority:e})),style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",gap:"var(--space-1)",padding:"var(--space-2) var(--space-3)",borderRadius:"var(--radius-md)",border:t?"2px solid ".concat(x[e]):"2px solid var(--separator)",background:t?"var(--fill-tertiary)":"transparent",cursor:"pointer",fontSize:"var(--text-caption1)",fontWeight:"var(--weight-medium)",color:t?"var(--text-primary)":"var(--text-tertiary)",transition:"all 150ms var(--ease-smooth)"},children:[(0,a.jsx)("span",{style:{width:8,height:8,borderRadius:"50%",background:x[e],flexShrink:0}}),j[e]]},e)})})]}),(0,a.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"var(--space-1)"},children:[(0,a.jsx)("label",{style:{fontSize:"var(--text-caption1)",fontWeight:"var(--weight-medium)",color:"var(--text-secondary)"},children:"Assignee"}),(0,a.jsx)(b,{employees:o,value:l.assigneeId,onChange:e=>d(t=>({...t,assigneeId:e}))})]}),(0,a.jsxs)("button",{type:"submit",disabled:!l.title.trim(),style:{borderRadius:"var(--radius-md)",padding:"12px 20px",width:"100%",fontSize:"var(--text-body)",fontWeight:"var(--weight-semibold)",border:"none",display:"flex",alignItems:"center",justifyContent:"center",gap:"var(--space-2)",marginTop:"var(--space-2)",background:"var(--accent)",color:"#fff",cursor:l.title.trim()?"pointer":"default",opacity:l.title.trim()?1:.5,transition:"opacity 150ms ease"},children:[(0,a.jsx)(n,{size:16}),"Create Ticket"]})]})]})})}function C(e){let{priority:t}=e;return(0,a.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:"var(--space-1)",fontSize:"var(--text-caption2)",fontWeight:600,color:x[t],textTransform:"uppercase",letterSpacing:"0.5px"},children:[(0,a.jsx)("span",{style:{width:6,height:6,borderRadius:"50%",background:x[t]}}),t]})}function I(e){var t,r;let{status:i}=e,n=null!=(r=null==(t=v.find(e=>e.id===i))?void 0:t.title)?r:i;return(0,a.jsx)("span",{style:{fontSize:"var(--text-caption2)",fontWeight:600,color:"var(--text-secondary)",background:"var(--fill-tertiary)",padding:"2px var(--space-2)",borderRadius:"var(--radius-sm)",textTransform:"uppercase",letterSpacing:"0.3px"},children:n})}function D(e){var t,r;let{ticket:n,employees:o,onClose:s,onStatusChange:l,onAssigneeChange:d,onDelete:c}=e,p=(0,i.useRef)(null);(0,i.useEffect)(()=>{function e(e){"Escape"===e.key&&s()}return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[s]),(0,i.useEffect)(()=>{var e;null==(e=p.current)||e.focus()},[]);let u=null!=(t=o.find(e=>e.name===n.assigneeId))?t:null,x="var(--accent)";return(0,a.jsx)("div",{style:{position:"absolute",top:0,right:0,bottom:0,zIndex:30},children:(0,a.jsxs)("div",{style:{width:420,maxWidth:"100vw",height:"100%",background:"var(--material-regular)",boxShadow:"-4px 0 24px rgba(0,0,0,0.25)",display:"flex",flexDirection:"column"},children:[(0,a.jsx)("div",{style:{height:3,background:x,flexShrink:0}}),(0,a.jsxs)("div",{style:{flex:1,overflowY:"auto"},children:[(0,a.jsx)("div",{style:{padding:"var(--space-4) var(--space-5) 0",display:"flex",justifyContent:"flex-end",gap:"var(--space-2)"},children:(0,a.jsx)("button",{ref:p,onClick:s,"aria-label":"Close detail panel",style:{width:28,height:28,borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",background:"var(--fill-secondary)",color:"var(--text-secondary)",border:"none",cursor:"pointer",fontSize:"var(--text-footnote)",transition:"all 150ms var(--ease-spring)"},children:"✕"})}),(0,a.jsxs)("div",{style:{padding:"var(--space-2) var(--space-5) var(--space-4)"},children:[(0,a.jsx)("h2",{style:{fontSize:"var(--text-title3)",fontWeight:700,letterSpacing:"-0.3px",color:"var(--text-primary)",margin:0,lineHeight:1.25},children:n.title}),(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-3)",marginTop:"var(--space-2)"},children:[(0,a.jsx)(I,{status:n.status}),(0,a.jsx)(C,{priority:n.priority})]}),u?(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-2)",marginTop:"var(--space-3)",fontSize:"var(--text-footnote)",color:"var(--text-secondary)"},children:[(0,a.jsx)("span",{children:u.displayName}),(0,a.jsx)("span",{style:{fontSize:"var(--text-caption2)",color:"var(--text-tertiary)",background:"var(--fill-secondary)",borderRadius:"var(--radius-sm)",padding:"0 4px"},children:u.rank})]}):(0,a.jsx)("div",{style:{marginTop:"var(--space-3)",fontSize:"var(--text-footnote)",color:"var(--text-tertiary)",fontStyle:"italic"},children:"Unassigned"})]}),(0,a.jsxs)("div",{style:{padding:"0 var(--space-5) var(--space-4)"},children:[(0,a.jsx)("div",{style:{fontSize:"var(--text-caption1)",fontWeight:600,color:"var(--text-tertiary)",textTransform:"uppercase",letterSpacing:"0.5px",marginBottom:"var(--space-2)"},children:"Move to"}),(0,a.jsx)("div",{style:{display:"flex",gap:"var(--space-1)",flexWrap:"wrap"},children:v.map(e=>{let t=e.id===n.status;return(0,a.jsx)("button",{onClick:()=>{t||l(e.id)},disabled:t,style:{fontSize:"var(--text-caption2)",fontWeight:600,padding:"3px var(--space-2)",borderRadius:"var(--radius-sm)",border:"none",cursor:t?"default":"pointer",background:t?x:"var(--fill-tertiary)",color:t?"#fff":"var(--text-secondary)",opacity:t?1:.8,transition:"all 120ms ease"},children:e.title},e.id)})})]}),(0,a.jsxs)("div",{style:{padding:"0 var(--space-5) var(--space-4)"},children:[(0,a.jsx)("div",{style:{fontSize:"var(--text-caption1)",fontWeight:600,color:"var(--text-tertiary)",textTransform:"uppercase",letterSpacing:"0.5px",marginBottom:"var(--space-2)"},children:"Assignee"}),(0,a.jsx)(b,{employees:o,value:null!=(r=n.assigneeId)?r:"",onChange:e=>d(e||null)})]}),n.description&&(0,a.jsxs)("div",{style:{padding:"0 var(--space-5) var(--space-4)"},children:[(0,a.jsx)("div",{style:{height:1,background:"var(--separator)",marginBottom:"var(--space-3)"}}),(0,a.jsx)("div",{style:{fontSize:"var(--text-caption1)",fontWeight:600,color:"var(--text-tertiary)",textTransform:"uppercase",letterSpacing:"0.5px",marginBottom:"var(--space-2)"},children:"Description"}),(0,a.jsx)("div",{style:{fontSize:"var(--text-footnote)",color:"var(--text-secondary)",lineHeight:1.5,whiteSpace:"pre-wrap"},children:n.description})]})]}),(0,a.jsx)("div",{style:{flexShrink:0,padding:"var(--space-2) var(--space-5) var(--space-4)",borderTop:"1px solid var(--separator)"},children:(0,a.jsx)("button",{onClick:function(){window.confirm('Delete ticket "'.concat(n.title,'"? This cannot be undone.'))&&c()},style:{width:"100%",padding:"var(--space-2) var(--space-3)",borderRadius:"var(--radius-md)",border:"1px solid var(--system-red)",background:"transparent",color:"var(--system-red)",fontSize:"var(--text-footnote)",fontWeight:600,cursor:"pointer",transition:"all 120ms ease"},children:"Delete Ticket"})})]})})}function A(){let[e,t]=(0,i.useState)({}),[r,v]=(0,i.useState)([]),[x,g]=(0,i.useState)(!0),[f,h]=(0,i.useState)(null),[m,b]=(0,i.useState)(!1),[k,w]=(0,i.useState)(null),[j,S]=(0,i.useState)(null),C=(0,i.useCallback)(()=>{g(!0),h(null),o.F.getOrg().then(async e=>{v(await Promise.all(e.employees.map(async e=>{try{return await o.F.getEmployee(e)}catch(t){return{name:e,displayName:e,department:"",rank:"employee",engine:"unknown",model:"unknown",persona:""}}})));let r={};for(let t of e.departments)try{let e=await o.F.getDepartmentBoard(t);if(Array.isArray(e))for(let t of e){let e={todo:"todo",in_progress:"in-progress","in-progress":"in-progress",done:"done",backlog:"backlog",review:"review"}[t.status]||"todo",a={low:"low",medium:"medium",high:"high"}[t.priority||"medium"]||"medium";r[t.id]={id:t.id,title:t.title,description:t.description||"",status:e,priority:a,assigneeId:t.assignee||null,workState:"idle",createdAt:t.createdAt?new Date(t.createdAt).getTime():Date.now(),updatedAt:t.updatedAt?new Date(t.updatedAt).getTime():Date.now()}}}catch(e){}t({...function(){try{let e=localStorage.getItem(s);if(!e)return{};let t=JSON.parse(e),r={};for(let e of Object.keys(t)){let a=function(e,t){if("string"!=typeof t.title||!t.title)return null;let r=l.has(t.status)?t.status:"backlog",a=d.has(t.priority)?t.priority:"medium",i=c.has(t.workState)?t.workState:"idle";return{id:e,title:t.title,description:"string"==typeof t.description?t.description:"",status:r,priority:a,assigneeId:"string"==typeof t.assigneeId?t.assigneeId:null,workState:i,createdAt:"number"==typeof t.createdAt?t.createdAt:0,updatedAt:"number"==typeof t.updatedAt?t.updatedAt:"number"==typeof t.createdAt?t.createdAt:0}}(e,t[e]);a&&(("working"===a.workState||"starting"===a.workState)&&(a.status="todo",a.workState="idle"),r[e]=a)}return r}catch(e){return{}}}(),...r})}).catch(e=>h(e.message)).finally(()=>g(!1))},[]);function I(e,r){t(t=>p(t,e,{status:r}))}if((0,i.useEffect)(()=>{C()},[C]),(0,i.useEffect)(()=>{x||function(e){try{localStorage.setItem(s,JSON.stringify(e))}catch(e){}}(e)},[e,x]),(0,i.useEffect)(()=>{if(k&&e[k.id]){let t=e[k.id];t.updatedAt!==k.updatedAt&&w(t)}},[e,k]),f)return(0,a.jsx)(u.M,{children:(0,a.jsxs)("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%",gap:"var(--space-4)",color:"var(--text-tertiary)"},children:[(0,a.jsxs)("div",{style:{borderRadius:"var(--radius-md)",background:"color-mix(in srgb, var(--system-red) 10%, transparent)",border:"1px solid color-mix(in srgb, var(--system-red) 30%, transparent)",padding:"var(--space-3) var(--space-4)",fontSize:"var(--text-body)",color:"var(--system-red)"},children:["Failed to load employees: ",f]}),(0,a.jsx)("button",{onClick:C,style:{padding:"var(--space-2) var(--space-4)",borderRadius:"var(--radius-md)",background:"var(--accent)",color:"var(--accent-contrast)",border:"none",cursor:"pointer",fontSize:"var(--text-body)",fontWeight:"var(--weight-semibold)"},children:"Retry"})]})});let A=Object.keys(e).length,W=new Set(Object.values(e).map(e=>e.assigneeId).filter(Boolean)),R=r.filter(e=>W.has(e.name));return(0,a.jsx)(u.M,{children:(0,a.jsxs)("div",{className:"flex h-full relative",style:{background:"var(--bg)"},children:[(0,a.jsxs)("div",{className:"flex-1 h-full flex flex-col",style:{minWidth:0},children:[(0,a.jsxs)("div",{style:{padding:"var(--space-4) var(--space-5)",display:"flex",alignItems:"center",justifyContent:"space-between",flexShrink:0,borderBottom:"1px solid var(--separator)"},children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h1",{style:{fontSize:"var(--text-title2)",fontWeight:"var(--weight-bold)",color:"var(--text-primary)",margin:0,letterSpacing:"-0.3px"},children:"Kanban Board"}),(0,a.jsxs)("p",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)",margin:"2px 0 0"},children:[A," ticket",1!==A?"s":""]})]}),(0,a.jsxs)("button",{onClick:()=>b(!0),style:{borderRadius:"var(--radius-md)",padding:"8px 16px",fontSize:"var(--text-footnote)",fontWeight:"var(--weight-semibold)",border:"none",display:"flex",alignItems:"center",gap:"var(--space-2)",background:"var(--accent)",color:"#fff",cursor:"pointer"},children:[(0,a.jsx)(n,{size:16}),"New Ticket"]})]}),R.length>0&&(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-2)",padding:"var(--space-2) var(--space-5)",overflowX:"auto",flexShrink:0},children:[(0,a.jsx)("button",{onClick:()=>S(null),style:{display:"flex",alignItems:"center",gap:"var(--space-1)",padding:"4px 12px",borderRadius:"var(--radius-full)",border:"none",fontSize:"var(--text-caption1)",fontWeight:600,cursor:"pointer",background:null===j?"var(--accent)":"var(--fill-tertiary)",color:null===j?"white":"var(--text-secondary)",flexShrink:0},children:"All"}),R.map(e=>(0,a.jsx)("button",{onClick:()=>S(j===e.name?null:e.name),style:{display:"flex",alignItems:"center",gap:"var(--space-1)",padding:"4px 12px",borderRadius:"var(--radius-full)",border:"none",fontSize:"var(--text-caption1)",fontWeight:600,cursor:"pointer",background:j===e.name?"var(--accent)":"var(--fill-tertiary)",color:j===e.name?"white":"var(--text-secondary)",flexShrink:0},children:e.displayName},e.name))]}),(0,a.jsx)("div",{style:{flex:1,padding:"0 var(--space-3)",minHeight:0},children:x?(0,a.jsx)("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",height:"100%",color:"var(--text-tertiary)",fontSize:"var(--text-caption1)"},children:"Loading..."}):(0,a.jsx)(y,{tickets:e,employees:r,onTicketClick:function(e){w(e)},onMoveTicket:I,onCreateTicket:()=>b(!0),filterEmployeeId:j})})]}),k&&(0,a.jsx)("div",{className:"fixed inset-0 z-30 lg:hidden",style:{background:"rgba(0,0,0,0.5)"},onClick:()=>w(null)}),k&&(0,a.jsx)(D,{ticket:k,employees:r,onClose:()=>w(null),onStatusChange:e=>I(k.id,e),onAssigneeChange:e=>{var r;return r=k.id,void t(t=>p(t,r,{assigneeId:e}))},onDelete:()=>{var e;return e=k.id,void(t(t=>(function(e,t){let r={...e};return delete r[t],r})(t,e)),w(null))}}),(0,a.jsx)(z,{open:m,onOpenChange:b,employees:r,onSubmit:function(e){t(t=>(function(e,t){let r=crypto.randomUUID(),a=Date.now();return{...e,[r]:{...t,id:r,workState:"idle",createdAt:a,updatedAt:a}}})(t,{...e,status:"backlog"}))}})]})})}},1240:(e,t,r)=>{"use strict";r.d(t,{lG:()=>s,Cf:()=>c,rr:()=>v,c7:()=>p,L3:()=>u});var a=r(8111);r(5271);var i=r(1061),n=r(6573),o=r(1397);function s(e){let{...t}=e;return(0,a.jsx)(n.bL,{"data-slot":"dialog",...t})}function l(e){let{...t}=e;return(0,a.jsx)(n.ZL,{"data-slot":"dialog-portal",...t})}function d(e){let{className:t,...r}=e;return(0,a.jsx)(n.hJ,{"data-slot":"dialog-overlay",className:(0,o.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",t),...r})}function c(e){let{className:t,children:r,showCloseButton:s=!0,...c}=e;return(0,a.jsxs)(l,{"data-slot":"dialog-portal",children:[(0,a.jsx)(d,{}),(0,a.jsxs)(n.UC,{"data-slot":"dialog-content",className:(0,o.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 outline-none sm:max-w-lg",t),...c,children:[r,s&&(0,a.jsxs)(n.bm,{"data-slot":"dialog-close",className:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",children:[(0,a.jsx)(i.A,{}),(0,a.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function p(e){let{className:t,...r}=e;return(0,a.jsx)("div",{"data-slot":"dialog-header",className:(0,o.cn)("flex flex-col gap-2 text-center sm:text-left",t),...r})}function u(e){let{className:t,...r}=e;return(0,a.jsx)(n.hE,{"data-slot":"dialog-title",className:(0,o.cn)("text-lg leading-none font-semibold",t),...r})}function v(e){let{className:t,...r}=e;return(0,a.jsx)(n.VY,{"data-slot":"dialog-description",className:(0,o.cn)("text-muted-foreground text-sm",t),...r})}(0,r(3916).F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--system-blue)]",{variants:{variant:{default:"bg-[var(--accent)] text-black font-semibold btn-scale hover:shadow-[0_0_24px_var(--accent-fill)]",destructive:"bg-[var(--system-red)] text-white btn-scale",outline:"border border-[var(--separator)] bg-transparent shadow-[var(--shadow-subtle)] hover:bg-[var(--fill-secondary)] hover:text-[var(--text-primary)]",secondary:"bg-[var(--accent-fill)] text-[var(--accent)] font-semibold btn-scale",ghost:"bg-transparent text-[var(--text-secondary)] hover:bg-[var(--fill-secondary)] hover:text-[var(--text-primary)]",link:"text-[var(--system-blue)] underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 text-sm has-[>svg]:px-3",xs:"h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-8 rounded-md gap-1.5 px-3 text-sm has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 text-base has-[>svg]:px-4",icon:"size-9","icon-xs":"size-6 rounded-md [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-8","icon-lg":"size-10"}},defaultVariants:{variant:"default",size:"default"}})},1397:(e,t,r)=>{"use strict";r.d(t,{cn:()=>n});var a=r(5242),i=r(3065);function n(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,i.QP)((0,a.$)(t))}},7057:(e,t,r)=>{Promise.resolve().then(r.bind(r,543))}},e=>{e.O(0,[704,590,198,573,73,814,743,358],()=>e(e.s=7057)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[177],{1150:(e,t,o)=>{"use strict";o.d(t,{ClientProviders:()=>l});var a=o(8111),n=o(7460),r=o(2755);function l(e){let{children:t}=e;return(0,a.jsx)(n.N,{children:(0,a.jsxs)(r.Z6,{children:[t,(0,a.jsx)(r.Qc,{})]})})}},2755:(e,t,o)=>{"use strict";o.d(t,{Qc:()=>m,Z6:()=>u,t0:()=>p});var a=o(8111),n=o(5271);let r={accentColor:null,portalName:null,portalSubtitle:null,portalEmoji:null,portalIcon:null,iconBgHidden:!1,emojiOnly:!1,operatorName:null,language:"English",employeeOverrides:{}},l="jinn-settings";function s(e){localStorage.setItem(l,JSON.stringify(e))}var c=o(3176);let i=(0,n.createContext)({settings:{accentColor:null,portalName:null,portalSubtitle:null,portalEmoji:null,portalIcon:null,iconBgHidden:!1,emojiOnly:!1,operatorName:null,language:"English",employeeOverrides:{}},setAccentColor:()=>{},setPortalName:()=>{},setPortalSubtitle:()=>{},setPortalEmoji:()=>{},setPortalIcon:()=>{},setIconBgHidden:()=>{},setEmojiOnly:()=>{},setOperatorName:()=>{},setLanguage:()=>{},setEmployeeOverride:()=>{},clearEmployeeOverride:()=>{},getEmployeeDisplay:e=>({emoji:e.emoji}),resetAll:()=>{}});function u(e){let{children:t}=e,[o,u]=(0,n.useState)({...r});(0,n.useEffect)(()=>{let e=function(){try{let e=localStorage.getItem(l);if(!e)return{...r};let t=JSON.parse(e);return{...r,...t}}catch(e){return{...r}}}();u(e),c.F.getOnboarding().then(t=>{if(t.portalName||t.operatorName){let o={...e,...t.portalName&&{portalName:t.portalName},...t.operatorName&&{operatorName:t.operatorName}};u(o),s(o)}}).catch(()=>{})},[]),(0,n.useEffect)(()=>{let e=document.documentElement.style;o.accentColor?(e.setProperty("--accent",o.accentColor),e.setProperty("--accent-fill",function(e){let t=parseInt(e.slice(1,3),16),o=parseInt(e.slice(3,5),16),a=parseInt(e.slice(5,7),16);return"rgba(".concat(t,",").concat(o,",").concat(a,",0.15)")}(o.accentColor)),e.setProperty("--accent-contrast",function(e){let t=parseInt(e.slice(1,3),16)/255,o=parseInt(e.slice(3,5),16)/255,a=parseInt(e.slice(5,7),16)/255,n=e=>e<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4);return .2126*n(t)+.7152*n(o)+.0722*n(a)>.4?"#000":"#fff"}(o.accentColor))):(e.removeProperty("--accent"),e.removeProperty("--accent-fill"),e.removeProperty("--accent-contrast"))},[o.accentColor]);let p=(0,n.useCallback)(e=>{u(e),s(e)},[]),m=(0,n.useCallback)(e=>{p({...o,accentColor:e})},[o,p]),d=(0,n.useCallback)(e=>{p({...o,portalName:e||null})},[o,p]),g=(0,n.useCallback)(e=>{p({...o,portalSubtitle:e||null})},[o,p]),f=(0,n.useCallback)(e=>{p({...o,portalEmoji:e||null})},[o,p]),b=(0,n.useCallback)(e=>{p({...o,portalIcon:e})},[o,p]),h=(0,n.useCallback)(e=>{p({...o,iconBgHidden:e})},[o,p]),y=(0,n.useCallback)(e=>{p({...o,emojiOnly:e})},[o,p]),C=(0,n.useCallback)(e=>{p({...o,operatorName:e||null})},[o,p]),k=(0,n.useCallback)(e=>{p({...o,language:e||"English"})},[o,p]),v=(0,n.useCallback)((e,t)=>{let a=o.employeeOverrides[e]||{};p({...o,employeeOverrides:{...o.employeeOverrides,[e]:{...a,...t}}})},[o,p]),E=(0,n.useCallback)(e=>{let{[e]:t,...a}=o.employeeOverrides;p({...o,employeeOverrides:a})},[o,p]),O=(0,n.useCallback)(e=>{let t=o.employeeOverrides[e.id];return{emoji:(null==t?void 0:t.emoji)||e.emoji,profileImage:null==t?void 0:t.profileImage,emojiOnly:o.emojiOnly}},[o.employeeOverrides,o.emojiOnly]),j=(0,n.useCallback)(()=>{p({accentColor:null,portalName:null,portalSubtitle:null,portalEmoji:null,portalIcon:null,iconBgHidden:!1,emojiOnly:!1,operatorName:null,language:"English",employeeOverrides:{}})},[p]);return(0,a.jsx)(i.Provider,{value:{settings:o,setAccentColor:m,setPortalName:d,setPortalSubtitle:g,setPortalEmoji:f,setPortalIcon:b,setIconBgHidden:h,setEmojiOnly:y,setOperatorName:C,setLanguage:k,setEmployeeOverride:v,clearEmployeeOverride:E,getEmployeeDisplay:O,resetAll:j},children:t})}let p=()=>(0,n.useContext)(i);function m(){let{settings:e}=p(),t=(0,n.useRef)(e.portalName);return t.current=e.portalName,(0,n.useEffect)(()=>{function e(){let e=t.current||"Jinn",o="".concat(e," - AI Gateway");document.title!==o&&(document.title=o)}e();let o=document.querySelector("title");if(!o)return;let a=new MutationObserver(()=>e());return a.observe(o,{childList:!0,characterData:!0,subtree:!0}),()=>a.disconnect()},[e.portalName]),null}},3176:(e,t,o)=>{"use strict";o.d(t,{F:()=>c});let a=window.location.origin;async function n(e){let t=await fetch("".concat(a).concat(e));if(!t.ok)throw Error("API error: ".concat(t.status));return t.json()}async function r(e,t){let o=await fetch("".concat(a).concat(e),{method:"POST",headers:{"Content-Type":"application/json"},body:t?JSON.stringify(t):void 0});if(!o.ok)throw Error("API error: ".concat(o.status));return o.json()}async function l(e){let t=await fetch("".concat(a).concat(e),{method:"DELETE"});if(!t.ok)throw Error("API error: ".concat(t.status));return t.json()}async function s(e,t){let o=await fetch("".concat(a).concat(e),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!o.ok)throw Error("API error: ".concat(o.status));return o.json()}let c={getStatus:()=>n("/api/status"),getSessions:()=>n("/api/sessions"),getSession:e=>n("/api/sessions/".concat(e)),getSessionChildren:e=>n("/api/sessions/".concat(e,"/children")),deleteSession:e=>l("/api/sessions/".concat(e)),bulkDeleteSessions:e=>r("/api/sessions/bulk-delete",{ids:e}),createSession:e=>r("/api/sessions",e),createStubSession:e=>r("/api/sessions/stub",e),sendMessage:(e,t)=>r("/api/sessions/".concat(e,"/message"),t),getCronJobs:()=>n("/api/cron"),getCronRuns:e=>n("/api/cron/".concat(e,"/runs")),updateCronJob:(e,t)=>s("/api/cron/".concat(e),t),triggerCronJob:e=>r("/api/cron/".concat(e,"/trigger"),{}),getOrg:()=>n("/api/org"),getEmployee:e=>n("/api/org/employees/".concat(e)),getDepartmentBoard:e=>n("/api/org/departments/".concat(e,"/board")),getSkills:()=>n("/api/skills"),getSkill:e=>n("/api/skills/".concat(e)),getConfig:()=>n("/api/config"),updateConfig:e=>s("/api/config",e),getLogs:e=>n("/api/logs".concat(e?"?n=".concat(e):"")),getOnboarding:()=>n("/api/onboarding"),completeOnboarding:e=>r("/api/onboarding",e),getActivity:()=>n("/api/activity"),updateDepartmentBoard:(e,t)=>s("/api/org/departments/".concat(e,"/board"),t),sttStatus:()=>n("/api/stt/status"),sttDownload:()=>r("/api/stt/download",{}),sttTranscribe:async(e,t)=>{let o=t?"?language=".concat(encodeURIComponent(t)):"",n=new AbortController,r=setTimeout(()=>n.abort(),3e5);try{let t=await fetch("".concat(a,"/api/stt/transcribe").concat(o),{method:"POST",headers:{"Content-Type":e.type||"audio/webm"},body:e,signal:n.signal});if(!t.ok)throw Error("API error: ".concat(t.status));return t.json()}catch(e){if(e instanceof DOMException&&"AbortError"===e.name)throw Error("Transcription timed out (5 min)");throw e}finally{clearTimeout(r)}},sttUpdateConfig:e=>s("/api/stt/config",{languages:e})}},7460:(e,t,o)=>{"use strict";o.d(t,{D:()=>s,N:()=>l});var a=o(8111),n=o(5271);let r=(0,n.createContext)({theme:"dark",setTheme:()=>{}});function l(e){let{children:t}=e,[o,l]=(0,n.useState)("dark"),s=(0,n.useCallback)(e=>{l(e),localStorage.setItem("jinn-theme",e);let t=document.documentElement;if(t.removeAttribute("data-theme"),"system"===e){let e=window.matchMedia("(prefers-color-scheme: dark)").matches;t.setAttribute("data-theme",e?"dark":"light")}else t.setAttribute("data-theme",e)},[]);return(0,n.useEffect)(()=>{let e=localStorage.getItem("jinn-theme");e&&s(e)},[s]),(0,a.jsx)(r.Provider,{value:{theme:o,setTheme:s},children:t})}function s(){return(0,n.useContext)(r)}},9469:()=>{},9760:(e,t,o)=>{Promise.resolve().then(o.bind(o,1150)),Promise.resolve().then(o.t.bind(o,9469,23))}},e=>{e.O(0,[506,814,743,358],()=>e(e.s=9760)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[524],{2469:(e,a,r)=>{Promise.resolve().then(r.bind(r,3929))},2876:(e,a,r)=>{"use strict";r.d(a,{A:()=>t});let t=(0,r(1983).A)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]])},3929:(e,a,r)=>{"use strict";r.r(a),r.d(a,{default:()=>v});var t=r(8111),s=r(5271);let l=(0,r(1983).A)("radio",[["path",{d:"M16.247 7.761a6 6 0 0 1 0 8.478",key:"1fwjs5"}],["path",{d:"M19.075 4.933a10 10 0 0 1 0 14.134",key:"ehdyv1"}],["path",{d:"M4.925 19.067a10 10 0 0 1 0-14.134",key:"1q22gi"}],["path",{d:"M7.753 16.239a6 6 0 0 1 0-8.478",key:"r2q7qm"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]);var i=r(2876),n=r(3176),o=r(3073),c=r(5310);function d(e){let{label:a,value:r,color:s,pulse:l}=e;return(0,t.jsxs)("div",{style:{background:"var(--material-regular)",border:"1px solid var(--separator)",borderRadius:"var(--radius-md)",padding:"var(--space-4)"},children:[(0,t.jsx)("div",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)",fontWeight:"var(--weight-medium)",marginBottom:"var(--space-1)"},children:a}),(0,t.jsxs)("div",{className:"flex items-center",style:{gap:"var(--space-2)"},children:[l&&r>0&&(0,t.jsx)("span",{className:"animate-error-pulse",style:{width:8,height:8,borderRadius:"50%",background:"var(--system-red)",flexShrink:0}}),(0,t.jsx)("span",{style:{fontSize:"var(--text-title2)",fontWeight:"var(--weight-bold)",color:null!=s?s:"var(--text-primary)"},children:r})]})]})}function v(){let[e,a]=(0,s.useState)([]),[r,v]=(0,s.useState)(!0),[p,h]=(0,s.useState)(!1),[u,m]=(0,s.useState)(null),[g,x]=(0,s.useState)(new Date),[f,y]=(0,s.useState)("just now"),b=(0,s.useCallback)(()=>{h(!0),m(null),n.F.getLogs(500).then(e=>{var r;a(null!=(r=e.lines)?r:[]),x(new Date)}).catch(e=>{m(e instanceof Error?e.message:"Failed to load logs")}).finally(()=>{v(!1),h(!1)})},[]);(0,s.useEffect)(()=>{b();let e=setInterval(b,3e4);return()=>clearInterval(e)},[b]),(0,s.useEffect)(()=>{function e(){let e=Math.floor((Date.now()-g.getTime())/1e3);e<10?y("just now"):e<60?y("".concat(e,"s ago")):y("".concat(Math.floor(e/60),"m ago"))}e();let a=setInterval(e,1e4);return()=>clearInterval(a)},[g]);let j=e.map(c.w),k=j.length,w=j.filter(e=>"error"===e.level).length,S=j.filter(e=>"info"===e.level).length,N=j.filter(e=>"warn"===e.level).length;return(0,t.jsx)(o.M,{children:(0,t.jsxs)("div",{className:"h-full flex flex-col overflow-hidden animate-fade-in",style:{background:"var(--bg)"},children:[(0,t.jsx)("header",{className:"sticky top-0 z-10 flex-shrink-0",style:{background:"var(--material-regular)",backdropFilter:"blur(40px) saturate(180%)",WebkitBackdropFilter:"blur(40px) saturate(180%)",borderBottom:"1px solid var(--separator)"},children:(0,t.jsxs)("div",{className:"flex items-center justify-between",style:{padding:"var(--space-4) var(--space-6)"},children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h1",{style:{fontSize:"var(--text-title1)",fontWeight:"var(--weight-bold)",color:"var(--text-primary)",letterSpacing:"-0.5px",lineHeight:"var(--leading-tight)"},children:"Activity Console"}),!r&&(0,t.jsxs)("p",{style:{fontSize:"var(--text-footnote)",color:"var(--text-secondary)",marginTop:"var(--space-1)"},children:[k," event",1!==k?"s":"",w>0&&(0,t.jsxs)("span",{style:{color:"var(--system-red)"},children:[" \xb7 ",w," error",1!==w?"s":""]})]})]}),(0,t.jsxs)("div",{className:"flex items-center",style:{gap:"var(--space-3)"},children:[(0,t.jsxs)("button",{onClick:()=>window.dispatchEvent(new CustomEvent("open-live-stream")),className:"focus-ring flex items-center",style:{padding:"6px 14px",borderRadius:"var(--radius-sm)",border:"none",cursor:"pointer",fontSize:"var(--text-footnote)",fontWeight:"var(--weight-semibold)",gap:6,background:"var(--accent-fill)",color:"var(--accent)",transition:"all 200ms var(--ease-smooth)"},children:[(0,t.jsx)(l,{size:14}),"Open Live Stream"]}),(0,t.jsxs)("span",{style:{fontSize:"var(--text-caption1)",color:"var(--text-tertiary)"},children:["Updated ",f]}),(0,t.jsx)("button",{onClick:b,className:"focus-ring","aria-label":"Refresh logs",style:{width:32,height:32,display:"flex",alignItems:"center",justifyContent:"center",borderRadius:"var(--radius-sm)",border:"none",background:"transparent",color:"var(--text-tertiary)",cursor:"pointer",transition:"color 150ms var(--ease-smooth)"},children:(0,t.jsx)(i.A,{size:16,className:p?"animate-spin":""})})]})]})}),(0,t.jsxs)("div",{className:"flex-1 overflow-y-auto flex flex-col",style:{padding:"var(--space-4) var(--space-6) var(--space-6)",minHeight:0},children:[u&&(0,t.jsxs)("div",{style:{marginBottom:"var(--space-3)",padding:"var(--space-3) var(--space-4)",borderRadius:"var(--radius-md)",background:"rgba(255,69,58,0.06)",border:"1px solid rgba(255,69,58,0.15)",fontSize:"var(--text-footnote)",color:"var(--system-red)"},children:["Failed to load logs: ",u]}),r?(0,t.jsx)("div",{className:"flex items-center justify-center",style:{height:200,color:"var(--text-tertiary)"},children:"Loading..."}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"summary-cards-grid",style:{display:"grid",gridTemplateColumns:"repeat(4, 1fr)",gap:"var(--space-3)",marginBottom:"var(--space-4)"},children:[(0,t.jsx)(d,{label:"Total Events",value:k}),(0,t.jsx)(d,{label:"Errors",value:w,color:w>0?"var(--system-red)":"var(--system-green)",pulse:!0}),(0,t.jsx)(d,{label:"Info",value:S,color:"var(--system-green)"}),(0,t.jsx)(d,{label:"Warnings",value:N,color:"var(--system-orange)"})]}),(0,t.jsx)(c.b,{lines:e})]})]}),(0,t.jsx)("style",{children:"\n @media (max-width: 640px) {\n .summary-cards-grid {\n grid-template-columns: 1fr 1fr !important;\n }\n }\n "})]})})}}},e=>{e.O(0,[704,73,814,743,358],()=>e(e.s=2469)),_N_E=e.O()}]);
|