ltcai 9.8.0 → 9.9.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 (74) hide show
  1. package/README.md +40 -28
  2. package/docs/BENCHMARKS.md +107 -0
  3. package/docs/CHANGELOG.md +35 -0
  4. package/docs/CI_AND_RELEASE_GATES.md +106 -0
  5. package/docs/COMMUNITY_AND_PLUGINS.md +1 -1
  6. package/docs/DEVELOPMENT.md +11 -8
  7. package/docs/ONBOARDING.md +1 -1
  8. package/docs/OPERATIONS.md +15 -6
  9. package/docs/PERFORMANCE.md +9 -1
  10. package/docs/SECURITY_AUDIT.md +91 -0
  11. package/docs/TRUST_MODEL.md +1 -1
  12. package/docs/USABILITY_AUDIT.md +164 -0
  13. package/docs/WHY_LATTICE.md +1 -1
  14. package/docs/architecture.md +4 -2
  15. package/docs/kg-schema.md +1 -1
  16. package/docs/spec-vs-impl.md +8 -1
  17. package/lattice_brain/__init__.py +1 -1
  18. package/lattice_brain/runtime/multi_agent.py +1 -1
  19. package/latticeai/__init__.py +1 -1
  20. package/latticeai/api/review_queue.py +7 -0
  21. package/latticeai/core/agent.py +105 -8
  22. package/latticeai/core/agent_eval.py +99 -1
  23. package/latticeai/core/legacy_compatibility.py +1 -1
  24. package/latticeai/core/marketplace.py +1 -1
  25. package/latticeai/core/tool_governor.py +92 -1
  26. package/latticeai/core/workspace_os.py +1 -1
  27. package/latticeai/services/architecture_readiness.py +1 -1
  28. package/latticeai/services/change_proposals.py +165 -23
  29. package/latticeai/services/product_readiness.py +1 -1
  30. package/latticeai/services/tool_dispatch.py +33 -0
  31. package/package.json +5 -3
  32. package/scripts/bench_models.py +312 -0
  33. package/scripts/check_bundle_budget.mjs +103 -0
  34. package/scripts/check_current_release_docs.mjs +1 -1
  35. package/scripts/check_doc_status.mjs +149 -0
  36. package/scripts/generate_sbom.py +70 -0
  37. package/src-tauri/Cargo.lock +1 -1
  38. package/src-tauri/Cargo.toml +1 -1
  39. package/src-tauri/tauri.conf.json +1 -1
  40. package/static/app/asset-manifest.json +27 -11
  41. package/static/app/assets/Act-CfOPUKPs.js +2 -0
  42. package/static/app/assets/{Brain-BMkgdWnI.js → Brain-Cgkh0Hpn.js} +2 -2
  43. package/static/app/assets/BrainHome-D8e3wQiW.js +3 -0
  44. package/static/app/assets/BrainSignals-BjRBA18L.js +1 -0
  45. package/static/app/assets/Capture-CQQYQ1Ga.js +1 -0
  46. package/static/app/assets/CommandPalette-pss56Mg4.js +1 -0
  47. package/static/app/assets/Library-CoI3xYJk.js +1 -0
  48. package/static/app/assets/LivingBrain-CaU_hCxQ.js +1 -0
  49. package/static/app/assets/ProductFlow-Db-1O71-.js +1 -0
  50. package/static/app/assets/System-Dfocn0zN.js +1 -0
  51. package/static/app/assets/bot-Bp2x1i6F.js +1 -0
  52. package/static/app/assets/circle-check-CyGal42W.js +1 -0
  53. package/static/app/assets/cpu-DQFk82hG.js +1 -0
  54. package/static/app/assets/download-C70gKQVi.js +1 -0
  55. package/static/app/assets/folder-open-DNGytsVw.js +1 -0
  56. package/static/app/assets/hard-drive-CYo_bEl4.js +1 -0
  57. package/static/app/assets/i18n-BBMJshCW.js +7 -0
  58. package/static/app/assets/index-BjaXCeOZ.js +10 -0
  59. package/static/app/assets/{index-7gY9t9Sd.css → index-BqRcLZR3.css} +1 -1
  60. package/static/app/assets/input-ChWD-Fsh.js +1 -0
  61. package/static/app/assets/navigation-D9D9_FPC.js +1 -0
  62. package/static/app/assets/network-DzLDGmtV.js +1 -0
  63. package/static/app/assets/primitives-CmaSAyGG.js +1 -0
  64. package/static/app/assets/sparkles-DXiaM1NS.js +1 -0
  65. package/static/app/assets/textarea-CV43-o79.js +1 -0
  66. package/static/app/index.html +4 -2
  67. package/static/sw.js +1 -1
  68. package/static/app/assets/Act-Dd3z8AzF.js +0 -2
  69. package/static/app/assets/Capture-D2Aw9gkv.js +0 -1
  70. package/static/app/assets/Library-Yreq-KW5.js +0 -1
  71. package/static/app/assets/System-CXNmmtEo.js +0 -1
  72. package/static/app/assets/index-CndfILiF.js +0 -18
  73. package/static/app/assets/primitives-DxsIXb6G.js +0 -1
  74. package/static/app/assets/textarea-DH7ne8VI.js +0 -1
@@ -1 +0,0 @@
1
- import{A as e,D as t,E as n,F as r,I as i,M as a,N as o,O as s,R as c,S as l,T as u,U as d,V as f,a as p,c as m,k as h,p as g,z as _}from"./index-CndfILiF.js";var v=u(`circle-alert`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`12`,x2:`12`,y1:`8`,y2:`12`,key:`1pkeuh`}],[`line`,{x1:`12`,x2:`12.01`,y1:`16`,y2:`16`,key:`4dfq90`}]]),y=u(`lock-keyhole`,[[`circle`,{cx:`12`,cy:`16`,r:`1`,key:`1au0dj`}],[`rect`,{x:`3`,y:`10`,width:`18`,height:`12`,rx:`2`,key:`6s8ecr`}],[`path`,{d:`M7 10V7a5 5 0 0 1 10 0v3`,key:`1pqi11`}]]),b=d(f()),x=_(),S={default:`border-primary/25 bg-primary/12 text-primary`,success:`border-success/30 bg-success/12 text-success`,warning:`border-warning/30 bg-warning/12 text-warning`,muted:`border-border bg-muted/70 text-muted-foreground`,danger:`border-destructive/30 bg-destructive/12 text-destructive`};function C({className:e,variant:t=`default`,...n}){return(0,x.jsx)(`span`,{className:s(`inline-flex min-h-6 max-w-full items-center whitespace-nowrap rounded-md border px-2 py-0.5 text-xs font-semibold leading-none`,S[t],e),...n})}function w({className:e,...t}){return(0,x.jsx)(`section`,{className:s(`premium-surface rounded-lg text-card-foreground`,e),...t})}function T({className:e,...t}){return(0,x.jsx)(`div`,{className:s(`flex flex-col gap-1.5 p-5`,e),...t})}function E({className:e,...t}){return(0,x.jsx)(`h2`,{className:s(`text-base font-semibold tracking-normal`,e),...t})}function D({className:e,...t}){return(0,x.jsx)(`p`,{className:s(`text-sm leading-6 text-muted-foreground`,e),...t})}function O({className:e,...t}){return(0,x.jsx)(`div`,{className:s(`p-5 pt-0`,e),...t})}function k({result:e}){let t=r(e=>e.mode),i=r(e=>e.language);return e?e.source===`live`&&e.ok?(0,x.jsx)(C,{variant:`success`,children:t===`basic`?n(i,`ui.status.ready`):n(i,`ui.status.connected`)}):(0,x.jsx)(C,{variant:`warning`,children:t===`basic`?n(i,`ui.status.needsSetup`):n(i,`ui.status.unavailable`)}):(0,x.jsx)(C,{variant:`muted`,children:n(i,`ui.status.notLoaded`)})}function A({title:e,detail:t}){let i=r(e=>e.language);return(0,x.jsxs)(`div`,{className:`product-empty-state flex min-h-36 flex-col items-center justify-center gap-2 rounded-lg border border-dashed border-border bg-muted/24 p-6 text-center text-sm text-muted-foreground`,children:[(0,x.jsx)(`div`,{className:`grid h-10 w-10 place-items-center rounded-md border border-border bg-card`,children:(0,x.jsx)(m,{className:`h-5 w-5 text-primary`})}),(0,x.jsx)(`div`,{className:`text-base font-semibold text-foreground`,children:e||n(i,`ui.empty.title`)}),t?(0,x.jsx)(`div`,{className:`max-w-md leading-6`,children:t}):null]})}function j({title:e,description:t,result:i,children:a,className:o}){let c=r(e=>e.mode),l=r(e=>e.language);return(0,x.jsxs)(w,{className:s(`data-panel overflow-hidden`,o),children:[(0,x.jsxs)(T,{className:`flex-row items-start justify-between gap-3`,children:[(0,x.jsxs)(`div`,{children:[(0,x.jsx)(E,{children:e}),t?(0,x.jsx)(D,{children:t}):null]}),c===`basic`?null:(0,x.jsx)(k,{result:i})]}),(0,x.jsx)(O,{children:i?.ok?a(i.data):(0,x.jsx)(A,{detail:c===`basic`?n(l,`ui.empty.basicDetail`):i?.error||n(l,`ui.empty.advancedDetail`)})})]})}function M({title:e}){let t=r(e=>e.language);return(0,x.jsxs)(w,{children:[(0,x.jsx)(T,{children:(0,x.jsx)(E,{children:e})}),(0,x.jsx)(O,{children:(0,x.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,children:[(0,x.jsx)(g,{className:`h-4 w-4 animate-spin`}),` `,n(t,`ui.loading`)]})})]})}function N({stats:e}){return(0,x.jsx)(`div`,{className:`data-stat-grid grid gap-3 sm:grid-cols-2 xl:grid-cols-4`,children:e.map(e=>(0,x.jsxs)(`div`,{className:`rounded-lg border border-border bg-background/55 p-4`,children:[(0,x.jsx)(`div`,{className:`text-xs uppercase text-muted-foreground`,children:e.label}),(0,x.jsx)(`div`,{className:`mt-2 text-2xl font-semibold leading-tight`,children:typeof e.value==`number`?h(e.value):String(e.value??`-`)}),e.hint?(0,x.jsx)(`div`,{className:`mt-2 text-xs leading-5 text-muted-foreground`,children:e.hint}):null]},e.label))})}function P(e){return e==null||e===``?`-`:typeof e==`number`?Number.isFinite(e)?h(e):`-`:typeof e==`boolean`?e?`Enabled`:`Disabled`:String(e)}var F=/(^id$|_id$|token|secret|passphrase|fingerprint|public_key|private_key|dsn|schema|endpoint|base_url|localhost|127\.0\.0\.1|stack|trace|raw|runtime|engine|module|port|host|api|internal)/i;function I(e){return F.test(e)}function L(e){let t=P(e);return t===`-`||t.includes(`/`)||t.includes(`@`)||/\.[a-z0-9]{2,5}$/i.test(t)?t:o(t.replace(/^agent:/i,``).replace(/^tool:/i,``))}function R(e){for(let n of[`documents`,`sources`,`items`,`agents`,`workflows`,`runs`,`events`,`permissions`,`models`,`peers`,`invitations`,`roles`,`policies`,`hooks`,`tools`,`templates`,`plugins`,`recent_events`]){let r=t(e[n]);if(r.length)return r}return[]}function z({value:t}){let i=r(e=>e.language);if(typeof t==`boolean`)return(0,x.jsx)(C,{variant:t?`success`:`muted`,children:n(i,t?`ui.value.enabled`:`ui.value.disabled`)});if(Array.isArray(t))return t.length?t.every(e=>e===null||[`string`,`number`,`boolean`].includes(typeof e))?(0,x.jsxs)(`span`,{className:`flex flex-wrap gap-1`,children:[t.slice(0,5).map((e,t)=>(0,x.jsx)(C,{variant:`muted`,children:P(e)},`${String(e)}-${t}`)),t.length>5?(0,x.jsxs)(C,{variant:`muted`,children:[`+`,t.length-5]}):null]}):(0,x.jsx)(`span`,{className:`text-muted-foreground`,children:n(i,`ui.value.records`,{count:h(t.length)})}):(0,x.jsx)(`span`,{className:`text-muted-foreground`,children:n(i,`ui.value.none`)});if(e(t)){let e=Object.keys(t);return e.length?(0,x.jsxs)(`span`,{className:`text-muted-foreground`,children:[e.slice(0,4).map(o).join(`, `),e.length>4?` +${e.length-4}`:``]}):(0,x.jsx)(`span`,{className:`text-muted-foreground`,children:n(i,`ui.value.noFields`)})}let s=P(t);return(0,x.jsx)(`span`,{className:`break-words`,children:s.length>96?a(s,96):s})}function B({data:e,limit:t=8}){let i=r(e=>e.mode),a=r(e=>e.language),s=Object.entries(e||{}).filter(([e])=>i!==`basic`||!I(e)).slice(0,t);return s.length?(0,x.jsx)(`div`,{className:`divide-y divide-border rounded-md border border-border`,children:s.map(([e,t])=>(0,x.jsxs)(`div`,{className:`grid grid-cols-[minmax(9rem,0.5fr)_1fr] gap-3 p-3 text-sm`,children:[(0,x.jsx)(`span`,{className:`font-medium text-muted-foreground`,children:o(e)}),(0,x.jsx)(`span`,{className:`min-w-0 break-words`,children:(0,x.jsx)(z,{value:t})})]},e))}):(0,x.jsx)(A,{title:n(a,`ui.noValues`)})}function V({value:t,titleKey:i=`title`,metaKey:a=`status`,limit:o=8}){let s=r(e=>e.mode),c=r(e=>e.language);return s===`basic`?(0,x.jsx)(H,{value:t,titleKey:i,metaKey:a,limit:o}):Array.isArray(t)?t.length?t.every(t=>e(t))?(0,x.jsx)(W,{items:t,titleKey:i,metaKey:a,limit:o}):(0,x.jsxs)(`div`,{className:`flex flex-wrap gap-1 rounded-md border border-border bg-background p-3`,children:[t.slice(0,o).map((e,t)=>(0,x.jsx)(C,{variant:`muted`,children:P(e)},`${String(e)}-${t}`)),t.length>o?(0,x.jsxs)(C,{variant:`muted`,children:[`+`,t.length-o]}):null]}):(0,x.jsx)(A,{detail:n(c,`ui.empty.listDetail`)}):e(t)?(0,x.jsx)(B,{data:t,limit:o}):(0,x.jsx)(`div`,{className:`rounded-md border border-border bg-background p-3 text-sm`,children:(0,x.jsx)(z,{value:t})})}function H({value:t,titleKey:i=`title`,metaKey:a=`status`,limit:o=6}){let s=r(e=>e.language);if(Array.isArray(t))return t.length?t.every(t=>e(t))?(0,x.jsx)(W,{items:t,titleKey:i,metaKey:a,limit:o}):(0,x.jsxs)(`div`,{className:`flex flex-wrap gap-1 rounded-md border border-border bg-background/55 p-3`,children:[t.slice(0,o).map((e,t)=>(0,x.jsx)(C,{variant:`muted`,children:L(e)},`${String(e)}-${t}`)),t.length>o?(0,x.jsxs)(C,{variant:`muted`,children:[`+`,t.length-o]}):null]}):(0,x.jsx)(A,{detail:n(s,`ui.empty.listDetail`)});if(e(t)){let n=R(t);return n.length?(0,x.jsx)(W,{items:n,titleKey:i,metaKey:a,limit:o}):(0,x.jsx)(B,{data:Object.fromEntries(Object.entries(t).filter(([e])=>!I(e)).map(([t,n])=>[t,Array.isArray(n)?`${h(n.length)} items`:e(n)?`available`:n])),limit:o})}return(0,x.jsx)(`div`,{className:`rounded-md border border-border bg-background/55 p-3 text-sm`,children:L(t)})}function U({result:e,successLabel:t}){let i=r(e=>e.mode),a=r(e=>e.language);return e?e.ok?(0,x.jsxs)(`div`,{className:`space-y-2 rounded-md border border-border bg-background p-3`,children:[(0,x.jsx)(C,{variant:`success`,children:t||n(a,`ui.requestCompleted`)}),i===`basic`?(0,x.jsx)(H,{value:e.data}):(0,x.jsx)(V,{value:e.data})]}):(0,x.jsx)(A,{title:n(a,`ui.requestUnavailable`),detail:e.error||(0,x.jsx)(z,{value:e.data})}):null}function W({items:e,titleKey:i=`title`,metaKey:o=`type`,limit:s=8}){let c=r(e=>e.mode),l=r(e=>e.language),u=t(e).slice(0,s);return u.length?(0,x.jsx)(`div`,{className:`entity-list grid gap-2`,children:u.map((e,t)=>(0,x.jsxs)(`div`,{className:`entity-list-row rounded-lg border border-border bg-background/55 p-3`,children:[(0,x.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,x.jsx)(`div`,{className:`font-medium`,children:c===`basic`?L(e[i]||e.name||e.label||`Item ${t+1}`):String(e[i]||e.name||e.id||`Record ${t+1}`)}),(0,x.jsx)(C,{variant:`muted`,children:c===`basic`?L(e[o]||e.status||e.state||`ready`):String(e[o]||e.status||e.state||`record`)})]}),e.summary||e.description||e.path||e.id&&e[i]!==e.id?(0,x.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:String(e.summary||e.description||e.path||e.id)}):null,c!==`basic`&&e.id&&e[i]!==e.id?(0,x.jsx)(`div`,{className:`mt-1 text-xs text-muted-foreground`,children:a(e.id,48)}):null]},String(e.id||e.name||t)))}):(0,x.jsx)(A,{detail:n(l,`ui.empty.listDetail`)})}function G({title:e,detail:t,target:i=`advanced`}){let a=r(e=>e.setMode),o=r(e=>e.language);return(0,x.jsx)(w,{children:(0,x.jsxs)(O,{className:`flex flex-col items-start gap-3 p-6`,children:[(0,x.jsx)(`div`,{className:`grid h-10 w-10 place-items-center rounded-md border border-border bg-background/70`,children:(0,x.jsx)(y,{className:`h-5 w-5 text-primary`})}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`div`,{className:`text-lg font-semibold`,children:e||n(o,`ui.modeGate.title`)}),(0,x.jsx)(`p`,{className:`mt-1 max-w-2xl text-sm leading-6 text-muted-foreground`,children:t||n(o,`ui.modeGate.detail`)})]}),(0,x.jsx)(p,{onClick:()=>a(i),children:i===`admin`?n(o,`ui.modeGate.admin`):n(o,`ui.modeGate.advanced`)})]})})}function K({label:e,successLabel:t,action:a,onSuccess:o,invalidate:u,variant:d=`outline`,disabled:f}){let m=c(),h=r(e=>e.language),_=t||n(h,`ui.done`),[y,S]=b.useState(null),C=i({mutationFn:a,onSuccess:async e=>{S(e.ok?_:e.error||n(h,`ui.status.unavailable`)),e.ok&&(await o?.(e),u&&await Promise.all(u.map(e=>m.invalidateQueries({queryKey:[e]}))))}});return(0,x.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,x.jsxs)(p,{variant:d,disabled:f||C.isPending,onClick:()=>C.mutate(),children:[C.isPending?(0,x.jsx)(g,{className:`h-4 w-4 animate-spin`}):null,e]}),y?(0,x.jsxs)(`span`,{className:s(`inline-flex items-center gap-1 text-xs`,y===_?`text-success`:`text-warning`),children:[y===_?(0,x.jsx)(l,{className:`h-3.5 w-3.5`}):(0,x.jsx)(v,{className:`h-3.5 w-3.5`}),y]}):null]})}function q({tabs:e,value:t,onChange:n}){let r=b.useRef([]),i=(t,i)=>{let a=(t+i+e.length)%e.length;r.current[a]?.focus(),n(e[a].id)};return(0,x.jsx)(`div`,{className:`product-tabs inline-flex max-w-full flex-wrap gap-1 rounded-lg border border-border bg-muted/28 p-1`,role:`tablist`,children:e.map((a,o)=>(0,x.jsx)(`button`,{ref:e=>{r.current[o]=e},type:`button`,role:`tab`,"aria-selected":t===a.id,tabIndex:t===a.id?0:-1,onClick:()=>n(a.id),onKeyDown:t=>{t.key===`ArrowRight`||t.key===`ArrowDown`?(t.preventDefault(),i(o,1)):t.key===`ArrowLeft`||t.key===`ArrowUp`?(t.preventDefault(),i(o,-1)):t.key===`Home`?(t.preventDefault(),r.current[0]?.focus(),n(e[0].id)):t.key===`End`&&(t.preventDefault(),r.current[e.length-1]?.focus(),n(e[e.length-1].id))},className:s(`h-9 rounded-md px-3.5 text-sm font-semibold transition`,t===a.id?`bg-card text-foreground shadow-sm`:`text-muted-foreground hover:bg-card/60 hover:text-foreground`),children:a.label},a.id))})}export{E as _,B as a,U as c,q as d,z as f,T as g,D as h,W as i,N as l,O as m,j as n,M as o,w as p,A as r,G as s,K as t,V as u,C as v,v as y};
@@ -1 +0,0 @@
1
- import{O as e,U as t,V as n,z as r}from"./index-CndfILiF.js";var i=t(n()),a=r(),o=i.forwardRef(({className:t,...n},r)=>(0,a.jsx)(`textarea`,{ref:r,className:e(`min-h-28 w-full resize-y rounded-md border border-input bg-background/70 px-3 py-3 text-sm leading-6 outline-none transition placeholder:text-muted-foreground focus:border-ring focus:ring-2 focus:ring-ring/35 disabled:cursor-not-allowed disabled:opacity-50`,t),...n}));o.displayName=`Textarea`;export{o as t};