keating 4.0.2 → 4.0.3
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/bin/keating.js +1 -1
- package/dist/src/core/version.js +1 -1
- package/package.json +1 -1
- package/web/.output/nitro.json +1 -1
- package/web/.output/public/assets/{AnimationPlayer-Bj9E6XAF.js → AnimationPlayer-CYbhLL_R.js} +1 -1
- package/web/.output/public/assets/{AssistantChatPanel-CPiSdBQo.js → AssistantChatPanel-DQSKpGWP.js} +122 -122
- package/web/.output/public/assets/{CategoricalChart-ZCOId7ho.js → CategoricalChart-BVb9-7_N.js} +1 -1
- package/web/.output/public/assets/{Chat-BPuDBuv7.js → Chat-C6p8yxAr.js} +2 -2
- package/web/.output/public/assets/{CodeHighlighter-CUd-nVJG.js → CodeHighlighter-DhI0IV5H.js} +1 -1
- package/web/.output/public/assets/{ComingUp-BM3f_QSf.js → ComingUp-DFaRgEbt.js} +1 -1
- package/web/.output/public/assets/{CourseJoin--37EPPeg.js → CourseJoin-DMZ6foZO.js} +1 -1
- package/web/.output/public/assets/CourseWorkspace-l_bPGNhE.js +25 -0
- package/web/.output/public/assets/{Courses-DgryGTWV.js → Courses-DIqulPB-.js} +1 -1
- package/web/.output/public/assets/{EvolutionDetail-BHwyObAD.js → EvolutionDetail-C-NYL1qL.js} +1 -1
- package/web/.output/public/assets/{FlashcardRenderer-hzqoLbnQ.js → FlashcardRenderer-iDgfcwk4.js} +1 -1
- package/web/.output/public/assets/{FlashcardShaderField-pDI9y_r4.js → FlashcardShaderField-JGgL2kgp.js} +1 -1
- package/web/.output/public/assets/{FlashcardTimer-BANuXJze.js → FlashcardTimer-vPNL9_0N.js} +1 -1
- package/web/.output/public/assets/{HyperframesPlayer-BQFYx43N.js → HyperframesPlayer-DEtdwGBR.js} +1 -1
- package/web/.output/public/assets/KeatingBench-XnWxgfUC.js +2 -0
- package/web/.output/public/assets/{LearningInsightsHeader-Do3bROTu.js → LearningInsightsHeader-DWj2-1xb.js} +1 -1
- package/web/.output/public/assets/{Live-HZjRDq-V.js → Live-BasKZMuE.js} +1 -1
- package/web/.output/public/assets/{MarkdownBlock-KUcDESQo.js → MarkdownBlock-C89ecD-M.js} +3 -3
- package/web/.output/public/assets/ModelSelector-B_EaHvVz.js +1 -0
- package/web/.output/public/assets/{Nav-GcfPhZc3.js → Nav-DQ-5KEsA.js} +1 -1
- package/web/.output/public/assets/{NotOrganicAccessPromptDialog-CKb6iTFn.js → NotOrganicAccessPromptDialog-DS7PLMx4.js} +1 -1
- package/web/.output/public/assets/{NotOrganicCallback-DWbhlP2j.js → NotOrganicCallback-BxKOsisT.js} +1 -1
- package/web/.output/public/assets/{OAuthCallback-D15ohKxE.js → OAuthCallback-dk2EQnAU.js} +1 -1
- package/web/.output/public/assets/OpenUIPreview-BrBXAEt4.js +1 -0
- package/web/.output/public/assets/PatternDigestPanel-jmxcLCUX.js +1 -0
- package/web/.output/public/assets/Plus-RIb_ldNd.js +1 -0
- package/web/.output/public/assets/{QuizRenderer-CLQqGwub.js → QuizRenderer-DaPQ7ySS.js} +1 -1
- package/web/.output/public/assets/{RenderingSmoke-DRHji-yz.js → RenderingSmoke-D3aD8prv.js} +1 -1
- package/web/.output/public/assets/{Select-BE2GfDud.js → Select-BYfJxqbI.js} +1 -1
- package/web/.output/public/assets/{SharedSession-DAM8ydVu.js → SharedSession-CEsTcr4j.js} +3 -3
- package/web/.output/public/assets/{ThemeToggle-BdGijxoN.js → ThemeToggle-BZH64Rpu.js} +1 -1
- package/web/.output/public/assets/{TrainingData-7EbVIzmQ.js → TrainingData-DujNU5sy.js} +3 -3
- package/web/.output/public/assets/TrajectoryReview-OjkaW6a6.js +35 -0
- package/web/.output/public/assets/TrajectoryReviewIndex-C5QAijKT.js +1 -0
- package/web/.output/public/assets/TrajectoryReviewWorkspace-DSn96Dxb.js +1 -0
- package/web/.output/public/assets/{Usage-BU1OfvzO.js → Usage-C5HU0Yc5.js} +1 -1
- package/web/.output/public/assets/activity-DdJDHeam.js +1 -0
- package/web/.output/public/assets/{anthropic-messages-rElikI6M.js → anthropic-messages-ZiHu59Q7.js} +1 -1
- package/web/.output/public/assets/{azure-openai-responses-yppPdVFy.js → azure-openai-responses-BHgsWKby.js} +1 -1
- package/web/.output/public/assets/calibration-7gf-WNR5.js +1 -0
- package/web/.output/public/assets/circle-question-mark-CK-DUGIA.js +1 -0
- package/web/.output/public/assets/clipboard-list-CRJvmiKL.js +1 -0
- package/web/.output/public/assets/{course-assembly-BIf5lrcx.js → course-assembly-CQE_9Vh4.js} +3 -3
- package/web/.output/public/assets/{course-submission-judgement-m2Gj1AKW.js → course-submission-judgement-Dmmw__tF.js} +1 -1
- package/web/.output/public/assets/{custom-tts-DapOpVQe.js → custom-tts-DqDZf3aF.js} +1 -1
- package/web/.output/public/assets/desktop-offline-IzFtwAhh.js +3 -0
- package/web/.output/public/assets/{dist-BudWH94z.js → dist-Dq5mGdi-.js} +1 -1
- package/web/.output/public/assets/file-text-CANyHShy.js +1 -0
- package/web/.output/public/assets/{from-study-plan-XEoNCZH-.js → from-study-plan-D14XtwuX.js} +2 -2
- package/web/.output/public/assets/{gemini-live-C2U-Xfzz.js → gemini-live-CGEtXm6j.js} +1 -1
- package/web/.output/public/assets/{google-generative-ai-8HY6m7rq.js → google-generative-ai-DcqlQJ6d.js} +1 -1
- package/web/.output/public/assets/{google-vertex-DnCA4qzU.js → google-vertex-C5RXjS_e.js} +1 -1
- package/web/.output/public/assets/{gpt-live-CEMTjMri.js → gpt-live-C4ltEjG_.js} +1 -1
- package/web/.output/public/assets/{index-C8C76R86.js → index-DCgpDQKf.js} +30 -30
- package/web/.output/public/assets/info-CGMF4Cdc.js +1 -0
- package/web/.output/public/assets/keating-stream-g73cFcJe.js +11 -0
- package/web/.output/public/assets/{learner-context-D0BfhTjc.js → learner-context-CpkZOwpe.js} +1 -1
- package/web/.output/public/assets/{library-pPmUSBEY.js → library-Dt_HrttW.js} +5 -5
- package/web/.output/public/assets/{live-context-CYuoXPUI.js → live-context-D5leiub7.js} +1 -1
- package/web/.output/public/assets/{mistral-conversations-BehK5A17.js → mistral-conversations-BSUNv6T_.js} +1 -1
- package/web/.output/public/assets/{openai-codex-responses-vVGnXFbc.js → openai-codex-responses-BEjWFOsh.js} +1 -1
- package/web/.output/public/assets/{openai-completions-SUIeYkEW.js → openai-completions-XWr91hin.js} +1 -1
- package/web/.output/public/assets/{openai-realtime-BSeGY5DQ.js → openai-realtime-BERRi9aO.js} +1 -1
- package/web/.output/public/assets/{openai-responses-DzgNIiYy.js → openai-responses-DeNWT5uB.js} +1 -1
- package/web/.output/public/assets/{openai-responses-shared-CHf6ek3_.js → openai-responses-shared-BdPh5feu.js} +1 -1
- package/web/.output/public/assets/{openai-tts-DRXdgxDT.js → openai-tts-ChGSz4r8.js} +1 -1
- package/web/.output/public/assets/{operation-BMdkNnIS.js → operation-kDIu8RLw.js} +2 -2
- package/web/.output/public/assets/{pi-messages-CpI94BCF.js → pi-messages-pzwJsgas.js} +1 -1
- package/web/.output/public/assets/{public-client-KRBnkgBr.js → public-client-CqivHtfG.js} +1 -1
- package/web/.output/public/assets/{recipes-BcSW8MlI.js → recipes-lg2hVa6Q.js} +1 -1
- package/web/.output/public/assets/{renderer-CKD_Hn-d.js → renderer-Cx1jCM2v.js} +1 -1
- package/web/.output/public/assets/{segments-nMdXcVhb.js → segments-BuQ4O8Bd.js} +1 -1
- package/web/.output/public/assets/{shared-actions-Bj56xHM3.js → shared-actions-B9eYiZAR.js} +1 -1
- package/web/.output/public/assets/{shared-renderer-C-yYfXvq.js → shared-renderer-hMxAoPZb.js} +7 -7
- package/web/.output/public/assets/shared-sessions-CwS3OLWR.js +5 -0
- package/web/.output/public/assets/{srs-WAeRnL8v.js → srs-BBTX4fCR.js} +1 -1
- package/web/.output/public/assets/{tavus-live-CVb9mE_J.js → tavus-live-HpBIH49i.js} +1 -1
- package/web/.output/public/assets/{topic-categorization-DHcL_IrS.js → topic-categorization-DfJaArmq.js} +1 -1
- package/web/.output/public/assets/trajectory-artifacts-EvNqJEHH.js +3 -0
- package/web/.output/public/assets/trajectory-store-C3qzwrr6.js +2 -0
- package/web/.output/public/assets/{transformers.web-CUMRYLoV.js → transformers.web-CrNvRfsr.js} +1 -1
- package/web/.output/public/assets/use-review-passes-DmWsvYdF.js +8 -0
- package/web/.output/public/assets/{use-sessions-C33USzrV.js → use-sessions-3UElISPk.js} +1 -1
- package/web/.output/public/assets/{useCoursesAccess-Zfb1Jqw-.js → useCoursesAccess-BgOspZex.js} +1 -1
- package/web/.output/public/assets/user-DEmM1U0O.js +1 -0
- package/web/.output/public/index.html +7 -7
- package/web/.output/public/sw.js +1 -1
- package/web/.output/server/_chunks/renderer-template.mjs +1 -1
- package/web/.output/server/_libs/h3+rou3+srvx.mjs +1 -1
- package/web/.output/server/index.mjs +1191 -1112
- package/web/.output/public/assets/CourseWorkspace-McgEEARK.js +0 -25
- package/web/.output/public/assets/ModelSelector-CiiiT7sM.js +0 -1
- package/web/.output/public/assets/OpenUIPreview-C8sgkYAj.js +0 -1
- package/web/.output/public/assets/PatternDigestPanel-Ctm7smvT.js +0 -1
- package/web/.output/public/assets/TrajectoryReview-DkC_NtyR.js +0 -35
- package/web/.output/public/assets/TrajectoryReviewIndex-C7pg9K9U.js +0 -1
- package/web/.output/public/assets/TrajectoryReviewWorkspace-D80QHrDn.js +0 -1
- package/web/.output/public/assets/calibration-B8NNSy6-.js +0 -1
- package/web/.output/public/assets/desktop-offline-BOKnmvYX.js +0 -2
- package/web/.output/public/assets/keating-stream-DeWgIdIv.js +0 -11
- package/web/.output/public/assets/shared-sessions-B2FsK7oM.js +0 -5
- package/web/.output/public/assets/trajectory-artifacts-B47xntcj.js +0 -3
- package/web/.output/public/assets/trajectory-store-CFat_se9.js +0 -2
- package/web/.output/public/assets/use-review-passes-BTc5nGD9.js +0 -8
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{s as e}from"./rolldown-runtime-BG2f4sTM.js";import{T as t}from"./syntax-highlighter-Buac5fmw.js";import{t as n}from"./Nav-GcfPhZc3.js";import{$t as r,Ct as i,Kt as a,M as o,N as s,Qt as c,Tt as l,Ut as u,Wt as d,en as f,ni as p,nn as m,wt as h}from"./index-C8C76R86.js";import{$ as g,$t as _,A as v,An as y,B as b,Ct as x,Dt as S,En as C,Et as w,Fn as T,G as E,H as D,Hn as O,Ht as ee,I as te,J as ne,Jt as re,K as ie,Kt as ae,L as oe,O as se,Pn as k,Q as A,Qt as ce,R as le,Rn as ue,Tn as de,Tt as fe,U as pe,Un as me,Ut as he,W as ge,Wt as j,Y as _e,Yt as ve,Zt as ye,a as be,at as xe,bn as Se,c as Ce,cn as we,ct as Te,dt as Ee,en as De,et as Oe,ft as ke,hn as Ae,i as je,in as Me,it as Ne,j as Pe,jn as M,kn as N,lt as Fe,mt as Ie,n as Le,nn as Re,nt as ze,o as Be,on as Ve,ot as He,pn as Ue,pt as We,q as Ge,qt as Ke,r as qe,rn as Je,rt as Ye,s as Xe,st as Ze,t as Qe,tt as $e,ut as et,vt as tt,wt as nt,xn as rt,yn as it,yt as at,z as ot,zn as P}from"./CategoricalChart-ZCOId7ho.js";import{t as st}from"./createLucideIcon-C_7xXnHN.js";import{t as ct}from"./book-open-check-vvzSWP24.js";import{t as lt}from"./brain-Ez98oYax.js";import{t as ut}from"./chevron-right-CtU0hmKY.js";import{t as dt}from"./clock-3--4K486gi.js";import{a as ft,c as pt,d as mt,l as ht,o as gt,r as _t,t as vt,u as yt}from"./topic-categorization-DHcL_IrS.js";import{t as bt}from"./download-Cu2Egmxp.js";import{t as xt}from"./flame-VMBkC42I.js";import{t as St}from"./message-square-text-3oqB9UW2.js";import{t as Ct}from"./trending-up-CAMFqCxl.js";import{t as wt}from"./upload-BDNPMEAh.js";import{n as Tt}from"./browser-download-DzX_pBaq.js";import{t as Et}from"./useSeo-fXJau5mP.js";import{n as Dt,t as Ot}from"./sandbox-export-Cl8U49Iq.js";import{n as F,t as kt}from"./LearningInsightsHeader-Do3bROTu.js";var At=st(`calendar-days`,[[`path`,{d:`M8 2v4`,key:`1cmpym`}],[`path`,{d:`M16 2v4`,key:`4m81vk`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`,key:`1hopcy`}],[`path`,{d:`M3 10h18`,key:`8toen8`}],[`path`,{d:`M8 14h.01`,key:`6423bh`}],[`path`,{d:`M12 14h.01`,key:`1etili`}],[`path`,{d:`M16 14h.01`,key:`1gbofw`}],[`path`,{d:`M8 18h.01`,key:`lrp35t`}],[`path`,{d:`M12 18h.01`,key:`mhygvu`}],[`path`,{d:`M16 18h.01`,key:`kzsmim`}]]),jt=st(`gem`,[[`path`,{d:`M10.5 3 8 9l4 13 4-13-2.5-6`,key:`b3dvk1`}],[`path`,{d:`M17 3a2 2 0 0 1 1.6.8l3 4a2 2 0 0 1 .013 2.382l-7.99 10.986a2 2 0 0 1-3.247 0l-7.99-10.986A2 2 0 0 1 2.4 7.8l2.998-3.997A2 2 0 0 1 7 3z`,key:`7w4byz`}],[`path`,{d:`M2 9h20`,key:`16fsjt`}]]),Mt=e=>e.graphicalItems.polarItems,I=N([Mt,x,N([j,he],tt)],ke),L=N([N([I],Ee),re],Fe),Nt=N([L,x,I],He);N([L,x,I],(e,t,n)=>n.length>0?e.flatMap(e=>n.flatMap(n=>({value:C(e,t.dataKey??n.dataKey),errorDomain:[]}))).filter(Boolean):t?.dataKey==null?e.map(e=>({value:e,errorDomain:[]})):e.map(e=>({value:C(e,t.dataKey),errorDomain:[]})));var Pt=()=>void 0,Ft=N([x,we,L,Nt,Ke,j,N([x,nt,fe,Pt,N([L,x,I,at,j,ve],et),Pt,we,j],Ie)],Ze);N([w,N([x,Ft,N([Ft,S,w],We),j],Te)],ee);function It(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Lt(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?It(Object(n),!0).forEach(function(t){Rt(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):It(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Rt(e,t,n){return(t=zt(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function zt(e){var t=Bt(e,`string`);return typeof t==`symbol`?t:t+``}function Bt(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}var R=N([Mt,(e,t)=>t],(e,t)=>e.filter(e=>e.type===`pie`).find(e=>e.id===t)),Vt=[],z=(e,t,n)=>n?.length===0?Vt:n,Ht=N([re,R,z],(e,t,n)=>{var r=e.chartData;if(t!=null){var i=t?.data!=null&&t.data.length>0?t.data:r;if((!i||!i.length)&&n!=null&&(i=n.map(e=>Lt(Lt({},t.presentationProps),e.props))),i!=null)return i}}),Ut=N([Ht,R,z],(e,t,n)=>{if(!(e==null||t==null))return e.map((e,r)=>{var i,a=C(e,t.nameKey,t.name),o=n!=null&&(i=n[r])!=null&&(i=i.props)!=null&&i.fill?n[r].props.fill:typeof e==`object`&&e&&`fill`in e?e.fill:t.fill;return{value:de(a,t.dataKey),dataKey:t.dataKey,color:o,payload:e,type:t.legendType}})}),Wt=N([Ht,R,z,it],(e,t,n,r)=>{if(!(t==null||e==null))return hn({offset:r,pieSettings:t,displayedData:e,cells:n})}),B=e(t()),Gt=e(O()),Kt=[`key`],qt=[`onMouseEnter`,`onClick`,`onMouseLeave`],Jt=[`id`],Yt=[`id`];function V(){return V=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},V.apply(null,arguments)}function H(e,t){if(e==null)return{};var n,r,i=Xt(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function Xt(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function Zt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function U(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?Zt(Object(n),!0).forEach(function(t){Qt(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Zt(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Qt(e,t,n){return(t=$t(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function $t(e){var t=en(e,`string`);return typeof t==`symbol`?t:t+``}function en(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}var tn=ye;function nn(e){var t=(0,B.useMemo)(()=>ne(e.children,g),[e.children]),n=M(n=>Ut(n,e.id,t));return n==null?null:B.createElement(D,{legendPayload:n})}function rn(e){if(!(e==null||typeof e==`boolean`||typeof e==`function`)){if(B.isValidElement(e)){var t=e.props?.fill;return typeof t==`string`?t:void 0}var n=e.fill;return typeof n==`string`?n:void 0}}var an=B.memo(e=>{var t=e.dataKey,n=e.nameKey,r=e.sectors,i=e.stroke,a=e.strokeWidth,o=e.fill,s=e.name,c=e.hide,l=e.tooltipType,u=e.id,d=e.activeShape,f=rn(d),p={dataDefinedOnItem:r.map(e=>{var t=e.tooltipPayload;return f==null||t==null?t:t.map(e=>U(U({},e),{},{color:f,fill:f}))}),getPosition:e=>r[Number(e)]?.tooltipPosition,settings:{stroke:i,strokeWidth:a,fill:o,dataKey:t,nameKey:n,name:de(s,t),hide:c,type:l,color:o,unit:``,graphicalItemId:u}};return B.createElement(pe,{tooltipEntrySettings:p})}),on=(e,t)=>e>t?`start`:e<t?`end`:`middle`,sn=(e,t,n)=>k(typeof t==`function`?t(e):t,n,n*.8),cn=(e,t,n)=>{var r=t.top,i=t.left,a=t.width,o=t.height,s=ce(a,o);return{cx:i+k(e.cx,a,a/2),cy:r+k(e.cy,o,o/2),innerRadius:k(e.innerRadius,s,0),outerRadius:sn(n,e.outerRadius,s),maxRadius:e.maxRadius||Math.sqrt(a*a+o*o)/2}},ln=(e,t)=>P(t-e)*Math.min(Math.abs(t-e),360),un=(e,t)=>{if(B.isValidElement(e))return B.cloneElement(e,t);if(typeof e==`function`)return e(t);var n=me(`recharts-pie-label-line`,typeof e==`boolean`?``:e.className);t.key;var r=H(t,Kt);return B.createElement(Re,V({},r,{type:`linear`,className:n}))},dn=(e,t,n)=>{if(B.isValidElement(e))return B.cloneElement(e,t);var r=n;if(typeof e==`function`&&(r=e(t),B.isValidElement(r)))return r;var i=me(`recharts-pie-label-text`,se(e));return B.createElement(_e,V({},t,{alignmentBaseline:`middle`,className:i}),r)};function fn(e){var t=e.sectors,n=e.props,r=e.showLabels,i=n.label,a=n.labelLine,o=n.dataKey;if(!r||!i||!t)return null;var s=Je(n),c=Me(i),l=Me(a),u=typeof i==`object`&&`offsetRadius`in i&&typeof i.offsetRadius==`number`&&i.offsetRadius||20,d=t.map((e,t)=>{var n=(e.startAngle+e.endAngle)/2,r=_(e.cx,e.cy,e.outerRadius+u,n),d=U(U(U(U({},s),e),{},{stroke:`none`},c),{},{index:t,textAnchor:on(r.x,e.cx)},r),f=U(U(U(U({},s),e),{},{fill:`none`,stroke:e.fill},l),{},{index:t,points:[_(e.cx,e.cy,e.outerRadius,n),r],key:`line`});return B.createElement(ze,{zIndex:ae.label,key:`label-${e.startAngle}-${e.endAngle}-${e.midAngle}-${t}`},B.createElement(A,null,a&&un(a,f),dn(i,d,C(e,o))))});return B.createElement(A,{className:`recharts-pie-labels`},d)}function pn(e){var t=e.sectors,n=e.props,r=e.showLabels,i=n.label;return typeof i==`object`&&i&&`position`in i?B.createElement(v,{label:i}):B.createElement(fn,{sectors:t,props:n,showLabels:r})}function mn(e){var t=e.sectors,n=e.activeShape,r=e.inactiveShape,i=e.allOtherPieProps,a=e.shape,o=e.id,s=e.animationElapsedTime,c=e.isAnimating,l=e.isEntrance,u=M(xe),d=M(Ye),f=M(Ne),p=i.onMouseEnter,m=i.onClick,h=i.onMouseLeave,g=H(i,qt),_=E(p,i.dataKey,o),v=ie(h),y=ge(m,i.dataKey,o);return t==null||t.length===0?null:B.createElement(B.Fragment,null,t.map((e,p)=>{if(e?.startAngle===0&&e?.endAngle===0&&t.length!==1)return null;var m=f==null||f===o,h=String(p)===u&&(d==null||i.dataKey===d)&&m,b=n&&h?n:u?r:null,x=U(U({},e),{},{stroke:e.stroke,tabIndex:-1,index:p,isActive:h,animationElapsedTime:s,isAnimating:c,isEntrance:l,[rt]:p,[Se]:o});return B.createElement(A,V({key:`sector-${e?.startAngle}-${e?.endAngle}-${e.midAngle}-${p}`,tabIndex:-1,className:`recharts-pie-sector`},Ve(g,e,p),{onMouseEnter:_(e,p),onMouseLeave:v(e,p),onClick:y(e,p)}),B.createElement(Ge,{option:b??a,DefaultShape:tn,shapeProps:x}))}))}function hn(e){var t=e.pieSettings,n=e.displayedData,r=e.cells,i=e.offset,a=t.cornerRadius,o=t.startAngle,s=t.endAngle,c=t.dataKey,l=t.nameKey,u=t.tooltipType,d=Math.abs(t.minAngle),f=ln(o,s),p=Math.abs(f),m=n.length<=1?0:t.paddingAngle??0,h=n.filter(e=>C(e,c,0)!==0).length,g=(p>=360?h:h-1)*m,v=n.reduce((e,t)=>{var n=C(t,c,0);return e+(ue(n)?n:0)},0),y=d>0&&v>0&&n.some(e=>{var t=C(e,c,0),n=(ue(t)?t:0)/v;return t!==0&&n*p<d})?d:0,b=p-h*y-g,x;if(v>0){var S;x=n.map((e,n)=>{var s=C(e,c,0),d=C(e,l,n),p=cn(t,i,e),h=(ue(s)?s:0)/v,g,x=U(U({},e),r&&r[n]&&r[n].props),w=x!=null&&`fill`in x&&typeof x.fill==`string`?x.fill:t.fill;g=n?S.endAngle+P(f)*m*(s===0?0:1):o;var T=g+P(f)*((s===0?0:y)+h*b),E=(g+T)/2,D=(p.innerRadius+p.outerRadius)/2,O=[{name:d,value:s,payload:x,dataKey:c,type:u,color:w,fill:w,graphicalItemId:t.id}],ee=_(p.cx,p.cy,D,E);return S=U(U(U(U({},t.presentationProps),{},{percent:h,cornerRadius:typeof a==`string`?parseFloat(a):a,name:d,tooltipPayload:O,midAngle:E,middleRadius:D,tooltipPosition:ee},x),p),{},{value:s,dataKey:c,startAngle:g,endAngle:T,payload:x,paddingAngle:s===0?0:P(f)*m}),S})}return x}function gn(e){var t=e.showLabels,n=e.sectors,r=e.children,i=(0,B.useMemo)(()=>!t||!n?[]:n.map(e=>({value:e.value,payload:e.payload,clockWise:!1,parentViewBox:void 0,viewBox:{cx:e.cx,cy:e.cy,innerRadius:e.innerRadius,outerRadius:e.outerRadius,startAngle:e.startAngle,endAngle:e.endAngle,clockWise:!1},fill:e.fill})),[n,t]);return B.createElement(Pe,{value:t?i:void 0},r)}var _n=(e,t)=>{if(e==null)return[];var n=[],r=e.find(e=>e.status!==`removed`),i=r?r.next.startAngle:0;return e.forEach((e,r)=>{if(e.status!==`removed`){var a=r>0?(0,Gt.default)(e.next,`paddingAngle`,0):0;if(e.status===`matched`){var o=T(e.prev.endAngle-e.prev.startAngle,e.next.endAngle-e.next.startAngle,t),s=U(U({},e.next),{},{startAngle:i+a,endAngle:i+o+a});n.push(s),i=s.endAngle}else{var c=T(0,e.next.endAngle-e.next.startAngle,t),l=U(U({},e.next),{},{startAngle:i+a,endAngle:i+c+a});n.push(l),i=l.endAngle}}}),n};function vn(e){var t=e.props,n=e.previousSectorsRef,r=e.id,i=t.sectors,a=t.activeShape,o=t.inactiveShape,s=t.animationInterpolateFn,c=ot(t.onAnimationStart,t.onAnimationEnd),l=c.isAnimating,u=c.handleAnimationStart,d=c.handleAnimationEnd,f=Ue();return f==null?null:B.createElement(gn,{showLabels:!l,sectors:i},B.createElement(le,{animationInput:t,animationIdPrefix:`recharts-pie-`,items:i,previousItemsRef:n,isAnimationActive:t.isAnimationActive,animationBegin:t.animationBegin,animationDuration:t.animationDuration,animationEasing:t.animationEasing,onAnimationStart:u,onAnimationEnd:d,animationInterpolateFn:s,animationMatchBy:t.animationMatchBy,layout:f},(e,n,i)=>B.createElement(A,null,B.createElement(mn,{sectors:e,activeShape:a,inactiveShape:o,allOtherPieProps:t,shape:t.shape,id:r,animationElapsedTime:n,isAnimating:l||n<1,isEntrance:i}))),B.createElement(pn,{showLabels:!l,sectors:i,props:t}),t.children)}var yn={animationBegin:400,animationDuration:1500,animationEasing:`ease`,animationInterpolateFn:_n,animationMatchBy:b,cx:`50%`,cy:`50%`,dataKey:`value`,endAngle:360,fill:`#808080`,hide:!1,innerRadius:0,isAnimationActive:`auto`,label:!1,labelLine:!0,legendType:`rect`,minAngle:0,nameKey:`name`,outerRadius:`80%`,paddingAngle:0,rootTabIndex:0,shape:tn,startAngle:0,stroke:`#fff`,zIndex:ae.area};function bn(e){var t=e.id,n=H(e,Jt),r=e.hide,i=e.className,a=e.rootTabIndex,o=(0,B.useMemo)(()=>ne(e.children,g),[e.children]),s=M(e=>Wt(e,t,o)),c=(0,B.useRef)(null),l=me(`recharts-pie`,i);return r||s==null?(c.current=null,B.createElement(A,{tabIndex:a,className:l})):B.createElement(ze,{zIndex:e.zIndex},B.createElement(an,{dataKey:e.dataKey,nameKey:e.nameKey,sectors:s,stroke:e.stroke,strokeWidth:e.strokeWidth,fill:e.fill,name:e.name,hide:e.hide,tooltipType:e.tooltipType,id:t,activeShape:e.activeShape}),B.createElement(A,{tabIndex:a,className:l},B.createElement(vn,{props:U(U({},n),{},{sectors:s}),previousSectorsRef:c,id:t})))}function xn(e){var t=De(e,yn),n=t.id,r=H(t,Yt),i=Je(r);return B.createElement(oe,{id:n,type:`pie`},e=>B.createElement(B.Fragment,null,B.createElement(te,{type:`pie`,id:e,data:r.data,dataKey:r.dataKey,hide:r.hide,angleAxisId:0,radiusAxisId:0,name:r.name,nameKey:r.nameKey,tooltipType:r.tooltipType,legendType:r.legendType,fill:r.fill,cx:r.cx,cy:r.cy,startAngle:r.startAngle,endAngle:r.endAngle,paddingAngle:r.paddingAngle,minAngle:r.minAngle,innerRadius:r.innerRadius,outerRadius:r.outerRadius,cornerRadius:r.cornerRadius,presentationProps:i,maxRadius:t.maxRadius}),B.createElement(nn,V({},r,{id:e})),B.createElement(bn,V({},r,{id:e}))))}var W=xn;W.displayName=`Pie`;function Sn(e){var t=y();return(0,B.useEffect)(()=>{t(Ce(e))},[t,e]),null}var Cn=[`layout`];function G(){return G=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},G.apply(null,arguments)}function wn(e,t){if(e==null)return{};var n,r,i=Tn(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function Tn(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function En(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Dn(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?En(Object(n),!0).forEach(function(t){On(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):En(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function On(e,t,n){return(t=kn(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function kn(e){var t=An(e,`string`);return typeof t==`symbol`?t:t+``}function An(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}var jn=Dn({accessibilityLayer:!0,stackOffset:`none`,barCategoryGap:`10%`,barGap:4,margin:{top:5,right:5,bottom:5,left:5},reverseStackOrder:!1,syncMethod:`index`,layout:`radial`,responsive:!1,cx:`50%`,cy:`50%`,innerRadius:0,outerRadius:`80%`},Xe),Mn=(0,B.forwardRef)(function(e,t){var n=De(e.categoricalChartProps,jn),r=n.layout,i=wn(n,Cn),a=e.chartName,o={chartName:a,defaultTooltipEventType:e.defaultTooltipEventType,validateTooltipEventTypes:e.validateTooltipEventTypes,tooltipPayloadSearcher:e.tooltipPayloadSearcher,eventEmitter:void 0};return B.createElement(Be,{preloadedState:{options:o},reduxStoreName:n.id??a},B.createElement(be,{chartData:n.data}),B.createElement(je,{layout:r,margin:n.margin}),B.createElement(Le,{throttleDelay:n.throttleDelay,throttledEvents:n.throttledEvents}),B.createElement(qe,{baseValue:void 0,accessibilityLayer:n.accessibilityLayer,barCategoryGap:n.barCategoryGap,maxBarSize:n.maxBarSize,stackOffset:n.stackOffset,barGap:n.barGap,barSize:n.barSize,syncId:n.syncId,syncMethod:n.syncMethod,className:n.className,reverseStackOrder:n.reverseStackOrder}),B.createElement(Sn,{cx:n.cx,cy:n.cy,startAngle:n.startAngle,endAngle:n.endAngle,innerRadius:n.innerRadius,outerRadius:n.outerRadius}),B.createElement(Qe,G({},i,{ref:t})))});function Nn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Pn(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?Nn(Object(n),!0).forEach(function(t){Fn(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Nn(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Fn(e,t,n){return(t=In(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function In(e){var t=Ln(e,`string`);return typeof t==`symbol`?t:t+``}function Ln(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}var Rn=[`item`],zn=Pn(Pn({},jn),{},{layout:`centric`,startAngle:0,endAngle:360}),Bn=(0,B.forwardRef)((e,t)=>{var n=De(e,zn);return B.createElement(Mn,{chartName:`PieChart`,defaultTooltipEventType:`item`,validateTooltipEventTypes:Rn,tooltipPayloadSearcher:$e,categoricalChartProps:n,ref:t})}),Vn=1800*1e3,Hn=[`#6366f1`,`#22c55e`,`#f97316`,`#06b6d4`,`#d946ef`,`#eab308`,`#ef4444`];function Un(e){return e.topicsCovered?.find(e=>e.trim().length>0)?.trim()??null}function Wn(e){return[...e??[]].filter(e=>typeof e.startedAt==`number`&&Un(e)!==null).sort((e,t)=>e.startedAt-t.startedAt)}function Gn(e,t=Date.now()){return typeof e.endedAt==`number`&&e.endedAt>=e.startedAt?e.endedAt:Math.min(t,e.startedAt+Vn)}function Kn(e){return e.some(e=>e.score>0)}function qn(e){return[{signal:`thumbs-up`,label:`Confident`,color:`#22c55e`},{signal:`thumbs-down`,label:`Off-track`,color:`#ef4444`},{signal:`confused`,label:`Confused`,color:`#f97316`}].flatMap(t=>{let n=e.filter(e=>e.signal===t.signal).sort((e,t)=>t.createdAt-e.createdAt);return n.length>0?[{...t,count:n.length,entries:n}]:[]})}function Jn(e){return e.usage.totalTokens||e.usage.input+e.usage.output}function Yn(e){let t=e.modelProvider?.trim()||`unknown`,n=e.modelId?.trim()||`unknown`,r=e.modelName?.trim()||(n===`unknown`?`Unknown model`:n);return{key:`${t}::${n}`,label:r,provider:t,modelId:n}}function Xn(e,t){return e.map((e,n)=>({...e,share:t>0?e.value/t:0,color:e.color||Hn[n%Hn.length]}))}function Zn(e,t=6){let n=e.reduce((e,t)=>e+Jn(t),0)>0?`tokens`:`messages`,r=new Map;for(let t of e){let e=Yn(t),i=Jn(t),a=r.get(e.key)??{...e,sessions:0,messages:0,tokens:0,cost:0,value:0,share:0,color:``};a.sessions+=1,a.messages+=t.messageCount,a.tokens+=i,a.cost+=t.usage.cost.total,a.value+=n===`tokens`?i:t.messageCount,r.set(e.key,a)}let i=Array.from(r.values()).sort((e,t)=>t.value-e.value),a=i.slice(0,t),o=i.slice(t);o.length>0&&a.push({key:`other`,label:`Other models`,provider:`mixed`,modelId:`other`,sessions:o.reduce((e,t)=>e+t.sessions,0),messages:o.reduce((e,t)=>e+t.messages,0),tokens:o.reduce((e,t)=>e+t.tokens,0),cost:o.reduce((e,t)=>e+t.cost,0),value:o.reduce((e,t)=>e+t.value,0),share:0,color:``});let s=a.reduce((e,t)=>e+t.value,0);return{basis:n,total:s,entries:Xn(a,s)}}var K=h(),Qn=s({py:`3rem`,textAlign:`center`,fontSize:`0.875rem`,color:`var(--muted-foreground)`});function q({message:e,className:t}){return(0,K.jsx)(`div`,{className:t?`${Qn} ${t}`:Qn,children:e})}var J={panel:s({overflow:`hidden`,border:`1px solid var(--ink)`,bg:`var(--card)`}),panelHeader:s({borderBottom:`1px solid var(--border)`,px:`1rem`,py:`0.75rem`}),panelTitle:s({fontSize:`0.875rem`,fontWeight:`600`}),panelSubtitle:s({mt:`0.25rem`,fontSize:`0.75rem`,color:`var(--muted-foreground)`}),panelBody:s({p:`1rem`}),loading:s({mt:`1.5rem`,border:`1px solid var(--ink)`,bg:`var(--card)`,p:`2rem`,textAlign:`center`,fontSize:`0.875rem`,color:`var(--ink-soft)`}),stack:s({mt:`1.5rem`,display:`flex`,flexDir:`column`,gap:`1.5rem`}),threeGrid:s({display:`grid`,gap:`1.5rem`,lg:{gridTemplateColumns:`repeat(3, minmax(0, 1fr))`}}),modelWheelGrid:s({display:`grid`,gap:`1rem`,xl:{gridTemplateColumns:`minmax(0, 0.9fr) minmax(12rem, 1fr)`,alignItems:`center`}}),pieBox:s({h:`14rem`,minW:0}),stack2:s({minW:0,"& > * + *":{mt:`0.5rem`}}),modelRow:s({minW:0,borderBottom:`1px solid color-mix(in srgb, var(--border) 60%, transparent)`,pb:`0.5rem`,_last:{borderBottom:0,pb:0}}),modelButton:s({w:`100%`,minW:0,borderRadius:`0.375rem`,border:`1px solid transparent`,px:`0.5rem`,py:`0.5rem`,textAlign:`left`,transitionProperty:`background-color, border-color`,transitionDuration:`150ms`,_hover:{bg:`var(--accent)`},_focusVisible:{outline:`2px solid var(--ring)`,outlineOffset:`2px`}}),selectedButton:s({borderColor:`var(--border)`,bg:`color-mix(in srgb, var(--accent) 65%, transparent)`}),between:s({display:`flex`,minW:0,alignItems:`center`,justifyContent:`space-between`,gap:`0.75rem`}),row:s({display:`flex`,minW:0,alignItems:`center`,gap:`0.5rem`}),dot:s({h:`0.625rem`,w:`0.625rem`,flexShrink:0,borderRadius:`9999px`}),truncateStrong:s({minW:0,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`,fontSize:`0.75rem`,fontWeight:`600`}),smallMuted:s({fontSize:`0.75rem`,color:`var(--muted-foreground)`}),shareText:s({flexShrink:0,fontSize:`0.75rem`,fontVariantNumeric:`tabular-nums`,color:`var(--muted-foreground)`}),modelDetail:s({mt:`0.25rem`,minW:0,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`,pl:`1rem`,fontSize:`11px`,color:`var(--muted-foreground)`}),metricGrid:s({mb:`1rem`,display:`grid`,gap:`0.75rem`,sm:{gridTemplateColumns:`repeat(4, minmax(0, 1fr))`}}),mutedNotice:s({borderRadius:`0.375rem`,border:`1px solid var(--border)`,bg:`color-mix(in srgb, var(--muted) 20%, transparent)`,px:`1rem`,py:`1.5rem`,fontSize:`0.875rem`,color:`var(--muted-foreground)`}),chartGrid:s({display:`grid`,gridTemplateColumns:`2.75rem minmax(0, 1fr)`,gap:`0.75rem`}),axisLabels:s({position:`relative`,fontSize:`11px`,fontVariantNumeric:`tabular-nums`,color:`var(--muted-foreground)`}),axisLabel:s({position:`absolute`,right:0,transform:`translateY(-50%)`}),legendRow:s({mt:`0.5rem`,display:`flex`,flexWrap:`wrap`,alignItems:`center`,gap:`0.75rem`,fontSize:`0.75rem`}),legendItem:s({display:`flex`,alignItems:`center`,gap:`0.375rem`}),legendSwatch:s({display:`inline-block`,h:`0.375rem`,w:`1rem`,borderRadius:`9999px`}),improvementTitle:s({mb:`0.5rem`,fontSize:`0.75rem`,fontWeight:`600`,textTransform:`uppercase`,color:`var(--muted-foreground)`}),barWrap:s({display:`flex`,h:`3rem`,alignItems:`flex-end`,gap:`0.25rem`}),flex1:s({flex:`1 1 0%`}),improvementBar:s({borderRadius:`0.125rem`,transitionProperty:`all`,transitionDuration:`150ms`}),improvementBarGood:s({bg:`#22c55e`}),improvementBarBad:s({bg:`var(--destructive)`}),barFooter:s({mt:`0.25rem`,display:`flex`,justifyContent:`space-between`,fontSize:`10px`,color:`var(--muted-foreground)`}),evolutionList:s({mt:`1rem`,borderTop:`1px solid var(--border)`}),evolutionButton:s({display:`flex`,w:`100%`,minW:0,alignItems:`center`,justifyContent:`space-between`,gap:`1rem`,borderBottom:`1px solid color-mix(in srgb, var(--border) 65%, transparent)`,px:`0.75rem`,py:`0.625rem`,textAlign:`left`,_last:{borderBottom:0},_hover:{bg:`var(--accent)`},_focusVisible:{outline:`2px solid var(--ring)`,outlineOffset:`-2px`}}),evolutionName:s({minW:0,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`,fontSize:`0.75rem`,fontWeight:`600`}),evolutionMeta:s({mt:`0.125rem`,fontSize:`11px`,color:`var(--muted-foreground)`}),viewDiff:s({flexShrink:0,fontSize:`0.75rem`,color:`var(--primary)`}),metricTile:s({borderRadius:`0.375rem`,border:`1px solid var(--border)`,bg:`color-mix(in srgb, var(--muted) 20%, transparent)`,px:`0.75rem`,py:`0.5rem`}),metricTileLabel:s({fontSize:`11px`,fontWeight:`500`,textTransform:`uppercase`,color:`var(--muted-foreground)`}),metricTileValue:s({mt:`0.25rem`,fontSize:`1.125rem`,fontWeight:`600`}),wheelGrid:s({display:`grid`,gap:`1rem`,xl:{gridTemplateColumns:`minmax(0, 1fr) minmax(16rem, 0.8fr)`}}),relative:s({position:`relative`}),breadcrumbs:s({position:`absolute`,left:`0.75rem`,top:`0.5rem`,zIndex:10,display:`flex`,flexWrap:`wrap`,alignItems:`center`,gap:`0.25rem`}),crumbButton:s({borderRadius:`0.375rem`,bg:`color-mix(in srgb, var(--background) 90%, transparent)`,px:`0.5rem`,py:`0.125rem`,fontSize:`11px`,fontWeight:`500`,color:`var(--muted-foreground)`,backdropFilter:`blur(8px)`,transitionProperty:`color, background-color`,transitionDuration:`150ms`,_hover:{bg:`var(--accent)`,color:`var(--accent-foreground)`}}),crumbColored:s({borderRadius:`0.375rem`,bg:`color-mix(in srgb, var(--background) 90%, transparent)`,px:`0.5rem`,py:`0.125rem`,fontSize:`11px`,fontWeight:`500`,backdropFilter:`blur(8px)`,transitionProperty:`color, background-color`,transitionDuration:`150ms`,_hover:{bg:`var(--accent)`,color:`var(--accent-foreground)`}}),mutedSlash:s({color:`var(--muted-foreground)`}),fullSvg:s({h:`100%`,w:`100%`}),clickPath:s({cursor:`pointer`,transitionProperty:`opacity`,transitionDuration:`150ms`}),cursorPointer:s({cursor:`pointer`}),noPointer:s({pointerEvents:`none`}),tooltip:s({pointerEvents:`none`,position:`absolute`,zIndex:20,borderRadius:`0.375rem`,border:`1px solid var(--border)`,bg:`var(--popover)`,px:`0.75rem`,py:`0.5rem`,color:`var(--popover-foreground)`,boxShadow:`var(--shadow, 0 4px 6px rgb(0 0 0 / 0.1))`}),semibold:s({fontWeight:`600`}),tinyMuted:s({fontSize:`11px`,color:`var(--muted-foreground)`}),tinyPrimary:s({mt:`0.25rem`,fontSize:`10px`,color:`var(--primary)`}),detailPanel:s({minW:0,"& > * + *":{mt:`0.5rem`}}),detailHeader:s({display:`flex`,alignItems:`center`,justifyContent:`space-between`}),sectionLabel:s({fontSize:`0.75rem`,fontWeight:`600`,textTransform:`uppercase`,color:`var(--muted-foreground)`}),backButton:s({borderRadius:`0.375rem`,px:`0.5rem`,py:`0.125rem`,fontSize:`11px`,color:`var(--primary)`,transitionProperty:`background-color`,transitionDuration:`150ms`,_hover:{bg:`color-mix(in srgb, var(--primary) 10%, transparent)`}}),detailCard:s({borderRadius:`0.375rem`,border:`1px solid var(--border)`,bg:`color-mix(in srgb, var(--muted) 20%, transparent)`,p:`0.625rem`}),selectionCard:s({mt:`0.75rem`,borderRadius:`0.375rem`,border:`1px solid var(--border)`,bg:`color-mix(in srgb, var(--muted) 20%, transparent)`,p:`0.75rem`}),selectionTitle:s({fontSize:`0.8rem`,fontWeight:`600`}),selectionMeta:s({mt:`0.25rem`,fontSize:`0.75rem`,lineHeight:`1.5`,color:`var(--muted-foreground)`}),selectionActions:s({mt:`0.625rem`,display:`flex`,flexWrap:`wrap`,gap:`0.375rem`}),selectionAction:s({borderRadius:`0.375rem`,border:`1px solid var(--border)`,px:`0.625rem`,py:`0.375rem`,fontSize:`0.75rem`,color:`var(--primary)`,_hover:{bg:`var(--accent)`},_focusVisible:{outline:`2px solid var(--ring)`,outlineOffset:`2px`}}),childTopics:s({mt:`0.5rem`,display:`flex`,flexWrap:`wrap`,gap:`0.25rem`}),topicPill:s({borderRadius:`9999px`,bg:`var(--background)`,px:`0.5rem`,py:`0.125rem`,fontSize:`10px`,color:`var(--muted-foreground)`}),overflowX:s({overflowX:`auto`}),heatmapRoot:s({position:`relative`}),yearTabs:s({mb:`0.75rem`,display:`flex`,flexWrap:`wrap`,alignItems:`center`,gap:`0.375rem`}),yearButton:s({borderRadius:`0.375rem`,px:`0.625rem`,py:`0.25rem`,fontSize:`0.75rem`,fontWeight:`500`,transitionProperty:`color, background-color`,transitionDuration:`150ms`,md:{fontSize:`1.125rem`}}),yearActive:s({bg:`var(--primary)`,color:`var(--primary-foreground)`}),yearInactive:s({color:`var(--muted-foreground)`,_hover:{bg:`var(--accent)`,color:`var(--accent-foreground)`}}),heatTooltip:s({pointerEvents:`none`,position:`absolute`,zIndex:20,transform:`translate(-50%, -100%)`,borderRadius:`0.375rem`,border:`1px solid var(--border)`,bg:`var(--popover)`,px:`0.75rem`,py:`0.5rem`,color:`var(--popover-foreground)`,boxShadow:`var(--shadow, 0 4px 6px rgb(0 0 0 / 0.1))`}),dayDetail:s({mt:`1rem`,borderTop:`1px solid var(--border)`,pt:`0.75rem`}),dayTitle:s({mb:`0.5rem`,fontSize:`0.75rem`,fontWeight:`600`}),daySession:s({display:`flex`,w:`100%`,minW:0,alignItems:`center`,justifyContent:`space-between`,gap:`0.75rem`,borderRadius:`0.375rem`,px:`0.625rem`,py:`0.5rem`,textAlign:`left`,_hover:{bg:`var(--accent)`},_focusVisible:{outline:`2px solid var(--ring)`,outlineOffset:`2px`}}),daySessionTitle:s({minW:0,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`,fontSize:`0.75rem`,fontWeight:`600`}),daySessionMeta:s({mt:`0.125rem`,minW:0,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`,fontSize:`11px`,color:`var(--muted-foreground)`})};function Y({title:e,subtitle:t,children:n,className:r=``}){return(0,K.jsxs)(`section`,{className:o(J.panel,r),children:[(0,K.jsxs)(`div`,{className:J.panelHeader,children:[(0,K.jsx)(`h2`,{className:J.panelTitle,children:e}),t&&(0,K.jsx)(`p`,{className:J.panelSubtitle,children:t})]}),(0,K.jsx)(`div`,{className:J.panelBody,children:n})]})}function $n({sessionMetadata:e,onOpenSession:t}){let n=l(),[r,i]=(0,B.useState)(null);(0,B.useEffect)(()=>{let e=!1;return(async()=>{try{let[t,n,r,a,o,s,c,l,u,f]=await Promise.all([d.getLessonPlans(),d.getLessonMaps(),d.getAnimations(),d.getVerifications(),d.getLearnerState(),d.getFeedback(),d.getBenchmarks(),d.getEvolutions(),d.getImprovementAttempts(),d.getPolicies()]),p=[...t.map(e=>({topic:e.topic,type:`plan`})),...n.map(e=>({topic:e.topic,type:`map`})),...r.map(e=>({topic:e.topic,type:`animation`})),...a.map(e=>({topic:e.topic,type:`verification`}))];if(e)return;i({topicArtifacts:p,sessions:o.sessions??[],feedback:s,benchmarks:c,evolutions:l,improvements:u,policies:f})}catch(e){console.error(`Failed to load chart data`,e)}})(),()=>{e=!0}},[]);let[a,o]=(0,B.useState)(()=>ft());(0,B.useEffect)(()=>{let e=()=>o(ft());return window.addEventListener(vt,e),()=>window.removeEventListener(vt,e)},[]),(0,B.useEffect)(()=>{!r||r.topicArtifacts.length===0||(async()=>{try{let e=await gt();if(!e)return;await _t(e,r.topicArtifacts.map(e=>e.topic??``).filter(Boolean))}catch(e){console.warn(`Background topic categorization failed:`,e)}})()},[r]);let s=(0,B.useMemo)(()=>r?pt(r.topicArtifacts,a):[],[r,a]);if(!r)return(0,K.jsx)(`div`,{className:J.loading,children:`Loading charts…`});let c=s.reduce((e,t)=>e+t.count,0),u=qn(r.feedback),f=Zn(e,Math.max(1,e.length));return(0,K.jsxs)(`div`,{className:J.stack,children:[(0,K.jsxs)(`div`,{className:J.threeGrid,children:[(0,K.jsx)(Y,{title:`Topic mix`,subtitle:`Artifacts grouped into learning domains${c?` (${c} total)`:``}`,children:s.length===0?(0,K.jsx)(q,{message:`No topic artifacts yet — start a lesson to see this fill in.`}):(0,K.jsx)(or,{groups:s})}),(0,K.jsx)(Y,{title:`Model mix`,subtitle:f.basis===`tokens`?`Share of token usage by model`:`Share of message usage by model`,children:f.entries.length===0||f.total===0?(0,K.jsx)(q,{message:`No model usage recorded yet.`}):(0,K.jsx)(nr,{breakdown:f})}),(0,K.jsx)(Y,{title:`Feedback signal mix`,subtitle:`How sessions are landing — confused, confident, or curious`,children:u.length===0?(0,K.jsx)(q,{message:`No feedback recorded yet.`}):(0,K.jsx)(sr,{groups:u,onOpenSession:t})})]}),(0,K.jsx)(Y,{title:`Curriculum timeline`,subtitle:`Each row is a learning session — bar length is duration, color is the first topic covered`,children:(0,K.jsx)(ur,{sessions:r.sessions,colorFor:e=>yt(e,a).color,onOpenSession:t})}),(0,K.jsx)(Y,{title:`Daily activity`,subtitle:`Select an active day to see what you discussed`,children:(0,K.jsx)(dr,{sessions:e,onOpenSession:t})}),(0,K.jsx)(Y,{title:`Self-evolution health`,subtitle:`Benchmark scores, evolved policy scores, rollback attempts, and active policy count`,children:(0,K.jsx)(rr,{benchmarks:r.benchmarks,evolutions:r.evolutions,improvements:r.improvements,policies:r.policies,onOpenEvolution:e=>n({to:`/usage/evolution/$evolutionId`,params:{evolutionId:e}})})})]})}function er(e){return new Intl.NumberFormat(void 0,{notation:`compact`,maximumFractionDigits:1}).format(e)}function tr(e){return e===`tokens`?`tokens`:`messages`}function nr({breakdown:e}){let t=tr(e.basis),[n,r]=(0,B.useState)(e.entries[0]?.key??``),i=e.entries.find(e=>e.key===n)??e.entries[0];return(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`div`,{className:J.modelWheelGrid,children:[(0,K.jsx)(`div`,{className:J.pieBox,children:(0,K.jsx)(Ae,{children:(0,K.jsxs)(Bn,{children:[(0,K.jsx)(W,{data:e.entries,dataKey:`value`,nameKey:`label`,innerRadius:52,outerRadius:84,paddingAngle:2,stroke:`var(--background, #fff)`,strokeWidth:1,onClick:(t,i)=>r(e.entries[i]?.key??n),children:e.entries.map(e=>(0,K.jsx)(g,{fill:e.color,opacity:e.key===i?.key?1:.52,className:J.cursorPointer},e.key))}),(0,K.jsx)(Oe,{formatter:(e,n,r)=>{let i=r.payload;return[`${er(Number(e))} ${t} (${Math.round(i.share*100)}%)`,i.label]},contentStyle:{background:`var(--background, #fff)`,border:`1px solid var(--border, #e5e7eb)`,borderRadius:6,fontSize:12}})]})})}),(0,K.jsx)(`div`,{className:J.stack2,"aria-label":`Select a model to inspect`,children:e.entries.map(e=>(0,K.jsxs)(`button`,{type:`button`,className:o(J.modelButton,e.key===i?.key?J.selectedButton:``),onClick:()=>r(e.key),children:[(0,K.jsxs)(`div`,{className:J.between,children:[(0,K.jsxs)(`div`,{className:J.row,children:[(0,K.jsx)(`span`,{className:J.dot,style:{background:e.color}}),(0,K.jsx)(`div`,{className:J.truncateStrong,children:e.label})]}),(0,K.jsxs)(`div`,{className:J.shareText,children:[Math.round(e.share*100),`%`]})]}),(0,K.jsxs)(`div`,{className:J.modelDetail,children:[e.provider,`/`,e.modelId]})]},e.key))})]}),i&&(0,K.jsxs)(`div`,{className:J.selectionCard,"aria-live":`polite`,children:[(0,K.jsx)(`div`,{className:J.selectionTitle,children:i.label}),(0,K.jsxs)(`div`,{className:J.selectionMeta,children:[i.provider,`/`,i.modelId,` · `,er(i.tokens),` tokens · `,i.messages,` messages · `,i.sessions,` session`,i.sessions===1?``:`s`,` · `,Math.round(i.share*100),`% of recorded `,t]})]})]})}function rr({benchmarks:e,evolutions:t,improvements:n,policies:r,onOpenEvolution:i}){let[a,c]=(0,B.useState)(null);if(!(e.length>0||t.length>0||n.length>0||r.length>0))return(0,K.jsx)(q,{message:`No self-evolution records yet — run a benchmark or evolution to see health signals here.`});let l=e=>new Date(e).toLocaleDateString(void 0,{month:`short`,day:`numeric`}),u=e.map(e=>({id:e.id,score:e.score,createdAt:e.createdAt})),d=t.map(e=>({id:e.id,score:e.bestScore,createdAt:e.createdAt})),f=[...u,...d].sort((e,t)=>e.createdAt-t.createdAt),p=Kn(f),m=f[0]?.createdAt??Date.now(),h=f[f.length-1]?.createdAt??m,g=Math.max(h-m,1),_=(e,t,n)=>e.length===0?null:{label:n,color:t,points:[...e].sort((e,t)=>e.createdAt-t.createdAt).map(e=>({id:e.id,x:10+(e.createdAt-m)/g*87,y:104-e.score/100*92,score:e.score,createdAt:e.createdAt,date:l(e.createdAt)}))},v=_(u,`#6366f1`,`Benchmark`),y=_(d,`#22c55e`,`Evolution`),b=[...e].sort((e,t)=>e.createdAt-t.createdAt),x=[...t].sort((e,t)=>e.createdAt-t.createdAt),S=b[b.length-1],C=x[x.length-1],w=r.filter(e=>e.active).length,T=n.filter(e=>e.scoreDelta!==null).sort((e,t)=>e.createdAt-t.createdAt).slice(-12),E=n.filter(e=>(e.scoreDelta??-1/0)>=0).length,D=n.filter(e=>(e.scoreDelta??0)<0).length,O=[...t].sort((e,t)=>t.createdAt-e.createdAt).slice(0,6);return(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`div`,{className:J.metricGrid,children:[(0,K.jsx)(X,{label:`Latest benchmark`,value:S?S.score.toFixed(1):`none`}),(0,K.jsx)(X,{label:`Latest evolution`,value:C?C.bestScore.toFixed(1):`none`}),(0,K.jsx)(X,{label:`Active policies`,value:`${w}/${r.length}`}),(0,K.jsx)(X,{label:`Attempts`,value:`${E} kept / ${D} rejected`})]}),(0,K.jsxs)(`div`,{className:s({mb:`1rem`}),children:[f.length===0?(0,K.jsx)(q,{message:`Policy records exist, but no benchmark scores have been recorded yet.`}):p?(0,K.jsxs)(`div`,{className:J.chartGrid,children:[(0,K.jsx)(`div`,{className:J.axisLabels,style:{height:132},children:[0,25,50,75,100].map(e=>{let t=104-e/100*92;return(0,K.jsx)(`div`,{className:J.axisLabel,style:{top:`${t/132*100}%`},children:e},e)})}),(0,K.jsxs)(`svg`,{width:`100%`,viewBox:`0 0 100 132`,preserveAspectRatio:`none`,style:{height:132},role:`img`,"aria-label":`Self-evolution score trend`,children:[[0,25,50,75,100].map(e=>{let t=104-e/100*92;return(0,K.jsx)(`line`,{x1:0,y1:t,x2:97,y2:t,stroke:`currentColor`,strokeOpacity:.08},e)}),[v,y].filter(Boolean).map(e=>e?(0,K.jsxs)(`g`,{children:[(0,K.jsx)(`path`,{d:e.points.map((e,t)=>`${t===0?`M`:`L`} ${e.x-10} ${e.y}`).join(` `),fill:`none`,stroke:e.color,strokeWidth:.8,opacity:.8}),e.points.map((t,n)=>(0,K.jsx)(`circle`,{cx:t.x-10,cy:t.y,r:a?.kind===e.label&&a.createdAt===t.createdAt?2.1:1.4,fill:e.color,stroke:`var(--background)`,strokeWidth:.5,className:J.cursorPointer,role:`button`,tabIndex:0,"aria-label":`Inspect ${e.label.toLowerCase()} score ${t.score.toFixed(1)} on ${t.date}`,onClick:()=>c({kind:e.label,id:t.id,score:t.score,createdAt:t.createdAt}),onKeyDown:n=>{(n.key===`Enter`||n.key===` `)&&(n.preventDefault(),c({kind:e.label,id:t.id,score:t.score,createdAt:t.createdAt}))},children:(0,K.jsxs)(`title`,{children:[e.label,`: `,t.score.toFixed(1),` on `,t.date]})},n))]},e.label):null)]})]}):(0,K.jsx)(`div`,{className:J.mutedNotice,children:`Scores are recorded, but they are still all 0.0. Add feedback signals and rerun benchmark or evolution before treating this as a trend.`}),(0,K.jsxs)(`div`,{className:J.legendRow,children:[v&&(0,K.jsxs)(`div`,{className:J.legendItem,children:[(0,K.jsx)(`span`,{className:J.legendSwatch,style:{background:v.color}}),(0,K.jsx)(`span`,{className:J.smallMuted,children:`Benchmark scores`})]}),y&&(0,K.jsxs)(`div`,{className:J.legendItem,children:[(0,K.jsx)(`span`,{className:J.legendSwatch,style:{background:y.color}}),(0,K.jsx)(`span`,{className:J.smallMuted,children:`Evolved policy scores`})]})]}),a&&(0,K.jsxs)(`div`,{className:J.selectionCard,"aria-live":`polite`,children:[(0,K.jsxs)(`div`,{className:J.selectionTitle,children:[a.kind,` score `,a.score.toFixed(2)]}),(0,K.jsx)(`div`,{className:J.selectionMeta,children:new Date(a.createdAt).toLocaleString()}),a.kind===`Evolution`&&a.id&&(0,K.jsx)(`div`,{className:J.selectionActions,children:(0,K.jsx)(`button`,{type:`button`,className:J.selectionAction,onClick:()=>i(a.id),children:`View exact diff`})})]})]}),T.length>0&&(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`div`,{className:J.improvementTitle,children:`Recent improvements`}),(0,K.jsx)(`div`,{className:J.barWrap,children:T.map((e,t)=>{let n=e.scoreDelta??0,r=n>=0;return(0,K.jsx)(`div`,{className:J.flex1,children:(0,K.jsx)(`div`,{className:o(J.improvementBar,r?J.improvementBarGood:J.improvementBarBad),style:{height:`${Math.min(Math.abs(n)*40+4,40)}px`,opacity:.75},title:`Delta ${n>=0?`+`:``}${n.toFixed(2)} on ${l(e.createdAt)}`})},t)})}),(0,K.jsxs)(`div`,{className:J.barFooter,children:[(0,K.jsxs)(`span`,{children:[T.length,` latest`]}),(0,K.jsxs)(`span`,{children:[w,` active policy`,w===1?``:`ies`,` / `,r.length,` total`]})]})]}),O.length>0&&(0,K.jsx)(`div`,{className:J.evolutionList,children:O.map(e=>(0,K.jsxs)(`button`,{type:`button`,className:J.evolutionButton,onClick:()=>i(e.id),children:[(0,K.jsxs)(`div`,{className:J.flex1,children:[(0,K.jsx)(`div`,{className:J.evolutionName,children:e.topic||`General teaching policy`}),(0,K.jsxs)(`div`,{className:J.evolutionMeta,children:[`Score `,e.bestScore.toFixed(2),` · `,new Date(e.createdAt).toLocaleString()]})]}),(0,K.jsx)(`span`,{className:J.viewDiff,children:`View exact diff`})]},e.id))})]})}function X({label:e,value:t}){return(0,K.jsxs)(`div`,{className:J.metricTile,children:[(0,K.jsx)(`div`,{className:J.metricTileLabel,children:e}),(0,K.jsx)(`div`,{className:J.metricTileValue,children:t})]})}function Z(e,t,n,r){let i=(r-90)*Math.PI/180;return{x:e+n*Math.cos(i),y:t+n*Math.sin(i)}}function ir(e,t,n,r,i,a){if(a-i>=359.99){let a=Z(e,t,r,i),o=Z(e,t,r,i+180),s=Z(e,t,n,i+180),c=Z(e,t,n,i);return[`M ${a.x} ${a.y}`,`A ${r} ${r} 0 1 1 ${o.x} ${o.y}`,`A ${r} ${r} 0 1 1 ${a.x} ${a.y}`,`M ${c.x} ${c.y}`,`A ${n} ${n} 0 1 0 ${s.x} ${s.y}`,`A ${n} ${n} 0 1 0 ${c.x} ${c.y}`,`Z`].join(` `)}let o=Z(e,t,r,i),s=Z(e,t,r,a),c=Z(e,t,n,a),l=Z(e,t,n,i),u=+(a-i>180);return[`M ${o.x} ${o.y}`,`A ${r} ${r} 0 ${u} 1 ${s.x} ${s.y}`,`L ${c.x} ${c.y}`,`A ${n} ${n} 0 ${u} 0 ${l.x} ${l.y}`,`Z`].join(` `)}function ar(e,t,n,r){let i=[];if(e.count===0)return i;let a,o;if(r&&r!==e){if(a=r,o=+!r.children[0]?.children?.length,a.children.length===0&&r.key.startsWith(`topic-`))return i}else a=e,o=0;function s(e,r,a,c,l){if(e.count===0||a<=r)return;let u=55+(c-o)*40,d=u+40-1.5;if(u>=175)return;let f=Math.min(d,175),p=e.color||l;if(i.push({node:e,path:ir(t,n,Math.max(u,55),f,r,a),color:p,label:e.label,level:c,startAngle:r,endAngle:a,parentColor:p}),e.children.length>0){let t=e.children.reduce((e,t)=>e+t.count,0),n=r;for(let i of e.children){let e=t>0?i.count/t*(a-r):0;s(i,n,n+e,c+1,p),n+=e}}}return s(a,0,360,0,a.color||`#64748b`),i}function or({groups:e}){let[t,n]=(0,B.useState)(null),[r,i]=(0,B.useState)(null),[a,o]=(0,B.useState)(null),s=(0,B.useRef)(null),c=(0,B.useMemo)(()=>ht(e),[e]),l=(0,B.useMemo)(()=>ar(c,200,200,t),[c,t]),u=(0,B.useMemo)(()=>{let e=[];if(!t||t===c)return e;function n(t,r){if(t===r)return!0;for(let i of t.children)if(n(i,r))return e.unshift(i),!0;return!1}return n(c,t),e},[t,c]),d=e=>{e.node.children.length>0&&n(e.node)},f=e=>{if(!s.current)return;let t=s.current.getBoundingClientRect();o({x:e.clientX-t.left,y:e.clientY-t.top})},p=t||c,m=p.children.filter(e=>e.count>0);return(0,K.jsxs)(`div`,{className:J.wheelGrid,children:[(0,K.jsxs)(`div`,{className:J.relative,style:{width:`100%`,height:400},children:[(0,K.jsxs)(`div`,{className:J.breadcrumbs,children:[(0,K.jsx)(`button`,{type:`button`,onClick:()=>n(null),className:J.crumbButton,children:`All domains`}),u.map((e,t)=>(0,K.jsxs)(`span`,{className:J.row,children:[(0,K.jsx)(`span`,{className:J.mutedSlash,children:`/`}),(0,K.jsx)(`button`,{type:`button`,className:J.crumbColored,style:{color:e.color},onClick:()=>n(t===u.length-1?e:u[t]),children:e.label})]},e.key))]}),(0,K.jsxs)(`svg`,{ref:s,viewBox:`0 0 400 400`,className:J.fullSvg,onMouseMove:f,onMouseLeave:()=>{i(null),o(null)},children:[l.map((e,t)=>(0,K.jsx)(`path`,{d:e.path,fill:e.color,stroke:`var(--background, #fff)`,strokeWidth:1.5,opacity:r&&r!==e?.45:.92,className:J.clickPath,onMouseEnter:()=>i(e),onClick:()=>d(e),children:(0,K.jsxs)(`title`,{children:[e.label,` — `,e.node.count,` artifact`,e.node.count===1?``:`s`]})},`${e.node.key}-${t}`)),(0,K.jsx)(`circle`,{cx:200,cy:200,r:53,fill:`var(--background, #fff)`,stroke:`var(--border, #e5e7eb)`,strokeWidth:1,className:t?J.cursorPointer:void 0,onClick:()=>t&&n(null)}),(0,K.jsx)(`text`,{x:200,y:195,textAnchor:`middle`,fontSize:13,fontWeight:600,fill:`currentColor`,className:J.noPointer,children:p.label.length>18?p.label.slice(0,16)+`…`:p.label}),(0,K.jsxs)(`text`,{x:200,y:212,textAnchor:`middle`,fontSize:11,fill:`var(--muted-foreground, #6b7280)`,className:J.noPointer,children:[p.count,` artifact`,p.count===1?``:`s`]}),t&&(0,K.jsx)(`text`,{x:200,y:228,textAnchor:`middle`,fontSize:10,fill:`var(--primary, #6366f1)`,className:J.noPointer,children:`Click center to zoom out`})]}),r&&a&&(0,K.jsxs)(`div`,{className:J.tooltip,style:{left:a.x+12,top:a.y-8,fontSize:12},children:[(0,K.jsx)(`div`,{className:J.semibold,children:r.label}),(0,K.jsxs)(`div`,{className:J.tinyMuted,children:[r.node.count,` artifact`,r.node.count===1?``:`s`,r.level<2&&r.node.children.length>0?` · ${r.node.children.length} sub-categorie${r.node.children.length===1?``:`s`}`:``]}),r.level<2&&(0,K.jsx)(`div`,{className:J.tinyPrimary,children:`Click to explore`})]})]}),(0,K.jsxs)(`div`,{className:J.detailPanel,children:[(0,K.jsxs)(`div`,{className:J.detailHeader,children:[(0,K.jsx)(`div`,{className:J.sectionLabel,children:t?`Sub-categories`:`Domains`}),t&&(0,K.jsx)(`button`,{type:`button`,onClick:()=>n(null),className:J.backButton,children:`← Back`})]}),m.slice(0,8).map(e=>(0,K.jsxs)(`div`,{className:J.detailCard,children:[(0,K.jsxs)(`div`,{className:J.between,children:[(0,K.jsxs)(`div`,{className:J.row,children:[(0,K.jsx)(`span`,{className:J.dot,style:{background:e.color}}),(0,K.jsx)(`div`,{className:J.truncateStrong,children:e.label})]}),(0,K.jsx)(`div`,{className:J.shareText,children:e.count})]}),e.children.length>0&&(0,K.jsxs)(`div`,{className:J.childTopics,children:[e.children.slice(0,4).map(e=>(0,K.jsxs)(`span`,{className:J.topicPill,children:[e.label,` ×`,e.count]},e.key)),e.children.length>4&&(0,K.jsxs)(`span`,{className:J.topicPill,children:[`+`,e.children.length-4]})]})]},e.key))]})]})}function sr({groups:e,onOpenSession:t}){let[n,r]=(0,B.useState)(e[0]?.label??``),i=e.find(e=>e.label===n)??e[0],a=e.reduce((e,t)=>e+t.count,0),s=i?.entries.find(e=>e.sessionId||e.referent?.sessionId);return(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`div`,{className:J.modelWheelGrid,children:[(0,K.jsx)(`div`,{className:J.pieBox,children:(0,K.jsx)(Ae,{children:(0,K.jsxs)(Bn,{children:[(0,K.jsx)(W,{data:e,dataKey:`count`,nameKey:`label`,innerRadius:52,outerRadius:84,paddingAngle:2,onClick:(t,i)=>r(e[i]?.label??n),children:e.map(e=>(0,K.jsx)(g,{fill:e.color,opacity:e.label===i?.label?1:.52,className:J.cursorPointer},e.label))}),(0,K.jsx)(Oe,{formatter:e=>[`${e} signal${Number(e)===1?``:`s`}`,`Feedback`],contentStyle:{background:`var(--background, #fff)`,border:`1px solid var(--border, #e5e7eb)`,borderRadius:6,fontSize:12}})]})})}),(0,K.jsx)(`div`,{className:J.stack2,"aria-label":`Select a feedback signal to inspect`,children:e.map(e=>(0,K.jsxs)(`button`,{type:`button`,className:o(J.modelButton,e.label===i?.label?J.selectedButton:``),onClick:()=>r(e.label),children:[(0,K.jsxs)(`div`,{className:J.between,children:[(0,K.jsxs)(`div`,{className:J.row,children:[(0,K.jsx)(`span`,{className:J.dot,style:{background:e.color}}),(0,K.jsx)(`span`,{className:J.truncateStrong,children:e.label})]}),(0,K.jsxs)(`span`,{className:J.shareText,children:[Math.round(e.count/a*100),`%`]})]}),(0,K.jsxs)(`div`,{className:J.modelDetail,children:[e.count,` signal`,e.count===1?``:`s`]})]},e.label))})]}),i&&(0,K.jsxs)(`div`,{className:J.selectionCard,"aria-live":`polite`,children:[(0,K.jsxs)(`div`,{className:J.selectionTitle,children:[i.label,`: `,i.count,` signal`,i.count===1?``:`s`]}),(0,K.jsxs)(`div`,{className:J.selectionMeta,children:[i.entries.slice(0,3).map(e=>e.topic||`Untitled topic`).join(` · `),i.entries[0]?.evidence?` · Latest evidence: ${i.entries[0].evidence}`:``]}),s&&(0,K.jsx)(`div`,{className:J.selectionActions,children:(0,K.jsx)(`button`,{type:`button`,className:J.selectionAction,onClick:()=>t(s.sessionId??s.referent.sessionId),children:`Open latest source session`})})]})]})}function cr(e){if(e.length===0)return[new Date().getFullYear()];let t=new Set;for(let n of e)t.add(new Date(n.lastModified).getFullYear());return Array.from(t).sort((e,t)=>e-t)}function lr(e,t){let n=new Map;for(let e of t){let t=new Date(e.lastModified),r=`${t.getFullYear()}-${t.getMonth()}-${t.getDate()}`;n.set(r,(n.get(r)??0)+1)}let r=new Date(e,0,1),i=new Date(e,11,31),a=[];for(let e=new Date(r);e<=i;e.setDate(e.getDate()+1)){let t=`${e.getFullYear()}-${e.getMonth()}-${e.getDate()}`;a.push({date:new Date(e),count:n.get(t)??0})}return a}function ur({sessions:e,colorFor:t,onOpenSession:n}){if(!e||e.length===0)return(0,K.jsx)(q,{message:`No sessions yet — once you start exploring topics, your curriculum timeline appears here.`});let r=Wn(e);if(r.length===0)return(0,K.jsx)(q,{message:`No topic-bearing sessions yet — finish a lesson with covered topics to build the curriculum timeline.`});let i=r[0].startedAt,a=Date.now(),o=r.reduce((e,t)=>Math.max(e,Gn(t,a)),i),s=Math.max(o-i,1),c=24+r.length*28+8,l=e=>new Date(e).toLocaleDateString(void 0,{month:`short`,day:`numeric`});return(0,K.jsx)(`div`,{className:J.overflowX,children:(0,K.jsxs)(`svg`,{width:`100%`,viewBox:`0 0 800 ${c}`,preserveAspectRatio:`none`,style:{minWidth:480,height:c},role:`img`,"aria-label":`Curriculum timeline`,children:[(0,K.jsx)(`text`,{x:4,y:14,fontSize:10,fill:`currentColor`,opacity:.6,children:l(i)}),(0,K.jsx)(`text`,{x:796,y:14,fontSize:10,fill:`currentColor`,opacity:.6,textAnchor:`end`,children:l(o)}),(0,K.jsx)(`line`,{x1:110,y1:18,x2:788,y2:18,stroke:`currentColor`,opacity:.15}),r.map((e,r)=>{let o=24+r*28,c=(e.startedAt-i)/s,l=(Gn(e,a)-i)/s,u=110+c*678,d=Math.max(2,(l-c)*678),f=Un(e)??`Untitled`,p=t(f)??`#94a3b8`,m=f.length>16?f.slice(0,15)+`…`:f;return(0,K.jsxs)(`g`,{role:e.id?`button`:void 0,tabIndex:e.id?0:void 0,className:e.id?J.cursorPointer:void 0,"aria-label":e.id?`Open ${f} learning session`:void 0,onClick:()=>{e.id&&n(e.id)},onKeyDown:t=>{e.id&&(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),n(e.id))},children:[(0,K.jsx)(`text`,{x:102,y:o+22/2+3,fontSize:11,fill:`currentColor`,opacity:.75,textAnchor:`end`,children:m}),(0,K.jsx)(`rect`,{x:u,y:o,width:d,height:22,rx:3,fill:p,opacity:e.endedAt?.85:.55,children:(0,K.jsxs)(`title`,{children:[f,`
|
|
1
|
+
import{s as e}from"./rolldown-runtime-BG2f4sTM.js";import{T as t}from"./syntax-highlighter-Buac5fmw.js";import{t as n}from"./Nav-DQ-5KEsA.js";import{$t as r,Ct as i,Kt as a,M as o,N as s,Qt as c,Tt as l,Ut as u,Wt as d,en as f,ni as p,nn as m,wt as h}from"./index-DCgpDQKf.js";import{$ as g,$t as _,A as v,An as y,B as b,Ct as x,Dt as S,En as C,Et as w,Fn as T,G as E,H as D,Hn as O,Ht as ee,I as te,J as ne,Jt as re,K as ie,Kt as ae,L as oe,O as se,Pn as k,Q as A,Qt as ce,R as le,Rn as ue,Tn as de,Tt as fe,U as pe,Un as me,Ut as he,W as ge,Wt as j,Y as _e,Yt as ve,Zt as ye,a as be,at as xe,bn as Se,c as Ce,cn as we,ct as Te,dt as Ee,en as De,et as Oe,ft as ke,hn as Ae,i as je,in as Me,it as Ne,j as Pe,jn as M,kn as N,lt as Fe,mt as Ie,n as Le,nn as Re,nt as ze,o as Be,on as Ve,ot as He,pn as Ue,pt as We,q as Ge,qt as Ke,r as qe,rn as Je,rt as Ye,s as Xe,st as Ze,t as Qe,tt as $e,ut as et,vt as tt,wt as nt,xn as rt,yn as it,yt as at,z as ot,zn as P}from"./CategoricalChart-BVb9-7_N.js";import{t as st}from"./createLucideIcon-C_7xXnHN.js";import{t as ct}from"./book-open-check-vvzSWP24.js";import{t as lt}from"./brain-Ez98oYax.js";import{t as ut}from"./chevron-right-CtU0hmKY.js";import{t as dt}from"./clock-3--4K486gi.js";import{a as ft,c as pt,d as mt,l as ht,o as gt,r as _t,t as vt,u as yt}from"./topic-categorization-DfJaArmq.js";import{t as bt}from"./download-Cu2Egmxp.js";import{t as xt}from"./flame-VMBkC42I.js";import{t as St}from"./message-square-text-3oqB9UW2.js";import{t as Ct}from"./trending-up-CAMFqCxl.js";import{t as wt}from"./upload-BDNPMEAh.js";import{n as Tt}from"./browser-download-DzX_pBaq.js";import{t as Et}from"./useSeo-fXJau5mP.js";import{n as Dt,t as Ot}from"./sandbox-export-Cl8U49Iq.js";import{n as F,t as kt}from"./LearningInsightsHeader-DWj2-1xb.js";var At=st(`calendar-days`,[[`path`,{d:`M8 2v4`,key:`1cmpym`}],[`path`,{d:`M16 2v4`,key:`4m81vk`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`,key:`1hopcy`}],[`path`,{d:`M3 10h18`,key:`8toen8`}],[`path`,{d:`M8 14h.01`,key:`6423bh`}],[`path`,{d:`M12 14h.01`,key:`1etili`}],[`path`,{d:`M16 14h.01`,key:`1gbofw`}],[`path`,{d:`M8 18h.01`,key:`lrp35t`}],[`path`,{d:`M12 18h.01`,key:`mhygvu`}],[`path`,{d:`M16 18h.01`,key:`kzsmim`}]]),jt=st(`gem`,[[`path`,{d:`M10.5 3 8 9l4 13 4-13-2.5-6`,key:`b3dvk1`}],[`path`,{d:`M17 3a2 2 0 0 1 1.6.8l3 4a2 2 0 0 1 .013 2.382l-7.99 10.986a2 2 0 0 1-3.247 0l-7.99-10.986A2 2 0 0 1 2.4 7.8l2.998-3.997A2 2 0 0 1 7 3z`,key:`7w4byz`}],[`path`,{d:`M2 9h20`,key:`16fsjt`}]]),Mt=e=>e.graphicalItems.polarItems,I=N([Mt,x,N([j,he],tt)],ke),L=N([N([I],Ee),re],Fe),Nt=N([L,x,I],He);N([L,x,I],(e,t,n)=>n.length>0?e.flatMap(e=>n.flatMap(n=>({value:C(e,t.dataKey??n.dataKey),errorDomain:[]}))).filter(Boolean):t?.dataKey==null?e.map(e=>({value:e,errorDomain:[]})):e.map(e=>({value:C(e,t.dataKey),errorDomain:[]})));var Pt=()=>void 0,Ft=N([x,we,L,Nt,Ke,j,N([x,nt,fe,Pt,N([L,x,I,at,j,ve],et),Pt,we,j],Ie)],Ze);N([w,N([x,Ft,N([Ft,S,w],We),j],Te)],ee);function It(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Lt(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?It(Object(n),!0).forEach(function(t){Rt(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):It(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Rt(e,t,n){return(t=zt(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function zt(e){var t=Bt(e,`string`);return typeof t==`symbol`?t:t+``}function Bt(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}var R=N([Mt,(e,t)=>t],(e,t)=>e.filter(e=>e.type===`pie`).find(e=>e.id===t)),Vt=[],z=(e,t,n)=>n?.length===0?Vt:n,Ht=N([re,R,z],(e,t,n)=>{var r=e.chartData;if(t!=null){var i=t?.data!=null&&t.data.length>0?t.data:r;if((!i||!i.length)&&n!=null&&(i=n.map(e=>Lt(Lt({},t.presentationProps),e.props))),i!=null)return i}}),Ut=N([Ht,R,z],(e,t,n)=>{if(!(e==null||t==null))return e.map((e,r)=>{var i,a=C(e,t.nameKey,t.name),o=n!=null&&(i=n[r])!=null&&(i=i.props)!=null&&i.fill?n[r].props.fill:typeof e==`object`&&e&&`fill`in e?e.fill:t.fill;return{value:de(a,t.dataKey),dataKey:t.dataKey,color:o,payload:e,type:t.legendType}})}),Wt=N([Ht,R,z,it],(e,t,n,r)=>{if(!(t==null||e==null))return hn({offset:r,pieSettings:t,displayedData:e,cells:n})}),B=e(t()),Gt=e(O()),Kt=[`key`],qt=[`onMouseEnter`,`onClick`,`onMouseLeave`],Jt=[`id`],Yt=[`id`];function V(){return V=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},V.apply(null,arguments)}function H(e,t){if(e==null)return{};var n,r,i=Xt(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function Xt(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function Zt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function U(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?Zt(Object(n),!0).forEach(function(t){Qt(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Zt(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Qt(e,t,n){return(t=$t(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function $t(e){var t=en(e,`string`);return typeof t==`symbol`?t:t+``}function en(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}var tn=ye;function nn(e){var t=(0,B.useMemo)(()=>ne(e.children,g),[e.children]),n=M(n=>Ut(n,e.id,t));return n==null?null:B.createElement(D,{legendPayload:n})}function rn(e){if(!(e==null||typeof e==`boolean`||typeof e==`function`)){if(B.isValidElement(e)){var t=e.props?.fill;return typeof t==`string`?t:void 0}var n=e.fill;return typeof n==`string`?n:void 0}}var an=B.memo(e=>{var t=e.dataKey,n=e.nameKey,r=e.sectors,i=e.stroke,a=e.strokeWidth,o=e.fill,s=e.name,c=e.hide,l=e.tooltipType,u=e.id,d=e.activeShape,f=rn(d),p={dataDefinedOnItem:r.map(e=>{var t=e.tooltipPayload;return f==null||t==null?t:t.map(e=>U(U({},e),{},{color:f,fill:f}))}),getPosition:e=>r[Number(e)]?.tooltipPosition,settings:{stroke:i,strokeWidth:a,fill:o,dataKey:t,nameKey:n,name:de(s,t),hide:c,type:l,color:o,unit:``,graphicalItemId:u}};return B.createElement(pe,{tooltipEntrySettings:p})}),on=(e,t)=>e>t?`start`:e<t?`end`:`middle`,sn=(e,t,n)=>k(typeof t==`function`?t(e):t,n,n*.8),cn=(e,t,n)=>{var r=t.top,i=t.left,a=t.width,o=t.height,s=ce(a,o);return{cx:i+k(e.cx,a,a/2),cy:r+k(e.cy,o,o/2),innerRadius:k(e.innerRadius,s,0),outerRadius:sn(n,e.outerRadius,s),maxRadius:e.maxRadius||Math.sqrt(a*a+o*o)/2}},ln=(e,t)=>P(t-e)*Math.min(Math.abs(t-e),360),un=(e,t)=>{if(B.isValidElement(e))return B.cloneElement(e,t);if(typeof e==`function`)return e(t);var n=me(`recharts-pie-label-line`,typeof e==`boolean`?``:e.className);t.key;var r=H(t,Kt);return B.createElement(Re,V({},r,{type:`linear`,className:n}))},dn=(e,t,n)=>{if(B.isValidElement(e))return B.cloneElement(e,t);var r=n;if(typeof e==`function`&&(r=e(t),B.isValidElement(r)))return r;var i=me(`recharts-pie-label-text`,se(e));return B.createElement(_e,V({},t,{alignmentBaseline:`middle`,className:i}),r)};function fn(e){var t=e.sectors,n=e.props,r=e.showLabels,i=n.label,a=n.labelLine,o=n.dataKey;if(!r||!i||!t)return null;var s=Je(n),c=Me(i),l=Me(a),u=typeof i==`object`&&`offsetRadius`in i&&typeof i.offsetRadius==`number`&&i.offsetRadius||20,d=t.map((e,t)=>{var n=(e.startAngle+e.endAngle)/2,r=_(e.cx,e.cy,e.outerRadius+u,n),d=U(U(U(U({},s),e),{},{stroke:`none`},c),{},{index:t,textAnchor:on(r.x,e.cx)},r),f=U(U(U(U({},s),e),{},{fill:`none`,stroke:e.fill},l),{},{index:t,points:[_(e.cx,e.cy,e.outerRadius,n),r],key:`line`});return B.createElement(ze,{zIndex:ae.label,key:`label-${e.startAngle}-${e.endAngle}-${e.midAngle}-${t}`},B.createElement(A,null,a&&un(a,f),dn(i,d,C(e,o))))});return B.createElement(A,{className:`recharts-pie-labels`},d)}function pn(e){var t=e.sectors,n=e.props,r=e.showLabels,i=n.label;return typeof i==`object`&&i&&`position`in i?B.createElement(v,{label:i}):B.createElement(fn,{sectors:t,props:n,showLabels:r})}function mn(e){var t=e.sectors,n=e.activeShape,r=e.inactiveShape,i=e.allOtherPieProps,a=e.shape,o=e.id,s=e.animationElapsedTime,c=e.isAnimating,l=e.isEntrance,u=M(xe),d=M(Ye),f=M(Ne),p=i.onMouseEnter,m=i.onClick,h=i.onMouseLeave,g=H(i,qt),_=E(p,i.dataKey,o),v=ie(h),y=ge(m,i.dataKey,o);return t==null||t.length===0?null:B.createElement(B.Fragment,null,t.map((e,p)=>{if(e?.startAngle===0&&e?.endAngle===0&&t.length!==1)return null;var m=f==null||f===o,h=String(p)===u&&(d==null||i.dataKey===d)&&m,b=n&&h?n:u?r:null,x=U(U({},e),{},{stroke:e.stroke,tabIndex:-1,index:p,isActive:h,animationElapsedTime:s,isAnimating:c,isEntrance:l,[rt]:p,[Se]:o});return B.createElement(A,V({key:`sector-${e?.startAngle}-${e?.endAngle}-${e.midAngle}-${p}`,tabIndex:-1,className:`recharts-pie-sector`},Ve(g,e,p),{onMouseEnter:_(e,p),onMouseLeave:v(e,p),onClick:y(e,p)}),B.createElement(Ge,{option:b??a,DefaultShape:tn,shapeProps:x}))}))}function hn(e){var t=e.pieSettings,n=e.displayedData,r=e.cells,i=e.offset,a=t.cornerRadius,o=t.startAngle,s=t.endAngle,c=t.dataKey,l=t.nameKey,u=t.tooltipType,d=Math.abs(t.minAngle),f=ln(o,s),p=Math.abs(f),m=n.length<=1?0:t.paddingAngle??0,h=n.filter(e=>C(e,c,0)!==0).length,g=(p>=360?h:h-1)*m,v=n.reduce((e,t)=>{var n=C(t,c,0);return e+(ue(n)?n:0)},0),y=d>0&&v>0&&n.some(e=>{var t=C(e,c,0),n=(ue(t)?t:0)/v;return t!==0&&n*p<d})?d:0,b=p-h*y-g,x;if(v>0){var S;x=n.map((e,n)=>{var s=C(e,c,0),d=C(e,l,n),p=cn(t,i,e),h=(ue(s)?s:0)/v,g,x=U(U({},e),r&&r[n]&&r[n].props),w=x!=null&&`fill`in x&&typeof x.fill==`string`?x.fill:t.fill;g=n?S.endAngle+P(f)*m*(s===0?0:1):o;var T=g+P(f)*((s===0?0:y)+h*b),E=(g+T)/2,D=(p.innerRadius+p.outerRadius)/2,O=[{name:d,value:s,payload:x,dataKey:c,type:u,color:w,fill:w,graphicalItemId:t.id}],ee=_(p.cx,p.cy,D,E);return S=U(U(U(U({},t.presentationProps),{},{percent:h,cornerRadius:typeof a==`string`?parseFloat(a):a,name:d,tooltipPayload:O,midAngle:E,middleRadius:D,tooltipPosition:ee},x),p),{},{value:s,dataKey:c,startAngle:g,endAngle:T,payload:x,paddingAngle:s===0?0:P(f)*m}),S})}return x}function gn(e){var t=e.showLabels,n=e.sectors,r=e.children,i=(0,B.useMemo)(()=>!t||!n?[]:n.map(e=>({value:e.value,payload:e.payload,clockWise:!1,parentViewBox:void 0,viewBox:{cx:e.cx,cy:e.cy,innerRadius:e.innerRadius,outerRadius:e.outerRadius,startAngle:e.startAngle,endAngle:e.endAngle,clockWise:!1},fill:e.fill})),[n,t]);return B.createElement(Pe,{value:t?i:void 0},r)}var _n=(e,t)=>{if(e==null)return[];var n=[],r=e.find(e=>e.status!==`removed`),i=r?r.next.startAngle:0;return e.forEach((e,r)=>{if(e.status!==`removed`){var a=r>0?(0,Gt.default)(e.next,`paddingAngle`,0):0;if(e.status===`matched`){var o=T(e.prev.endAngle-e.prev.startAngle,e.next.endAngle-e.next.startAngle,t),s=U(U({},e.next),{},{startAngle:i+a,endAngle:i+o+a});n.push(s),i=s.endAngle}else{var c=T(0,e.next.endAngle-e.next.startAngle,t),l=U(U({},e.next),{},{startAngle:i+a,endAngle:i+c+a});n.push(l),i=l.endAngle}}}),n};function vn(e){var t=e.props,n=e.previousSectorsRef,r=e.id,i=t.sectors,a=t.activeShape,o=t.inactiveShape,s=t.animationInterpolateFn,c=ot(t.onAnimationStart,t.onAnimationEnd),l=c.isAnimating,u=c.handleAnimationStart,d=c.handleAnimationEnd,f=Ue();return f==null?null:B.createElement(gn,{showLabels:!l,sectors:i},B.createElement(le,{animationInput:t,animationIdPrefix:`recharts-pie-`,items:i,previousItemsRef:n,isAnimationActive:t.isAnimationActive,animationBegin:t.animationBegin,animationDuration:t.animationDuration,animationEasing:t.animationEasing,onAnimationStart:u,onAnimationEnd:d,animationInterpolateFn:s,animationMatchBy:t.animationMatchBy,layout:f},(e,n,i)=>B.createElement(A,null,B.createElement(mn,{sectors:e,activeShape:a,inactiveShape:o,allOtherPieProps:t,shape:t.shape,id:r,animationElapsedTime:n,isAnimating:l||n<1,isEntrance:i}))),B.createElement(pn,{showLabels:!l,sectors:i,props:t}),t.children)}var yn={animationBegin:400,animationDuration:1500,animationEasing:`ease`,animationInterpolateFn:_n,animationMatchBy:b,cx:`50%`,cy:`50%`,dataKey:`value`,endAngle:360,fill:`#808080`,hide:!1,innerRadius:0,isAnimationActive:`auto`,label:!1,labelLine:!0,legendType:`rect`,minAngle:0,nameKey:`name`,outerRadius:`80%`,paddingAngle:0,rootTabIndex:0,shape:tn,startAngle:0,stroke:`#fff`,zIndex:ae.area};function bn(e){var t=e.id,n=H(e,Jt),r=e.hide,i=e.className,a=e.rootTabIndex,o=(0,B.useMemo)(()=>ne(e.children,g),[e.children]),s=M(e=>Wt(e,t,o)),c=(0,B.useRef)(null),l=me(`recharts-pie`,i);return r||s==null?(c.current=null,B.createElement(A,{tabIndex:a,className:l})):B.createElement(ze,{zIndex:e.zIndex},B.createElement(an,{dataKey:e.dataKey,nameKey:e.nameKey,sectors:s,stroke:e.stroke,strokeWidth:e.strokeWidth,fill:e.fill,name:e.name,hide:e.hide,tooltipType:e.tooltipType,id:t,activeShape:e.activeShape}),B.createElement(A,{tabIndex:a,className:l},B.createElement(vn,{props:U(U({},n),{},{sectors:s}),previousSectorsRef:c,id:t})))}function xn(e){var t=De(e,yn),n=t.id,r=H(t,Yt),i=Je(r);return B.createElement(oe,{id:n,type:`pie`},e=>B.createElement(B.Fragment,null,B.createElement(te,{type:`pie`,id:e,data:r.data,dataKey:r.dataKey,hide:r.hide,angleAxisId:0,radiusAxisId:0,name:r.name,nameKey:r.nameKey,tooltipType:r.tooltipType,legendType:r.legendType,fill:r.fill,cx:r.cx,cy:r.cy,startAngle:r.startAngle,endAngle:r.endAngle,paddingAngle:r.paddingAngle,minAngle:r.minAngle,innerRadius:r.innerRadius,outerRadius:r.outerRadius,cornerRadius:r.cornerRadius,presentationProps:i,maxRadius:t.maxRadius}),B.createElement(nn,V({},r,{id:e})),B.createElement(bn,V({},r,{id:e}))))}var W=xn;W.displayName=`Pie`;function Sn(e){var t=y();return(0,B.useEffect)(()=>{t(Ce(e))},[t,e]),null}var Cn=[`layout`];function G(){return G=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},G.apply(null,arguments)}function wn(e,t){if(e==null)return{};var n,r,i=Tn(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function Tn(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function En(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Dn(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?En(Object(n),!0).forEach(function(t){On(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):En(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function On(e,t,n){return(t=kn(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function kn(e){var t=An(e,`string`);return typeof t==`symbol`?t:t+``}function An(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}var jn=Dn({accessibilityLayer:!0,stackOffset:`none`,barCategoryGap:`10%`,barGap:4,margin:{top:5,right:5,bottom:5,left:5},reverseStackOrder:!1,syncMethod:`index`,layout:`radial`,responsive:!1,cx:`50%`,cy:`50%`,innerRadius:0,outerRadius:`80%`},Xe),Mn=(0,B.forwardRef)(function(e,t){var n=De(e.categoricalChartProps,jn),r=n.layout,i=wn(n,Cn),a=e.chartName,o={chartName:a,defaultTooltipEventType:e.defaultTooltipEventType,validateTooltipEventTypes:e.validateTooltipEventTypes,tooltipPayloadSearcher:e.tooltipPayloadSearcher,eventEmitter:void 0};return B.createElement(Be,{preloadedState:{options:o},reduxStoreName:n.id??a},B.createElement(be,{chartData:n.data}),B.createElement(je,{layout:r,margin:n.margin}),B.createElement(Le,{throttleDelay:n.throttleDelay,throttledEvents:n.throttledEvents}),B.createElement(qe,{baseValue:void 0,accessibilityLayer:n.accessibilityLayer,barCategoryGap:n.barCategoryGap,maxBarSize:n.maxBarSize,stackOffset:n.stackOffset,barGap:n.barGap,barSize:n.barSize,syncId:n.syncId,syncMethod:n.syncMethod,className:n.className,reverseStackOrder:n.reverseStackOrder}),B.createElement(Sn,{cx:n.cx,cy:n.cy,startAngle:n.startAngle,endAngle:n.endAngle,innerRadius:n.innerRadius,outerRadius:n.outerRadius}),B.createElement(Qe,G({},i,{ref:t})))});function Nn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Pn(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?Nn(Object(n),!0).forEach(function(t){Fn(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Nn(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Fn(e,t,n){return(t=In(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function In(e){var t=Ln(e,`string`);return typeof t==`symbol`?t:t+``}function Ln(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}var Rn=[`item`],zn=Pn(Pn({},jn),{},{layout:`centric`,startAngle:0,endAngle:360}),Bn=(0,B.forwardRef)((e,t)=>{var n=De(e,zn);return B.createElement(Mn,{chartName:`PieChart`,defaultTooltipEventType:`item`,validateTooltipEventTypes:Rn,tooltipPayloadSearcher:$e,categoricalChartProps:n,ref:t})}),Vn=1800*1e3,Hn=[`#6366f1`,`#22c55e`,`#f97316`,`#06b6d4`,`#d946ef`,`#eab308`,`#ef4444`];function Un(e){return e.topicsCovered?.find(e=>e.trim().length>0)?.trim()??null}function Wn(e){return[...e??[]].filter(e=>typeof e.startedAt==`number`&&Un(e)!==null).sort((e,t)=>e.startedAt-t.startedAt)}function Gn(e,t=Date.now()){return typeof e.endedAt==`number`&&e.endedAt>=e.startedAt?e.endedAt:Math.min(t,e.startedAt+Vn)}function Kn(e){return e.some(e=>e.score>0)}function qn(e){return[{signal:`thumbs-up`,label:`Confident`,color:`#22c55e`},{signal:`thumbs-down`,label:`Off-track`,color:`#ef4444`},{signal:`confused`,label:`Confused`,color:`#f97316`}].flatMap(t=>{let n=e.filter(e=>e.signal===t.signal).sort((e,t)=>t.createdAt-e.createdAt);return n.length>0?[{...t,count:n.length,entries:n}]:[]})}function Jn(e){return e.usage.totalTokens||e.usage.input+e.usage.output}function Yn(e){let t=e.modelProvider?.trim()||`unknown`,n=e.modelId?.trim()||`unknown`,r=e.modelName?.trim()||(n===`unknown`?`Unknown model`:n);return{key:`${t}::${n}`,label:r,provider:t,modelId:n}}function Xn(e,t){return e.map((e,n)=>({...e,share:t>0?e.value/t:0,color:e.color||Hn[n%Hn.length]}))}function Zn(e,t=6){let n=e.reduce((e,t)=>e+Jn(t),0)>0?`tokens`:`messages`,r=new Map;for(let t of e){let e=Yn(t),i=Jn(t),a=r.get(e.key)??{...e,sessions:0,messages:0,tokens:0,cost:0,value:0,share:0,color:``};a.sessions+=1,a.messages+=t.messageCount,a.tokens+=i,a.cost+=t.usage.cost.total,a.value+=n===`tokens`?i:t.messageCount,r.set(e.key,a)}let i=Array.from(r.values()).sort((e,t)=>t.value-e.value),a=i.slice(0,t),o=i.slice(t);o.length>0&&a.push({key:`other`,label:`Other models`,provider:`mixed`,modelId:`other`,sessions:o.reduce((e,t)=>e+t.sessions,0),messages:o.reduce((e,t)=>e+t.messages,0),tokens:o.reduce((e,t)=>e+t.tokens,0),cost:o.reduce((e,t)=>e+t.cost,0),value:o.reduce((e,t)=>e+t.value,0),share:0,color:``});let s=a.reduce((e,t)=>e+t.value,0);return{basis:n,total:s,entries:Xn(a,s)}}var K=h(),Qn=s({py:`3rem`,textAlign:`center`,fontSize:`0.875rem`,color:`var(--muted-foreground)`});function q({message:e,className:t}){return(0,K.jsx)(`div`,{className:t?`${Qn} ${t}`:Qn,children:e})}var J={panel:s({overflow:`hidden`,border:`1px solid var(--ink)`,bg:`var(--card)`}),panelHeader:s({borderBottom:`1px solid var(--border)`,px:`1rem`,py:`0.75rem`}),panelTitle:s({fontSize:`0.875rem`,fontWeight:`600`}),panelSubtitle:s({mt:`0.25rem`,fontSize:`0.75rem`,color:`var(--muted-foreground)`}),panelBody:s({p:`1rem`}),loading:s({mt:`1.5rem`,border:`1px solid var(--ink)`,bg:`var(--card)`,p:`2rem`,textAlign:`center`,fontSize:`0.875rem`,color:`var(--ink-soft)`}),stack:s({mt:`1.5rem`,display:`flex`,flexDir:`column`,gap:`1.5rem`}),threeGrid:s({display:`grid`,gap:`1.5rem`,lg:{gridTemplateColumns:`repeat(3, minmax(0, 1fr))`}}),modelWheelGrid:s({display:`grid`,gap:`1rem`,xl:{gridTemplateColumns:`minmax(0, 0.9fr) minmax(12rem, 1fr)`,alignItems:`center`}}),pieBox:s({h:`14rem`,minW:0}),stack2:s({minW:0,"& > * + *":{mt:`0.5rem`}}),modelRow:s({minW:0,borderBottom:`1px solid color-mix(in srgb, var(--border) 60%, transparent)`,pb:`0.5rem`,_last:{borderBottom:0,pb:0}}),modelButton:s({w:`100%`,minW:0,borderRadius:`0.375rem`,border:`1px solid transparent`,px:`0.5rem`,py:`0.5rem`,textAlign:`left`,transitionProperty:`background-color, border-color`,transitionDuration:`150ms`,_hover:{bg:`var(--accent)`},_focusVisible:{outline:`2px solid var(--ring)`,outlineOffset:`2px`}}),selectedButton:s({borderColor:`var(--border)`,bg:`color-mix(in srgb, var(--accent) 65%, transparent)`}),between:s({display:`flex`,minW:0,alignItems:`center`,justifyContent:`space-between`,gap:`0.75rem`}),row:s({display:`flex`,minW:0,alignItems:`center`,gap:`0.5rem`}),dot:s({h:`0.625rem`,w:`0.625rem`,flexShrink:0,borderRadius:`9999px`}),truncateStrong:s({minW:0,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`,fontSize:`0.75rem`,fontWeight:`600`}),smallMuted:s({fontSize:`0.75rem`,color:`var(--muted-foreground)`}),shareText:s({flexShrink:0,fontSize:`0.75rem`,fontVariantNumeric:`tabular-nums`,color:`var(--muted-foreground)`}),modelDetail:s({mt:`0.25rem`,minW:0,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`,pl:`1rem`,fontSize:`11px`,color:`var(--muted-foreground)`}),metricGrid:s({mb:`1rem`,display:`grid`,gap:`0.75rem`,sm:{gridTemplateColumns:`repeat(4, minmax(0, 1fr))`}}),mutedNotice:s({borderRadius:`0.375rem`,border:`1px solid var(--border)`,bg:`color-mix(in srgb, var(--muted) 20%, transparent)`,px:`1rem`,py:`1.5rem`,fontSize:`0.875rem`,color:`var(--muted-foreground)`}),chartGrid:s({display:`grid`,gridTemplateColumns:`2.75rem minmax(0, 1fr)`,gap:`0.75rem`}),axisLabels:s({position:`relative`,fontSize:`11px`,fontVariantNumeric:`tabular-nums`,color:`var(--muted-foreground)`}),axisLabel:s({position:`absolute`,right:0,transform:`translateY(-50%)`}),legendRow:s({mt:`0.5rem`,display:`flex`,flexWrap:`wrap`,alignItems:`center`,gap:`0.75rem`,fontSize:`0.75rem`}),legendItem:s({display:`flex`,alignItems:`center`,gap:`0.375rem`}),legendSwatch:s({display:`inline-block`,h:`0.375rem`,w:`1rem`,borderRadius:`9999px`}),improvementTitle:s({mb:`0.5rem`,fontSize:`0.75rem`,fontWeight:`600`,textTransform:`uppercase`,color:`var(--muted-foreground)`}),barWrap:s({display:`flex`,h:`3rem`,alignItems:`flex-end`,gap:`0.25rem`}),flex1:s({flex:`1 1 0%`}),improvementBar:s({borderRadius:`0.125rem`,transitionProperty:`all`,transitionDuration:`150ms`}),improvementBarGood:s({bg:`#22c55e`}),improvementBarBad:s({bg:`var(--destructive)`}),barFooter:s({mt:`0.25rem`,display:`flex`,justifyContent:`space-between`,fontSize:`10px`,color:`var(--muted-foreground)`}),evolutionList:s({mt:`1rem`,borderTop:`1px solid var(--border)`}),evolutionButton:s({display:`flex`,w:`100%`,minW:0,alignItems:`center`,justifyContent:`space-between`,gap:`1rem`,borderBottom:`1px solid color-mix(in srgb, var(--border) 65%, transparent)`,px:`0.75rem`,py:`0.625rem`,textAlign:`left`,_last:{borderBottom:0},_hover:{bg:`var(--accent)`},_focusVisible:{outline:`2px solid var(--ring)`,outlineOffset:`-2px`}}),evolutionName:s({minW:0,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`,fontSize:`0.75rem`,fontWeight:`600`}),evolutionMeta:s({mt:`0.125rem`,fontSize:`11px`,color:`var(--muted-foreground)`}),viewDiff:s({flexShrink:0,fontSize:`0.75rem`,color:`var(--primary)`}),metricTile:s({borderRadius:`0.375rem`,border:`1px solid var(--border)`,bg:`color-mix(in srgb, var(--muted) 20%, transparent)`,px:`0.75rem`,py:`0.5rem`}),metricTileLabel:s({fontSize:`11px`,fontWeight:`500`,textTransform:`uppercase`,color:`var(--muted-foreground)`}),metricTileValue:s({mt:`0.25rem`,fontSize:`1.125rem`,fontWeight:`600`}),wheelGrid:s({display:`grid`,gap:`1rem`,xl:{gridTemplateColumns:`minmax(0, 1fr) minmax(16rem, 0.8fr)`}}),relative:s({position:`relative`}),breadcrumbs:s({position:`absolute`,left:`0.75rem`,top:`0.5rem`,zIndex:10,display:`flex`,flexWrap:`wrap`,alignItems:`center`,gap:`0.25rem`}),crumbButton:s({borderRadius:`0.375rem`,bg:`color-mix(in srgb, var(--background) 90%, transparent)`,px:`0.5rem`,py:`0.125rem`,fontSize:`11px`,fontWeight:`500`,color:`var(--muted-foreground)`,backdropFilter:`blur(8px)`,transitionProperty:`color, background-color`,transitionDuration:`150ms`,_hover:{bg:`var(--accent)`,color:`var(--accent-foreground)`}}),crumbColored:s({borderRadius:`0.375rem`,bg:`color-mix(in srgb, var(--background) 90%, transparent)`,px:`0.5rem`,py:`0.125rem`,fontSize:`11px`,fontWeight:`500`,backdropFilter:`blur(8px)`,transitionProperty:`color, background-color`,transitionDuration:`150ms`,_hover:{bg:`var(--accent)`,color:`var(--accent-foreground)`}}),mutedSlash:s({color:`var(--muted-foreground)`}),fullSvg:s({h:`100%`,w:`100%`}),clickPath:s({cursor:`pointer`,transitionProperty:`opacity`,transitionDuration:`150ms`}),cursorPointer:s({cursor:`pointer`}),noPointer:s({pointerEvents:`none`}),tooltip:s({pointerEvents:`none`,position:`absolute`,zIndex:20,borderRadius:`0.375rem`,border:`1px solid var(--border)`,bg:`var(--popover)`,px:`0.75rem`,py:`0.5rem`,color:`var(--popover-foreground)`,boxShadow:`var(--shadow, 0 4px 6px rgb(0 0 0 / 0.1))`}),semibold:s({fontWeight:`600`}),tinyMuted:s({fontSize:`11px`,color:`var(--muted-foreground)`}),tinyPrimary:s({mt:`0.25rem`,fontSize:`10px`,color:`var(--primary)`}),detailPanel:s({minW:0,"& > * + *":{mt:`0.5rem`}}),detailHeader:s({display:`flex`,alignItems:`center`,justifyContent:`space-between`}),sectionLabel:s({fontSize:`0.75rem`,fontWeight:`600`,textTransform:`uppercase`,color:`var(--muted-foreground)`}),backButton:s({borderRadius:`0.375rem`,px:`0.5rem`,py:`0.125rem`,fontSize:`11px`,color:`var(--primary)`,transitionProperty:`background-color`,transitionDuration:`150ms`,_hover:{bg:`color-mix(in srgb, var(--primary) 10%, transparent)`}}),detailCard:s({borderRadius:`0.375rem`,border:`1px solid var(--border)`,bg:`color-mix(in srgb, var(--muted) 20%, transparent)`,p:`0.625rem`}),selectionCard:s({mt:`0.75rem`,borderRadius:`0.375rem`,border:`1px solid var(--border)`,bg:`color-mix(in srgb, var(--muted) 20%, transparent)`,p:`0.75rem`}),selectionTitle:s({fontSize:`0.8rem`,fontWeight:`600`}),selectionMeta:s({mt:`0.25rem`,fontSize:`0.75rem`,lineHeight:`1.5`,color:`var(--muted-foreground)`}),selectionActions:s({mt:`0.625rem`,display:`flex`,flexWrap:`wrap`,gap:`0.375rem`}),selectionAction:s({borderRadius:`0.375rem`,border:`1px solid var(--border)`,px:`0.625rem`,py:`0.375rem`,fontSize:`0.75rem`,color:`var(--primary)`,_hover:{bg:`var(--accent)`},_focusVisible:{outline:`2px solid var(--ring)`,outlineOffset:`2px`}}),childTopics:s({mt:`0.5rem`,display:`flex`,flexWrap:`wrap`,gap:`0.25rem`}),topicPill:s({borderRadius:`9999px`,bg:`var(--background)`,px:`0.5rem`,py:`0.125rem`,fontSize:`10px`,color:`var(--muted-foreground)`}),overflowX:s({overflowX:`auto`}),heatmapRoot:s({position:`relative`}),yearTabs:s({mb:`0.75rem`,display:`flex`,flexWrap:`wrap`,alignItems:`center`,gap:`0.375rem`}),yearButton:s({borderRadius:`0.375rem`,px:`0.625rem`,py:`0.25rem`,fontSize:`0.75rem`,fontWeight:`500`,transitionProperty:`color, background-color`,transitionDuration:`150ms`,md:{fontSize:`1.125rem`}}),yearActive:s({bg:`var(--primary)`,color:`var(--primary-foreground)`}),yearInactive:s({color:`var(--muted-foreground)`,_hover:{bg:`var(--accent)`,color:`var(--accent-foreground)`}}),heatTooltip:s({pointerEvents:`none`,position:`absolute`,zIndex:20,transform:`translate(-50%, -100%)`,borderRadius:`0.375rem`,border:`1px solid var(--border)`,bg:`var(--popover)`,px:`0.75rem`,py:`0.5rem`,color:`var(--popover-foreground)`,boxShadow:`var(--shadow, 0 4px 6px rgb(0 0 0 / 0.1))`}),dayDetail:s({mt:`1rem`,borderTop:`1px solid var(--border)`,pt:`0.75rem`}),dayTitle:s({mb:`0.5rem`,fontSize:`0.75rem`,fontWeight:`600`}),daySession:s({display:`flex`,w:`100%`,minW:0,alignItems:`center`,justifyContent:`space-between`,gap:`0.75rem`,borderRadius:`0.375rem`,px:`0.625rem`,py:`0.5rem`,textAlign:`left`,_hover:{bg:`var(--accent)`},_focusVisible:{outline:`2px solid var(--ring)`,outlineOffset:`2px`}}),daySessionTitle:s({minW:0,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`,fontSize:`0.75rem`,fontWeight:`600`}),daySessionMeta:s({mt:`0.125rem`,minW:0,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`,fontSize:`11px`,color:`var(--muted-foreground)`})};function Y({title:e,subtitle:t,children:n,className:r=``}){return(0,K.jsxs)(`section`,{className:o(J.panel,r),children:[(0,K.jsxs)(`div`,{className:J.panelHeader,children:[(0,K.jsx)(`h2`,{className:J.panelTitle,children:e}),t&&(0,K.jsx)(`p`,{className:J.panelSubtitle,children:t})]}),(0,K.jsx)(`div`,{className:J.panelBody,children:n})]})}function $n({sessionMetadata:e,onOpenSession:t}){let n=l(),[r,i]=(0,B.useState)(null);(0,B.useEffect)(()=>{let e=!1;return(async()=>{try{let[t,n,r,a,o,s,c,l,u,f]=await Promise.all([d.getLessonPlans(),d.getLessonMaps(),d.getAnimations(),d.getVerifications(),d.getLearnerState(),d.getFeedback(),d.getBenchmarks(),d.getEvolutions(),d.getImprovementAttempts(),d.getPolicies()]),p=[...t.map(e=>({topic:e.topic,type:`plan`})),...n.map(e=>({topic:e.topic,type:`map`})),...r.map(e=>({topic:e.topic,type:`animation`})),...a.map(e=>({topic:e.topic,type:`verification`}))];if(e)return;i({topicArtifacts:p,sessions:o.sessions??[],feedback:s,benchmarks:c,evolutions:l,improvements:u,policies:f})}catch(e){console.error(`Failed to load chart data`,e)}})(),()=>{e=!0}},[]);let[a,o]=(0,B.useState)(()=>ft());(0,B.useEffect)(()=>{let e=()=>o(ft());return window.addEventListener(vt,e),()=>window.removeEventListener(vt,e)},[]),(0,B.useEffect)(()=>{!r||r.topicArtifacts.length===0||(async()=>{try{let e=await gt();if(!e)return;await _t(e,r.topicArtifacts.map(e=>e.topic??``).filter(Boolean))}catch(e){console.warn(`Background topic categorization failed:`,e)}})()},[r]);let s=(0,B.useMemo)(()=>r?pt(r.topicArtifacts,a):[],[r,a]);if(!r)return(0,K.jsx)(`div`,{className:J.loading,children:`Loading charts…`});let c=s.reduce((e,t)=>e+t.count,0),u=qn(r.feedback),f=Zn(e,Math.max(1,e.length));return(0,K.jsxs)(`div`,{className:J.stack,children:[(0,K.jsxs)(`div`,{className:J.threeGrid,children:[(0,K.jsx)(Y,{title:`Topic mix`,subtitle:`Artifacts grouped into learning domains${c?` (${c} total)`:``}`,children:s.length===0?(0,K.jsx)(q,{message:`No topic artifacts yet — start a lesson to see this fill in.`}):(0,K.jsx)(or,{groups:s})}),(0,K.jsx)(Y,{title:`Model mix`,subtitle:f.basis===`tokens`?`Share of token usage by model`:`Share of message usage by model`,children:f.entries.length===0||f.total===0?(0,K.jsx)(q,{message:`No model usage recorded yet.`}):(0,K.jsx)(nr,{breakdown:f})}),(0,K.jsx)(Y,{title:`Feedback signal mix`,subtitle:`How sessions are landing — confused, confident, or curious`,children:u.length===0?(0,K.jsx)(q,{message:`No feedback recorded yet.`}):(0,K.jsx)(sr,{groups:u,onOpenSession:t})})]}),(0,K.jsx)(Y,{title:`Curriculum timeline`,subtitle:`Each row is a learning session — bar length is duration, color is the first topic covered`,children:(0,K.jsx)(ur,{sessions:r.sessions,colorFor:e=>yt(e,a).color,onOpenSession:t})}),(0,K.jsx)(Y,{title:`Daily activity`,subtitle:`Select an active day to see what you discussed`,children:(0,K.jsx)(dr,{sessions:e,onOpenSession:t})}),(0,K.jsx)(Y,{title:`Self-evolution health`,subtitle:`Benchmark scores, evolved policy scores, rollback attempts, and active policy count`,children:(0,K.jsx)(rr,{benchmarks:r.benchmarks,evolutions:r.evolutions,improvements:r.improvements,policies:r.policies,onOpenEvolution:e=>n({to:`/usage/evolution/$evolutionId`,params:{evolutionId:e}})})})]})}function er(e){return new Intl.NumberFormat(void 0,{notation:`compact`,maximumFractionDigits:1}).format(e)}function tr(e){return e===`tokens`?`tokens`:`messages`}function nr({breakdown:e}){let t=tr(e.basis),[n,r]=(0,B.useState)(e.entries[0]?.key??``),i=e.entries.find(e=>e.key===n)??e.entries[0];return(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`div`,{className:J.modelWheelGrid,children:[(0,K.jsx)(`div`,{className:J.pieBox,children:(0,K.jsx)(Ae,{children:(0,K.jsxs)(Bn,{children:[(0,K.jsx)(W,{data:e.entries,dataKey:`value`,nameKey:`label`,innerRadius:52,outerRadius:84,paddingAngle:2,stroke:`var(--background, #fff)`,strokeWidth:1,onClick:(t,i)=>r(e.entries[i]?.key??n),children:e.entries.map(e=>(0,K.jsx)(g,{fill:e.color,opacity:e.key===i?.key?1:.52,className:J.cursorPointer},e.key))}),(0,K.jsx)(Oe,{formatter:(e,n,r)=>{let i=r.payload;return[`${er(Number(e))} ${t} (${Math.round(i.share*100)}%)`,i.label]},contentStyle:{background:`var(--background, #fff)`,border:`1px solid var(--border, #e5e7eb)`,borderRadius:6,fontSize:12}})]})})}),(0,K.jsx)(`div`,{className:J.stack2,"aria-label":`Select a model to inspect`,children:e.entries.map(e=>(0,K.jsxs)(`button`,{type:`button`,className:o(J.modelButton,e.key===i?.key?J.selectedButton:``),onClick:()=>r(e.key),children:[(0,K.jsxs)(`div`,{className:J.between,children:[(0,K.jsxs)(`div`,{className:J.row,children:[(0,K.jsx)(`span`,{className:J.dot,style:{background:e.color}}),(0,K.jsx)(`div`,{className:J.truncateStrong,children:e.label})]}),(0,K.jsxs)(`div`,{className:J.shareText,children:[Math.round(e.share*100),`%`]})]}),(0,K.jsxs)(`div`,{className:J.modelDetail,children:[e.provider,`/`,e.modelId]})]},e.key))})]}),i&&(0,K.jsxs)(`div`,{className:J.selectionCard,"aria-live":`polite`,children:[(0,K.jsx)(`div`,{className:J.selectionTitle,children:i.label}),(0,K.jsxs)(`div`,{className:J.selectionMeta,children:[i.provider,`/`,i.modelId,` · `,er(i.tokens),` tokens · `,i.messages,` messages · `,i.sessions,` session`,i.sessions===1?``:`s`,` · `,Math.round(i.share*100),`% of recorded `,t]})]})]})}function rr({benchmarks:e,evolutions:t,improvements:n,policies:r,onOpenEvolution:i}){let[a,c]=(0,B.useState)(null);if(!(e.length>0||t.length>0||n.length>0||r.length>0))return(0,K.jsx)(q,{message:`No self-evolution records yet — run a benchmark or evolution to see health signals here.`});let l=e=>new Date(e).toLocaleDateString(void 0,{month:`short`,day:`numeric`}),u=e.map(e=>({id:e.id,score:e.score,createdAt:e.createdAt})),d=t.map(e=>({id:e.id,score:e.bestScore,createdAt:e.createdAt})),f=[...u,...d].sort((e,t)=>e.createdAt-t.createdAt),p=Kn(f),m=f[0]?.createdAt??Date.now(),h=f[f.length-1]?.createdAt??m,g=Math.max(h-m,1),_=(e,t,n)=>e.length===0?null:{label:n,color:t,points:[...e].sort((e,t)=>e.createdAt-t.createdAt).map(e=>({id:e.id,x:10+(e.createdAt-m)/g*87,y:104-e.score/100*92,score:e.score,createdAt:e.createdAt,date:l(e.createdAt)}))},v=_(u,`#6366f1`,`Benchmark`),y=_(d,`#22c55e`,`Evolution`),b=[...e].sort((e,t)=>e.createdAt-t.createdAt),x=[...t].sort((e,t)=>e.createdAt-t.createdAt),S=b[b.length-1],C=x[x.length-1],w=r.filter(e=>e.active).length,T=n.filter(e=>e.scoreDelta!==null).sort((e,t)=>e.createdAt-t.createdAt).slice(-12),E=n.filter(e=>(e.scoreDelta??-1/0)>=0).length,D=n.filter(e=>(e.scoreDelta??0)<0).length,O=[...t].sort((e,t)=>t.createdAt-e.createdAt).slice(0,6);return(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`div`,{className:J.metricGrid,children:[(0,K.jsx)(X,{label:`Latest benchmark`,value:S?S.score.toFixed(1):`none`}),(0,K.jsx)(X,{label:`Latest evolution`,value:C?C.bestScore.toFixed(1):`none`}),(0,K.jsx)(X,{label:`Active policies`,value:`${w}/${r.length}`}),(0,K.jsx)(X,{label:`Attempts`,value:`${E} kept / ${D} rejected`})]}),(0,K.jsxs)(`div`,{className:s({mb:`1rem`}),children:[f.length===0?(0,K.jsx)(q,{message:`Policy records exist, but no benchmark scores have been recorded yet.`}):p?(0,K.jsxs)(`div`,{className:J.chartGrid,children:[(0,K.jsx)(`div`,{className:J.axisLabels,style:{height:132},children:[0,25,50,75,100].map(e=>{let t=104-e/100*92;return(0,K.jsx)(`div`,{className:J.axisLabel,style:{top:`${t/132*100}%`},children:e},e)})}),(0,K.jsxs)(`svg`,{width:`100%`,viewBox:`0 0 100 132`,preserveAspectRatio:`none`,style:{height:132},role:`img`,"aria-label":`Self-evolution score trend`,children:[[0,25,50,75,100].map(e=>{let t=104-e/100*92;return(0,K.jsx)(`line`,{x1:0,y1:t,x2:97,y2:t,stroke:`currentColor`,strokeOpacity:.08},e)}),[v,y].filter(Boolean).map(e=>e?(0,K.jsxs)(`g`,{children:[(0,K.jsx)(`path`,{d:e.points.map((e,t)=>`${t===0?`M`:`L`} ${e.x-10} ${e.y}`).join(` `),fill:`none`,stroke:e.color,strokeWidth:.8,opacity:.8}),e.points.map((t,n)=>(0,K.jsx)(`circle`,{cx:t.x-10,cy:t.y,r:a?.kind===e.label&&a.createdAt===t.createdAt?2.1:1.4,fill:e.color,stroke:`var(--background)`,strokeWidth:.5,className:J.cursorPointer,role:`button`,tabIndex:0,"aria-label":`Inspect ${e.label.toLowerCase()} score ${t.score.toFixed(1)} on ${t.date}`,onClick:()=>c({kind:e.label,id:t.id,score:t.score,createdAt:t.createdAt}),onKeyDown:n=>{(n.key===`Enter`||n.key===` `)&&(n.preventDefault(),c({kind:e.label,id:t.id,score:t.score,createdAt:t.createdAt}))},children:(0,K.jsxs)(`title`,{children:[e.label,`: `,t.score.toFixed(1),` on `,t.date]})},n))]},e.label):null)]})]}):(0,K.jsx)(`div`,{className:J.mutedNotice,children:`Scores are recorded, but they are still all 0.0. Add feedback signals and rerun benchmark or evolution before treating this as a trend.`}),(0,K.jsxs)(`div`,{className:J.legendRow,children:[v&&(0,K.jsxs)(`div`,{className:J.legendItem,children:[(0,K.jsx)(`span`,{className:J.legendSwatch,style:{background:v.color}}),(0,K.jsx)(`span`,{className:J.smallMuted,children:`Benchmark scores`})]}),y&&(0,K.jsxs)(`div`,{className:J.legendItem,children:[(0,K.jsx)(`span`,{className:J.legendSwatch,style:{background:y.color}}),(0,K.jsx)(`span`,{className:J.smallMuted,children:`Evolved policy scores`})]})]}),a&&(0,K.jsxs)(`div`,{className:J.selectionCard,"aria-live":`polite`,children:[(0,K.jsxs)(`div`,{className:J.selectionTitle,children:[a.kind,` score `,a.score.toFixed(2)]}),(0,K.jsx)(`div`,{className:J.selectionMeta,children:new Date(a.createdAt).toLocaleString()}),a.kind===`Evolution`&&a.id&&(0,K.jsx)(`div`,{className:J.selectionActions,children:(0,K.jsx)(`button`,{type:`button`,className:J.selectionAction,onClick:()=>i(a.id),children:`View exact diff`})})]})]}),T.length>0&&(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`div`,{className:J.improvementTitle,children:`Recent improvements`}),(0,K.jsx)(`div`,{className:J.barWrap,children:T.map((e,t)=>{let n=e.scoreDelta??0,r=n>=0;return(0,K.jsx)(`div`,{className:J.flex1,children:(0,K.jsx)(`div`,{className:o(J.improvementBar,r?J.improvementBarGood:J.improvementBarBad),style:{height:`${Math.min(Math.abs(n)*40+4,40)}px`,opacity:.75},title:`Delta ${n>=0?`+`:``}${n.toFixed(2)} on ${l(e.createdAt)}`})},t)})}),(0,K.jsxs)(`div`,{className:J.barFooter,children:[(0,K.jsxs)(`span`,{children:[T.length,` latest`]}),(0,K.jsxs)(`span`,{children:[w,` active policy`,w===1?``:`ies`,` / `,r.length,` total`]})]})]}),O.length>0&&(0,K.jsx)(`div`,{className:J.evolutionList,children:O.map(e=>(0,K.jsxs)(`button`,{type:`button`,className:J.evolutionButton,onClick:()=>i(e.id),children:[(0,K.jsxs)(`div`,{className:J.flex1,children:[(0,K.jsx)(`div`,{className:J.evolutionName,children:e.topic||`General teaching policy`}),(0,K.jsxs)(`div`,{className:J.evolutionMeta,children:[`Score `,e.bestScore.toFixed(2),` · `,new Date(e.createdAt).toLocaleString()]})]}),(0,K.jsx)(`span`,{className:J.viewDiff,children:`View exact diff`})]},e.id))})]})}function X({label:e,value:t}){return(0,K.jsxs)(`div`,{className:J.metricTile,children:[(0,K.jsx)(`div`,{className:J.metricTileLabel,children:e}),(0,K.jsx)(`div`,{className:J.metricTileValue,children:t})]})}function Z(e,t,n,r){let i=(r-90)*Math.PI/180;return{x:e+n*Math.cos(i),y:t+n*Math.sin(i)}}function ir(e,t,n,r,i,a){if(a-i>=359.99){let a=Z(e,t,r,i),o=Z(e,t,r,i+180),s=Z(e,t,n,i+180),c=Z(e,t,n,i);return[`M ${a.x} ${a.y}`,`A ${r} ${r} 0 1 1 ${o.x} ${o.y}`,`A ${r} ${r} 0 1 1 ${a.x} ${a.y}`,`M ${c.x} ${c.y}`,`A ${n} ${n} 0 1 0 ${s.x} ${s.y}`,`A ${n} ${n} 0 1 0 ${c.x} ${c.y}`,`Z`].join(` `)}let o=Z(e,t,r,i),s=Z(e,t,r,a),c=Z(e,t,n,a),l=Z(e,t,n,i),u=+(a-i>180);return[`M ${o.x} ${o.y}`,`A ${r} ${r} 0 ${u} 1 ${s.x} ${s.y}`,`L ${c.x} ${c.y}`,`A ${n} ${n} 0 ${u} 0 ${l.x} ${l.y}`,`Z`].join(` `)}function ar(e,t,n,r){let i=[];if(e.count===0)return i;let a,o;if(r&&r!==e){if(a=r,o=+!r.children[0]?.children?.length,a.children.length===0&&r.key.startsWith(`topic-`))return i}else a=e,o=0;function s(e,r,a,c,l){if(e.count===0||a<=r)return;let u=55+(c-o)*40,d=u+40-1.5;if(u>=175)return;let f=Math.min(d,175),p=e.color||l;if(i.push({node:e,path:ir(t,n,Math.max(u,55),f,r,a),color:p,label:e.label,level:c,startAngle:r,endAngle:a,parentColor:p}),e.children.length>0){let t=e.children.reduce((e,t)=>e+t.count,0),n=r;for(let i of e.children){let e=t>0?i.count/t*(a-r):0;s(i,n,n+e,c+1,p),n+=e}}}return s(a,0,360,0,a.color||`#64748b`),i}function or({groups:e}){let[t,n]=(0,B.useState)(null),[r,i]=(0,B.useState)(null),[a,o]=(0,B.useState)(null),s=(0,B.useRef)(null),c=(0,B.useMemo)(()=>ht(e),[e]),l=(0,B.useMemo)(()=>ar(c,200,200,t),[c,t]),u=(0,B.useMemo)(()=>{let e=[];if(!t||t===c)return e;function n(t,r){if(t===r)return!0;for(let i of t.children)if(n(i,r))return e.unshift(i),!0;return!1}return n(c,t),e},[t,c]),d=e=>{e.node.children.length>0&&n(e.node)},f=e=>{if(!s.current)return;let t=s.current.getBoundingClientRect();o({x:e.clientX-t.left,y:e.clientY-t.top})},p=t||c,m=p.children.filter(e=>e.count>0);return(0,K.jsxs)(`div`,{className:J.wheelGrid,children:[(0,K.jsxs)(`div`,{className:J.relative,style:{width:`100%`,height:400},children:[(0,K.jsxs)(`div`,{className:J.breadcrumbs,children:[(0,K.jsx)(`button`,{type:`button`,onClick:()=>n(null),className:J.crumbButton,children:`All domains`}),u.map((e,t)=>(0,K.jsxs)(`span`,{className:J.row,children:[(0,K.jsx)(`span`,{className:J.mutedSlash,children:`/`}),(0,K.jsx)(`button`,{type:`button`,className:J.crumbColored,style:{color:e.color},onClick:()=>n(t===u.length-1?e:u[t]),children:e.label})]},e.key))]}),(0,K.jsxs)(`svg`,{ref:s,viewBox:`0 0 400 400`,className:J.fullSvg,onMouseMove:f,onMouseLeave:()=>{i(null),o(null)},children:[l.map((e,t)=>(0,K.jsx)(`path`,{d:e.path,fill:e.color,stroke:`var(--background, #fff)`,strokeWidth:1.5,opacity:r&&r!==e?.45:.92,className:J.clickPath,onMouseEnter:()=>i(e),onClick:()=>d(e),children:(0,K.jsxs)(`title`,{children:[e.label,` — `,e.node.count,` artifact`,e.node.count===1?``:`s`]})},`${e.node.key}-${t}`)),(0,K.jsx)(`circle`,{cx:200,cy:200,r:53,fill:`var(--background, #fff)`,stroke:`var(--border, #e5e7eb)`,strokeWidth:1,className:t?J.cursorPointer:void 0,onClick:()=>t&&n(null)}),(0,K.jsx)(`text`,{x:200,y:195,textAnchor:`middle`,fontSize:13,fontWeight:600,fill:`currentColor`,className:J.noPointer,children:p.label.length>18?p.label.slice(0,16)+`…`:p.label}),(0,K.jsxs)(`text`,{x:200,y:212,textAnchor:`middle`,fontSize:11,fill:`var(--muted-foreground, #6b7280)`,className:J.noPointer,children:[p.count,` artifact`,p.count===1?``:`s`]}),t&&(0,K.jsx)(`text`,{x:200,y:228,textAnchor:`middle`,fontSize:10,fill:`var(--primary, #6366f1)`,className:J.noPointer,children:`Click center to zoom out`})]}),r&&a&&(0,K.jsxs)(`div`,{className:J.tooltip,style:{left:a.x+12,top:a.y-8,fontSize:12},children:[(0,K.jsx)(`div`,{className:J.semibold,children:r.label}),(0,K.jsxs)(`div`,{className:J.tinyMuted,children:[r.node.count,` artifact`,r.node.count===1?``:`s`,r.level<2&&r.node.children.length>0?` · ${r.node.children.length} sub-categorie${r.node.children.length===1?``:`s`}`:``]}),r.level<2&&(0,K.jsx)(`div`,{className:J.tinyPrimary,children:`Click to explore`})]})]}),(0,K.jsxs)(`div`,{className:J.detailPanel,children:[(0,K.jsxs)(`div`,{className:J.detailHeader,children:[(0,K.jsx)(`div`,{className:J.sectionLabel,children:t?`Sub-categories`:`Domains`}),t&&(0,K.jsx)(`button`,{type:`button`,onClick:()=>n(null),className:J.backButton,children:`← Back`})]}),m.slice(0,8).map(e=>(0,K.jsxs)(`div`,{className:J.detailCard,children:[(0,K.jsxs)(`div`,{className:J.between,children:[(0,K.jsxs)(`div`,{className:J.row,children:[(0,K.jsx)(`span`,{className:J.dot,style:{background:e.color}}),(0,K.jsx)(`div`,{className:J.truncateStrong,children:e.label})]}),(0,K.jsx)(`div`,{className:J.shareText,children:e.count})]}),e.children.length>0&&(0,K.jsxs)(`div`,{className:J.childTopics,children:[e.children.slice(0,4).map(e=>(0,K.jsxs)(`span`,{className:J.topicPill,children:[e.label,` ×`,e.count]},e.key)),e.children.length>4&&(0,K.jsxs)(`span`,{className:J.topicPill,children:[`+`,e.children.length-4]})]})]},e.key))]})]})}function sr({groups:e,onOpenSession:t}){let[n,r]=(0,B.useState)(e[0]?.label??``),i=e.find(e=>e.label===n)??e[0],a=e.reduce((e,t)=>e+t.count,0),s=i?.entries.find(e=>e.sessionId||e.referent?.sessionId);return(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`div`,{className:J.modelWheelGrid,children:[(0,K.jsx)(`div`,{className:J.pieBox,children:(0,K.jsx)(Ae,{children:(0,K.jsxs)(Bn,{children:[(0,K.jsx)(W,{data:e,dataKey:`count`,nameKey:`label`,innerRadius:52,outerRadius:84,paddingAngle:2,onClick:(t,i)=>r(e[i]?.label??n),children:e.map(e=>(0,K.jsx)(g,{fill:e.color,opacity:e.label===i?.label?1:.52,className:J.cursorPointer},e.label))}),(0,K.jsx)(Oe,{formatter:e=>[`${e} signal${Number(e)===1?``:`s`}`,`Feedback`],contentStyle:{background:`var(--background, #fff)`,border:`1px solid var(--border, #e5e7eb)`,borderRadius:6,fontSize:12}})]})})}),(0,K.jsx)(`div`,{className:J.stack2,"aria-label":`Select a feedback signal to inspect`,children:e.map(e=>(0,K.jsxs)(`button`,{type:`button`,className:o(J.modelButton,e.label===i?.label?J.selectedButton:``),onClick:()=>r(e.label),children:[(0,K.jsxs)(`div`,{className:J.between,children:[(0,K.jsxs)(`div`,{className:J.row,children:[(0,K.jsx)(`span`,{className:J.dot,style:{background:e.color}}),(0,K.jsx)(`span`,{className:J.truncateStrong,children:e.label})]}),(0,K.jsxs)(`span`,{className:J.shareText,children:[Math.round(e.count/a*100),`%`]})]}),(0,K.jsxs)(`div`,{className:J.modelDetail,children:[e.count,` signal`,e.count===1?``:`s`]})]},e.label))})]}),i&&(0,K.jsxs)(`div`,{className:J.selectionCard,"aria-live":`polite`,children:[(0,K.jsxs)(`div`,{className:J.selectionTitle,children:[i.label,`: `,i.count,` signal`,i.count===1?``:`s`]}),(0,K.jsxs)(`div`,{className:J.selectionMeta,children:[i.entries.slice(0,3).map(e=>e.topic||`Untitled topic`).join(` · `),i.entries[0]?.evidence?` · Latest evidence: ${i.entries[0].evidence}`:``]}),s&&(0,K.jsx)(`div`,{className:J.selectionActions,children:(0,K.jsx)(`button`,{type:`button`,className:J.selectionAction,onClick:()=>t(s.sessionId??s.referent.sessionId),children:`Open latest source session`})})]})]})}function cr(e){if(e.length===0)return[new Date().getFullYear()];let t=new Set;for(let n of e)t.add(new Date(n.lastModified).getFullYear());return Array.from(t).sort((e,t)=>e-t)}function lr(e,t){let n=new Map;for(let e of t){let t=new Date(e.lastModified),r=`${t.getFullYear()}-${t.getMonth()}-${t.getDate()}`;n.set(r,(n.get(r)??0)+1)}let r=new Date(e,0,1),i=new Date(e,11,31),a=[];for(let e=new Date(r);e<=i;e.setDate(e.getDate()+1)){let t=`${e.getFullYear()}-${e.getMonth()}-${e.getDate()}`;a.push({date:new Date(e),count:n.get(t)??0})}return a}function ur({sessions:e,colorFor:t,onOpenSession:n}){if(!e||e.length===0)return(0,K.jsx)(q,{message:`No sessions yet — once you start exploring topics, your curriculum timeline appears here.`});let r=Wn(e);if(r.length===0)return(0,K.jsx)(q,{message:`No topic-bearing sessions yet — finish a lesson with covered topics to build the curriculum timeline.`});let i=r[0].startedAt,a=Date.now(),o=r.reduce((e,t)=>Math.max(e,Gn(t,a)),i),s=Math.max(o-i,1),c=24+r.length*28+8,l=e=>new Date(e).toLocaleDateString(void 0,{month:`short`,day:`numeric`});return(0,K.jsx)(`div`,{className:J.overflowX,children:(0,K.jsxs)(`svg`,{width:`100%`,viewBox:`0 0 800 ${c}`,preserveAspectRatio:`none`,style:{minWidth:480,height:c},role:`img`,"aria-label":`Curriculum timeline`,children:[(0,K.jsx)(`text`,{x:4,y:14,fontSize:10,fill:`currentColor`,opacity:.6,children:l(i)}),(0,K.jsx)(`text`,{x:796,y:14,fontSize:10,fill:`currentColor`,opacity:.6,textAnchor:`end`,children:l(o)}),(0,K.jsx)(`line`,{x1:110,y1:18,x2:788,y2:18,stroke:`currentColor`,opacity:.15}),r.map((e,r)=>{let o=24+r*28,c=(e.startedAt-i)/s,l=(Gn(e,a)-i)/s,u=110+c*678,d=Math.max(2,(l-c)*678),f=Un(e)??`Untitled`,p=t(f)??`#94a3b8`,m=f.length>16?f.slice(0,15)+`…`:f;return(0,K.jsxs)(`g`,{role:e.id?`button`:void 0,tabIndex:e.id?0:void 0,className:e.id?J.cursorPointer:void 0,"aria-label":e.id?`Open ${f} learning session`:void 0,onClick:()=>{e.id&&n(e.id)},onKeyDown:t=>{e.id&&(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),n(e.id))},children:[(0,K.jsx)(`text`,{x:102,y:o+22/2+3,fontSize:11,fill:`currentColor`,opacity:.75,textAnchor:`end`,children:m}),(0,K.jsx)(`rect`,{x:u,y:o,width:d,height:22,rx:3,fill:p,opacity:e.endedAt?.85:.55,children:(0,K.jsxs)(`title`,{children:[f,`
|
|
2
2
|
`,`Started: `,new Date(e.startedAt).toLocaleString(),e.endedAt?`\nEnded: ${new Date(e.endedAt).toLocaleString()}`:`
|
|
3
3
|
(in progress)`,e.topicsCovered&&e.topicsCovered.length>1?`\nAlso: ${e.topicsCovered.slice(1).join(`, `)}`:``]})})]},`${e.startedAt}-${r}`)})]})})}function dr({sessions:e,onOpenSession:t}){let n=(0,B.useMemo)(()=>cr(e),[e]),[r,i]=(0,B.useState)(()=>{let e=new Date().getFullYear();return n.includes(e)?e:n[n.length-1]??e}),[a,s]=(0,B.useState)(null),[c,l]=(0,B.useState)(null),u=(0,B.useRef)(null),{days:d,maxCount:f}=(0,B.useMemo)(()=>{let t=lr(r,e);return{days:t,maxCount:Math.max(1,...t.map(e=>e.count))}},[r,e]),p=(0,B.useMemo)(()=>c?e.filter(e=>{let t=new Date(e.lastModified);return t.getFullYear()===c.getFullYear()&&t.getMonth()===c.getMonth()&&t.getDate()===c.getDate()}).sort((e,t)=>t.lastModified.localeCompare(e.lastModified)):[],[c,e]),m=(0,B.useCallback)((e,t,n)=>{let r=e.currentTarget.getBoundingClientRect(),i=u.current?.getBoundingClientRect();s({x:r.left+r.width/2-(i?.left??0),y:r.top-(i?.top??0),date:t,count:n})},[]);if(d.length===0)return(0,K.jsx)(q,{message:`No daily activity yet.`});let h=d[0].date.getDay(),g=Math.ceil((d.length+h)/7)*17,_=e=>e===0?`var(--muted, #f3f4f6)`:`rgba(99, 102, 241, ${(.25+(f<=1?1:e/f)*.75).toFixed(2)})`,v=[],y=-1;for(let e=0;e<d.length;e++){let t=d[e];if(t.date.getMonth()!==y){y=t.date.getMonth();let n=Math.floor((e+h)/7);v.push({name:t.date.toLocaleDateString(void 0,{month:`short`}),x:n*17})}}let b=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],x=n[0],S=n[n.length-1],C=Array.from({length:S-x+1},(e,t)=>x+t).reverse();return(0,K.jsxs)(`div`,{ref:u,className:J.heatmapRoot,children:[(0,K.jsx)(`div`,{className:J.yearTabs,children:C.map(e=>(0,K.jsx)(`button`,{type:`button`,className:o(J.yearButton,e===r?J.yearActive:J.yearInactive),onClick:()=>{i(e),l(null)},children:e},e))}),(0,K.jsx)(`div`,{className:J.overflowX,children:(0,K.jsxs)(`svg`,{width:`100%`,viewBox:`0 0 ${g+28} 163`,preserveAspectRatio:`xMinYMin meet`,role:`img`,"aria-label":`Daily activity heatmap for ${r}`,style:{minWidth:g+28},children:[[1,3,5].map(e=>(0,K.jsx)(`text`,{x:0,y:e*17+14-1,fontSize:9,fill:`currentColor`,opacity:.55,children:b[e]},e)),(0,K.jsxs)(`g`,{transform:`translate(28, 0)`,children:[d.map((e,t)=>{let n=t+h,r=Math.floor(n/7),i=n%7;return(0,K.jsx)(`rect`,{x:r*17,y:i*17,width:14,height:14,rx:2,fill:_(e.count),stroke:`currentColor`,strokeOpacity:.05,role:e.count>0?`button`:void 0,tabIndex:e.count>0?0:void 0,className:e.count>0?J.cursorPointer:void 0,"aria-label":e.count>0?`${e.count} sessions on ${e.date.toLocaleDateString()}`:void 0,onMouseEnter:t=>m(t,e.date,e.count),onMouseLeave:()=>s(null),onClick:()=>{e.count>0&&l(e.date)},onKeyDown:t=>{e.count>0&&(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),l(e.date))}},t)}),v.map((e,t)=>(0,K.jsx)(`text`,{x:e.x,y:131,fontSize:10,fill:`currentColor`,opacity:.55,children:e.name},t))]}),(0,K.jsxs)(`g`,{transform:`translate(${g+28-100}, 143)`,children:[(0,K.jsx)(`text`,{x:-6,y:10,fontSize:10,fill:`currentColor`,opacity:.5,textAnchor:`end`,children:`Less`}),[0,1,2,3,4].map(e=>{let t=Math.round(f/4*e);return(0,K.jsx)(`rect`,{x:e*17,y:0,width:14,height:14,rx:2,fill:_(t),children:(0,K.jsxs)(`title`,{children:[t,` session`,t===1?``:`s`]})},e)}),(0,K.jsx)(`text`,{x:89,y:10,fontSize:10,fill:`currentColor`,opacity:.5,children:`More`})]})]})}),a&&(0,K.jsxs)(`div`,{className:J.heatTooltip,style:{left:a.x,top:a.y-8},children:[(0,K.jsxs)(`div`,{className:J.truncateStrong,children:[a.count,` session`,a.count===1?``:`s`]}),(0,K.jsx)(`div`,{className:J.tinyMuted,children:a.date.toLocaleDateString(void 0,{weekday:`short`,month:`short`,day:`numeric`,year:`numeric`})})]}),c&&(0,K.jsxs)(`div`,{className:J.dayDetail,children:[(0,K.jsx)(`div`,{className:J.dayTitle,children:c.toLocaleDateString(void 0,{weekday:`long`,month:`long`,day:`numeric`,year:`numeric`})}),p.map(e=>{let n=e.modelName?.trim()||e.modelId?.trim()||`Unknown model`;return(0,K.jsxs)(`button`,{type:`button`,className:J.daySession,onClick:()=>t(e.id),children:[(0,K.jsxs)(`div`,{className:J.flex1,children:[(0,K.jsx)(`div`,{className:J.daySessionTitle,children:e.title}),(0,K.jsxs)(`div`,{className:J.daySessionMeta,children:[n,` · thinking `,e.thinkingLevel,` · `,e.messageCount,` turns`]})]}),(0,K.jsx)(`span`,{className:J.viewDiff,children:`Open session`})]},e.id)})]})]})}function fr(e,t){return{id:e.id,title:e.title,parentSessionId:e.parentSessionId,forkedAt:e.forkedAt,forkedFromMessageTimestamp:e.forkedFromMessageTimestamp,createdAt:e.createdAt,lastModified:e.lastModified,messageCount:e.messages.length,usage:t?.usage??m(e.messages),thinkingLevel:e.thinkingLevel,...c(e.model),preview:t?.preview??r(e.messages),searchText:t?.searchText??f(e.messages),aiGeneratedTitle:t?.aiGeneratedTitle??e.aiGeneratedTitle,generatedAlternative:t?.generatedAlternative??e.generatedAlternative,hiddenAlternative:t?.hiddenAlternative??e.hiddenAlternative,alternativeForMessageTimestamp:t?.alternativeForMessageTimestamp??e.alternativeForMessageTimestamp,responsePreference:t?.responsePreference??e.responsePreference}}function pr(e){let t=e&&typeof e==`object`?e:null;if(!t||t.schemaVersion!==1||t.kind!==`keating-portable-data`)throw Error(`Unsupported Keating portable data bundle.`);return t}function mr(e){return{schemaVersion:1,kind:`keating-portable-data`,generatedAt:e.generatedAt??new Date().toISOString(),sessions:e.sessions.map(e=>({data:e.data,metadata:fr(e.data,e.metadata)})),storage:e.storage,sandbox:e.sandbox}}async function hr(e={}){await u();let t=await a.getAllMetadata(),n=await Promise.all(t.map(async e=>{let t=await a.loadSession(e.id);return t?{data:t,metadata:fr(t,e)}:null})),r=e.includeSandbox===!1?void 0:await Ot().catch(()=>void 0);return mr({sessions:n.filter(e=>!!e),storage:await d.exportPortableData(),sandbox:r})}async function gr(e){let t=pr(e);await u();let n=0;for(let e of t.sessions??[])await a.save(e.data,fr(e.data,e.metadata)),n+=1;let r=await d.importPortableData(t.storage),i=0,o=0,s=0;if(t.sandbox){let e=await Dt(t.sandbox);i=e.filesImported,o=e.snapshotsImported,s=e.commitsImported}return typeof window<`u`&&(window.dispatchEvent(new CustomEvent(`keating:sessions-changed`)),window.dispatchEvent(new CustomEvent(`keating:artifacts-changed`))),{...r,sessions:n,sandboxFilesImported:i,sandboxSnapshotsImported:o,sandboxCommitsImported:s}}var _r=null;function Q(e){return new Intl.NumberFormat().format(Math.round(e))}function vr(e){return e>0?`$${e.toFixed(e<1?4:2)}`:`$0`}function yr(e){return new Date(e).toLocaleDateString(void 0,{month:`short`,day:`numeric`})}function br(e,t){return Math.max(1,Math.ceil((new Date(t).getTime()-new Date(e).getTime())/864e5)+1)}function xr(e){return e.replace(/Learner Profile:[\s\S]*$/i,``).replace(/Feedback:[\s\S]*$/i,``).replace(/[\u{1F300}-\u{1FAFF}\u{2600}-\u{27BF}]/gu,``).replace(/\s+/g,` `).trim().split(/[.!?]\s/)[0]?.slice(0,220)||`No preview saved`}function Sr(e){let t=e.modelName?.trim()||e.modelId?.trim();if(!t)return null;let n=e.modelProvider?.trim();return n?`${n}/${t}`:t}var $={page:s({minH:`100vh`,bg:`var(--paper)`,color:`var(--ink)`}),main:s({mx:`auto`,minW:0,maxW:`72rem`,overflow:`hidden`,px:`1rem`,py:`1.5rem`}),metricGrid:s({display:`grid`,minW:0,gap:`0.75rem`,sm:{gridTemplateColumns:`repeat(2, minmax(0, 1fr))`},lg:{gridTemplateColumns:`repeat(4, minmax(0, 1fr))`}}),metricGridThree:s({mt:`1.5rem`,display:`grid`,minW:0,gap:`0.75rem`,sm:{gridTemplateColumns:`repeat(3, minmax(0, 1fr))`}}),panel:s({mt:`1.5rem`,overflow:`hidden`,border:`1px solid var(--ink)`,bg:`var(--card)`}),panelHeader:s({borderBottom:`1px solid var(--border)`,px:`1rem`,py:`0.75rem`}),panelTitle:s({fontSize:`0.875rem`,fontWeight:`600`}),panelSubtitle:s({mt:`0.25rem`,fontSize:`0.75rem`,color:`var(--muted-foreground)`}),truncate:s({minW:0,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`}),actionRow:s({display:`flex`,flexWrap:`wrap`,alignItems:`center`,gap:`0.5rem`,xl:{justifyContent:`flex-end`}}),button:s({display:`inline-flex`,minH:`2.25rem`,minW:0,maxW:`100%`,py:`0.5rem`,overflowWrap:`anywhere`,lineHeight:`1.4`,"& svg":{flexShrink:0},alignItems:`center`,gap:`0.5rem`,borderRadius:`0.375rem`,px:`0.75rem`,fontSize:`0.875rem`}),primaryButton:s({bg:`var(--primary)`,fontWeight:`500`,color:`var(--primary-foreground)`,_hover:{bg:`color-mix(in srgb, var(--primary) 90%, transparent)`},_disabled:{opacity:.5}}),borderButton:s({border:`1px solid var(--border)`,_hover:{bg:`var(--accent)`},_disabled:{opacity:.5}}),fileLabel:s({cursor:`pointer`,"&:has(:disabled)":{cursor:`not-allowed`,opacity:.5}}),srOnly:s({position:`absolute`,w:`1px`,h:`1px`,p:0,m:`-1px`,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,whiteSpace:`nowrap`,borderWidth:0}),error:s({maxW:`24rem`,fontSize:`0.75rem`,color:`var(--destructive)`}),portableBody:s({display:`flex`,flexWrap:`wrap`,alignItems:`center`,justifyContent:`space-between`,gap:`1rem`,p:`1rem`}),inlineLabel:s({display:`flex`,alignItems:`center`,gap:`0.5rem`,fontSize:`0.875rem`}),basisFull:s({flexBasis:`100%`,fontSize:`0.75rem`,color:`var(--muted-foreground)`}),errorFull:s({flexBasis:`100%`,fontSize:`0.75rem`,color:`var(--destructive)`}),contentGrid:s({mt:`1.5rem`,display:`grid`,minW:0,gap:`1.5rem`,lg:{gridTemplateColumns:`minmax(0, 1.25fr) minmax(0, 0.75fr)`}}),section:s({minW:0,overflow:`hidden`,border:`1px solid var(--ink)`,bg:`var(--card)`}),dividerList:s({"& > * + *":{borderTop:`1px solid var(--border)`}}),emptyState:s({px:`1rem`,py:`2rem`,textAlign:`center`,fontSize:`0.875rem`,color:`var(--muted-foreground)`}),stack3:s({"& > * + *":{mt:`0.75rem`},p:`1rem`}),deepButton:s({display:`flex`,w:`100%`,minW:0,cursor:`pointer`,alignItems:`flex-start`,gap:`0.75rem`,borderRadius:`0.375rem`,p:`0.5rem`,textAlign:`left`,_hover:{bg:`var(--accent)`},_focusVisible:{outline:`2px solid var(--ring)`,outlineOffset:`2px`}}),rankBox:s({display:`flex`,h:`1.75rem`,w:`1.75rem`,flexShrink:0,alignItems:`center`,justifyContent:`center`,borderRadius:`0.375rem`,bg:`var(--muted)`,fontSize:`0.75rem`,fontWeight:`500`}),flex1:s({minW:0,flex:`1 1 0%`}),lineClamp2:s({overflow:`hidden`,textOverflow:`ellipsis`,lineClamp:2}),metaRow:s({mt:`0.25rem`,display:`flex`,minW:0,flexWrap:`wrap`,alignItems:`center`,columnGap:`0.5rem`,rowGap:`0.25rem`,fontSize:`0.75rem`,color:`var(--muted-foreground)`}),sessionRow:s({display:`flex`,minH:`9rem`,w:`100%`,minW:0,cursor:`pointer`,flexDir:`column`,gap:`0.75rem`,px:`1rem`,py:`0.75rem`,textAlign:`left`,transitionProperty:`background-color`,transitionDuration:`150ms`,_hover:{bg:`var(--accent)`},_focusVisible:{outline:`2px solid var(--ring)`,outlineOffset:`-2px`}}),sessionTitle:s({overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`,fontSize:`0.875rem`,fontWeight:`500`}),sessionPreview:s({mt:`0.5rem`,overflow:`hidden`,fontSize:`0.75rem`,lineHeight:`1.25rem`,color:`var(--muted-foreground)`,lineClamp:4}),badgeRow:s({display:`flex`,minW:0,flexWrap:`wrap`,gap:`0.5rem`,fontSize:`11px`,color:`var(--muted-foreground)`}),badge:s({display:`inline-flex`,minW:0,alignItems:`center`,gap:`0.25rem`,borderRadius:`0.375rem`,bg:`var(--muted)`,px:`0.5rem`,py:`0.25rem`}),shrink0:s({flexShrink:0}),centerContent:s({display:`flex`,minH:`16rem`,alignItems:`center`,justifyContent:`center`,fontSize:`0.875rem`,color:`var(--ink-soft)`})};function Cr(){return(0,B.use)(u()),_r||=a.getAllMetadata(),(0,B.use)(_r)}function wr(){let e=p(),[t,n]=(0,B.useState)(!0),[r,i]=(0,B.useState)(!1),[a,s]=(0,B.useState)(``),[c,l]=(0,B.useState)(``),u=async()=>{i(!0),l(``),s(``);try{let n=await hr({includeSandbox:t});Tt(`keating-portable-data.json`,`${JSON.stringify(n,null,2)}\n`),e?.capture(`portable_data_exported`,{success:!0,include_sandbox:t,session_count:n.sessions.length,feedback_count:n.storage.feedback.length}),s(`Exported ${Q(n.sessions.length)} sessions and ${Q(n.storage.feedback.length)} feedback records.`)}catch(n){e?.capture(`portable_data_exported`,{success:!1,include_sandbox:t,failure_type:n instanceof Error?n.name:`unknown`}),l(n instanceof Error?n.message:String(n))}finally{i(!1)}},d=e=>{let t=e.lessonPlans+e.lessonMaps+e.animations+e.verifications+e.benchmarks+e.evolutions+e.promptEvolutions+e.improvements+e.quizResults;return`Imported ${Q(e.sessions)} sessions, ${Q(e.feedback)} feedback records, ${Q(t)} artifacts, ${Q(e.goals)} goals, and ${Q(e.sandboxCommitsImported)} sandbox commits.`},f=async t=>{if(t){i(!0),l(``),s(``);try{let n=await t.text(),r=await gr(pr(JSON.parse(n)));_r=null,e?.capture(`portable_data_imported`,{success:!0,session_count:r.sessions,feedback_count:r.feedback,sandbox_commit_count:r.sandboxCommitsImported}),s(d(r))}catch(t){e?.capture(`portable_data_imported`,{success:!1,failure_type:t instanceof Error?t.name:`unknown`}),l(t instanceof Error?t.message:String(t))}finally{i(!1)}}};return(0,K.jsxs)(`section`,{className:$.panel,children:[(0,K.jsxs)(`div`,{className:$.panelHeader,children:[(0,K.jsx)(`h2`,{className:$.panelTitle,children:`Portable data`}),(0,K.jsx)(`p`,{className:$.panelSubtitle,children:`Move Keating sessions, learner state, artifacts, goals, and sandbox history between browsers.`})]}),(0,K.jsxs)(`div`,{className:$.portableBody,children:[(0,K.jsxs)(`label`,{className:$.inlineLabel,children:[(0,K.jsx)(`input`,{type:`checkbox`,checked:t,onChange:e=>n(e.target.checked)}),`Include sandbox code history`]}),(0,K.jsxs)(`div`,{className:$.actionRow,children:[(0,K.jsxs)(`button`,{type:`button`,className:o($.button,$.borderButton),onClick:u,disabled:r,children:[(0,K.jsx)(bt,{size:16}),`Export portable JSON`]}),(0,K.jsxs)(`label`,{className:o($.button,$.primaryButton,$.fileLabel),children:[(0,K.jsx)(wt,{size:16}),`Import portable JSON`,(0,K.jsx)(`input`,{type:`file`,accept:`application/json,.json`,className:$.srOnly,disabled:r,onChange:e=>{f(e.target.files?.[0]??null),e.currentTarget.value=``}})]})]}),a&&(0,K.jsx)(`div`,{className:$.basisFull,children:a}),c&&(0,K.jsx)(`div`,{className:$.errorFull,children:c})]})]})}function Tr(){let[e,t]=(0,B.useState)(null);return(0,B.useEffect)(()=>{let e=!1;return Promise.all([d.getLessonPlans(),d.getLessonMaps(),d.getAnimations(),d.getBenchmarks(),d.getEvolutions(),d.getPromptEvolutions(),d.getImprovementAttempts()]).then(([n,r,i,a,o,s,c])=>{e||t({plans:n.length,maps:r.length,animations:i.length,benchmarks:a.length,evolutions:o.length,promptEvolutions:s.length,improvements:c.length})}).catch(()=>{}),()=>{e=!0}},[]),e}function Er(){let e=l(),t=Cr().sort((e,t)=>t.lastModified.localeCompare(e.lastModified)),n=Tr(),r=t.reduce((e,t)=>(e.messages+=t.messageCount,e.input+=t.usage.input,e.output+=t.usage.output,e.tokens+=t.usage.totalTokens,e.cost+=t.usage.cost.total,e),{messages:0,input:0,output:0,tokens:0,cost:0}),a=t.length?br(t[t.length-1].createdAt,t[0].lastModified):0,c=t.slice(0,8),u=[...t].sort((e,t)=>t.messageCount-e.messageCount).slice(0,5),d=a?r.messages/a:0,f=n?n.benchmarks+n.evolutions+n.promptEvolutions+n.improvements:0,p=n?n.plans+n.maps+n.animations:0,m=t=>e({to:`/chat`,search:{session:t}});return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(kt,{current:`usage`,context:`Learning intelligence // Activity`,title:`Learning activity`,description:`Your sessions, learning materials, model usage, and improvement history in one local-first view.`}),(0,K.jsxs)(`main`,{className:$.main,children:[(0,K.jsxs)(`div`,{className:$.metricGrid,children:[(0,K.jsx)(F,{icon:(0,K.jsx)(ct,{size:18}),label:`Learning sessions`,value:Q(t.length),detail:a?`${a} day learning window`:`No sessions yet`}),(0,K.jsx)(F,{icon:(0,K.jsx)(St,{size:18}),label:`Socratic turns`,value:Q(r.messages),detail:`${d.toFixed(1)} messages per active day`}),(0,K.jsx)(F,{icon:(0,K.jsx)(lt,{size:18}),label:`Model tokens`,value:Q(r.tokens||r.input+r.output),detail:`${Q(r.input)} in / ${Q(r.output)} out`}),(0,K.jsx)(F,{icon:(0,K.jsx)(Ct,{size:18}),label:`Estimated spend`,value:vr(r.cost),detail:`Based on provider usage metadata`})]}),(0,K.jsxs)(`div`,{className:$.metricGridThree,children:[(0,K.jsx)(F,{icon:(0,K.jsx)(jt,{size:18}),label:`Teaching materials`,value:Q(p),detail:`${Q(n?.plans??0)} plans · ${Q(n?.maps??0)} maps · ${Q(n?.animations??0)} animations`}),(0,K.jsx)(F,{icon:(0,K.jsx)(mt,{size:18}),label:`Self-improvement runs`,value:Q(f),detail:`${Q(n?.evolutions??0)} evolutions · ${Q(n?.promptEvolutions??0)} prompt evos`}),(0,K.jsx)(F,{icon:(0,K.jsx)(xt,{size:18}),label:`Improvement attempts`,value:Q(n?.improvements??0),detail:n&&n.improvements>0?`${Q(n.benchmarks)} benchmarks measured`:`No improvements logged yet`})]}),(0,K.jsx)(wr,{}),(0,K.jsxs)(`div`,{className:$.panelHeader,children:[(0,K.jsxs)(i,{to:`/training-data`,children:[`Prepare a training dataset `,(0,K.jsx)(ut,{size:16})]}),(0,K.jsx)(`p`,{className:$.panelSubtitle,children:`Filter, inspect, import, and download training data in its dedicated workspace.`})]}),(0,K.jsxs)(`div`,{className:$.contentGrid,children:[(0,K.jsxs)(`section`,{className:$.section,children:[(0,K.jsxs)(`div`,{className:$.panelHeader,children:[(0,K.jsx)(`h2`,{className:$.panelTitle,children:`Recent learning`}),(0,K.jsx)(`p`,{className:$.panelSubtitle,children:`Latest saved sessions and their focus`})]}),(0,K.jsx)(`div`,{className:$.dividerList,children:c.length===0?(0,K.jsx)(`div`,{className:$.emptyState,children:`Start a chat and Keating will track your learning activity here.`}):c.map(e=>(0,K.jsx)(Dr,{session:e,onOpen:m},e.id))})]}),(0,K.jsxs)(`section`,{className:$.section,children:[(0,K.jsxs)(`div`,{className:$.panelHeader,children:[(0,K.jsx)(`h2`,{className:$.panelTitle,children:`Deepest dives`}),(0,K.jsx)(`p`,{className:$.panelSubtitle,children:`Sessions with the most back-and-forth`})]}),(0,K.jsx)(`div`,{className:$.stack3,children:u.length===0?(0,K.jsx)(`div`,{className:$.emptyState,children:`No learning history yet`}):u.map((e,t)=>(0,K.jsxs)(`button`,{type:`button`,className:$.deepButton,onClick:()=>m(e.id),children:[(0,K.jsx)(`div`,{className:$.rankBox,children:t+1}),(0,K.jsxs)(`div`,{className:$.flex1,children:[(0,K.jsx)(`div`,{className:o($.lineClamp2,s({fontSize:`0.875rem`,fontWeight:`500`})),children:e.title}),(0,K.jsxs)(`div`,{className:$.metaRow,children:[(0,K.jsx)(dt,{size:13}),(0,K.jsxs)(`span`,{children:[e.messageCount,` messages`]}),(0,K.jsx)(`span`,{"aria-hidden":`true`,children:`|`}),(0,K.jsx)(`span`,{children:yr(e.lastModified)})]})]}),(0,K.jsx)(ut,{size:16,className:$.shrink0,"aria-hidden":`true`})]},e.id))})]})]}),(0,K.jsx)($n,{sessionMetadata:t,onOpenSession:m})]})]})}function Dr({session:e,onOpen:t}){let n=e.usage.totalTokens||e.usage.input+e.usage.output,r=Sr(e);return(0,K.jsxs)(`button`,{type:`button`,className:$.sessionRow,onClick:()=>t(e.id),"aria-label":`Open session ${e.title}`,children:[(0,K.jsxs)(`div`,{className:$.flex1,children:[(0,K.jsx)(`div`,{className:$.sessionTitle,children:e.title}),(0,K.jsx)(`p`,{className:$.sessionPreview,children:xr(e.preview)})]}),(0,K.jsxs)(`div`,{className:$.badgeRow,children:[(0,K.jsxs)(`span`,{className:$.badge,children:[(0,K.jsx)(At,{size:12,className:$.shrink0}),(0,K.jsx)(`span`,{className:$.truncate,children:yr(e.lastModified)})]}),(0,K.jsxs)(`span`,{className:$.badge,children:[(0,K.jsx)(St,{size:12,className:$.shrink0}),(0,K.jsxs)(`span`,{className:$.truncate,children:[e.messageCount,` turns`]})]}),(0,K.jsxs)(`span`,{className:$.badge,children:[(0,K.jsx)(lt,{size:12,className:$.shrink0}),(0,K.jsxs)(`span`,{className:$.truncate,children:[Q(n),` tokens`]})]}),r&&(0,K.jsxs)(`span`,{className:$.badge,children:[(0,K.jsx)(mt,{size:12,className:$.shrink0}),(0,K.jsx)(`span`,{className:$.truncate,children:r})]}),(0,K.jsxs)(`span`,{className:$.badge,children:[(0,K.jsx)(lt,{size:12,className:$.shrink0}),(0,K.jsxs)(`span`,{className:$.truncate,children:[`Thinking: `,e.thinkingLevel]})]}),(0,K.jsxs)(`span`,{className:$.badge,children:[(0,K.jsx)(`span`,{children:`Open session`}),(0,K.jsx)(ut,{size:12,className:$.shrink0})]})]})]})}function Or(){return Et({title:`Keating Dashboard — Usage & Analytics`,description:`View your Keating usage statistics, session history, and learning analytics.`,canonical:`https://keating.help/usage`}),(0,K.jsxs)(`div`,{className:o(`retro-layout`,`retro-page`,$.page),children:[(0,K.jsx)(n,{}),(0,K.jsx)(B.Suspense,{fallback:(0,K.jsx)(`div`,{className:$.centerContent,children:`Loading usage...`}),children:(0,K.jsx)(Er,{})})]})}export{Or as Usage};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./createLucideIcon-C_7xXnHN.js";var t=e(`activity`,[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]);export{t};
|
package/web/.output/public/assets/{anthropic-messages-rElikI6M.js → anthropic-messages-ZiHu59Q7.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{t as e}from"./event-stream-qbAZIAKV.js";import{n as t,t as n}from"./json-parse-CwN-SA_h.js";import{pr as r,yr as i}from"./index-
|
|
1
|
+
import{t as e}from"./event-stream-qbAZIAKV.js";import{n as t,t as n}from"./json-parse-CwN-SA_h.js";import{pr as r,yr as i}from"./index-DCgpDQKf.js";import{t as a}from"./deferred-tools-C1IEsG5C.js";import{t as o}from"./headers-CbDaTl3c.js";import{t as s}from"./pi-user-agent-6Rm79QmC.js";import{t as c}from"./provider-retry-DLGw8C1A.js";import{t as l}from"./sanitize-unicode-DmIE6hZJ.js";import{a as u,f as d,i as f,r as p,t as m,u as h}from"./transform-messages-CjZBscG6.js";import{n as ee,t as te}from"./github-copilot-headers-DRgtIyTm.js";function g(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n}function _(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)}var ne=function(){let{crypto:e}=globalThis;if(e?.randomUUID)return ne=e.randomUUID.bind(e),e.randomUUID();let t=new Uint8Array(1),n=e?()=>e.getRandomValues(t)[0]:()=>Math.random()*255&255;return`10000000-1000-4000-8000-100000000000`.replace(/[018]/g,e=>(e^n()&15>>e/4).toString(16))};function v(e){return typeof e==`object`&&!!e&&(`name`in e&&e.name===`AbortError`||`message`in e&&String(e.message).includes(`FetchRequestCanceledException`))}var re=e=>{if(e instanceof Error)return e;if(typeof e==`object`&&e){try{if(Object.prototype.toString.call(e)===`[object Error]`){let t=Error(e.message,e.cause?{cause:e.cause}:{});return e.stack&&(t.stack=e.stack),e.cause&&!t.cause&&(t.cause=e.cause),e.name&&(t.name=e.name),t}}catch{}try{return Error(JSON.stringify(e))}catch{}}return Error(e)},y=class extends Error{},b=class e extends y{constructor(t,n,r,i,a){super(`${e.makeMessage(t,n,r)}`),this.status=t,this.headers=i,this.requestID=i?.get(`request-id`),this.error=n,this.type=a??null}static makeMessage(e,t,n){let r=t?.message?typeof t.message==`string`?t.message:JSON.stringify(t.message):t?JSON.stringify(t):n;return e&&r?`${e} ${r}`:e?`${e} status code (no body)`:r||`(no status code or body)`}static generate(t,n,r,i){if(!t||!i)return new ie({message:r,cause:re(n)});let a=n,o=a?.error?.type;return t===400?new oe(t,a,r,i,o):t===401?new se(t,a,r,i,o):t===403?new ce(t,a,r,i,o):t===404?new le(t,a,r,i,o):t===409?new ue(t,a,r,i,o):t===422?new de(t,a,r,i,o):t===429?new fe(t,a,r,i,o):t>=500?new pe(t,a,r,i,o):new e(t,a,r,i,o)}},x=class extends b{constructor({message:e}={}){super(void 0,void 0,e||`Request was aborted.`,void 0)}},ie=class extends b{constructor({message:e,cause:t}){super(void 0,void 0,e||`Connection error.`,void 0),t&&(this.cause=t)}},ae=class extends ie{constructor({message:e}={}){super({message:e??`Request timed out.`})}},oe=class extends b{},se=class extends b{},ce=class extends b{},le=class extends b{},ue=class extends b{},de=class extends b{},fe=class extends b{},pe=class extends b{},me=/^[a-z][a-z0-9+.-]*:/i,he=e=>me.test(e),ge=e=>(ge=Array.isArray,ge(e)),_e=ge;function ve(e){return typeof e==`object`?e??{}:{}}function ye(e){if(!e)return!0;for(let t in e)return!1;return!0}function be(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var xe=(e,t)=>{if(typeof t!=`number`||!Number.isInteger(t))throw new y(`${e} must be an integer`);if(t<0)throw new y(`${e} must be a positive integer`);return t},Se=e=>{try{return JSON.parse(e)}catch{return}},Ce=e=>new Promise(t=>setTimeout(t,e)),S=`0.91.1`,we=()=>typeof window<`u`&&window.document!==void 0&&typeof navigator<`u`;function Te(){return typeof Deno<`u`&&Deno.build!=null?`deno`:typeof EdgeRuntime<`u`?`edge`:Object.prototype.toString.call(globalThis.process===void 0?0:globalThis.process)===`[object process]`?`node`:`unknown`}var Ee=()=>{let e=Te();if(e===`deno`)return{"X-Stainless-Lang":`js`,"X-Stainless-Package-Version":S,"X-Stainless-OS":ke(Deno.build.os),"X-Stainless-Arch":Oe(Deno.build.arch),"X-Stainless-Runtime":`deno`,"X-Stainless-Runtime-Version":typeof Deno.version==`string`?Deno.version:Deno.version?.deno??`unknown`};if(typeof EdgeRuntime<`u`)return{"X-Stainless-Lang":`js`,"X-Stainless-Package-Version":S,"X-Stainless-OS":`Unknown`,"X-Stainless-Arch":`other:${EdgeRuntime}`,"X-Stainless-Runtime":`edge`,"X-Stainless-Runtime-Version":globalThis.process.version};if(e===`node`)return{"X-Stainless-Lang":`js`,"X-Stainless-Package-Version":S,"X-Stainless-OS":ke(globalThis.process.platform??`unknown`),"X-Stainless-Arch":Oe(globalThis.process.arch??`unknown`),"X-Stainless-Runtime":`node`,"X-Stainless-Runtime-Version":globalThis.process.version??`unknown`};let t=De();return t?{"X-Stainless-Lang":`js`,"X-Stainless-Package-Version":S,"X-Stainless-OS":`Unknown`,"X-Stainless-Arch":`unknown`,"X-Stainless-Runtime":`browser:${t.browser}`,"X-Stainless-Runtime-Version":t.version}:{"X-Stainless-Lang":`js`,"X-Stainless-Package-Version":S,"X-Stainless-OS":`Unknown`,"X-Stainless-Arch":`unknown`,"X-Stainless-Runtime":`unknown`,"X-Stainless-Runtime-Version":`unknown`}};function De(){if(typeof navigator>`u`||!navigator)return null;for(let{key:e,pattern:t}of[{key:`edge`,pattern:/Edge(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:`ie`,pattern:/MSIE(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:`ie`,pattern:/Trident(?:.*rv\:(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:`chrome`,pattern:/Chrome(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:`firefox`,pattern:/Firefox(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:`safari`,pattern:/(?:Version\W+(\d+)\.(\d+)(?:\.(\d+))?)?(?:\W+Mobile\S*)?\W+Safari/}]){let n=t.exec(navigator.userAgent);if(n)return{browser:e,version:`${n[1]||0}.${n[2]||0}.${n[3]||0}`}}return null}var Oe=e=>e===`x32`?`x32`:e===`x86_64`||e===`x64`?`x64`:e===`arm`?`arm`:e===`aarch64`||e===`arm64`?`arm64`:e?`other:${e}`:`unknown`,ke=e=>(e=e.toLowerCase(),e.includes(`ios`)?`iOS`:e===`android`?`Android`:e===`darwin`?`MacOS`:e===`win32`?`Windows`:e===`freebsd`?`FreeBSD`:e===`openbsd`?`OpenBSD`:e===`linux`?`Linux`:e?`Other:${e}`:`Unknown`),Ae,je=()=>Ae??=Ee();function Me(){if(typeof fetch<`u`)return fetch;throw Error("`fetch` is not defined as a global; Either pass `fetch` to the client, `new Anthropic({ fetch })` or polyfill the global, `globalThis.fetch = fetch`")}function Ne(...e){let t=globalThis.ReadableStream;if(t===void 0)throw Error("`ReadableStream` is not defined as a global; You will need to polyfill it, `globalThis.ReadableStream = ReadableStream`");return new t(...e)}function Pe(e){let t=Symbol.asyncIterator in e?e[Symbol.asyncIterator]():e[Symbol.iterator]();return Ne({start(){},async pull(e){let{done:n,value:r}=await t.next();n?e.close():e.enqueue(r)},async cancel(){await t.return?.()}})}function Fe(e){if(e[Symbol.asyncIterator])return e;let t=e.getReader();return{async next(){try{let e=await t.read();return e?.done&&t.releaseLock(),e}catch(e){throw t.releaseLock(),e}},async return(){let e=t.cancel();return t.releaseLock(),await e,{done:!0,value:void 0}},[Symbol.asyncIterator](){return this}}}async function Ie(e){if(typeof e!=`object`||!e)return;if(e[Symbol.asyncIterator]){await e[Symbol.asyncIterator]().return?.();return}let t=e.getReader(),n=t.cancel();t.releaseLock(),await n}var Le=({headers:e,body:t})=>({bodyHeaders:{"content-type":`application/json`},body:JSON.stringify(t)});function Re(e){return Object.entries(e).filter(([e,t])=>t!==void 0).map(([e,t])=>{if(typeof t==`string`||typeof t==`number`||typeof t==`boolean`)return`${encodeURIComponent(e)}=${encodeURIComponent(t)}`;if(t===null)return`${encodeURIComponent(e)}=`;throw new y(`Cannot stringify type ${typeof t}; Expected string, number, boolean, or null. If you need to pass nested query parameters, you can manually encode them, e.g. { query: { 'foo[key1]': value1, 'foo[key2]': value2 } }, and please open a GitHub issue requesting better support for your use case.`)}).join(`&`)}function ze(e){let t=0;for(let n of e)t+=n.length;let n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}var Be;function Ve(e){let t;return(Be??=(t=new globalThis.TextEncoder,t.encode.bind(t)))(e)}var He;function Ue(e){let t;return(He??=(t=new globalThis.TextDecoder,t.decode.bind(t)))(e)}var C,w,We=class{constructor(){C.set(this,void 0),w.set(this,void 0),g(this,C,new Uint8Array,`f`),g(this,w,null,`f`)}decode(e){if(e==null)return[];let t=e instanceof ArrayBuffer?new Uint8Array(e):typeof e==`string`?Ve(e):e;g(this,C,ze([_(this,C,`f`),t]),`f`);let n=[],r;for(;(r=Ge(_(this,C,`f`),_(this,w,`f`)))!=null;){if(r.carriage&&_(this,w,`f`)==null){g(this,w,r.index,`f`);continue}if(_(this,w,`f`)!=null&&(r.index!==_(this,w,`f`)+1||r.carriage)){n.push(Ue(_(this,C,`f`).subarray(0,_(this,w,`f`)-1))),g(this,C,_(this,C,`f`).subarray(_(this,w,`f`)),`f`),g(this,w,null,`f`);continue}let e=_(this,w,`f`)===null?r.preceding:r.preceding-1,t=Ue(_(this,C,`f`).subarray(0,e));n.push(t),g(this,C,_(this,C,`f`).subarray(r.index),`f`),g(this,w,null,`f`)}return n}flush(){return _(this,C,`f`).length?this.decode(`
|
|
2
2
|
`):[]}};C=new WeakMap,w=new WeakMap,We.NEWLINE_CHARS=new Set([`
|
|
3
3
|
`,`\r`]),We.NEWLINE_REGEXP=/\r\n|[\n\r]/g;function Ge(e,t){for(let n=t??0;n<e.length;n++){if(e[n]===10)return{preceding:n,index:n+1,carriage:!1};if(e[n]===13)return{preceding:n,index:n+1,carriage:!0}}return null}function Ke(e){for(let t=0;t<e.length-1;t++){if(e[t]===10&&e[t+1]===10||e[t]===13&&e[t+1]===13)return t+2;if(e[t]===13&&e[t+1]===10&&t+3<e.length&&e[t+2]===13&&e[t+3]===10)return t+4}return-1}var qe={off:0,error:200,warn:300,info:400,debug:500},Je=(e,t,n)=>{if(e){if(be(qe,e))return e;T(n).warn(`${t} was set to ${JSON.stringify(e)}, expected one of ${JSON.stringify(Object.keys(qe))}`)}};function Ye(){}function Xe(e,t,n){return!t||qe[e]>qe[n]?Ye:t[e].bind(t)}var Ze={error:Ye,warn:Ye,info:Ye,debug:Ye},Qe=new WeakMap;function T(e){let t=e.logger,n=e.logLevel??`off`;if(!t)return Ze;let r=Qe.get(t);if(r&&r[0]===n)return r[1];let i={error:Xe(`error`,t,n),warn:Xe(`warn`,t,n),info:Xe(`info`,t,n),debug:Xe(`debug`,t,n)};return Qe.set(t,[n,i]),i}var E=e=>(e.options&&(e.options={...e.options},delete e.options.headers),e.headers&&=Object.fromEntries((e.headers instanceof Headers?[...e.headers]:Object.entries(e.headers)).map(([e,t])=>[e,e.toLowerCase()===`x-api-key`||e.toLowerCase()===`authorization`||e.toLowerCase()===`cookie`||e.toLowerCase()===`set-cookie`?`***`:t])),`retryOfRequestLogID`in e&&(e.retryOfRequestLogID&&(e.retryOf=e.retryOfRequestLogID),delete e.retryOfRequestLogID),e),$e,et=class e{constructor(e,t,n){this.iterator=e,$e.set(this,void 0),this.controller=t,g(this,$e,n,`f`)}static fromSSEResponse(t,n,r){let i=!1,a=r?T(r):console;async function*o(){if(i)throw new y("Cannot iterate over a consumed stream, use `.tee()` to split the stream.");i=!0;let e=!1;try{for await(let e of tt(t,n)){if(e.event===`completion`)try{yield JSON.parse(e.data)}catch(t){throw a.error(`Could not parse message into JSON:`,e.data),a.error(`From chunk:`,e.raw),t}if(e.event===`message_start`||e.event===`message_delta`||e.event===`message_stop`||e.event===`content_block_start`||e.event===`content_block_delta`||e.event===`content_block_stop`||e.event===`message`||e.event===`user.message`||e.event===`user.interrupt`||e.event===`user.tool_confirmation`||e.event===`user.custom_tool_result`||e.event===`agent.message`||e.event===`agent.thinking`||e.event===`agent.tool_use`||e.event===`agent.tool_result`||e.event===`agent.mcp_tool_use`||e.event===`agent.mcp_tool_result`||e.event===`agent.custom_tool_use`||e.event===`agent.thread_context_compacted`||e.event===`session.status_running`||e.event===`session.status_idle`||e.event===`session.status_rescheduled`||e.event===`session.status_terminated`||e.event===`session.error`||e.event===`session.deleted`||e.event===`span.model_request_start`||e.event===`span.model_request_end`)try{yield JSON.parse(e.data)}catch(t){throw a.error(`Could not parse message into JSON:`,e.data),a.error(`From chunk:`,e.raw),t}if(e.event!==`ping`&&e.event===`error`){let n=Se(e.data)??e.data,r=n?.error?.type;throw new b(void 0,n,void 0,t.headers,r)}}e=!0}catch(e){if(v(e))return;throw e}finally{e||n.abort()}}return new e(o,n,r)}static fromReadableStream(t,n,r){let i=!1;async function*a(){let e=new We,n=Fe(t);for await(let t of n)for(let n of e.decode(t))yield n;for(let t of e.flush())yield t}async function*o(){if(i)throw new y("Cannot iterate over a consumed stream, use `.tee()` to split the stream.");i=!0;let e=!1;try{for await(let t of a())e||t&&(yield JSON.parse(t));e=!0}catch(e){if(v(e))return;throw e}finally{e||n.abort()}}return new e(o,n,r)}[($e=new WeakMap,Symbol.asyncIterator)](){return this.iterator()}tee(){let t=[],n=[],r=this.iterator(),i=e=>({next:()=>{if(e.length===0){let e=r.next();t.push(e),n.push(e)}return e.shift()}});return[new e(()=>i(t),this.controller,_(this,$e,`f`)),new e(()=>i(n),this.controller,_(this,$e,`f`))]}toReadableStream(){let e=this,t;return Ne({async start(){t=e[Symbol.asyncIterator]()},async pull(e){try{let{value:n,done:r}=await t.next();if(r)return e.close();let i=Ve(JSON.stringify(n)+`
|
|
4
4
|
`);e.enqueue(i)}catch(t){e.error(t)}},async cancel(){await t.return?.()}})}};async function*tt(e,t){if(!e.body)throw t.abort(),globalThis.navigator!==void 0&&globalThis.navigator.product===`ReactNative`?new y(`The default react-native fetch implementation does not support streaming. Please use expo/fetch: https://docs.expo.dev/versions/latest/sdk/expo/#expofetch-api`):new y(`Attempted to iterate over a response with no body`);let n=new rt,r=new We,i=Fe(e.body);for await(let e of nt(i))for(let t of r.decode(e)){let e=n.decode(t);e&&(yield e)}for(let e of r.flush()){let t=n.decode(e);t&&(yield t)}}async function*nt(e){let t=new Uint8Array;for await(let n of e){if(n==null)continue;let e=n instanceof ArrayBuffer?new Uint8Array(n):typeof n==`string`?Ve(n):n,r=new Uint8Array(t.length+e.length);r.set(t),r.set(e,t.length),t=r;let i;for(;(i=Ke(t))!==-1;)yield t.slice(0,i),t=t.slice(i)}t.length>0&&(yield t)}var rt=class{constructor(){this.event=null,this.data=[],this.chunks=[]}decode(e){if(e.endsWith(`\r`)&&(e=e.substring(0,e.length-1)),!e){if(!this.event&&!this.data.length)return null;let e={event:this.event,data:this.data.join(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./event-stream-qbAZIAKV.js";import{mr as t,yr as n}from"./index-
|
|
1
|
+
import{t as e}from"./event-stream-qbAZIAKV.js";import{mr as t,yr as n}from"./index-DCgpDQKf.js";import{t as r}from"./headers-CbDaTl3c.js";import{t as i}from"./provider-retry-DLGw8C1A.js";import{c as a,i as o}from"./transform-messages-CjZBscG6.js";import{t as s}from"./openai-Dlbx6jgy.js";import{n as c,t as l}from"./error-body-pkrba6pf.js";import{t as u}from"./openai-prompt-cache-DXo9f3w5.js";import{n as d,r as f,t as p}from"./openai-responses-shared-BdPh5feu.js";var m=`v1`,h=new Set([`openai`,`openai-codex`,`opencode`,`azure-openai-responses`]),g=16;function _(e){let t=new Map;if(!e)return t;for(let n of e.split(`,`)){let e=n.trim();if(!e)continue;let[r,i]=e.split(`=`,2);!r||!i||t.set(r.trim(),i.trim())}return t}function v(e,t){return t?.azureDeploymentName?t.azureDeploymentName:_(n(`AZURE_OPENAI_DEPLOYMENT_NAME_MAP`,t?.env)).get(e.id)||e.id}function y(e){return l(c(e),`Azure OpenAI API error`)}var b=(t,n,o)=>{let s=new e;return(async()=>{let e=v(t,o),c={role:`assistant`,content:[],api:`azure-openai-responses`,provider:t.provider,model:t.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`pending`,timestamp:Date.now()};try{let l=o?.apiKey;if(!l)throw Error(`No API key for provider: ${t.provider}`);let u=T(t,l,o),d=a(n.tools,t.compat?.supportsOpenAIGrammarTools??!1),p=E(t,n,o,e,d),m=await o?.onPayload?.(p,t);m!==void 0&&(p=m);let h={...o?.signal?{signal:o.signal}:{},...o?.timeoutMs===void 0?{}:{timeout:o.timeoutMs},maxRetries:0},{data:g,response:_}=await i(()=>u.responses.create(p,h).withResponse(),{maxRetries:o?.maxRetries,maxRetryDelayMs:o?.maxRetryDelayMs,signal:o?.signal});if(await o?.onResponse?.({status:_.status,headers:r(_.headers)},t),s.push({type:`start`,partial:c}),await f(g,c,s,t,{grammarToolInputProperties:d}),o?.signal?.aborted)throw Error(`Request was aborted`);if(c.stopReason===`pending`)throw Error(`Azure OpenAI Responses stream ended without a stop reason`);if(c.stopReason===`aborted`||c.stopReason===`error`)throw Error(c.errorMessage||`An unknown error occurred`);s.push({type:`done`,reason:c.stopReason,message:c}),s.end()}catch(e){for(let e of c.content)delete e.index,delete e.partialJson,delete e.customInput;c.stopReason=o?.signal?.aborted?`aborted`:`error`,c.errorMessage=y(e),s.push({type:`error`,reason:c.stopReason,error:c}),s.end()}})(),s},x=(e,n,r)=>{let i=r?.apiKey;if(!i)throw Error(`No API key for provider: ${e.provider}`);let a=o(e,n,r,i),s=r?.reasoning?t(e,r.reasoning):void 0,c=s===`off`?void 0:s;return b(e,n,{...a,reasoningEffort:c})};function S(e){let t=e.trim().replace(/\/+$/,``),n;try{n=new URL(t)}catch{throw Error(`Invalid Azure OpenAI base URL: ${e}`)}let r=n.hostname.endsWith(`.openai.azure.com`)||n.hostname.endsWith(`.cognitiveservices.azure.com`)||n.hostname.endsWith(`.ai.azure.com`),i=n.pathname.replace(/\/+$/,``);return r&&(i===``||i===`/`||i===`/openai`||i===`/openai/v1/responses`)&&(n.pathname=`/openai/v1`,n.search=``),n.toString().replace(/\/+$/,``)}function C(e){return`https://${e}.openai.azure.com/openai/v1`}function w(e,t){let r=t?.azureApiVersion||n(`AZURE_OPENAI_API_VERSION`,t?.env)||m,i=t?.azureBaseUrl?.trim()||n(`AZURE_OPENAI_BASE_URL`,t?.env)?.trim()||void 0,a=t?.azureResourceName||n(`AZURE_OPENAI_RESOURCE_NAME`,t?.env),o=i;if(!o&&a&&(o=C(a)),!o&&e.baseUrl&&(o=e.baseUrl),!o)throw Error(`Azure OpenAI base URL is required. Set AZURE_OPENAI_BASE_URL or AZURE_OPENAI_RESOURCE_NAME, or pass azureBaseUrl, azureResourceName, or model.baseUrl.`);return{baseUrl:S(o),apiVersion:r}}function T(e,t,n){let r={...e.headers};n?.headers&&Object.assign(r,n.headers);let{baseUrl:i,apiVersion:a}=w(e,n);return new s({apiKey:t,apiVersion:a,dangerouslyAllowBrowser:!0,fetch:n?.fetch,defaultHeaders:r,baseURL:i})}function E(e,t,n,r,i=a(t.tools,e.compat?.supportsOpenAIGrammarTools??!1)){let o={model:r,input:p(e,t,h,{grammarToolInputProperties:i}),stream:!0,prompt_cache_key:u(n?.sessionId),store:!1};return n?.maxTokens&&(o.max_output_tokens=Math.max(n.maxTokens,g)),n?.temperature!==void 0&&(o.temperature=n?.temperature),t.tools&&t.tools.length>0&&(o.tools=d(t.tools,{supportsStrictMode:e.compat?.supportsStrictMode??!0,supportsOpenAIGrammarTools:e.compat?.supportsOpenAIGrammarTools??!1})),e.reasoning&&(n?.reasoningEffort||n?.reasoningSummary?(o.reasoning={effort:n?.reasoningEffort?e.thinkingLevelMap?.[n.reasoningEffort]??n.reasoningEffort:`medium`,summary:n?.reasoningSummary||`auto`},o.include=[`reasoning.encrypted_content`]):e.thinkingLevelMap?.off!==null&&(o.reasoning={effort:e.thinkingLevelMap?.off??`none`})),n?.samplingParams&&Object.assign(o,n.samplingParams),o}export{b as stream,x as streamSimple};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-BG2f4sTM.js";import{t}from"./local-setting-MxAmyvqH.js";import{a as n,l as r,n as i}from"./desktop-offline-IzFtwAhh.js";function a(e){return e.type===`noul`}function o(e){return e.type===`choice`}function s(e){return e.type===`score`}var c=96e3,l=/^[0-9a-f]{64}$/;function u(e){return typeof e==`string`&&l.test(e)}function d(e){return typeof e==`string`&&e.trim().length>0}function f(e){let t=e=>Array.isArray(e)?e.map(t):!e||typeof e!=`object`?e:Object.fromEntries(Object.entries(e).sort((e,t)=>e[0]<t[0]?-1:+(e[0]>t[0])).map(([e,n])=>[e,t(n)]));return JSON.stringify(t(e))}function p(e){return f(e)}function m(e){return typeof e==`string`?e.length:JSON.stringify(e).length}function h(e){let t=Object.entries(e.questions);if(t.length===0)return`A judgement request needs at least one question.`;if(t.length>64)return`A judgement request carries at most 64 questions.`;if(m(e.state)>96e3)return`Judgement state exceeds ${c} characters; filter it in code first.`;for(let[e,n]of t){if(!d(e))return`Every question needs a non-empty key.`;if(!d(n.instructions))return`Question "${e}" needs instructions.`;if(n.type===`choice`){let t=Object.keys(n.criteria);if(t.length<2)return`Choice "${e}" needs at least two options.`;if(t.length>255)return`Choice "${e}" exceeds 255 options; narrow in two stages.`;if(t.some(e=>e.length===0))return`Choice "${e}" has an empty option key.`}if(n.type===`score`&&n.criteria.length<2)return`Score "${e}" needs at least 2 ordered levels.`}return null}function g(e){return Object.entries(e.probabilities).map(([e,t])=>[Number(e),t]).filter(([e])=>Number.isFinite(e)).sort((e,t)=>e[0]-t[0]).map(([,e])=>e)}function _(e){let t=g(e),n=0;for(let e=1;e<t.length;e+=1)t[e]>t[n]&&(n=e);return n}function ee(e){return Math.max(Object.keys(e.legend).length,g(e).length)}function te(e,t){let n=ee(e);return n<2||t<=0?0:e.score/(n-1)*t}function v(e){return te(e,1)}function y(e,t=.5){let n=g(e);if(n.length<3)return!1;let[r,i]=n.map((e,t)=>({probability:e,index:t})).sort((e,t)=>t.probability-e.probability);if(!r||!i||i.probability<=0)return!1;let a=Math.min(r.index,i.index),o=Math.max(r.index,i.index);if(o-a<2)return!1;let s=1/0;for(let e=a+1;e<o;e+=1)s=Math.min(s,n[e]);return s<=t*i.probability}var b={deferBelow:.5,actAtOrAbove:.9};function x(e,t=b){return e===null||!Number.isFinite(e)?`defer`:e>=t.actAtOrAbove?`act`:e<t.deferBelow?`defer`:`review`}function S(e,t){return`${e.backend}\u0000${e.model}\u0000${e.calibrationSha256??``}\u0000${t}`}function C(e,t,n){return t.calibrationSha256===null?null:e.entries[S(t,n)]??null}function w(e,t){return{source:`proxy`,backend:e,questionDigest:t}}function ne(e,t,n){return{status:`decided`,value:e,confidence:t,provenance:n}}function T(e,t){return{status:`abstained`,reason:e,provenance:t}}function re(e,t,n,r){let i=w(t,n),a=C(r,t,n);return a===null?T(`no-calibration`,i):y(e)?T(`bimodal-distribution`,i):x(e.confidence,a)===`defer`?T(`below-confidence-floor`,i):ne(_(e),e.confidence,i)}function ie(e){let t=0,n=0;for(let{answer:r,weight:i}of e)!Number.isFinite(i)||i<=0||(t+=i,n+=v(r)*i);return t===0?0:n/t}var E=`none`;function ae(e,t=`None of these is the requested span.`){let n=[],r=new Set;for(let t of e)t.length===0||r.has(t)||(r.add(t),n.push(t));if(n.length+1>255)throw Error(`A selection carries at most 254 candidates; narrow in two stages.`);let i=E;for(let e=1;r.has(i);e+=1)i=`${E}-${e}`;let a={};for(let e of n)a[e]=null;return a[i]=t,{criteria:a,candidates:n,noMatchOption:i}}function oe(e,t){if(t.choice===e.noMatchOption)return null;let n=e.candidates.indexOf(t.choice);return n===-1?null:{index:n,text:e.candidates[n]}}var se=`keating:judgement-model`,D=`keating:judgement-model-changed`,ce=64e3,le=32e3,O={backend:`hosted`,localModelId:r,gatewayPath:`/api/judgement`,requestTokens:null,stateQuestionTokens:null};function ue(){return typeof n()?.scoreLabels==`function`?{...O,localModelId:i.id}:O}function k(e){return typeof e==`string`?e.trim():``}function A(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>=512&&e<=2e6?e:null}function de(e){return e===`off`||e===`local`||e===`hosted`?e:O.backend}function fe(e){let t=k(e);return!t.startsWith(`/`)||t.startsWith(`//`)?O.gatewayPath:t}var j=t({key:se,event:D,normalize:e=>{let t=null;try{t=typeof e==`string`?e.length>0?JSON.parse(e):null:e&&typeof e==`object`&&!Array.isArray(e)?e:null}catch{t=null}let n=ue();return t?{backend:de(t.backend),localModelId:k(t.localModelId)||n.localModelId,gatewayPath:fe(t.gatewayPath),requestTokens:A(t.requestTokens),stateQuestionTokens:A(t.stateQuestionTokens??t.contextWindowTokens)}:n}});function pe(){return j.load()}function me(e){j.save(e)}function he(e){return j.subscribe(e)}var M=5*1024*1024,ge=`Invalid judgement calibration artifact`,N=`wilson-95-upper-frozen-threshold-v1`;function P(){throw Error(ge)}function F(e){let t=e=>Array.isArray(e)?e.map(t):typeof e==`object`&&e?Object.fromEntries(Object.entries(e).sort(([e],[t])=>e<t?-1:+(e>t)).map(([e,n])=>[e,t(n)])):e;return JSON.stringify(t(e))}function I(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function L(e,t){Object.keys(e).sort().join(`|`)!==t.sort().join(`|`)&&P()}function R(e,t=256,n=!1){return typeof e==`string`&&e.trim().length>0&&e.length<=t&&!(n?/[\u0000-\u0008\u000b\u000c\u000e-\u001f]/u:/[\u0000-\u001f]/u).test(e)}function z(e){return typeof e==`number`&&Number.isFinite(e)&&e>=0&&e<=1}function _e(e){I(e)||P(),L(e,[`schemaVersion`,`policy`,`observations`]),(e.schemaVersion!==1||!I(e.policy)||!Array.isArray(e.observations)||e.observations.length>1e4)&&P(),L(e.policy,[`maxFalsePositiveRate`,`maxActionErrorRate`,`minSamples`,`minActions`,`minNegatives`]);for(let t of[`maxFalsePositiveRate`,`maxActionErrorRate`])(!z(e.policy[t])||e.policy[t]>.5)&&P();for(let t of[`minSamples`,`minActions`,`minNegatives`])(!Number.isInteger(e.policy[t])||e.policy[t]<20||e.policy[t]>1e4)&&P();let t=new Set,n=new Set,r=new Map,i=new Map,a=new Set,o=new Map;for(let s of e.observations){I(s)||P(),L(s,[`observationId`,`sourceId`,`groupId`,`split`,`evidence`,`backend`,`question`,`metricKind`,`value`,`label`]),(!R(s.observationId)||!R(s.sourceId)||!R(s.groupId)||![`fit`,`validation`].includes(String(s.split))||s.evidence!==`observed`||!z(s.value)||s.label!==0&&s.label!==1)&&P(),(t.has(s.observationId)||n.has(s.sourceId)||r.has(s.groupId)&&r.get(s.groupId)!==s.split)&&P(),t.add(s.observationId),n.add(s.sourceId),r.set(s.groupId,s.split),I(s.backend)||P(),L(s.backend,[`backend`,`model`,`calibrationSha256`]),(![`local`,`system-one`].includes(String(s.backend.backend))||!R(s.backend.model)||/(?:latest|^judgement$)/iu.test(s.backend.model)||s.backend.calibrationSha256!==null&&(typeof s.backend.calibrationSha256!=`string`||!/^[a-f0-9]{64}$/u.test(s.backend.calibrationSha256)))&&P(),(!I(s.question)||!R(s.question.instructions,32e3,!0))&&P();let e=s.question;e.type===`noul`?(L(e,e.criteria===void 0?[`type`,`instructions`]:[`type`,`instructions`,`criteria`]),e.criteria!==void 0&&(I(e.criteria)||P(),L(e.criteria,[`true`,`false`]),(!R(e.criteria.true,16e3,!0)||!R(e.criteria.false,16e3,!0))&&P())):e.type===`choice`?(L(e,[`type`,`instructions`,`criteria`]),(!I(e.criteria)||Object.entries(e.criteria).some(([e,t])=>!R(e)||t!==null&&!R(t,16e3,!0)))&&P()):e.type===`score`?(L(e,[`type`,`instructions`,`criteria`]),(!Array.isArray(e.criteria)||e.criteria.length>255||e.criteria.some(e=>!R(e,16e3,!0))||new Set(e.criteria).size!==e.criteria.length)&&P()):P();let c=e;h({state:``,questions:{check:c}})&&P();let l=e.type===`noul`?`noul-probability`:`${e.type}-confidence`;s.metricKind!==l&&P();let u=S(s.backend,p(c)),d=JSON.stringify([s.backend.backend,s.backend.model,p(c)]),f=s.backend.calibrationSha256;o.has(d)&&o.get(d)!==f&&P(),o.set(d,f);let m=JSON.stringify([u,s.groupId]);a.has(m)&&P(),a.add(m),i.has(u)&&i.get(u)!==s.metricKind&&P(),i.set(u,s.metricKind)}return JSON.parse(JSON.stringify(e))}function B(e,t){if(!t)return 1;let n=1.959963984540054,r=e/t,i=n*n;return(r+i/(2*t)+n*Math.sqrt(r*(1-r)/t+i/(4*t*t)))/(1+i/t)}function V(e,t){let n=e.filter(e=>e.value>=t),r=n.filter(e=>e.label===0).length,i=e.filter(e=>e.label===0).length;return{samples:e.length,actions:n.length,errors:r,negatives:i,falsePositives:r,actionErrorUpper:B(r,n.length),falsePositiveUpper:B(r,i)}}function H(e,t,n){return e.samples>=n.minSamples&&e.actions>=n.minActions&&e.actionErrorUpper<=n.maxActionErrorRate&&(t!==`noul-probability`||e.negatives>=n.minNegatives&&e.negatives<e.samples&&e.falsePositiveUpper<=n.maxFalsePositiveRate)}function ve(e){if(!e.length)return null;let t=Array.from({length:10},(t,n)=>{let r=e.filter(e=>Math.min(9,Math.floor(e.value*10))===n);return{lower:n/10,upper:(n+1)/10,count:r.length,meanProbability:r.length?r.reduce((e,t)=>e+t.value,0)/r.length:null,observedFrequency:r.length?r.reduce((e,t)=>e+t.label,0)/r.length:null}});return{brier:e.reduce((e,t)=>e+(t.value-t.label)**2,0)/e.length,ece:t.reduce((e,t)=>e+t.count*Math.abs((t.meanProbability??0)-(t.observedFrequency??0)),0)/e.length,bins:t}}function ye(e){let t=_e(e);return{identityInput:F({method:N,schemaVersion:1,input:t}),complete(e){/^[a-f0-9]{64}$/u.test(e)||P();let n=new Map;for(let e of t.observations){let t=S(e.backend,p(e.question)),r=n.get(t)??[];r.push(e),n.set(t,r)}let r={},i=[...n.entries()].sort(([e],[t])=>e<t?-1:+(e>t)).map(([,n])=>{let i=n[0],a=n.filter(e=>e.split===`fit`),o=n.filter(e=>e.split===`validation`),s={...i.backend,calibrationSha256:e},c=S(s,p(i.question)),l=[...new Set(a.map(e=>e.value))].sort((e,t)=>e-t).find(e=>H(V(a,e),i.metricKind,t.policy)),u=l===void 0?null:V(a,l),d=l===void 0?null:V(o,l),f=d!==null&&H(d,i.metricKind,t.policy);return f&&(r[c]={deferBelow:l,actAtOrAbove:l}),{key:c,backend:s,sourceBackend:i.backend,questionDigest:p(i.question),metricKind:i.metricKind,threshold:l??null,status:l===void 0?`insufficient-fit`:f?`validated`:`failed-validation`,fit:u,validation:d,reliability:i.metricKind===`noul-probability`?ve(o):null}});return{schemaVersion:1,method:N,calibrationSha256:e,input:structuredClone(t),groups:structuredClone(i),table:{entries:r}}}}}async function be(e,t,n){try{(typeof e!=`string`||e.length===0||e.length>5242880||new TextEncoder().encode(e).byteLength>5242880||!/^[a-f0-9]{64}$/u.test(t))&&P();let r=await n(e);r!==t&&P();let i=JSON.parse(e);I(i)||P();let a=ye(i.input),o=a.complete(await n(a.identityInput));return F(i)!==F(o)&&P(),{artifact:o,sha256:r}}catch{P()}}var xe=e({MAX_CALIBRATION_BYTES:()=>M,WEB_CALIBRATION_SHA_KEY:()=>W,WEB_CALIBRATION_TEXT_KEY:()=>U,createWebJudgementCalibrationStore:()=>J,getWebJudgementCalibrationState:()=>Z,guardCalibrationCall:()=>$,installWebJudgementCalibration:()=>we,loadWebJudgementCalibration:()=>X,removeWebJudgementCalibration:()=>Q,subscribeWebJudgementCalibration:()=>Te,webJudgementCalibrationStore:()=>Y}),U=`keating:judgement-calibration:artifact`,W=`keating:judgement-calibration:expected-sha256`,Se=async e=>Array.from(new Uint8Array(await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(e))),e=>e.toString(16).padStart(2,`0`)).join(``),G=`This browser could not save or read calibration. Allow local storage and try again.`,K=`Calibration could not be verified. Check the file and its supplied SHA-256.`,q=()=>({ok:!1,error:{code:`cancelled`,retryable:!1}});function J(e){let t={status:`unloaded`,generation:0,error:null,fileSha256:null,models:[]},n=null,r=null,i=null,a=!1,o=new Set,s=()=>{let t=e.storage();return{contents:t?.getItem(`keating:judgement-calibration:artifact`)??null,sha:t?.getItem(`keating:judgement-calibration:expected-sha256`)??null}},c=(e,t)=>!!e&&!!t&&e.contents===t.contents&&e.sha===t.sha,l=n=>{t={...n,generation:t.generation+1};for(let e of o)try{e()}catch{}e.events?.dispatchEvent(new Event(D))},u=e=>{n=null,l({status:`error`,error:e,fileSha256:null,models:[]})},d=async(t,n)=>{let r=await be(t,n,e.digest??Se),i=r.artifact.groups.filter(e=>e.status===`validated`);if(new Set(i.filter(e=>e.backend.backend===`system-one`).map(e=>e.backend.model)).size>1)throw Error(`Choose an artifact containing one hosted model. Multiple hosted models are ambiguous.`);if(!i.length)throw Error(`This artifact has no independently validated question thresholds.`);return r},f=e=>{n=e.artifact;let t=new Map;for(let e of n.groups.filter(e=>e.status===`validated`)){let n=JSON.stringify([e.backend.backend,e.backend.model]),r=t.get(n)??{backend:e.backend.backend,model:e.backend.model,questions:0};r.questions++,t.set(n,r)}l({status:`ready`,error:null,fileSha256:e.sha256,models:[...t.values()]})};function p(){n=null;let e;try{e=s(),r=e}catch{return u(G),Promise.resolve()}if(e.contents===null&&e.sha===null)return l({status:`empty`,error:null,fileSha256:null,models:[]}),Promise.resolve();l({status:`loading`,error:null,fileSha256:null,models:[]});let o=t.generation,m=(async()=>{try{if(e.contents===null||e.sha===null)throw Error();let n=await d(e.contents,e.sha);if(a||o!==t.generation)return;if(!c(e,s())){await p();return}f(n)}catch{!a&&o===t.generation&&u(K)}})();return i=m,m.finally(()=>{i===m&&(i=null)}),m}function m(e){if(a||e!==t.generation||![`ready`,`empty`].includes(t.status))return!1;try{if(!c(r,s()))return p(),!1}catch{return u(G),!1}return!0}let h=e=>{let t=e.key;if(!(t!=null&&t!==`keating:judgement-calibration:artifact`&&t!==`keating:judgement-calibration:expected-sha256`))try{c(r,s())||p()}catch{u(G)}};return e.events?.addEventListener(`storage`,h),{ensureLoaded(){return t.status===`unloaded`?p():i??Promise.resolve()},reload:p,state:()=>structuredClone(t),current:m,subscribe(e){return o.add(e),()=>{o.delete(e)}},dispose(){a=!0,n=null,t={...t,generation:t.generation+1};for(let e of o)e();o.clear(),e.events?.removeEventListener(`storage`,h)},calibration(e,r){if(!m(t.generation)||!n)return{};let i=(e,t)=>{let r=n.groups.filter(n=>n.status===`validated`&&n.backend.backend===e&&(t===void 0||n.backend.model===t));if(r.length)return structuredClone({backend:r[0].backend,table:{entries:Object.fromEntries(r.map(e=>[e.key,n.table.entries[e.key]]))}})};return{local:i(`local`,e),hosted:i(`system-one`,r)}},async install(i,o){n=null,l({status:`loading`,error:null,fileSha256:null,models:[]});let c=t.generation,p;try{p=await d(i,o)}catch(e){let n=e instanceof Error&&(e.message.startsWith(`Choose an artifact`)||e.message.startsWith(`This artifact has no`))?e.message:K;throw c===t.generation&&u(n),Error(n)}if(a||c!==t.generation)throw Error(`Calibration installation was cancelled.`);try{let t=e.storage();if(!t)throw Error();t.setItem(U,i),t.setItem(W,o);let n=s();if(n.contents!==i||n.sha!==o)throw Error();r=n}catch{throw u(G),Error(G)}f(p)},remove(){n=null,l({status:`loading`,error:null,fileSha256:null,models:[]});try{let t=e.storage();if(!t||(t.removeItem(U),t.removeItem(W),r=s(),r.contents!==null||r.sha!==null))throw Error();l({status:`empty`,error:null,fileSha256:null,models:[]})}catch{throw u(G),Error(G)}}}}var Ce;function Y(){return Ce??=J({storage:()=>typeof localStorage>`u`?null:localStorage,events:typeof window>`u`?void 0:window})}var X=()=>Y().ensureLoaded(),Z=()=>Y().state(),we=(e,t)=>Y().install(e,t),Q=()=>Y().remove(),Te=e=>Y().subscribe(e);function $(e,t,n){return async(r,i)=>{if(i?.aborted||!t.current(n))return q();let a=new AbortController,o,s=new Promise(e=>{o=()=>{a.abort(),e(q())}}),c=t.subscribe(()=>{t.current(n)||o()});i?.addEventListener(`abort`,o,{once:!0});try{if(i?.aborted||!t.current(n))return q();let o=await Promise.race([e(r,a.signal),s]);return a.signal.aborted||!t.current(n)?q():o}finally{c(),i?.removeEventListener(`abort`,o)}}}export{o as A,_ as C,re as D,C as E,p as F,m as I,s as M,u as N,S as O,h as P,w as S,oe as T,T as _,X as a,x as b,Y as c,ce as d,le as f,b as g,he as h,we as i,a as j,c as k,M as l,me as m,Z as n,Q as o,pe as p,$ as r,Te as s,xe as t,O as u,ae as v,v as w,y as x,ie as y};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./createLucideIcon-C_7xXnHN.js";var t=e(`circle-question-mark`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3`,key:`1u773s`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]);export{t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./createLucideIcon-C_7xXnHN.js";var t=e(`clipboard-list`,[[`rect`,{width:`8`,height:`4`,x:`8`,y:`2`,rx:`1`,ry:`1`,key:`tgr4d6`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`,key:`116196`}],[`path`,{d:`M12 11h4`,key:`1jrz19`}],[`path`,{d:`M12 16h4`,key:`n85exb`}],[`path`,{d:`M8 11h.01`,key:`1dfujw`}],[`path`,{d:`M8 16h.01`,key:`18s6g9`}]]);export{t};
|
package/web/.output/public/assets/{course-assembly-BIf5lrcx.js → course-assembly-CQE_9Vh4.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dist-
|
|
2
|
-
import{n as e}from"./nodepod-wasm-BWaXBLCc.js";import{Kt as t,Ut as n,Wt as r}from"./index-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dist-Dq5mGdi-.js","assets/rolldown-runtime-BG2f4sTM.js","assets/syntax-highlighter-Buac5fmw.js","assets/index-DCgpDQKf.js","assets/operation-kDIu8RLw.js","assets/calibration-7gf-WNR5.js","assets/local-setting-MxAmyvqH.js","assets/desktop-offline-IzFtwAhh.js","assets/nodepod-wasm-BWaXBLCc.js","assets/public-client-CqivHtfG.js","assets/notorganic-desktop-Dx4qYMPd.js","assets/srs-BBTX4fCR.js","assets/event-stream-qbAZIAKV.js","assets/__vite-browser-external-BiaOLN6f.js","assets/utils-DKF99Hx-.js","assets/with-selector-Csw1EGl2.js","assets/index-CqQiLJzM.css","assets/library-Dt_HrttW.js","assets/shared-renderer-hMxAoPZb.js","assets/CategoricalChart-BVb9-7_N.js","assets/linear-DejSkYQ6.js","assets/step-BMMfLPEQ.js","assets/defaultLocale-C8Fc0cco.js","assets/init-Cs1-1e_z.js","assets/ordinal-Bk3GG8mf.js","assets/time-C7QpgFTP.js","assets/band-DdF7Y76D.js","assets/math-Bi_r_ZWc.js","assets/createLucideIcon-C_7xXnHN.js","assets/triangle-alert-cr9L64pJ.js","assets/activity-DdJDHeam.js","assets/arrow-left-DwKFZ0Rg.js","assets/arrow-right-C8ipxfSs.js","assets/MarkdownBlock-C89ecD-M.js","assets/nodepod-runtime-DjuxBODo.js","assets/circle-alert-D3ZnhkzN.js","assets/loader-circle-NSGC9iIj.js","assets/check-BQLdkQGc.js","assets/Select-BYfJxqbI.js","assets/Check-C4euVM-9.js","assets/recipes-lg2hVa6Q.js","assets/Select-Cny3BCsZ.css","assets/x-dksMGet2.js","assets/MarkdownBlock-fSCRd6K0.css","assets/clock-3--4K486gi.js","assets/FlashcardTimer-vPNL9_0N.js","assets/FlashcardTimer-y93y2Hvj.css","assets/providers-BI0JpH9j.js","assets/shared-renderer-DHmqXxOs.css","assets/from-study-plan-D14XtwuX.js","assets/circle-check-B3pGmp0Q.js","assets/QuizRenderer-DaPQ7ySS.js","assets/FlashcardShaderField-JGgL2kgp.js","assets/chevron-right-CtU0hmKY.js","assets/trending-up-CAMFqCxl.js","assets/book-open-check-vvzSWP24.js","assets/info-CGMF4Cdc.js","assets/notebook-pen-B5BMXnIB.js","assets/FlashcardRenderer-iDgfcwk4.js","assets/circle-dot-iMK6vtYt.js","assets/flame-VMBkC42I.js","assets/sun-DMbmf-Gm.js","assets/FlashcardRenderer-Zv_ZsC4F.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{n as e}from"./nodepod-wasm-BWaXBLCc.js";import{Kt as t,Ut as n,Wt as r}from"./index-DCgpDQKf.js";import{t as i}from"./from-study-plan-D14XtwuX.js";import{t as a}from"./createLucideIcon-C_7xXnHN.js";import{t as o}from"./segments-BuQ4O8Bd.js";import{a as s,i as c}from"./anki-package-BWx15W_D.js";var l=a(`shapes`,[[`path`,{d:`M8.3 10a.7.7 0 0 1-.626-1.079L11.4 3a.7.7 0 0 1 1.198-.043L16.3 8.9a.7.7 0 0 1-.572 1.1Z`,key:`1bo67w`}],[`rect`,{x:`3`,y:`14`,width:`7`,height:`7`,rx:`1`,key:`1bkyp8`}],[`circle`,{cx:`17.5`,cy:`17.5`,r:`3.5`,key:`w3z12y`}]]),u=a(`users`,[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`,key:`16gr8j`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`,key:`kshegd`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]),d=`.apkg,.txt,.tsv,.csv`,f=1e4,p=500;function m(e){return/\.(apkg|txt|tsv|csv)$/i.test(e.trim())}async function h(e){if(!m(e.name))throw Error(`Choose an Anki .apkg export, or a .txt, .tsv, or .csv card file.`);let t=e.name.toLowerCase().endsWith(`.apkg`)?await c(new Uint8Array(await e.arrayBuffer())):s(await e.text(),e.name);return{fileName:e.name,decks:t.decks,cardCount:t.cardCount,warnings:t.warnings,format:t.collectionFormat}}function g(e){return(e.split(`::`).pop()??e).trim().toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,64)}function _(e){return e.map(e=>{let t=g(e.title);return t?{...e,cards:e.cards.map(e=>({...e,tags:[...new Set([...e.tags??[],t])].slice(0,24)}))}:e})}function v(e,t){let n=new Map(e.map(e=>[e.id,e]));for(let e of t)n.set(e.id,e);return[...n.values()]}function y(e,t){return JSON.stringify([e.trim().toLowerCase(),t.trim().toLowerCase()])}function b(e){let t=2166136261;for(let n=0;n<e.length;n+=1)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return(t>>>0).toString(36)}function x(e,t){return`card_anki_${b(t.anki?.noteGuid?`note:${t.anki.noteGuid}:card:${t.anki.cardId}`:t.anki?.cardId===void 0?`${e.id}:${t.id}`:`deck:${t.anki.deckId}:card:${t.anki.cardId}`)}`}function S(e,t={}){let n=new Set((t.existingCards??[]).map(e=>y(e.front,e.back))),r=new Set((t.existingCards??[]).flatMap(e=>e.id?[e.id]:[])),i=Math.max(0,t.capacity??f-(t.existingCards?.length??0)),a=[],o=0,s=0,c=0;for(let l of e){let e=t.tagWithDeck===!1?``:g(l.title);for(let u of l.cards){let d=u.front.trim().slice(0,1e4),f=u.back.trim().slice(0,2e4);if(!d||!f)continue;let p=y(d,f);if(n.has(p)){o+=1;continue}let m=x(l,u),h=r.has(m);if(!h&&c>=i){s+=1;continue}h||(c+=1),n.add(p),a.push({id:m,front:d,back:f,tags:[...new Set([...u.tags??[],...e?[e]:[]].map(e=>e.trim().slice(0,64)).filter(Boolean))].slice(0,24),...t.lessonId?{lessonId:t.lessonId}:{}})}}return{cards:a,duplicates:o,overflow:s}}function C(e,t=p){let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}function w(e,t){let n=[`${t.cards.length} card${t.cards.length===1?``:`s`} ready`];return t.duplicates&&n.push(`${t.duplicates} already in this course`),t.overflow&&n.push(`${t.overflow} over the course card limit`),e.decks.length>1&&n.push(`${e.decks.length} decks`),n.join(` · `)}function T(e,t){let n=[...e.matchAll(/^##\s+(.+?)\s*$/gm)];return n.length?n.slice(0,12).map((t,r)=>{let i=(t.index??0)+t[0].length,a=n[r+1]?.index??e.length;return{id:`section_${r+1}`,title:t[1]?.trim()||`Section ${r+1}`,detail:e.slice(i,a).trim()}}):[{id:`lesson`,title:t,detail:e.trim()}]}function E(e){return{id:`artifact:${e.id}`,planId:`artifact_${e.id}`,title:e.topic.trim()||`Untitled lesson plan`,overview:`Saved lesson plan from Keating.`,items:T(e.content,e.topic.trim()||`Lesson`),sessionId:e.sessionId??`saved-artifacts`,sessionTitle:`Saved lesson plans`,lastModified:new Date(e.updatedAt).toISOString()}}function D(e){if(!e||typeof e!=`object`||e.role!==`assistant`)return``;let t=e.content;return typeof t==`string`?t:Array.isArray(t)?t.flatMap(e=>{if(!e||typeof e!=`object`)return[];let t=typeof e.text==`string`?e.text:``,n=e.__toolResult;return[t,typeof n==`string`?n:Array.isArray(n)?n.map(e=>e&&typeof e==`object`&&typeof e.text==`string`?e.text:``).join(`
|
|
3
3
|
`):``]}).filter(Boolean).join(`
|
|
4
|
-
`):``}var O=String.raw`("(?:[^"\\]|\\.)*"|[^>]+)`,k=new RegExp(String.raw`<keating-(quiz|image)\s+json=${O}\s*\/>`,`g`);function A(e){let t=JSON.parse(e);return typeof t==`string`?JSON.parse(t):t}function j(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.topic==`string`&&typeof t.slug==`string`&&Array.isArray(t.questions)&&t.questions.length>0}function M(e,t,n){let r=[];k.lastIndex=0;for(let i of e.matchAll(k)){let e=i[1],a=i[2];if(!(!e||!a))try{let o=A(a);if(e===`quiz`&&j(o)&&r.push({id:`chat:${t.id}:quiz:${o.slug}`,kind:`quiz`,format:`quiz`,title:`${o.topic} quiz`,description:`${o.questions.length} interactive question${o.questions.length===1?``:`s`} from chat.`,content:JSON.stringify(o),sourceId:o.slug,sourceSessionId:t.id,sourceLabel:`Chat · ${t.title}`,createdAt:Date.parse(t.lastModified)}),e===`image`&&o&&typeof o==`object`){let e=o,a=typeof e.dataUrl==`string`?e.dataUrl:typeof e.svg==`string`?`data:image/svg+xml;charset=utf-8,${encodeURIComponent(e.svg)}`:``;a&&r.push({id:`chat:${t.id}:image:${n+1}:${i.index??r.length}`,kind:`image`,format:`image`,title:typeof e.title==`string`?e.title:`Generated learning image`,...typeof e.alt==`string`?{description:e.alt}:{},content:a,sourceSessionId:t.id,sourceLabel:`Chat · ${t.title}`,createdAt:Date.parse(t.lastModified)})}}catch{}}return k.lastIndex=0,r}function N(e){let t=new Map;for(let[n,r]of e.messages.entries()){let i=D(r);for(let r of M(i,e,n))t.set(r.id,r);for(let n of o(i,e.id)){if(n.type!==`openui`||!n.complete||!n.program.trim())continue;let r=n.program.includes(`Quiz(`)?`quiz`:n.program.includes(`StudyPlan(`)?`lesson-plan`:`openui`;t.set(`chat:${e.id}:openui:${n.metadata.id}`,{id:`chat:${e.id}:openui:${n.metadata.id}`,kind:r,format:`openui`,title:`${e.title} · ${r===`quiz`?`interactive quiz`:r===`lesson-plan`?`interactive plan`:`generated interaction`}`,description:`Saved GenUI surface from Keating chat.`,content:n.program,sourceId:n.metadata.id,sourceSessionId:e.id,sourceLabel:`Chat · ${e.title}`,createdAt:Date.parse(e.lastModified)})}}return[...t.values()]}function P(e,t){return e?.trim()?`${e.trim()} ${t}`:t.charAt(0).toUpperCase()+t.slice(1)}function F(e){return[...e.plans.map(e=>({id:`saved:plan:${e.id}`,kind:e.metadata?.type===`quiz`?`quiz`:`lesson-plan`,format:`markdown`,title:e.metadata?.type===`quiz`?P(e.topic,`quiz`):P(e.topic,`lesson plan`),description:e.metadata?.type===`quiz`?`Saved quiz and answer key.`:`Saved deterministic lesson plan.`,content:e.content,sourceId:e.id,...e.sessionId?{sourceSessionId:e.sessionId}:{},sourceLabel:`Saved artifacts · Plans`,createdAt:e.updatedAt})),...e.maps.map(e=>({id:`saved:map:${e.id}`,kind:`lesson-map`,format:`mermaid`,title:P(e.topic,`map`),description:`Saved concept or lesson map.`,content:e.mmdContent,sourceId:e.id,...e.sessionId?{sourceSessionId:e.sessionId}:{},sourceLabel:`Saved artifacts · Maps`,createdAt:e.createdAt})),...e.animations.map(e=>({id:`saved:animation:${e.id}`,kind:`animation`,format:`animation`,title:P(e.topic,`animation`),description:`Saved narrated or interactive animation.`,content:JSON.stringify({storyboard:e.storyboard,scene:e.scene,manifest:e.manifest,renderer:e.renderer}),sourceId:e.id,...e.sessionId?{sourceSessionId:e.sessionId}:{},sourceLabel:`Saved artifacts · Animations`,createdAt:e.createdAt})),...e.verifications.map(e=>({id:`saved:verification:${e.id}`,kind:`verification`,format:`markdown`,title:P(e.topic,`verification`),description:`Saved verification checklist.`,content:e.checklist,sourceId:e.id,...e.sessionId?{sourceSessionId:e.sessionId}:{},sourceLabel:`Saved artifacts · Verifications`,createdAt:e.createdAt})),...e.benchmarks.map(e=>({id:`saved:benchmark:${e.id}`,kind:`benchmark`,format:`markdown`,title:P(e.topic,`benchmark`),description:`Saved teaching benchmark · score ${e.score.toFixed(1)}.`,content:e.trace?`${e.report}\n\n## Trace\n\n\`\`\`text\n${e.trace}\n\`\`\``:e.report,sourceId:e.id,...e.sessionId?{sourceSessionId:e.sessionId}:{},sourceLabel:`Saved artifacts · Benchmarks`,createdAt:e.createdAt})),...e.evolutions.map(e=>({id:`saved:evolution:${e.id}`,kind:`evolution`,format:`markdown`,title:P(e.topic,`policy evolution`),description:`Saved policy evolution · best score ${e.bestScore.toFixed(1)}.`,content:`${e.report}\n\n## Selected policy\n\n\`\`\`json\n${e.policy}\n\`\`\``,sourceId:e.id,...e.sessionId?{sourceSessionId:e.sessionId}:{},sourceLabel:`Saved artifacts · Evolutions`,createdAt:e.createdAt})),...e.promptEvolutions.map(e=>({id:`saved:prompt-evolution:${e.id}`,kind:`prompt-evolution`,format:`markdown`,title:`${e.promptName} prompt evolution`,description:`Saved prompt evolution · best score ${e.bestScore.toFixed(1)}.`,content:`${e.report}\n\n## Evolved prompt\n\n\`\`\`text\n${e.bestPrompt}\n\`\`\``,sourceId:e.id,...e.sessionId?{sourceSessionId:e.sessionId}:{},sourceLabel:`Saved artifacts · Prompt evolutions`,createdAt:e.createdAt}))].sort((e,t)=>t.createdAt-e.createdAt)}function I(e,t){if(!e||typeof e!=`object`)return;let n=e;if(n.typeName===`StudyPlan`&&t.push(n),Array.isArray(e)){for(let n of e)I(n,t);return}for(let n of Object.values(e))I(n,t)}function L(e,t){if(!e.props||typeof e.props!=`object`)return null;let n=e.props;return typeof n.id!=`string`||typeof n.title!=`string`||!Array.isArray(n.items)?null:{id:`${t.id}:${n.id}`,planId:n.id,title:n.title,...typeof n.overview==`string`?{overview:n.overview}:{},items:n.items,sessionId:t.id,sessionTitle:t.title,lastModified:t.lastModified}}async function R(t){let[{createParser:n},{keatingOpenUILibrary:r}]=await Promise.all([e(()=>import(`./dist-
|
|
4
|
+
`):``}var O=String.raw`("(?:[^"\\]|\\.)*"|[^>]+)`,k=new RegExp(String.raw`<keating-(quiz|image)\s+json=${O}\s*\/>`,`g`);function A(e){let t=JSON.parse(e);return typeof t==`string`?JSON.parse(t):t}function j(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.topic==`string`&&typeof t.slug==`string`&&Array.isArray(t.questions)&&t.questions.length>0}function M(e,t,n){let r=[];k.lastIndex=0;for(let i of e.matchAll(k)){let e=i[1],a=i[2];if(!(!e||!a))try{let o=A(a);if(e===`quiz`&&j(o)&&r.push({id:`chat:${t.id}:quiz:${o.slug}`,kind:`quiz`,format:`quiz`,title:`${o.topic} quiz`,description:`${o.questions.length} interactive question${o.questions.length===1?``:`s`} from chat.`,content:JSON.stringify(o),sourceId:o.slug,sourceSessionId:t.id,sourceLabel:`Chat · ${t.title}`,createdAt:Date.parse(t.lastModified)}),e===`image`&&o&&typeof o==`object`){let e=o,a=typeof e.dataUrl==`string`?e.dataUrl:typeof e.svg==`string`?`data:image/svg+xml;charset=utf-8,${encodeURIComponent(e.svg)}`:``;a&&r.push({id:`chat:${t.id}:image:${n+1}:${i.index??r.length}`,kind:`image`,format:`image`,title:typeof e.title==`string`?e.title:`Generated learning image`,...typeof e.alt==`string`?{description:e.alt}:{},content:a,sourceSessionId:t.id,sourceLabel:`Chat · ${t.title}`,createdAt:Date.parse(t.lastModified)})}}catch{}}return k.lastIndex=0,r}function N(e){let t=new Map;for(let[n,r]of e.messages.entries()){let i=D(r);for(let r of M(i,e,n))t.set(r.id,r);for(let n of o(i,e.id)){if(n.type!==`openui`||!n.complete||!n.program.trim())continue;let r=n.program.includes(`Quiz(`)?`quiz`:n.program.includes(`StudyPlan(`)?`lesson-plan`:`openui`;t.set(`chat:${e.id}:openui:${n.metadata.id}`,{id:`chat:${e.id}:openui:${n.metadata.id}`,kind:r,format:`openui`,title:`${e.title} · ${r===`quiz`?`interactive quiz`:r===`lesson-plan`?`interactive plan`:`generated interaction`}`,description:`Saved GenUI surface from Keating chat.`,content:n.program,sourceId:n.metadata.id,sourceSessionId:e.id,sourceLabel:`Chat · ${e.title}`,createdAt:Date.parse(e.lastModified)})}}return[...t.values()]}function P(e,t){return e?.trim()?`${e.trim()} ${t}`:t.charAt(0).toUpperCase()+t.slice(1)}function F(e){return[...e.plans.map(e=>({id:`saved:plan:${e.id}`,kind:e.metadata?.type===`quiz`?`quiz`:`lesson-plan`,format:`markdown`,title:e.metadata?.type===`quiz`?P(e.topic,`quiz`):P(e.topic,`lesson plan`),description:e.metadata?.type===`quiz`?`Saved quiz and answer key.`:`Saved deterministic lesson plan.`,content:e.content,sourceId:e.id,...e.sessionId?{sourceSessionId:e.sessionId}:{},sourceLabel:`Saved artifacts · Plans`,createdAt:e.updatedAt})),...e.maps.map(e=>({id:`saved:map:${e.id}`,kind:`lesson-map`,format:`mermaid`,title:P(e.topic,`map`),description:`Saved concept or lesson map.`,content:e.mmdContent,sourceId:e.id,...e.sessionId?{sourceSessionId:e.sessionId}:{},sourceLabel:`Saved artifacts · Maps`,createdAt:e.createdAt})),...e.animations.map(e=>({id:`saved:animation:${e.id}`,kind:`animation`,format:`animation`,title:P(e.topic,`animation`),description:`Saved narrated or interactive animation.`,content:JSON.stringify({storyboard:e.storyboard,scene:e.scene,manifest:e.manifest,renderer:e.renderer}),sourceId:e.id,...e.sessionId?{sourceSessionId:e.sessionId}:{},sourceLabel:`Saved artifacts · Animations`,createdAt:e.createdAt})),...e.verifications.map(e=>({id:`saved:verification:${e.id}`,kind:`verification`,format:`markdown`,title:P(e.topic,`verification`),description:`Saved verification checklist.`,content:e.checklist,sourceId:e.id,...e.sessionId?{sourceSessionId:e.sessionId}:{},sourceLabel:`Saved artifacts · Verifications`,createdAt:e.createdAt})),...e.benchmarks.map(e=>({id:`saved:benchmark:${e.id}`,kind:`benchmark`,format:`markdown`,title:P(e.topic,`benchmark`),description:`Saved teaching benchmark · score ${e.score.toFixed(1)}.`,content:e.trace?`${e.report}\n\n## Trace\n\n\`\`\`text\n${e.trace}\n\`\`\``:e.report,sourceId:e.id,...e.sessionId?{sourceSessionId:e.sessionId}:{},sourceLabel:`Saved artifacts · Benchmarks`,createdAt:e.createdAt})),...e.evolutions.map(e=>({id:`saved:evolution:${e.id}`,kind:`evolution`,format:`markdown`,title:P(e.topic,`policy evolution`),description:`Saved policy evolution · best score ${e.bestScore.toFixed(1)}.`,content:`${e.report}\n\n## Selected policy\n\n\`\`\`json\n${e.policy}\n\`\`\``,sourceId:e.id,...e.sessionId?{sourceSessionId:e.sessionId}:{},sourceLabel:`Saved artifacts · Evolutions`,createdAt:e.createdAt})),...e.promptEvolutions.map(e=>({id:`saved:prompt-evolution:${e.id}`,kind:`prompt-evolution`,format:`markdown`,title:`${e.promptName} prompt evolution`,description:`Saved prompt evolution · best score ${e.bestScore.toFixed(1)}.`,content:`${e.report}\n\n## Evolved prompt\n\n\`\`\`text\n${e.bestPrompt}\n\`\`\``,sourceId:e.id,...e.sessionId?{sourceSessionId:e.sessionId}:{},sourceLabel:`Saved artifacts · Prompt evolutions`,createdAt:e.createdAt}))].sort((e,t)=>t.createdAt-e.createdAt)}function I(e,t){if(!e||typeof e!=`object`)return;let n=e;if(n.typeName===`StudyPlan`&&t.push(n),Array.isArray(e)){for(let n of e)I(n,t);return}for(let n of Object.values(e))I(n,t)}function L(e,t){if(!e.props||typeof e.props!=`object`)return null;let n=e.props;return typeof n.id!=`string`||typeof n.title!=`string`||!Array.isArray(n.items)?null:{id:`${t.id}:${n.id}`,planId:n.id,title:n.title,...typeof n.overview==`string`?{overview:n.overview}:{},items:n.items,sessionId:t.id,sessionTitle:t.title,lastModified:t.lastModified}}async function R(t){let[{createParser:n},{keatingOpenUILibrary:r}]=await Promise.all([e(()=>import(`./dist-Dq5mGdi-.js`).then(e=>e.r),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16])),e(()=>import(`./library-Dt_HrttW.js`).then(e=>e.n),__vite__mapDeps([17,1,2,4,5,6,7,8,9,10,11,3,12,13,14,15,16,0,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62]))]),i=n(r.toJSONSchema()),a=new Map;for(let e of t.messages){let n=D(e);if(n.includes(`StudyPlan(`)){for(let e of o(n,t.id))if(!(e.type!==`openui`||!e.complete||!e.program.includes(`StudyPlan(`)))try{let n=i.parse(e.program);if(n.meta.errors.length>0||n.meta.unresolved.length>0)continue;let r=[];I(n.root,r);for(let e of r){let n=L(e,t);n&&a.set(n.planId,n)}}catch{}}}return[...a.values()]}async function z(){await n();let[e,i,a,o,s,c,l,u,d]=await Promise.all([t.getAllMetadata(),r.getDecks(),r.getLessonPlans(),r.getLessonMaps(),r.getAnimations(),r.getVerifications(),r.getBenchmarks(),r.getEvolutions(),r.getPromptEvolutions()]),f=e.filter(e=>!e.hiddenAlternative).filter(e=>e.searchText===void 0||e.searchText.includes(`StudyPlan(`)||e.searchText.includes("```openui")||e.searchText.includes(`<keating-quiz`)||e.searchText.includes(`<keating-image`)).sort((e,t)=>t.lastModified.localeCompare(e.lastModified)),p=(await Promise.all(f.map(e=>t.loadSession(e.id)))).filter(e=>!!e),m=(await Promise.all(p.map(R))).flat(),h=a.filter(e=>e.metadata?.type!==`quiz`).map(E).sort((e,t)=>t.lastModified.localeCompare(e.lastModified));return{plans:[...m,...h],decks:[...i].sort((e,t)=>t.updatedAt-e.updatedAt),artifacts:[...p.flatMap(N),...F({plans:a,maps:o,animations:s,verifications:c,benchmarks:l,evolutions:u,promptEvolutions:d})].sort((e,t)=>t.createdAt-e.createdAt)}}async function B(){return(await z()).artifacts}function V(e,t){return`${e}_${t.join(`_`).normalize(`NFKD`).replace(/[\u0300-\u036f]/g,``).replace(/[^A-Za-z0-9_-]+/g,`_`).replace(/^_+|_+$/g,``).slice(0,Math.max(2,95-e.length))||`item`}`.slice(0,96)}function H(e,t,n,r){let i=V(`lesson`,[t+1,n+1,r+1,e.title]);return{...e,id:i,materialIds:[],cardIds:[],...e.exercise?{exercise:{...e.exercise,id:V(`exercise`,[t+1,n+1,r+1])}}:{}}}function U(e,t){let n=e.moduleIds?new Set(e.moduleIds):null;return i(n?{...e.source,items:e.source.items.filter(e=>n.has(e.id))}:e.source).modules.map((e,n)=>({...e,id:V(`module`,[t+1,n+1,e.title]),lessons:e.lessons.map((e,r)=>H(e,t,n,r))}))}function W(e,t){return[...new Set(e.map(e=>e.trim()).filter(Boolean))].slice(0,t)}function G(e){let t=e.plans??[],n=e.decks??[],r=e.artifacts??[],a=r.find(e=>e.content.length>8e6);if(a)throw Error(`“${a.title}” is too large to copy into a new course. Create the course first, then add it as a document or image upload.`);let o=t.flatMap(U).slice(0,48),s=W(t.flatMap(({source:e})=>i(e).outcomes),24),c=n.flatMap((e,t)=>e.cards.map((e,n)=>({id:V(`card`,[t+1,n+1,e.id]),front:e.front.slice(0,1e4),back:e.back.slice(0,2e4),tags:W(e.tags??[],24).map(e=>e.slice(0,64))}))).slice(0,1e4),l=r.slice(0,1e3).map((e,t)=>({id:V(`artifact`,[t+1,e.kind,e.sourceId??e.id]),kind:e.kind,format:e.format,title:e.title.slice(0,240),...e.description?{description:e.description.slice(0,2e3)}:{},content:e.content,...e.sourceId?{sourceId:e.sourceId}:{},...e.sourceSessionId?{sourceSessionId:e.sourceSessionId}:{}})),u=t[0]?.source;return{title:e.title?.trim().slice(0,240)||u?.title.slice(0,240)||`Untitled course`,description:e.description?.trim().slice(0,4e3)||u?.overview?.slice(0,4e3)||`A course ready to assemble.`,outcomes:s,modules:o,cards:c,artifacts:l,assignments:[],settings:{teacherAccessPolicy:`request`,allowPeerDeckEdits:!0,allowPeerComments:!0}}}export{C as a,h as c,u as d,l as f,d as i,w as l,B as n,S as o,z as r,v as s,G as t,_ as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-BG2f4sTM.js";import{n as t,o as n}from"./from-study-plan-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-BG2f4sTM.js";import{n as t,o as n}from"./from-study-plan-D14XtwuX.js";var r=e({buildCourseSubmissionSnapshot:()=>i});async function i(e,r){let i=[],a=e.course,o=r.kind===`lesson`?a.submissions.find(e=>e.id===r.submissionId):a.assignmentSubmissions.find(e=>e.id===r.submissionId),s=r.kind===`assignment`&&o&&`assignmentId`in o?a.assignments.find(e=>e.id===o.assignmentId):void 0,c=o&&`lessonId`in o?o.lessonId:s?.lessonId,l=a.modules.flatMap(e=>e.lessons).find(e=>e.id===c),u=r.kind===`lesson`&&o&&`exerciseId`in o&&l?.exercise?.id===o.exerciseId?l.exercise:void 0,d=(e,n,r)=>t(i,e,n,r),f=e.permissions.canReview?!o||!s&&!u?`no-content`:null:`permission`,p=[];return o&&(t(i,`submission/${o.id}/answer`,`Submitted answer`,o.answer,!0),(!o.answer.trim()||/^\s*https?:\/\/\S+\s*$/i.test(o.answer))&&(f??=`unseen-work`),`attachments`in o&&o.attachments?.length&&p.push(`Attachments were not opened. This suggestion covers submitted text only.`)),u&&(d(`exercise/${u.id}/prompt`,`Task instructions`,u.prompt),u.rubric.forEach((e,t)=>d(`exercise/${u.id}/rubric/${t}`,`Task rubric ${t+1}`,e))),s&&(d(`assignment/${s.id}/brief`,`Task instructions`,s.brief),s.rubric.forEach((e,t)=>d(`assignment/${s.id}/rubric/${t}`,`Task rubric ${t+1}`,e)),s.deliverables.forEach((e,t)=>d(`assignment/${s.id}/deliverables/${t}`,`Required deliverable ${t+1}`,e)),s.taskItems?.forEach(e=>d(`assignment/${s.id}/item/${e.id}`,e.title,e.detail??e.title))),l&&(d(`lesson/${l.id}/reading`,`Task reference reading`,l.reading),l.materialIds.length&&p.push(`Linked lesson materials were not opened.`)),n(e,r,i,p,f,o?{version:o.version,updatedAt:o.updatedAt}:null)}export{r as n,i as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Mn as e}from"./index-
|
|
1
|
+
import{Mn as e}from"./index-DCgpDQKf.js";import{x as t}from"./shared-renderer-hMxAoPZb.js";async function n(n){let{utterance:r,customModel:i,getApiKey:a,signal:o}=n;if(!i)throw Error(`Custom TTS provider requires a customModel configuration.`);let s=i,c=await a(s.providerKey);if(!c)throw Error(`No API key configured for "${s.providerKey}". Add one in Settings → Providers & Models.`);let l=s.apiPath||`/v1/audio/speech`,u=`${s.baseUrl.replace(/\/$/,``)}${l}`;return{audioChunks:1,playedChunks:+!!await t(await(await e(async()=>{let e=await fetch(u,{method:`POST`,headers:{"Content-Type":`application/json`,Authorization:`Bearer ${c}`},body:JSON.stringify({model:s.model,voice:r.voice||s.voice,input:r.text,response_format:`mp3`}),signal:o});if(!e.ok){let t=await e.text().catch(()=>``),n=e.headers.get(`retry-after`);throw Error(`${s.label} TTS request failed (${e.status}): ${t.slice(0,200)||e.statusText}${n?` retry-after: ${n}`:``}`)}return e},{signal:o})).blob(),{signal:o}).catch(()=>!1),transcript:r.text}}var r={id:`custom-tts`,label:`Custom TTS`,kind:`tts`,status:`stable`,description:`OpenAI-compatible /v1/audio/speech endpoint configured by you.`,models:[],voices:[],synthesize:n};export{r as customTtsProvider};
|