evals-lab 0.12.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/CHANGELOG.md +88 -0
  2. package/README.md +2 -2
  3. package/bin/run.js +4 -2
  4. package/lab/VERSION +1 -1
  5. package/lab/demo/CREDITS.md +14 -0
  6. package/lab/demo/datasets/demo-1.json +2 -2
  7. package/lab/demo/datasets/demo-2.json +2 -2
  8. package/lab/demo/datasets/documents-type.json +79 -0
  9. package/lab/demo/datasets/documents-valid.json +117 -0
  10. package/lab/demo/datasets/sentiment.json +2 -2
  11. package/lab/demo/datasets/weather-alerts.json +2 -2
  12. package/lab/demo/datasets/wordings.json +1 -1
  13. package/lab/demo/manifest.json +3 -3
  14. package/lab/demo/pipelines/demo-1.json +4 -4
  15. package/lab/demo/pipelines/demo-2.json +4 -4
  16. package/lab/demo/pipelines/documents.json +102 -0
  17. package/lab/demo/pipelines/sentiment.json +4 -4
  18. package/lab/demo/pipelines/weather-alerts.json +9 -5
  19. package/lab/demo/pipelines/wordings.json +3 -3
  20. package/lab/demo/sources/Demo 1/source.json +1 -1
  21. package/lab/demo/sources/Demo 2/source.json +1 -1
  22. package/lab/demo/sources/documents/invoice.pdf +65 -0
  23. package/lab/demo/sources/documents/letter.pdf +63 -0
  24. package/lab/demo/sources/documents/not-a-pdf.pdf +2 -0
  25. package/lab/demo/sources/documents/receipt.pdf +62 -0
  26. package/lab/demo/sources/documents/report.pdf +59 -0
  27. package/lab/demo/sources/documents/source.json +3 -0
  28. package/lab/demo/sources/documents/truncated.pdf +19 -0
  29. package/lab/demo/sources/sentiment/source.json +1 -1
  30. package/lab/demo/sources/weather-alerts/source.json +1 -1
  31. package/lab/evals-core.mjs +382 -84
  32. package/lab/flows/record.mjs +5 -4
  33. package/lab/flows/wdl.mjs +19 -0
  34. package/lab/kinds/list.mjs +77 -23
  35. package/lab/metrics/builtin.mjs +34 -7
  36. package/lab/run-evals.js +33 -12
  37. package/lab/server.py +668 -108
  38. package/lab/web/dist/assets/gallery-qrf0ZGXK.js +5 -0
  39. package/lab/web/dist/assets/main-D6xARg2A.js +16 -0
  40. package/lab/web/dist/assets/main-xVU6J7Gi.css +1 -0
  41. package/lab/web/dist/assets/tokens-C8dqXDHN.js +62 -0
  42. package/lab/web/dist/assets/tokens-tQ7zTPkd.css +1 -0
  43. package/lab/web/dist/gallery.html +3 -3
  44. package/lab/web/dist/index.html +4 -4
  45. package/package.json +1 -1
  46. package/lab/web/dist/assets/gallery-CFntjQFG.js +0 -5
  47. package/lab/web/dist/assets/main-BlTG2i20.css +0 -1
  48. package/lab/web/dist/assets/main-D6MNWqak.js +0 -17
  49. package/lab/web/dist/assets/tokens-DwzzdSIF.css +0 -1
  50. package/lab/web/dist/assets/tokens-bvuNFuYg.js +0 -60
@@ -0,0 +1,5 @@
1
+ import{$t as e,Bt as t,Cn as n,Ct as r,Dn as i,Dt as a,En as o,Gt as s,Jt as c,Kt as l,Mt as u,Nt as d,Pt as ee,Rt as f,Sn as te,St as ne,Tt as re,Vt as ie,Wt as p,Xt as m,Zt as ae,_n as oe,bn as se,bt as ce,dn as h,en as g,gn as le,gt as _,hn as ue,ht as de,in as fe,ir as pe,jt as v,l as me,ln as y,mt as he,n as ge,pn as _e,qt as b,rn as ve,rr as ye,rt as be,s as x,sn as xe,st as S,un as Se,vt as Ce,xn as we,xt as Te,yt as Ee,zt as C}from"./tokens-C8dqXDHN.js";var w=pe(),De=ye(),T=[{id:`text`,label:`Plain text`,settings:[]},{id:`list`,label:`List`,settings:[{key:`parse`,label:`Parse as`,type:`select`,choices:[{value:`csv`,label:`CSV`},{value:`lines`,label:`One a line`},{value:`json`,label:`JSON array`}]}]}],E=[{id:`case`,label:`Case`,accepts:[`list`],options:[{key:`mode`,label:`Mode`,type:`select`,choices:[{value:`LOWER`,label:`lower`},{value:`SENTENCE`,label:`Sentence`},{value:`TITLE`,label:`Title`},{value:`UPPER`,label:`UPPER`},{value:`NONE`,label:`As replied`}]}],defaults:()=>({type:`case`,mode:`LOWER`})},{id:`join`,label:`Join`,accepts:[`list`],options:[{key:`with`,label:`Separator`,type:`text`}],defaults:()=>({type:`join`,with:`, `})}],Oe=[{name:`language`,type:`value`,value:`English UK`},{name:`geo-location`,type:`value`,value:`Hamilton, Waikato, New Zealand`},{name:`geo`,type:`block`,enabled:!1}],ke=[{path:`group/open`,title:`Group, open`},{path:`group/closed`,title:`Group, closed with a note`},{path:`group/no-menu`,title:`Group without actions`},{path:`group/sub`,title:`Sub-group, level 3`},{path:`group/depth`,title:`Group, three levels deep`},{path:`group/renaming`,title:`Group, renaming`},{path:`menu/disabled`,title:`Menu with a disabled item`},{path:`row/button`,title:`Row actions, one action a button`},{path:`row/menu`,title:`Row actions, two or more in the menu`},{path:`actionbar/states`,title:`Action bar, docked under a header, in its four states`},{path:`tabs/main`,title:`Tab strip, the lab's tabs`},{path:`tabs/section`,title:`Tab strip, a section strip under the lab's`},{path:`header/pipeline`,title:`Context header, a Pipeline`},{path:`header/dataset`,title:`Context header, a Dataset`},{path:`header/source`,title:`Context header, a Source`},{path:`header/switcher`,title:`Switcher, recent and more`},{path:`header/switcher-detail`,title:`Switcher, with a detail`},{path:`picker/fields`,title:`Picker, a profile and a Source`},{path:`multi/closed`,title:`Multi-select, two of three ticked`},{path:`multi/open`,title:`Multi-select, its list open`},{path:`chiplist/words`,title:`Chip-list, words with the input to add more`},{path:`chiplist/empty`,title:`Chip-list, empty with its placeholder`},{path:`workspace/menu`,title:`Workspace trigger and its three-part menu`},{path:`copymove/choose`,title:`Copy or move, a destination chosen`},{path:`copymove/collision`,title:`Copy or move, the name is already taken`},{path:`copymove/confirm`,title:`Copy or move, a Move that breaks a dependency`},{path:`copymove/confirm-pipeline`,title:`Copy or move, a pipeline Move that leaves its data behind`},{path:`share/menu`,title:`Share menu, All / some / New workspaces`},{path:`header/long`,title:`Context header, a long name`},{path:`menu/busy`,title:`Menu with a busy item`},{path:`loading/group`,title:`Loading, inside a group`},{path:`loading/error`,title:`Loading failed, with Retry`},{path:`loading/busy-button`,title:`Busy buttons`},{path:`repeater/empty`,title:`Repeater, empty`},{path:`repeater/min`,title:`Repeater at min 1`},{path:`repeater/between`,title:`Repeater, two of four`},{path:`repeater/max`,title:`Repeater at max`},{path:`repeater/locked`,title:`Repeater, a locked row`},{path:`props/controls`,title:`Property table, every control`},{path:`props/required`,title:`Property table, required only`},{path:`props/long`,title:`Property table, long values`},{path:`props/cards`,title:`Property table, a kind chosen by card`},{path:`props/widths`,title:`Property table, a width per value`},{path:`props/affix`,title:`Property table, a fixed suffix and a field's error`},{path:`props/secret`,title:`Property table, a key held and not held`},{path:`props/code`,title:`Property table, an endpoint and a payload`},{path:`table/sortable`,title:`Table, sortable headers and a row menu`},{path:`table/paged`,title:`Table, paged ten at a time`},{path:`table/select`,title:`DataTable with selection`},{path:`table/select-on`,title:`Table, two rows selected`},{path:`table/filter`,title:`Table with a filter bar`},{path:`table/filter-on`,title:`Table, filtered, with a scope`},{path:`edit/form`,title:`Edit modal, a profile`},{path:`edit/plain`,title:`Edit modal, one section and no menu`},{path:`edit/long`,title:`Edit modal, a form that scrolls`},{path:`edit/status`,title:`Edit modal, a status that is a refusal`},{path:`view/tokens`,title:`Token mappings`},{path:`view/output`,title:`Output with Case`},{path:`view/output-text`,title:`Output, plain text`},{path:`view/output-two`,title:`Output with two modifiers`},{path:`view/output-twice`,title:`Output with the same modifier twice`},{path:`view/output-flow`,title:`Responses with Read as`},{path:`view/field-chip`,title:`Field chips in a target's words, with a changed word`},{path:`view/field-edit`,title:`The Edited target's editable prompt, with Insert field and a highlighted diff`},{path:`view/insert-field`,title:`The Edited target's Insert field menu, open`},{path:`wizard/pill`,title:`Wizard pill, two of four steps done`},{path:`wizard/pill-open`,title:`Wizard pill, its checklist open on the current step`},{path:`switch/off`,title:`Switch, off`},{path:`switch/on`,title:`Switch, on`},{path:`switch/disabled`,title:`Switch, disabled`}],D=ae(),O=()=>{},k=(...e)=>e.map(e=>({label:e,icon:e===`Remove`?m.remove:e===`Clone`?m.clone:m.rename,onSelect:O,destructive:e===`Remove`}));function A({start:e,min:t,max:n,locked:r}){let[i,a]=(0,w.useState)(e);return(0,D.jsx)(de,{noun:`scenario`,items:i,...t===void 0?{}:{min:t},...n===void 0?{}:{max:n},...r?{locked:r}:{},onAdd:()=>a([...i,`Target ${String.fromCharCode(65+i.length)}`]),onRemove:e=>a(i.filter((t,n)=>n!==e)),onClone:e=>a([...i.slice(0,e+1),`${i[e]} copy`,...i.slice(e+1)]),onRename:O,empty:`No targets yet.`,renderItem:(e,t,n)=>(0,D.jsx)(p,{id:`scenario-${t}`,title:e,level:3,actions:n,children:(0,D.jsx)(`p`,{className:`note`,children:`A connection, a profile and a prompt for each job.`})},`${e}-${t}`)})}function Ae(){let[e,t]=(0,w.useState)(Oe),n=(n,r)=>t(e.map(e=>e.name===n?{...e,...r}:e));return(0,D.jsx)(me,{mappings:e,onValue:(e,t)=>n(e,{value:t}),onEnabled:(e,t)=>n(e,{enabled:t}),onEdit:O,onRemove:n=>t(e.filter(e=>e.name!==n)),onAdd:()=>t([...e,{name:`token${e.length+1}`,type:`value`,value:``}])})}function j({start:e,readAs:t}){let[n,r]=(0,w.useState)(e),[i,a]=(0,w.useState)(t);return(0,D.jsx)(be,{id:`output`,out:n,readAs:i,outputKinds:T,modifiers:E,onFormat:e=>r({kind:e,modifiers:n.modifiers.filter(t=>E.find(e=>e.id===t.type)?.accepts.includes(e))}),onReadAs:a,onModifier:(e,t)=>r({...n,modifiers:n.modifiers.map((n,r)=>r===e?t:n)}),onAddModifier:e=>r({...n,modifiers:[...n.modifiers,e]}),onRemoveModifier:e=>r({...n,modifiers:n.modifiers.filter((t,n)=>n!==e)})})}function je(){let[e,t]=(0,w.useState)(`Job 1`),[n,r]=(0,w.useState)(!0);return(0,D.jsx)(p,{id:`renaming`,title:e,actions:[{label:`Rename…`,icon:m.rename,onSelect:()=>r(!0)}],...n?{rename:{value:e,onCommit:n=>{t(n||e),r(!1)},onCancel:()=>r(!1)}}:{},children:(0,D.jsx)(`p`,{className:`note`,children:`Enter or leaving keeps the name; Escape cancels.`})})}function Me(){let[e,t]=(0,w.useState)(`system`);return(0,D.jsx)(`div`,{className:`gallery-row`,style:{justifyContent:`flex-end`},children:(0,D.jsx)(Te,{current:{id:`w1`,slug:`work`,name:`Work`},workspaces:[{id:`w1`,slug:`work`,name:`Work`},{id:`w2`,slug:`side-project`,name:`Side project`},{id:`w3`,slug:`client-demos`,name:`Client demos`}],onSwitch:O,onNew:O,onManage:O,theme:e,onTheme:t})})}var Ne=[{id:`cur`,slug:`work`,name:`Work`,archived:!1,isDefault:!0,lastUsed:`2026-10-08T09:30:00Z`,createdAt:null,pipelines:4,runs:18},{id:`side`,slug:`side-project`,name:`Side project`,archived:!1,isDefault:!1,lastUsed:`2026-10-07T09:30:00Z`,createdAt:null,pipelines:2,runs:6},{id:`demos`,slug:`client-demos`,name:`Client demos`,archived:!1,isDefault:!1,lastUsed:`2026-10-06T09:30:00Z`,createdAt:null,pipelines:1,runs:0}],Pe={id:`cur`,slug:`work`,name:`Work`},Fe={undo:null,offer:O,undoNow:O,dismiss:O},Ie=e=>({copyMovePreflight:async()=>({nameTaken:e,suggestedName:`Daily regressions (copy)`}),copyAsset:async()=>({id:`copy`}),moveAsset:async()=>({id:`same`}),forWorkspace:()=>({})});function M({nameTaken:e=!1,confirm:t=!1,subject:n,dependents:r=[]}){return(0,D.jsx)(he,{api:Ie(e),subject:n??{kind:`filter-set`,id:`f1`,name:`Daily regressions`},workspaces:Ne,current:Pe,dependents:r,undo:Fe,onClose:O,defaultDest:`side`,...t?{defaultConfirm:!0}:{}})}function Le(){let e=[{id:`w1`,name:`Work`},{id:`w2`,name:`Side project`},{id:`w3`,name:`Client demos`}];return(0,D.jsx)(`div`,{style:{display:`grid`,gap:`var(--s3)`,maxWidth:`20rem`},children:[{label:`All workspaces`,shares:void 0},{label:`Some workspaces`,shares:[`w2`]},{label:`New workspaces`,shares:[Ce]},{label:`No workspaces`,shares:[Ee]}].map(t=>(0,D.jsx)(ce,{label:t.label,workspaces:e,shares:t.shares,onChange:O},t.label))})}function N({sections:e,menu:t,status:n,statusBad:r,outcome:i}){return(0,D.jsx)(v,{title:`Lab Ollama`,...n?{status:n}:{},...r?{statusBad:!0}:{},...t?{menu:t}:{},sections:e,actions:[{label:`Test connection`,icon:Se,onSelect:O,outcome:i?{label:i,onOpen:O}:void 0}],onClose:O})}var P=()=>[{key:`name`,label:`Name`,width:`full`,required:!0,control:{type:`text`,value:`Lab Ollama`,onChange:O}},{key:`slug`,label:`Slug`,width:`full`,required:!0,control:{type:`text`,value:`lab-ollama`,onChange:O}},{key:`type`,label:`Type`,required:!0,control:{type:`select`,value:`ollama`,onChange:O,options:[{value:`ollama`,label:`Ollama (Local)`},{value:`anthropic`,label:`Anthropic`}]}},{key:`url`,label:`Address`,width:`full`,control:{type:`text`,value:``,placeholder:`http://127.0.0.1:11434`,onChange:O}},{key:`key`,label:`Key`,control:{type:`secret`,value:``,onChange:O}},{key:`model`,label:`Model`,width:`full`,control:{type:`text`,value:`minicpm-v4.6:latest`,onChange:O}}],F=()=>[{key:`seed`,label:`Seed`,control:{type:`text`,value:``,placeholder:`1234`,onChange:O}},{key:`nPredict`,label:`Reply tokens`,width:`quarter`,control:{type:`text`,value:``,onChange:O}},{key:`temperature`,label:`Temperature`,control:{type:`text`,value:`0.3`,onChange:O}},{key:`repeatPenalty`,label:`Repeat penalty`,width:`quarter`,control:{type:`text`,value:``,onChange:O}}],I=()=>[{key:`endpoint`,label:`Endpoint`,required:!0,control:{type:`code`,text:`http://127.0.0.1:11434/api/chat`}},{key:`prompt`,label:`Prompt`,required:!0,control:{type:`static`,text:`(prompt)`}},{key:`model`,label:`model`,control:{type:`code`,text:`minicpm-v4.6:latest`}},{key:`options`,label:`options`,control:{type:`code`,text:`{"seed":1234,"temperature":0.3}`}}],L={key:`kind`,label:`Response Format`,required:!0,control:{type:`select`,value:`list`,onChange:O,options:T.map(e=>({value:e.id,label:e.label}))}};function R({actions:e}){return(0,D.jsx)(p,{id:`g`,title:`Actions`,children:(0,D.jsx)(a,{label:`Actions`,rows:[{name:`Ask_Claude`}],rowKey:e=>e.name,columns:[{key:`name`,header:`Name`,role:`title`,cell:e=>e.name},{key:`menu`,header:``,role:`menu`,sort:null,cell:()=>(0,D.jsx)(s,{label:`Ask_Claude actions`,actions:e})}]})})}var Re=[[`home`,`Home`,le],[`runs`,`Runs`,te],[`history`,`History`,oe],[`library`,`Library`,ue],[`setup`,`Setup`,xe]],ze=[[`datasets`,`Datasets`,i],[`prompts`,`Prompts`,_e],[`sources`,`Sources`,we]],z=e=>(0,D.jsx)(C,{label:`Lab`,current:e,items:Re.map(([e,t,n])=>({key:e,label:t,icon:n,href:`#/${e}`}))}),B=e=>(0,D.jsx)(C,{label:`Library`,level:`section`,current:e,items:ze.map(([e,t,n])=>({key:e,label:t,icon:n,href:`#/library/${e}`}))}),V=({section:e,children:t})=>(0,D.jsxs)(`div`,{children:[z(e?`library`:`runs`),e&&B(e),t]}),H=(...e)=>e.map(e=>({label:e,icon:e===`Delete`?m.remove:e===`Clone`?m.clone:m.rename,onSelect:O,destructive:e===`Delete`})),Be={"header/pipeline":()=>(0,D.jsx)(V,{children:(0,D.jsx)(f,{kind:`Pipeline`,name:`Pipeline 1`,onPick:O,meta:`2 jobs, 3 targets`,primary:{label:`New pipeline`,icon:y,onSelect:O},actions:H(`Rename…`,`Clone`,`Export YAML`,`Import YAML…`,`Restore…`,`Delete`)})}),"header/dataset":()=>(0,D.jsx)(V,{section:`datasets`,children:(0,D.jsx)(f,{kind:`Dataset`,name:`Demo 1`,onPick:O,meta:`62 cases, 19 graded`,primary:{label:`New dataset`,icon:y,onSelect:O},actions:H(`Rename…`,`Clone`,`Import JSON…`,`Export JSON`,`Restore…`,`Delete`)})}),"header/switcher":()=>(0,D.jsx)(r,{kind:`Pipeline`,value:`p5`,onPick:O,onClose:O,recent:[`p7`,`p6`,`p5`,`p4`,`p3`],options:Array.from({length:13},(e,t)=>({id:`p${t}`,label:[`Demo 1`,`Demo 2`,`Receipts`,`Menus`,`Street signs`,`Labels`,`Plates`,`Posters`,`Packaging`,`Whiteboards`,`Book spines`,`Shop fronts`,`Timetables`][t],used:t<8?{at:`2026-10-0${t+1}T09:30:00Z`,label:S(`2026-10-0${t+1}T09:30:00Z`)}:null}))}),"header/switcher-detail":()=>(0,D.jsx)(r,{kind:`Connection`,value:`c1`,onPick:O,onClose:O,detailLabel:`Model`,recent:[`c3`,`c1`],options:[[`Lab Ollama gemma3 4b`,`gemma3:4b`],[`Lab Ollama minicpm`,`minicpm-v`],[`Anthropic`,`claude-sonnet-4-5`],[`Dell llama`,`qwen2.5vl:7b`],[`OpenAI`,`gpt-5`],[`Docker llama`,`qwen2.5vl:7b`]].map(([e,t],n)=>({id:`c${n}`,label:e,detail:t,used:n<4?{at:`2026-10-1${n}T09:30:00Z`,label:S(`2026-10-1${n}T09:30:00Z`)}:null}))}),"picker/fields":()=>(0,D.jsx)(p,{id:`g`,title:`Target A`,children:(0,D.jsx)(u,{label:`Target A setup`,rows:[{key:`profile`,label:`Profile`,control:{type:`picker`,kind:`Profile`,value:`p2`,usedLabel:`Last changed`,onChange:O,recent:[`p5`,`p4`,`p3`,`p2`,`p1`],options:[{id:`#echo`,label:`Echo`,fixed:!0},...[`Lab Ollama`,`Anthropic`,`Cloud vision`,`Local llama`,`OpenRouter`,`Bench`,`Vision`].map((e,t)=>({id:`p${t}`,label:e,used:t<6?{at:`2026-10-0${t+1}T09:30:00Z`,label:S(`2026-10-0${t+1}T09:30:00Z`)}:null}))]}},{key:`source`,label:`Source`,control:{type:`picker`,kind:`Source`,value:`gone`,usedLabel:`Last changed`,onChange:O,options:[{id:``,label:`Any`,fixed:!0},{id:`gone`,label:`Shoot 3 (missing)`,missing:!0},{id:`s1`,label:`Receipts`}]}}]})}),"header/source":()=>(0,D.jsx)(V,{section:`sources`,children:(0,D.jsx)(f,{kind:`Source`,name:`Demo 1 images`,onPick:O,meta:`File Library. 63 files, 48 MB`,primary:{label:`Upload…`,icon:g,onSelect:O},actions:H(`Rename…`,`Delete`)})}),"workspace/menu":()=>(0,D.jsx)(Me,{}),"copymove/choose":()=>(0,D.jsx)(M,{}),"copymove/collision":()=>(0,D.jsx)(M,{nameTaken:!0}),"copymove/confirm":()=>(0,D.jsx)(M,{confirm:!0,dependents:[{kind:`pipeline`,id:`w1`,name:`Nightly regression`,href:`#/runs`}]}),"copymove/confirm-pipeline":()=>(0,D.jsx)(M,{confirm:!0,subject:{kind:`pipeline`,id:`w1`,name:`Nightly regression`},dependents:[{kind:`eval-group`,id:`g1`,name:`Receipts, 62 cases`,href:`#/library/datasets/g1`},{kind:`source`,id:`s1`,name:`Receipt images`,href:`#/library/sources`}]}),"share/menu":()=>(0,D.jsx)(Le,{}),"header/long":()=>(0,D.jsx)(V,{children:(0,D.jsx)(f,{kind:`Pipeline`,name:`Receipts and handwritten menus, second pass with the tighter prompt and a Contains metric`,onPick:O,meta:`12 jobs, 8 targets`,primary:{label:`New pipeline`,icon:y,onSelect:O},actions:H(`Rename…`,`Clone`,`Delete`)})}),"actionbar/states":()=>(0,D.jsxs)(`div`,{children:[z(`runs`),(0,D.jsx)(f,{kind:`Pipeline`,name:`Demo 1`,onPick:O,meta:`1 job, 2 targets`,docked:!0,primary:{label:`New pipeline`,icon:y,onSelect:O},actions:H(`Rename…`,`Delete`)}),(0,D.jsx)(_,{primary:{label:`Run`,icon:h,onSelect:O},status:(0,D.jsx)(`b`,{children:`Ready to run`})}),(0,D.jsxs)(`div`,{style:{display:`grid`,gap:`var(--s4)`,marginTop:`var(--s5)`},children:[(0,D.jsx)(_,{primary:{label:`Run`,icon:h,onSelect:O,disabled:!0},status:(0,D.jsxs)(D.Fragment,{children:[`Connection "Vision" not found. `,(0,D.jsxs)(`a`,{href:`#/setup`,style:{whiteSpace:`nowrap`},children:[`Open`,`\xA0`,`Setup`]})]})}),(0,D.jsx)(_,{primary:{label:`Run`,icon:h,onSelect:O,disabled:!0},status:(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(`b`,{children:`Running`}),` 12 of 42`]}),secondary:{label:`Stop`,icon:fe,onSelect:O},progress:28,progressLabel:`Run progress`}),(0,D.jsx)(_,{primary:{label:`Run`,icon:h,onSelect:O},status:(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(`b`,{children:`Done`}),` 42 in 2m`]})})]})]}),"tabs/main":()=>z(`runs`),"tabs/section":()=>(0,D.jsxs)(`div`,{children:[z(`library`),B(`datasets`)]}),"group/open":()=>(0,D.jsx)(p,{id:`g`,title:`Evals`,actions:k(`Change…`,`Remove`),children:(0,D.jsx)(`p`,{className:`note`,children:`The graded set.`})}),"group/closed":()=>(0,D.jsx)(p,{id:`g`,title:`Content`,open:!1,note:`Sample library, 63 files`,actions:k(`Change…`,`Remove`)}),"group/no-menu":()=>(0,D.jsx)(p,{id:`g`,title:`Mapping`,children:(0,D.jsx)(`p`,{className:`note`,children:`Nothing to do to it.`})}),"group/sub":()=>(0,D.jsx)(p,{id:`g`,title:`Job 1`,actions:k(`Rename…`,`Remove`),children:(0,D.jsx)(p,{id:`g-sub`,title:`Scenarios`,level:3,actions:k(`Clear`),children:(0,D.jsx)(`p`,{className:`note`,children:`Inside a pane.`})})}),"group/depth":()=>(0,D.jsxs)(p,{id:`g`,title:`Job 1`,actions:k(`Rename…`,`Remove`),children:[(0,D.jsxs)(p,{id:`g-scenarios`,title:`Scenarios`,level:3,children:[(0,D.jsx)(p,{id:`g-plain`,title:`Plain`,level:3,actions:k(`Rename…`,`Remove`),children:(0,D.jsx)(`p`,{className:`note`,children:`A pane, a section of it, and a thing with a name inside that section.`})}),(0,D.jsx)(p,{id:`g-strict`,title:`Strict`,level:3,actions:k(`Rename…`,`Remove`)})]}),(0,D.jsx)(p,{id:`g-output`,title:`Output`,level:3,children:(0,D.jsx)(`p`,{className:`note`,children:`The next section of the same pane.`})})]}),"group/renaming":()=>(0,D.jsx)(je,{}),"menu/disabled":()=>(0,D.jsx)(p,{id:`g`,title:`Target D`,actions:[{label:`Rename…`,icon:m.rename,onSelect:O},{label:`Clone`,icon:m.clone,onSelect:O,disabled:!0},{label:`Remove`,icon:m.remove,onSelect:O,destructive:!0}]}),"row/button":()=>(0,D.jsx)(R,{actions:[{label:`New pipeline`,icon:h,onSelect:O}]}),"row/menu":()=>(0,D.jsx)(R,{actions:[{label:`View…`,icon:n,onSelect:O},{label:`Download`,icon:o,onSelect:O},{label:`Remove`,icon:ve,onSelect:O,destructive:!0}]}),"menu/busy":()=>(0,D.jsx)(p,{id:`g`,title:`History`,actions:[{label:`Export JSON`,icon:m.export,onSelect:O,busy:!0},{label:`Clear`,icon:m.clear,onSelect:O,destructive:!0}]}),"loading/group":()=>(0,D.jsx)(p,{id:`g`,title:`History`,actions:k(`Rename…`),children:(0,D.jsx)(b,{label:`Runs`,delay:0})}),"loading/error":()=>(0,D.jsx)(p,{id:`g`,title:`History`,children:(0,D.jsx)(b,{label:`Runs`,error:`Runs not loaded: server unreachable.`,onRetry:O})}),"loading/busy-button":()=>(0,D.jsx)(p,{id:`g`,title:`Run`,children:(0,D.jsxs)(`div`,{className:`gallery-row`,children:[(0,D.jsxs)(`button`,{type:`button`,className:`run`,disabled:!0,"aria-busy":!0,children:[(0,D.jsx)(c,{size:16}),`Run`]}),(0,D.jsxs)(`button`,{type:`button`,className:`ghost`,disabled:!0,"aria-busy":!0,children:[(0,D.jsx)(c,{}),`Older`]})]})}),"repeater/empty":()=>(0,D.jsx)(A,{start:[]}),"repeater/min":()=>(0,D.jsx)(A,{start:[`Target A`],min:1}),"repeater/between":()=>(0,D.jsx)(A,{start:[`Target A`,`Target B`],min:1,max:4}),"repeater/max":()=>(0,D.jsx)(A,{start:[`Target A`,`Target B`,`Target C`,`Target D`],min:1,max:4}),"repeater/locked":()=>(0,D.jsx)(A,{start:[`Reply`,`Target A`],locked:(e,t)=>t===0}),"props/controls":()=>(0,D.jsx)(u,{label:`Controls`,onRename:O,onRemove:O,onAdd:O,addLabel:`Add row`,rows:[L,{key:`language`,label:`{language}`,code:!0,control:{type:`text`,value:`English UK`,onChange:O}},{key:`geo`,label:`{geo}…{/geo}`,code:!0,control:{type:`static`,text:`Block`},enabled:{checked:!0,onChange:O}},{key:`image`,label:`Image`,control:{type:`checkbox`,checked:!0,label:`Send`,onChange:O}}]}),"props/required":()=>(0,D.jsx)(u,{label:`Output`,onRemove:O,rows:[L]}),"props/long":()=>(0,D.jsx)(u,{label:`Long`,onRemove:O,rows:[{key:`geo-location`,label:`{geo-location}`,code:!0,control:{type:`text`,value:`Hamilton, Waikato, New Zealand, Southern Hemisphere, Earth`,onChange:O}},{key:`averylongtokennamethatdoesnotbreak`,label:`{averylongtokennamethatdoesnotbreak}`,code:!0,control:{type:`text`,value:``,onChange:O}}]}),"props/cards":()=>(0,D.jsx)(Ue,{}),"props/widths":()=>(0,D.jsx)(u,{label:`Widths`,rows:[{key:`type`,label:`Type`,required:!0,control:{type:`select`,value:`ollama`,onChange:O,options:[{value:`ollama`,label:`Ollama (Local)`},{value:`anthropic`,label:`Anthropic`}]}},{key:`url`,label:`Address`,width:`full`,control:{type:`text`,value:``,placeholder:`http://127.0.0.1:11434`,onChange:O}},{key:`model`,label:`Model`,width:`full`,control:{type:`text`,value:`minicpm-v4.6:latest`,onChange:O}},{key:`seed`,label:`Seed`,control:{type:`text`,value:``,placeholder:`1234`,onChange:O}},{key:`nPredict`,label:`Reply tokens`,width:`quarter`,control:{type:`text`,value:``,onChange:O}},{key:`temperature`,label:`Temperature`,control:{type:`text`,value:`0.2`,onChange:O}},{key:`grammar`,label:`Grammar`,control:{type:`textarea`,value:`root ::= item (", " item)*
2
+ item ::= [a-z ]+`,onChange:O}}]}),"props/affix":()=>(0,D.jsx)(u,{label:`Call`,rows:[{key:`name`,label:`Name`,control:{type:`text`,value:`open-meteo-forecast`,suffix:`.txt`,onChange:O}},{key:`taken`,label:`Name`,error:`open-meteo-forecast-storm.txt is taken.`,control:{type:`text`,value:`open-meteo-forecast-storm`,suffix:`.txt`,onChange:O}},{key:`status`,label:`Status`,width:`quarter`,control:{type:`text`,value:`200`,numeric:!0,onChange:O}},{key:`body`,label:`Body`,control:{type:`textarea`,mono:!0,value:`{
3
+ "category": "utilities"
4
+ }`,onChange:O}}]}),"props/secret":()=>(0,D.jsx)(u,{label:`Keys`,rows:[{key:`held`,label:`Key`,control:{type:`secret`,value:`sk-not-a-real-key-0000`,onChange:O}},{key:`empty`,label:`Key`,control:{type:`secret`,value:``,onChange:O}},{key:`server`,label:`Key`,control:{type:`secret`,value:``,held:!0,onChange:O}}]}),"props/code":()=>(0,D.jsx)(u,{label:`Debug`,rows:[{key:`endpoint`,label:`Endpoint`,required:!0,control:{type:`code`,text:`https://api.anthropic.com/v1/messages`}},{key:`prompt`,label:`Prompt`,required:!0,control:{type:`static`,text:`(prompt)`}},{key:`model`,label:`model`,control:{type:`code`,text:`claude-sonnet-4-5-20250929`}},{key:`options`,label:`options`,control:{type:`code`,text:`{"seed":1234,"temperature":0}`}},{key:`stream`,label:`stream`,control:{type:`code`,text:`false`}}]}),"table/sortable":()=>(0,D.jsx)(Q,{count:4}),"table/paged":()=>(0,D.jsx)(Q,{count:35,pageSize:10}),"table/select":()=>(0,D.jsx)(Q,{count:5,picked:[]}),"table/select-on":()=>(0,D.jsx)(Q,{count:5,picked:[1,3]}),"table/filter":()=>(0,D.jsx)(He,{}),"table/filter-on":()=>(0,D.jsx)(He,{search:`IMG_40`,size:`large`}),"edit/form":()=>(0,D.jsx)(N,{outcome:`Connected`,menu:[{label:`Restore…`,icon:m.restore,onSelect:O},{label:`Apply preset: repeat 1.3`,icon:m.preset,onSelect:O}],sections:[{key:`identity`,rows:P()},{key:`settings`,title:`Settings`,rows:F()},{key:`debug`,title:`Debug`,rows:I(),folded:!0}]}),"edit/plain":()=>(0,D.jsx)(v,{title:`A mapping`,sections:[{key:`one`,rows:[L,{key:`with`,label:`Separator`,control:{type:`text`,value:`, `,onChange:O}}]}],onClose:O}),"edit/long":()=>(0,D.jsx)(N,{menu:[{label:`Restore…`,icon:m.restore,onSelect:O,disabled:!0}],sections:[{key:`identity`,rows:P()},{key:`settings`,title:`Settings`,rows:[...F(),{key:`grammar`,label:`Grammar`,control:{type:`textarea`,value:`root ::= item (", " item)*
5
+ item ::= [a-z ]+`,onChange:O}},{key:`imagePosition`,label:`Image position`,control:{type:`select`,value:`after`,onChange:O,options:[{value:`before`,label:`before the prompt`},{value:`after`,label:`after the prompt`}]}},{key:`cachePrompt`,label:`Cache prompt`,control:{type:`select`,value:`off`,onChange:O,options:[{value:`on`,label:`on`},{value:`off`,label:`off`}]}}]},{key:`debug`,title:`Debug`,rows:I(),folded:!0}]}),"edit/status":()=>(0,D.jsx)(N,{status:`the relay could not reach http://127.0.0.1:11434`,statusBad:!0,sections:[{key:`identity`,rows:P()}]}),"view/tokens":()=>(0,D.jsx)(p,{id:`g`,title:`Token mappings`,level:3,children:(0,D.jsx)(Ae,{})}),"view/output":()=>(0,D.jsx)(j,{start:{kind:`list`,parse:`csv`,modifiers:[{type:`case`,mode:`LOWER`}]}}),"view/output-text":()=>(0,D.jsx)(j,{start:{kind:`text`,modifiers:[]}}),"view/output-two":()=>(0,D.jsx)(j,{start:{kind:`list`,parse:`csv`,modifiers:[{type:`case`,mode:`TITLE`},{type:`join`,with:` | `}]}}),"view/output-twice":()=>(0,D.jsx)(j,{start:{kind:`list`,parse:`csv`,modifiers:[{type:`case`,mode:`TITLE`},{type:`case`,mode:`LOWER`}]}}),"view/output-flow":()=>(0,D.jsx)(j,{start:{kind:`text`,modifiers:[]},readAs:`@body('Ask')?['content']?[0]?['text']`}),"view/field-chip":()=>(0,D.jsx)(p,{id:`g`,title:`Edited`,level:3,children:(0,D.jsxs)(`div`,{className:`prompt`,children:[(0,D.jsx)(`span`,{className:`prop-name`,children:`Prompt`}),(0,D.jsx)(x,{words:`Summarise @{triggerBody()?['text']} in two short sentences for @{variables('Audience')}.`,was:`Summarise @{triggerBody()?['text']} in one sentence for @{variables('Audience')}.`})]})}),"view/field-edit":()=>(0,D.jsx)(Ve,{}),"view/insert-field":()=>(0,D.jsx)(p,{id:`g`,title:`Edited`,level:3,children:(0,D.jsxs)(`div`,{className:`prompt`,children:[(0,D.jsxs)(`div`,{className:`pe-head`,children:[(0,D.jsx)(`span`,{className:`prop-name`,children:`Prompt`}),(0,D.jsx)(ie,{fields:K,onInsert:O,label:`Edited`,defaultOpen:!0})]}),(0,D.jsx)(`textarea`,{"aria-label":`Edited, prompt`,rows:4,defaultValue:G}),(0,D.jsx)(x,{className:`pe-words`,words:G,was:W,showExprs:!1})]})}),"multi/closed":()=>(0,D.jsx)(q,{}),"multi/open":()=>(0,D.jsx)(q,{open:!0}),"chiplist/words":()=>(0,D.jsx)(J,{start:[`clearly`,`obviously`,`as an AI`]}),"chiplist/empty":()=>(0,D.jsx)(J,{start:[]}),"wizard/pill":()=>(0,D.jsx)(Y,{}),"wizard/pill-open":()=>(0,D.jsx)(Y,{open:!0}),"switch/off":()=>(0,D.jsx)(U,{}),"switch/on":()=>(0,D.jsx)(U,{start:!0}),"switch/disabled":()=>(0,D.jsx)(d,{checked:!0,disabled:!0,label:`Fetch now`,onChange:O})};function U({start:e}){let[t,n]=(0,w.useState)(!!e);return(0,D.jsx)(d,{checked:t,onChange:n,label:`Fetch now`})}var W=`Tell me about this location in 1 sentence: @{variables('LocationVar')}`,G=`Tell me about this location in 2 sentences, for someone visiting for the first time: @{variables('LocationVar')}`,K=[{name:`LocationVar`,expr:`@{variables('LocationVar')}`},{name:`text`,expr:`@{triggerBody()?['text']}`}];function Ve(){let[e,t]=(0,w.useState)(G);return(0,D.jsx)(p,{id:`g`,title:`Edited`,level:3,children:(0,D.jsx)(ge,{label:`Edited`,asks:[{key:`connection`,label:`Connection`,control:{type:`static`,text:`Anthropic Direct`}}],prompt:e,onPrompt:t,rows:[{key:`model`,label:`Model`,control:{type:`static`,text:`claude-haiku-4-5`}}],request:[{key:`request`,label:`Request`,control:{type:`code`,text:`POST /v1/messages`}},{key:`body`,label:`Body`,control:{type:`code`,text:JSON.stringify({model:`claude-haiku-4-5`,max_tokens:1024,messages:[{role:`user`,content:e}]},null,2)}}],requestId:`story-edited-request`,words:{text:e,was:W},fields:K})})}function q({open:e=!1}){let[t,n]=(0,w.useState)([`better`,`same`]),r=[{value:`better`,label:`Better`},{value:`same`,label:`Same`},{value:`worse`,label:`Worse`}];return e?(0,D.jsx)(`div`,{style:{minHeight:180},children:(0,D.jsx)(ee,{value:t,options:r,onChange:n,defaultOpen:!0})}):(0,D.jsx)(u,{label:`Judged against recorded`,rows:[{key:`expected`,label:`Expected`,required:!0,control:{type:`multi`,value:t,options:r,onChange:n}}]})}function J({start:e}){let[t,n]=(0,w.useState)(e);return(0,D.jsx)(`div`,{style:{maxWidth:360},children:(0,D.jsx)(ne,{value:t,onChange:n})})}function Y({open:e}){return(0,D.jsx)(`div`,{style:{display:`flex`,justifyContent:`flex-end`,padding:`var(--s3)`},children:(0,D.jsx)(t,{name:`Test a workflow`,done:2,total:4,current:2,steps:[{title:`Add a workflow Source`,done:!0},{title:`Test an action`,done:!0},{title:`Run the test`,done:!1},{title:`Compare the replies`,done:!1}],onOpen:O,onCancel:O,...e?{defaultOpen:!0}:{}})})}var X=ke.map(e=>({...e,render:Be[e.path]})),Z=e=>Array.from({length:e},(e,t)=>({name:`IMG_${String(4e3+t*7919%97).padStart(4,`0`)}.jpg`,kb:t*37%900+40}));function He({search:e=``,size:t=`all`}){let[n,r]=(0,w.useState)(e),[i,o]=(0,w.useState)(t),[s,c]=(0,w.useState)(`shoot`),l=Z(12),u=l.filter(e=>e.name.toLowerCase().includes(n.trim().toLowerCase())&&(i===`all`||i===`large`==e.kb>=400));return(0,D.jsxs)(p,{id:`files`,title:`Files`,children:[(0,D.jsx)(re,{noun:`files`,search:{label:`Name`,placeholder:`Search names`,value:n,onChange:r},count:{shown:u.length,total:l.length},filters:[{key:`source`,label:`Source`,value:s,neutral:null,onChange:c,options:[{value:`shoot`,label:`Tuesday shoot`},{value:`samples`,label:`Sample library`}]},{key:`size`,label:`Size`,value:i,onChange:o,options:[{value:`all`,label:`All`},{value:`small`,label:`Small`},{value:`large`,label:`Large`}]}]}),u.length?(0,D.jsx)(a,{label:`Files`,rows:u,rowKey:e=>e.name,columns:[{key:`name`,header:`Name`,cell:e=>e.name},{key:`size`,header:`Size`,sort:e=>e.kb,cell:e=>`${e.kb} KB`}]}):(0,D.jsx)(`p`,{className:`note`,children:`No files match these filters.`})]})}function Q({count:e,pageSize:t,picked:n}){let r=Z(e),[i,o]=(0,w.useState)(r),[s,c]=(0,w.useState)(()=>new Set((n??[]).map(e=>r[e].name)));return(0,D.jsx)(p,{id:`files`,title:`Files`,children:(0,D.jsx)(a,{label:`Files`,cards:!0,rows:i,rowKey:e=>e.name,pageSize:t??null,select:n&&{noun:`file`,selected:s,onChange:c,actions:e=>[{label:`Move…`,icon:m.rename,onSelect:O},{label:`Remove`,icon:m.remove,destructive:!0,onSelect:()=>{o(t=>t.filter(t=>!e.includes(t))),c(new Set)}},{label:`Export`,icon:g,onSelect:O}]},columns:[{key:`name`,header:`Name`,role:`title`,cell:e=>e.name},{key:`size`,header:`Size`,className:`num`,sort:e=>e.kb,cell:e=>`${e.kb} KB`},{key:`menu`,header:``,role:`menu`,sort:null,cell:e=>(0,D.jsx)(l,{label:`${e.name} actions`,actions:[{label:`Rename…`,icon:m.rename,onSelect:O},{label:`Remove`,icon:m.remove,destructive:!0,onSelect:O}]})}]})})}function Ue(){let[t,n]=(0,w.useState)(`files`);return(0,D.jsx)(u,{label:`New Source`,rows:[{key:`type`,label:`Type`,control:{type:`cards`,value:t,onChange:n,options:[{value:`files`,label:`File Library`,icon:(0,D.jsx)(se,{size:16,fill:`currentColor`,"aria-hidden":`true`})},{value:`flow`,label:`Power Automate flow`,icon:(0,D.jsx)(e,{size:16,fill:`currentColor`,"aria-hidden":`true`})}]}},{key:`name`,label:`Name`,control:{type:`text`,value:``,onChange:O}}]})}var $=()=>decodeURIComponent(location.hash.replace(/^#\/?/,``));function We(){let[e,t]=(0,w.useState)($);(0,w.useEffect)(()=>{let e=()=>t($());return window.addEventListener(`hashchange`,e),()=>window.removeEventListener(`hashchange`,e)},[]);let n=X.find(t=>t.path===e);return n?(0,D.jsxs)(`main`,{className:`gallery-one`,"data-route":n.path,children:[(0,D.jsxs)(`nav`,{className:`gallery-nav`,children:[(0,D.jsx)(`a`,{href:`#/`,children:`All`}),(0,D.jsx)(`span`,{children:n.title})]}),n.render()]}):(0,D.jsxs)(`main`,{className:`gallery-index`,"data-route":``,children:[(0,D.jsx)(`h1`,{children:`Components`}),(0,D.jsx)(`ul`,{children:X.map(e=>(0,D.jsxs)(`li`,{children:[(0,D.jsx)(`a`,{href:`#/${e.path}`,children:e.title}),` `,(0,D.jsx)(`code`,{children:e.path})]},e.path))})]})}(0,De.createRoot)(document.getElementById(`root`)).render((0,D.jsx)(w.StrictMode,{children:(0,D.jsx)(We,{})}));