ltcai 9.9.4 → 9.9.5
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/README.md +38 -42
- package/docs/CHANGELOG.md +35 -0
- package/docs/COMMUNITY_AND_PLUGINS.md +1 -1
- package/docs/DEVELOPMENT.md +1 -1
- package/docs/ONBOARDING.md +1 -1
- package/docs/OPERATIONS.md +1 -1
- package/docs/SURFACE_PARITY.md +10 -4
- package/docs/TRUST_MODEL.md +1 -1
- package/docs/WHY_LATTICE.md +1 -1
- package/docs/kg-schema.md +1 -1
- package/lattice_brain/__init__.py +1 -1
- package/lattice_brain/graph/rerank.py +160 -0
- package/lattice_brain/graph/retrieval.py +28 -442
- package/lattice_brain/graph/retrieval_reads.py +459 -0
- package/lattice_brain/graph/store.py +2 -0
- package/lattice_brain/quality.py +26 -6
- package/lattice_brain/runtime/multi_agent.py +1 -1
- package/latticeai/__init__.py +1 -1
- package/latticeai/api/chat_agent_http.py +87 -46
- package/latticeai/api/chat_contracts.py +1 -1
- package/latticeai/core/agent.py +156 -18
- package/latticeai/core/legacy_compatibility.py +1 -1
- package/latticeai/core/marketplace.py +1 -1
- package/latticeai/core/run_store.py +2 -0
- package/latticeai/core/workspace_os.py +1 -1
- package/latticeai/integrations/telegram_bot.py +82 -23
- package/latticeai/services/architecture_readiness.py +1 -1
- package/latticeai/services/product_readiness.py +1 -1
- package/latticeai/services/tool_dispatch.py +56 -0
- package/package.json +2 -1
- package/scripts/check_current_release_docs.mjs +1 -1
- package/scripts/run_sidecar_e2e.mjs +159 -0
- package/src-tauri/Cargo.lock +1 -1
- package/src-tauri/Cargo.toml +1 -1
- package/src-tauri/tauri.conf.json +1 -1
- package/static/app/asset-manifest.json +28 -28
- package/static/app/assets/{Act-BCmTU0E2.js → Act-DmxfbqBp.js} +1 -1
- package/static/app/assets/{Brain-CTnjox7w.js → Brain-DK_zKCda.js} +1 -1
- package/static/app/assets/{BrainHome-BJ3sFNX0.js → BrainHome-CCE_0hni.js} +1 -1
- package/static/app/assets/{BrainSignals-C52lwZVD.js → BrainSignals-r_J68_zh.js} +1 -1
- package/static/app/assets/{Capture-B6vBhFa3.js → Capture-CvxwzpJZ.js} +1 -1
- package/static/app/assets/{CommandPalette-90u9FWFH.js → CommandPalette-CVLiFIQC.js} +1 -1
- package/static/app/assets/{Library-pKCK0_tk.js → Library-4As9VUvy.js} +1 -1
- package/static/app/assets/{LivingBrain-Jlf2wFqI.js → LivingBrain-BVWk58MW.js} +1 -1
- package/static/app/assets/{ProductFlow-yg1fKP1P.js → ProductFlow-B-Tz0Um4.js} +1 -1
- package/static/app/assets/{ReviewCard-DWvD7n9h.js → ReviewCard-Va3fPQuj.js} +1 -1
- package/static/app/assets/{System-BAEuHqNY.js → System-DSR2zKWd.js} +1 -1
- package/static/app/assets/{bot-nB_buEZD.js → bot-VmP0kkeA.js} +1 -1
- package/static/app/assets/{circle-pause-DLNw6Ucp.js → circle-pause-T9POo4qy.js} +1 -1
- package/static/app/assets/{circle-play-B-IsFL1y.js → circle-play-Bz5iTD0p.js} +1 -1
- package/static/app/assets/{cpu-CEPBHaBl.js → cpu-CJhjRtNq.js} +1 -1
- package/static/app/assets/{folder-open-hmN0N9cX.js → folder-open-B2K_22VI.js} +1 -1
- package/static/app/assets/{hard-drive-CBV_B_Yd.js → hard-drive-CjJtYqHf.js} +1 -1
- package/static/app/assets/{index-DrmOCySv.js → index-CEu0Wqjl.js} +3 -3
- package/static/app/assets/{input-gtVCg-ll.js → input-CSi6OBJ9.js} +1 -1
- package/static/app/assets/{navigation-Bot0hvuv.js → navigation-BPQqEQwr.js} +1 -1
- package/static/app/assets/{network-jE42eKfT.js → network-Ck1nqc-v.js} +1 -1
- package/static/app/assets/{primitives-CX2Komon.js → primitives-B2f9N7Dh.js} +1 -1
- package/static/app/assets/{shield-alert-BftATuAA.js → shield-alert-yA_Y8lOB.js} +1 -1
- package/static/app/assets/{textarea-CiMJfOSI.js → textarea-C4wM0D-Z.js} +1 -1
- package/static/app/assets/{useFocusTrap-B7RPGfFy.js → useFocusTrap-CsnIhsDJ.js} +1 -1
- package/static/app/assets/{utils-SJUNVOj5.js → utils-BqoznzGP.js} +1 -1
- package/static/app/index.html +3 -3
- package/static/sw.js +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,a as t,b as n,m as r,n as i,p as a,t as o,u as s,v as c}from"./utils-SJUNVOj5.js";import{a as l,r as u}from"./navigation-Bot0hvuv.js";import{n as d}from"./input-gtVCg-ll.js";import{t as f}from"./circle-pause-DLNw6Ucp.js";import{a as p,c as m,f as h,w as g}from"./index-DrmOCySv.js";var _=r(`brain-circuit`,[[`path`,{d:`M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z`,key:`l5xja`}],[`path`,{d:`M9 13a4.5 4.5 0 0 0 3-4`,key:`10igwf`}],[`path`,{d:`M6.003 5.125A3 3 0 0 0 6.401 6.5`,key:`105sqy`}],[`path`,{d:`M3.477 10.896a4 4 0 0 1 .585-.396`,key:`ql3yin`}],[`path`,{d:`M6 18a4 4 0 0 1-1.967-.516`,key:`2e4loj`}],[`path`,{d:`M12 13h4`,key:`1ku699`}],[`path`,{d:`M12 18h6a2 2 0 0 1 2 2v1`,key:`105ag5`}],[`path`,{d:`M12 8h8`,key:`1lhi5i`}],[`path`,{d:`M16 8V5a2 2 0 0 1 2-2`,key:`u6izg6`}],[`circle`,{cx:`16`,cy:`13`,r:`.5`,key:`ry7gng`}],[`circle`,{cx:`18`,cy:`3`,r:`.5`,key:`1aiba7`}],[`circle`,{cx:`20`,cy:`21`,r:`.5`,key:`yhc1fs`}],[`circle`,{cx:`20`,cy:`8`,r:`.5`,key:`1e43v0`}]]),ee=r(`clock-3`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 6v6h4`,key:`135r8i`}]]),te=r(`database-backup`,[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 12a9 3 0 0 0 5 2.69`,key:`1ui2ym`}],[`path`,{d:`M21 9.3V5`,key:`6k6cib`}],[`path`,{d:`M3 5v14a9 3 0 0 0 6.47 2.88`,key:`i62tjy`}],[`path`,{d:`M12 12v4h4`,key:`1bxaet`}],[`path`,{d:`M13 20a5 5 0 0 0 9-3 4.5 4.5 0 0 0-4.5-4.5c-1.33 0-2.54.54-3.41 1.41L12 16`,key:`1f4ei9`}]]),ne=r(`folder-sync`,[[`path`,{d:`M9 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v.5`,key:`1dkoa9`}],[`path`,{d:`M12 10v4h4`,key:`1czhmt`}],[`path`,{d:`m12 14 1.535-1.605a5 5 0 0 1 8 1.5`,key:`lvuxfi`}],[`path`,{d:`M22 22v-4h-4`,key:`1ewp4q`}],[`path`,{d:`m22 18-1.535 1.605a5 5 0 0 1-8-1.5`,key:`14ync0`}]]),v=n(c());function re(e){return o(e).flatMap(e=>{let t=H(e,[`id`,`conversation_id`]);return t?[{id:t,title:H(e,[`title`,`summary`,`last_message`],t).trim()||t,messageCount:Math.max(0,Math.round(K(e,[`message_count`,`messages`]))),updatedAt:W(e,[`updated_at`,`updatedAt`,`created_at`,`createdAt`])}]:[]}).sort((e,t)=>(t.updatedAt??0)-(e.updatedAt??0))}function ie(e){return o((V(e)?e:{}).messages).flatMap(e=>{let t=H(e,[`role`]),n=typeof e.content==`string`?e.content:``;return t!==`user`&&t!==`assistant`||!n.trim()?[]:[{role:t,content:n}]})}function y(e,t){let n=V(e)?e:{},r=(o(n.sources).length?o(n.sources):o(n.tiers)).map((e,t)=>({id:H(e,[`id`,`source`,`label`],`memory-${t}`),title:H(e,[`title`,`label`,`source`,`path`,`name`],`Workspace memory`),kind:U(e,[`type`,`source_type`,`kind`,`health`],`Memory`),tags:[],agentGenerated:!1})),i=o(n.recent_memories||n.recentMemories).map((e,t)=>{let n=V(e.metadata)?e.metadata:{},r=G(e,[`tags`]),i=H(e,[`content`,`summary`,`detail`]),a=H(n,[`source`]),o=r.includes(`agent-synthesis`)||a===`agent_runtime`||a===`agent_runtime_synthesis`;return{id:H(e,[`id`],`recent-memory-${t}`),title:i?i.replace(/\s+/g,` `).slice(0,96):U(e,[`kind`],`Memory`),kind:U(e,[`kind`],`Memory`),detail:i,tags:r,agentGenerated:o}}),a=o(t).map((e,t)=>({id:H(e,[`id`,`conversation_id`],`conversation-${t}`),title:H(e,[`title`,`summary`,`id`],`Conversation`),kind:`Conversation`,tags:[],agentGenerated:!1}));return I([...i,...r,...a]).slice(0,12)}function b(e){let t=V(e)?e:{},n=o(t.nodes),r=o(t.edges),a=n.flatMap(e=>{let t=H(e,[`id`,`node_id`,`title`,`label`]);if(!t)return[];let n=V(e.metadata)?e.metadata:{},r=U(e,[`type`,`kind`,`category`],`Concept`),a=H(e,[`title`,`label`,`name`],t.replace(/^[^:]+:/,``)),o=H(e,[`summary`,`description`,`snippet`])||H(n,[`summary`,`description`,`relative_path`,`filename`]),s=i(K(e,[`importance_norm`,`importance`,`score`])||.5,.08,1),c=W(e,[`created_at`,`createdAt`,`added_at`,`addedAt`,`timestamp`,`updated_at`,`updatedAt`])??W(n,[`created_at`,`createdAt`,`added_at`,`addedAt`,`timestamp`,`updated_at`,`updatedAt`]);return[{id:t,label:a,type:r,summary:o,importance:s,...c===void 0?{}:{createdAt:c}}]}).sort((e,t)=>t.importance-e.importance),s=new Set(a.map(e=>e.id));return{nodes:a,edges:r.flatMap((e,t)=>{let n=H(e,[`from`,`source`,`source_id`]),r=H(e,[`to`,`target`,`target_id`]);return!n||!r||!s.has(n)||!s.has(r)?[]:[{id:H(e,[`id`],`edge-${t}`),source:n,target:r,label:U(e,[`type`,`label`,`relationship`],`Relates`),weight:K(e,[`weight`,`score`,`confidence`])||1}]})}}function ae(e){let t=V(e)?e:{},n=[t,t.knowledge_graph,t.ingestion,t.result].filter(V),r=new Set,i=0,a,s;for(let e of n){let t=H(e,[`node_id`,`graph_node`,`graph_node_id`]);t&&r.add(t);for(let t of o(e.indexed_nodes))if(typeof t==`string`&&t.trim())r.add(t.trim());else if(V(t)){let e=H(t,[`node_id`,`graph_node_id`,`id`]);e&&r.add(e)}i=Math.max(i,K(e,[`chunk_count`,`chunks`,`indexed_count`])),typeof e.duplicate==`boolean`&&(a=e.duplicate),s||=H(e,[`provenance_id`])}let c;for(let e of n){let t=x(e);if(t){c=t;break}}return{nodeIds:Array.from(r),chunkCount:i,...a===void 0?{}:{duplicate:a},...s?{provenanceId:s}:{},...c?{extraction:c}:{}}}function x(e){let t=V(e)?e:{},n=V(t.extraction_quality)?t.extraction_quality:null;if(!n)return null;let r=H(n,[`level`]);if(r!==`high`&&r!==`medium`&&r!==`low`)return null;let i=G(t,[`warnings`]).length?G(t,[`warnings`]):G(n,[`warnings`]);return{score:K(n,[`score`]),level:r,reasons:G(n,[`reasons`]),warnings:i}}function S(e){let t=V(e)?e:{},n=V(t.context_quality)?t.context_quality:null,r=!n&&V(t.trace)&&V(t.trace.context_quality)?t.trace.context_quality:null,i=n||r||(typeof t.mode==`string`&&typeof t.limited==`boolean`?t:null);if(!i)return null;let a=H(i,[`mode`]);if(!a)return null;let o=typeof i.reason==`string`&&i.reason.trim()?i.reason.trim():null;return{mode:a,nodes:Math.max(0,Math.round(K(i,[`nodes`]))),limited:q(i,[`limited`],!1),reason:o}}function C(e){let t=V(e)?e:{},n=(V(t.grounding)?t.grounding:null)||(typeof t.status==`string`&&`label`in t?t:null);if(!n)return null;let r=H(n,[`status`]);return[`supported`,`unsupported`,`no_context`].includes(r)?{status:r,reason:typeof n.reason==`string`&&n.reason.trim()?n.reason.trim():null}:null}function w(e){if(!V(e))return null;let t=H(e,[`status`]);if(t!==`ok`&&t!==`pending`&&t!==`failed`)return null;let n=H(e,[`detail`]);return{status:t,...n?{detail:n}:{}}}function oe(e){let t=!!e.generation?.repaired,n=new Map;for(let t of e.artifacts||[])t&&typeof t.path==`string`&&n.set(t.path,!!t.previewable);let r=new Map,i=null;if(Array.isArray(e.brain_ingest))for(let t of e.brain_ingest){let e=w(t);e&&V(t)&&typeof t.path==`string`&&r.set(t.path,e)}else i=w(e.brain_ingest);let a=e.created_files||[];return a.map(e=>{let o=r.get(e.path)||(a.length===1?i:null);return{path:e.path,filename:e.filename||e.path.split(`/`).pop()||e.path,bytes:e.bytes||0,repaired:t,...n.has(e.path)?{previewable:n.get(e.path)}:{},...o?{brainIngest:o}:{}}})}function se(e){if(!V(e))return null;let t=H(e,[`phase`]),n=H(e,[`event`]);if(!t||!n)return null;let r=Number(e.step);return{phase:t,event:n,...H(e,[`action`])?{action:H(e,[`action`])}:{},...H(e,[`path`])?{path:H(e,[`path`])}:{},...Number.isFinite(r)?{step:Math.round(r)}:{},...typeof e.ok==`boolean`?{ok:e.ok}:{},...H(e,[`decision`])?{decision:H(e,[`decision`])}:{},...H(e,[`verdict`])?{verdict:H(e,[`verdict`])}:{},...H(e,[`state`])?{state:H(e,[`state`])}:{},...H(e,[`detail`,`error`])?{detail:H(e,[`detail`,`error`])}:{}}}function ce(e){return o(e).flatMap(e=>{if(!V(e))return[];let t=H(e,[`action`,`tool`]),n=H(e,[`state`]),r=H(e,[`error`]);if(!t&&!n&&!r)return[];let i=H(V(e.args)?e.args:{},[`path`,`target`,`file`]);return t?[{phase:`execute`,event:`tool`,action:t,...i?{path:i}:{},ok:!r,...r?{detail:r}:{}}]:r?[{phase:`execute`,event:`state`,...n?{state:n}:{},ok:!1,detail:r}]:[{phase:`terminal`,event:`state`,state:n}]})}function le(e){if(!V(e))return null;let t={};if(V(e.repairs))for(let[n,r]of Object.entries(e.repairs)){let e=Number(r);Number.isFinite(e)&&e>0&&(t[n]=Math.round(e))}let n=Math.max(0,Math.round(K(e,[`parse_errors`,`parseErrors`]))),r=Math.max(0,Math.round(K(e,[`parse_recovered`,`parseRecovered`]))),i=Object.values(t).reduce((e,t)=>e+t,0)+r;return i<1?null:{repairs:t,parseErrors:n,parseRecovered:r,total:i}}function T(e){return o((V(e)?e:{}).pending).flatMap(e=>{let t=H(e,[`run_id`,`runId`]);return t?[{runId:t,goal:H(e,[`goal`]),expiresAt:H(e,[`expires_at`,`expiresAt`])}]:[]})}function E(e){let t=V(e)?e:{},n=o(t.watches).flatMap(e=>{if(!V(e))return[];let t=H(e,[`id`]),n=H(e,[`path`]);if(!t&&!n)return[];let r=V(e.last_result)?e.last_result:null,i=o(e.last_errors).flatMap(e=>{if(typeof e==`string`&&e.trim())return[{path:``,detail:e.trim()}];if(!V(e))return[];let t=H(e,[`detail`,`reason`,`error`]),n=H(e,[`path`,`source`,`file`]);return!t&&!n?[]:[{path:n,detail:t}]});return[{id:t||n,path:n,enabled:q(e,[`enabled`],!1),lastScanAt:H(e,[`last_scan_at`,`lastScanAt`]),lastResult:r?{status:H(r,[`status`]),ingested:Math.max(0,Math.round(K(r,[`ingested`]))),failed:Math.max(0,Math.round(K(r,[`failed`])))}:null,trackedFiles:Math.max(0,Math.round(K(e,[`tracked_files`,`trackedFiles`]))),lastErrors:i.slice(0,3)}]});return{enabledCount:Math.max(0,Math.round(K(t,[`enabled_count`,`enabledCount`]))),polling:q(t,[`polling`],!1),intervalSeconds:Math.max(0,Math.round(K(t,[`interval_seconds`,`intervalSeconds`]))),watches:n}}function D(e){let t=V(e)?e:{};return{status:H(t,[`status`],`unavailable`),pendingItems:Math.max(0,Math.round(K(t,[`pending_items`,`pendingItems`]))),totalItems:Math.max(0,Math.round(K(t,[`total_items`,`totalItems`]))),detail:H(t,[`detail`])}}function O(e){return typeof e==`string`?e.trim():V(e)?[H(e,[`source`,`path`,`file`]),H(e,[`detail`,`reason`,`error`])].filter(Boolean).join(` — `):``}function k(e){return o((V(e)?e:{}).jobs).flatMap(e=>{let t=H(e,[`job_id`,`jobId`,`id`]);if(!t)return[];let n=H(e,[`created_at`,`createdAt`]),r=H(e,[`updated_at`,`updatedAt`]);return[{jobId:t,status:H(e,[`status`],`queued`),total:Math.max(0,Math.round(K(e,[`total`]))),processed:Math.max(0,Math.round(K(e,[`processed`]))),failed:Math.max(0,Math.round(K(e,[`failed`]))),errors:o(e.errors).map(O).filter(Boolean).slice(0,10),...n?{createdAt:n}:{},...r?{updatedAt:r}:{}}]})}function A(e){let t=V(e)?e:{},n=H(t,[`current`,`current_model`,`local_model`]);if(n)return n;let r=o(t.loaded||t.loaded_models).find(e=>e.id||e.name||e.model_id);return r?H(r,[`name`,`id`,`model_id`],`local mind`):`local mind`}function j(e){let t=V(e)?e:{};return H(t,[`current`,`current_model`,`local_model`])?!0:o(t.loaded||t.loaded_models).some(e=>e.id||e.name||e.model_id)}function M(e,t,n){let r=V(e)?e:{},a=V(r.brain_readiness)?r.brain_readiness:{},o=H(a,[`state`]),s=K(a,[`depth`]),c=K(a,[`score`]);if((o===`quiet`||o===`forming`||o===`alive`)&&B(s)){let e=V(a.signals)?a.signals:{};return{score:i(Math.round(c||0),0,100),state:o,depth:s,titleKey:H(a,[`title_key`,`titleKey`],`brain.readiness.${o}`),actionKey:H(a,[`action_key`,`actionKey`],z(o)),source:`memory_service`,signals:{memoryCount:K(e,[`memory_count`,`memoryCount`]),conceptCount:K(e,[`concept_count`,`conceptCount`]),relationshipCount:K(e,[`relationship_count`,`relationshipCount`]),healthySources:K(e,[`healthy_sources`,`healthySources`])}}}return R(t,n)}function N(e,t=``){let n=V(e)&&typeof e.ok==`boolean`&&`data`in e?e:null;if(n&&!n.ok)return P(t);let r=n?n.data:e,i=V(r)?r:{},a=V(i.model_continuity)?i.model_continuity:{},s=V(i.proofs)?i.proofs:{},c=V(i.recall)?i.recall:{},l=V(i.claims)?i.claims:{},u=K(s,[`durable_items`,`durableItems`]);return{status:H(i,[`status`],`quiet`),modelContinuity:{activeModel:H(a,[`active_model`,`activeModel`],t),brainOwner:H(a,[`brain_owner`,`brainOwner`],`lattice_brain`),capability:q(a,[`capability`],!0),survivesModelSwitch:q(a,[`survives_model_switch`,`survivesModelSwitch`],!1),proven:q(a,[`proven`],!1),contextStore:H(a,[`context_store`,`contextStore`],`workspace + conversation + graph + vector`)},proofs:{durableItems:u,hasDurableEvidence:q(s,[`has_durable_evidence`,`hasDurableEvidence`],u>0),workspaceMemories:K(s,[`workspace_memories`,`workspaceMemories`]),conversations:K(s,[`conversations`]),graphConcepts:K(s,[`graph_concepts`,`graphConcepts`]),vectorItems:K(s,[`vector_items`,`vectorItems`]),healthySources:K(s,[`healthy_sources`,`healthySources`])},recall:{query:H(c,[`query`]),count:K(c,[`count`]),items:o(c.items).map((e,t)=>({id:H(e,[`id`],`recall-${t}`),source:U(e,[`source`],`Memory`),title:H(e,[`title`],`Memory`),snippet:H(e,[`snippet`]),score:K(e,[`score`]),matchedTerms:G(e,[`matched_terms`,`matchedTerms`]),confidence:ue(e,K(e,[`score`]))}))},claims:{canRecallUserContext:q(l,[`can_recall_user_context`,`canRecallUserContext`],!1),keepsContextAcrossModels:q(l,[`keeps_context_across_models`,`keepsContextAcrossModels`],!1),isKnowledgeStore:q(l,[`is_knowledge_store`,`isKnowledgeStore`],!1)}}}function P(e){return{status:`unavailable`,modelContinuity:{activeModel:e,brainOwner:``,capability:!1,survivesModelSwitch:!1,proven:!1,contextStore:``},proofs:{durableItems:0,hasDurableEvidence:!1,workspaceMemories:0,conversations:0,graphConcepts:0,vectorItems:0,healthySources:0},recall:{query:``,count:0,items:[]},claims:{canRecallUserContext:!1,keepsContextAcrossModels:!1,isKnowledgeStore:!1}}}function F(e){let t=V(e)?e:{},n=V(t.focus)?t.focus:{},r=o(t.next_actions||t.nextActions),a=o(t.suggested_questions||t.suggestedQuestions),s=o(t.proactive_actions||t.proactiveActions),c=o(t.evidence),l=r.length?r:[{id:`add_source`,label_key:`brain.brief.action.add`,detail_key:`brain.brief.action.add.detail`,route:`/capture`,priority:10},{id:`ask_brain`,label_key:`brain.brief.action.ask`,detail_key:`brain.brief.action.ask.detail`,route:``,priority:9}],u=c.length?c:[{id:`durable`,label_key:`brain.brief.evidence.durable`,value:0,detail_key:`brain.brief.evidence.durable.detail`},{id:`graph`,label_key:`brain.brief.evidence.graph`,value:0,detail_key:`brain.brief.evidence.graph.detail`},{id:`sources`,label_key:`brain.brief.evidence.sources`,value:0,detail_key:`brain.brief.evidence.sources.detail`}];return{status:H(t,[`status`],`quiet`),score:i(Math.round(K(t,[`score`])),0,100),headlineKey:H(t,[`headline_key`,`headlineKey`],`brain.brief.headline.quiet`),bodyKey:H(t,[`body_key`,`bodyKey`],`brain.brief.body.quiet`),focus:{kind:H(n,[`kind`],`empty`),title:H(n,[`title`]),detail:H(n,[`detail`]),source:U(n,[`source`],`Memory`),score:K(n,[`score`]),empty:q(n,[`empty`],!H(n,[`title`]))},nextActions:l.map(e=>({id:H(e,[`id`],`ask_brain`),labelKey:H(e,[`label_key`,`labelKey`],`brain.brief.action.ask`),detailKey:H(e,[`detail_key`,`detailKey`],`brain.brief.action.ask.detail`),route:H(e,[`route`]),priority:K(e,[`priority`])})),suggestedQuestions:a.map(e=>({id:H(e,[`id`],`suggested-question`),labelKey:H(e,[`label_key`,`labelKey`],`brain.suggestion.focus.label`),detailKey:H(e,[`detail_key`,`detailKey`],`brain.suggestion.focus.detail`),promptKey:H(e,[`prompt_key`,`promptKey`],`brain.suggestion.focus.prompt`),params:L(e.params),priority:K(e,[`priority`])})).sort((e,t)=>t.priority-e.priority),proactiveActions:s.map(e=>({id:H(e,[`id`],`proactive-action`),intent:H(e,[`intent`],`ask`),labelKey:H(e,[`label_key`,`labelKey`],`brain.proactive.evidence.label`),detailKey:H(e,[`detail_key`,`detailKey`],`brain.proactive.evidence.detail`),prompt:H(e,[`prompt`]),route:H(e,[`route`]),priority:K(e,[`priority`]),context:L(e.context)})).sort((e,t)=>t.priority-e.priority),evidence:u.map(e=>({id:H(e,[`id`],`evidence`),labelKey:H(e,[`label_key`,`labelKey`],`brain.brief.evidence.durable`),value:K(e,[`value`]),detailKey:H(e,[`detail_key`,`detailKey`],`brain.brief.evidence.durable.detail`)})),generatedAt:H(t,[`generated_at`,`generatedAt`])}}function I(e){let t=new Set;return e.filter(e=>t.has(e.id)?!1:(t.add(e.id),!0))}function L(e){return V(e)?Object.entries(e).reduce((e,[t,n])=>((typeof n==`string`||typeof n==`number`)&&(e[t]=n),e),{}):{}}function R(e,t){let n=Math.min(100,Math.round(e*12+t*10));return e<1?{score:Math.max(12,n),state:`quiet`,depth:2,titleKey:`brain.readiness.quiet`,actionKey:`brain.readiness.start`,source:`frontend_fallback`,signals:{memoryCount:e,conceptCount:t,relationshipCount:0,healthySources:0}}:t<3?{score:Math.max(38,n),state:`forming`,depth:3,titleKey:`brain.readiness.forming`,actionKey:`brain.readiness.grow`,source:`frontend_fallback`,signals:{memoryCount:e,conceptCount:t,relationshipCount:0,healthySources:0}}:{score:Math.max(72,n),state:`alive`,depth:5,titleKey:`brain.readiness.alive`,actionKey:`brain.readiness.map`,source:`frontend_fallback`,signals:{memoryCount:e,conceptCount:t,relationshipCount:0,healthySources:0}}}function z(e){return e===`quiet`?`brain.readiness.start`:e===`forming`?`brain.readiness.grow`:`brain.readiness.map`}function B(e){return e>=1&&e<=5&&Number.isInteger(e)}var V=t;function H(e,t,n=``){for(let n of t){let t=e[n];if(typeof t==`string`&&t.trim())return t;if(typeof t==`number`&&Number.isFinite(t))return String(t)}return n}function U(e,t,n=``){return H(e,t,n).replace(/[_-]+/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}function W(e,t){for(let n of t){let t=e[n];if(typeof t==`number`&&Number.isFinite(t))return t<0xe8d4a51000?t*1e3:t;if(typeof t==`string`&&t.trim()){let e=Number(t);if(Number.isFinite(e)&&/^\d+$/.test(t.trim()))return e<0xe8d4a51000?e*1e3:e;let n=Date.parse(t);if(Number.isFinite(n))return n}}}function G(e,t){for(let n of t){let t=e[n];if(Array.isArray(t))return t.filter(e=>typeof e==`string`&&e.trim().length>0)}return[]}function ue(e,t){let n=e.confidence;return n===`high`||n===`medium`||n===`low`?n:t>=.65?`high`:t>=.3?`medium`:`low`}function K(e,t){for(let n of t){let t=Number(e[n]);if(Number.isFinite(t))return t}return 0}function q(e,t,n){for(let n of t){let t=e[n];if(typeof t==`boolean`)return t}return n}var J=e();function Y(){let e=u({queryKey:[`vectorFreshness`],queryFn:s.brainVectorFreshness,staleTime:6e4,refetchOnWindowFocus:!1,retry:!1});return v.useMemo(()=>e.data?.ok?D(e.data.data):null,[e.data])}function de({language:e}){let t=Y();return!t||t.status!==`pending`||t.pendingItems<1?null:(0,J.jsxs)(`p`,{className:`brain-freshness-chip`,role:`status`,"data-testid":`vector-freshness-chip`,children:[(0,J.jsx)(ee,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),(0,J.jsx)(`span`,{children:a(e,`brain.freshness.pending`,{count:t.pendingItems})})]})}var X=new Set([`queued`,`running`]),Z=new Set([`failed`,`partial`]);function Q(e){return X.has(e.status)}function fe(e){return e===`queued`||e===`running`||e===`completed`||e===`failed`||e===`partial`?`brain.jobs.status.${e}`:`brain.jobs.status.queued`}var pe=new Set([`completed`,`partial`]),me=3;function he({language:e,job:t,freshness:n,onDismiss:r}){let i=n&&n.totalItems>0&&(n.status===`ready`||n.status===`pending`)?Math.max(0,Math.min(100,Math.round((n.totalItems-n.pendingItems)/n.totalItems*100))):null,o=t.errors.slice(0,me);return(0,J.jsxs)(`div`,{className:`brain-jobs-report lattice-success-pulse is-${t.status}`,role:`status`,"data-testid":`ingestion-job-report`,children:[(0,J.jsxs)(`div`,{className:`brain-jobs-report-head`,children:[(0,J.jsx)(d,{className:`h-4 w-4`,"aria-hidden":`true`}),(0,J.jsx)(`strong`,{children:a(e,t.status===`partial`?`brain.jobs.report.titlePartial`:`brain.jobs.report.title`)}),r?(0,J.jsx)(`button`,{type:`button`,className:`brain-jobs-report-dismiss`,"aria-label":a(e,`brain.jobs.report.dismiss`),onClick:r,children:(0,J.jsx)(p,{className:`h-3.5 w-3.5`,"aria-hidden":`true`})}):null]}),(0,J.jsxs)(`div`,{className:`brain-jobs-report-stats`,children:[t.processed>0?(0,J.jsx)(`span`,{className:`brain-jobs-report-stat`,children:a(e,`brain.jobs.report.documents`,{count:t.processed})}):null,t.failed>0?(0,J.jsx)(`span`,{className:`brain-jobs-report-stat is-failed`,children:a(e,`brain.jobs.failedCount`,{count:t.failed})}):null,i===null?null:(0,J.jsx)(`span`,{className:`brain-jobs-report-stat`,children:a(e,`brain.jobs.report.vector`,{percent:i})})]}),o.length?(0,J.jsxs)(`div`,{className:`brain-jobs-report-samples`,children:[(0,J.jsx)(`small`,{children:a(e,`brain.jobs.report.skipped`)}),(0,J.jsx)(`ul`,{children:o.map(e=>(0,J.jsx)(`li`,{children:e},e))})]}):null]})}function ge({language:e}){let t=l(),n=Y(),r=u({queryKey:[`ingestionJobs`],queryFn:s.ingestionJobs,refetchOnWindowFocus:!1,retry:!1,refetchInterval:e=>{let t=e.state.data;return t?.ok&&k(t.data).some(Q)?4e3:!1}}),i=g({mutationFn:e=>s.resumeIngestionJob(e),onSettled:()=>void t.invalidateQueries({queryKey:[`ingestionJobs`]})}),o=v.useMemo(()=>r.data?.ok?k(r.data.data):[],[r.data]),c=v.useRef(new Map),[d,f]=v.useState([]);v.useEffect(()=>{let e=c.current,t=[];for(let n of o){let r=e.get(n.jobId);r&&X.has(r)&&pe.has(n.status)&&t.push(n.jobId),e.set(n.jobId,n.status)}t.length&&f(e=>[...t,...e.filter(e=>!t.includes(e))].slice(0,2))},[o]);let p=d.map(e=>o.find(t=>t.jobId===e)).filter(e=>!!e),_=o.filter(e=>Q(e)||Z.has(e.status)).slice(0,4);return!_.length&&!p.length?null:(0,J.jsxs)(`section`,{className:`brain-jobs-panel`,"aria-label":a(e,`brain.jobs.aria`),"data-testid":`ingestion-jobs-panel`,children:[p.map(t=>(0,J.jsx)(he,{language:e,job:t,freshness:n,onDismiss:()=>f(e=>e.filter(e=>e!==t.jobId))},t.jobId)),_.length?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`header`,{className:`brain-jobs-head`,children:(0,J.jsx)(`strong`,{children:a(e,`brain.jobs.title`)})}),(0,J.jsx)(`ul`,{className:`brain-jobs-list`,children:_.map(t=>{let n=Math.max(t.total,t.processed,1),r=Math.min(100,Math.round(t.processed/n*100)),o=Z.has(t.status),s=i.isPending&&i.variables===t.jobId;return(0,J.jsxs)(`li`,{className:`brain-jobs-item is-${t.status}`,children:[(0,J.jsxs)(`div`,{className:`brain-jobs-item-row`,children:[(0,J.jsx)(`span`,{className:`brain-jobs-status`,children:a(e,fe(t.status))}),(0,J.jsx)(`span`,{className:`brain-jobs-counts`,children:a(e,`brain.jobs.progress`,{processed:t.processed,total:t.total})}),t.failed>0?(0,J.jsxs)(`span`,{className:`brain-jobs-failed`,children:[(0,J.jsx)(m,{className:`h-3 w-3`,"aria-hidden":`true`}),a(e,`brain.jobs.failedCount`,{count:t.failed})]}):null]}),(0,J.jsx)(`div`,{className:`brain-jobs-bar`,role:`progressbar`,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":r,"aria-label":a(e,`brain.jobs.progressAria`,{processed:t.processed,total:t.total}),children:(0,J.jsx)(`span`,{className:`brain-jobs-bar-fill`,style:{width:`${r}%`}})}),o?(0,J.jsxs)(`button`,{type:`button`,className:`brain-jobs-resume`,disabled:i.isPending,onClick:()=>i.mutate(t.jobId),children:[(0,J.jsx)(h,{className:`h-3 w-3`,"aria-hidden":`true`}),s?a(e,`brain.jobs.resuming`):a(e,`brain.jobs.resume`)]}):null]},t.jobId)})})]}):null]})}function $(e){return e.split(/[\\/]/).filter(Boolean).pop()||e}function _e(e,t){if(!t)return a(e,`brain.watch.scan.never`);let n=Date.parse(t);if(!Number.isFinite(n))return a(e,`brain.watch.scan.never`);let r=Math.max(0,Date.now()-n),i=Math.floor(r/6e4);if(i<1)return a(e,`brain.watch.scan.now`);if(i<60)return a(e,`brain.watch.scan.minutes`,{count:i});let o=Math.floor(i/60);return o<24?a(e,`brain.watch.scan.hours`,{count:o}):a(e,`brain.watch.scan.days`,{count:Math.floor(o/24)})}var ve=4;function ye({language:e}){let t=u({queryKey:[`ingestionWatch`],queryFn:s.ingestionWatchStatus,staleTime:3e4,refetchOnWindowFocus:!1,retry:!1}),n=v.useMemo(()=>t.data?.ok?E(t.data.data):null,[t.data]);if(!n||n.enabledCount<1)return null;let r=n.watches.filter(e=>e.enabled).slice(0,ve);return r.length?(0,J.jsxs)(`section`,{className:`brain-watch-card`,"aria-label":a(e,`brain.watch.aria`),"data-testid":`watch-health-card`,children:[(0,J.jsxs)(`header`,{className:`brain-watch-head`,children:[(0,J.jsx)(ne,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),(0,J.jsx)(`strong`,{children:a(e,`brain.watch.title`)})]}),n.polling?null:(0,J.jsxs)(`p`,{className:`brain-watch-note`,role:`note`,"data-testid":`watch-polling-note`,children:[(0,J.jsx)(f,{className:`h-3 w-3`,"aria-hidden":`true`}),a(e,`brain.watch.notLive`)]}),(0,J.jsx)(`ul`,{className:`brain-watch-list`,children:r.map(t=>(0,J.jsx)(be,{language:e,watch:t},t.id))})]}):null}function be({language:e,watch:t}){return(0,J.jsxs)(`li`,{className:`brain-watch-item`,children:[(0,J.jsxs)(`div`,{className:`brain-watch-item-row`,children:[(0,J.jsx)(`span`,{className:`brain-watch-path`,title:t.path,children:$(t.path)}),(0,J.jsx)(`small`,{className:`brain-watch-scan`,children:_e(e,t.lastScanAt)})]}),(0,J.jsxs)(`div`,{className:`brain-watch-item-row`,children:[t.lastResult&&t.lastResult.ingested>0?(0,J.jsx)(`span`,{className:`brain-watch-stat`,children:a(e,`brain.watch.ingested`,{count:t.lastResult.ingested})}):null,t.lastResult&&t.lastResult.failed>0?(0,J.jsxs)(`span`,{className:`brain-watch-stat is-failed`,children:[(0,J.jsx)(m,{className:`h-3 w-3`,"aria-hidden":`true`}),a(e,`brain.jobs.failedCount`,{count:t.lastResult.failed})]}):null,t.trackedFiles>0?(0,J.jsx)(`small`,{className:`brain-watch-tracked`,children:a(e,`brain.watch.tracked`,{count:t.trackedFiles})}):null]}),t.lastErrors.length?(0,J.jsxs)(`div`,{className:`brain-watch-errors`,children:[(0,J.jsx)(`small`,{children:a(e,`brain.watch.errors`)}),(0,J.jsx)(`ul`,{children:t.lastErrors.slice(0,3).map((e,t)=>(0,J.jsx)(`li`,{children:[e.path?$(e.path):``,e.detail].filter(Boolean).join(` — `)},`${e.path}-${t}`))})]}):null]})}function xe(e,t){if(!t)return``;let n=new Date(t);return Number.isNaN(n.getTime())?``:n.toLocaleTimeString(e===`ko`?`ko-KR`:`en-US`,{hour:`2-digit`,minute:`2-digit`})}function Se({language:e,knownRunIds:t}){let n=u({queryKey:[`agentApprovals`],queryFn:s.agentApprovals,staleTime:1/0,refetchOnWindowFocus:!1,retry:!1}),r=v.useMemo(()=>n.data?.ok?T(n.data.data):[],[n.data]),i=v.useMemo(()=>new Set(t),[t]),o=r.filter(e=>!i.has(e.runId));return o.length?(0,J.jsx)(`aside`,{className:`brain-pending-approvals`,role:`note`,"aria-label":a(e,`brain.approval.pendingNotice.aria`),"data-testid":`pending-approvals-notice`,children:o.slice(0,2).map(t=>{let n=xe(e,t.expiresAt);return(0,J.jsxs)(`p`,{children:[(0,J.jsx)(`span`,{children:t.goal?a(e,`brain.approval.pendingNotice`,{goal:t.goal}):a(e,`brain.approval.pendingNotice.generic`)}),(0,J.jsx)(`small`,{children:n?a(e,`brain.approval.pendingNotice.expiry`,{time:n}):a(e,`brain.approval.pendingNotice.hint`)})]},t.runId)})}):null}export{te as C,H as S,S as _,oe as a,b,M as c,A as d,ae as f,ce as g,se as h,ye as i,re as l,V as m,Se as n,F as o,j as p,de as r,N as s,ge as t,y as u,ie as v,_ as w,le as x,C as y};
|
|
1
|
+
import{_ as e,a as t,b as n,m as r,n as i,p as a,t as o,u as s,v as c}from"./utils-BqoznzGP.js";import{a as l,r as u}from"./navigation-BPQqEQwr.js";import{n as d}from"./input-CSi6OBJ9.js";import{t as f}from"./circle-pause-T9POo4qy.js";import{a as p,c as m,f as h,w as g}from"./index-CEu0Wqjl.js";var _=r(`brain-circuit`,[[`path`,{d:`M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z`,key:`l5xja`}],[`path`,{d:`M9 13a4.5 4.5 0 0 0 3-4`,key:`10igwf`}],[`path`,{d:`M6.003 5.125A3 3 0 0 0 6.401 6.5`,key:`105sqy`}],[`path`,{d:`M3.477 10.896a4 4 0 0 1 .585-.396`,key:`ql3yin`}],[`path`,{d:`M6 18a4 4 0 0 1-1.967-.516`,key:`2e4loj`}],[`path`,{d:`M12 13h4`,key:`1ku699`}],[`path`,{d:`M12 18h6a2 2 0 0 1 2 2v1`,key:`105ag5`}],[`path`,{d:`M12 8h8`,key:`1lhi5i`}],[`path`,{d:`M16 8V5a2 2 0 0 1 2-2`,key:`u6izg6`}],[`circle`,{cx:`16`,cy:`13`,r:`.5`,key:`ry7gng`}],[`circle`,{cx:`18`,cy:`3`,r:`.5`,key:`1aiba7`}],[`circle`,{cx:`20`,cy:`21`,r:`.5`,key:`yhc1fs`}],[`circle`,{cx:`20`,cy:`8`,r:`.5`,key:`1e43v0`}]]),ee=r(`clock-3`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 6v6h4`,key:`135r8i`}]]),te=r(`database-backup`,[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 12a9 3 0 0 0 5 2.69`,key:`1ui2ym`}],[`path`,{d:`M21 9.3V5`,key:`6k6cib`}],[`path`,{d:`M3 5v14a9 3 0 0 0 6.47 2.88`,key:`i62tjy`}],[`path`,{d:`M12 12v4h4`,key:`1bxaet`}],[`path`,{d:`M13 20a5 5 0 0 0 9-3 4.5 4.5 0 0 0-4.5-4.5c-1.33 0-2.54.54-3.41 1.41L12 16`,key:`1f4ei9`}]]),ne=r(`folder-sync`,[[`path`,{d:`M9 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v.5`,key:`1dkoa9`}],[`path`,{d:`M12 10v4h4`,key:`1czhmt`}],[`path`,{d:`m12 14 1.535-1.605a5 5 0 0 1 8 1.5`,key:`lvuxfi`}],[`path`,{d:`M22 22v-4h-4`,key:`1ewp4q`}],[`path`,{d:`m22 18-1.535 1.605a5 5 0 0 1-8-1.5`,key:`14ync0`}]]),v=n(c());function re(e){return o(e).flatMap(e=>{let t=H(e,[`id`,`conversation_id`]);return t?[{id:t,title:H(e,[`title`,`summary`,`last_message`],t).trim()||t,messageCount:Math.max(0,Math.round(K(e,[`message_count`,`messages`]))),updatedAt:W(e,[`updated_at`,`updatedAt`,`created_at`,`createdAt`])}]:[]}).sort((e,t)=>(t.updatedAt??0)-(e.updatedAt??0))}function ie(e){return o((V(e)?e:{}).messages).flatMap(e=>{let t=H(e,[`role`]),n=typeof e.content==`string`?e.content:``;return t!==`user`&&t!==`assistant`||!n.trim()?[]:[{role:t,content:n}]})}function y(e,t){let n=V(e)?e:{},r=(o(n.sources).length?o(n.sources):o(n.tiers)).map((e,t)=>({id:H(e,[`id`,`source`,`label`],`memory-${t}`),title:H(e,[`title`,`label`,`source`,`path`,`name`],`Workspace memory`),kind:U(e,[`type`,`source_type`,`kind`,`health`],`Memory`),tags:[],agentGenerated:!1})),i=o(n.recent_memories||n.recentMemories).map((e,t)=>{let n=V(e.metadata)?e.metadata:{},r=G(e,[`tags`]),i=H(e,[`content`,`summary`,`detail`]),a=H(n,[`source`]),o=r.includes(`agent-synthesis`)||a===`agent_runtime`||a===`agent_runtime_synthesis`;return{id:H(e,[`id`],`recent-memory-${t}`),title:i?i.replace(/\s+/g,` `).slice(0,96):U(e,[`kind`],`Memory`),kind:U(e,[`kind`],`Memory`),detail:i,tags:r,agentGenerated:o}}),a=o(t).map((e,t)=>({id:H(e,[`id`,`conversation_id`],`conversation-${t}`),title:H(e,[`title`,`summary`,`id`],`Conversation`),kind:`Conversation`,tags:[],agentGenerated:!1}));return I([...i,...r,...a]).slice(0,12)}function b(e){let t=V(e)?e:{},n=o(t.nodes),r=o(t.edges),a=n.flatMap(e=>{let t=H(e,[`id`,`node_id`,`title`,`label`]);if(!t)return[];let n=V(e.metadata)?e.metadata:{},r=U(e,[`type`,`kind`,`category`],`Concept`),a=H(e,[`title`,`label`,`name`],t.replace(/^[^:]+:/,``)),o=H(e,[`summary`,`description`,`snippet`])||H(n,[`summary`,`description`,`relative_path`,`filename`]),s=i(K(e,[`importance_norm`,`importance`,`score`])||.5,.08,1),c=W(e,[`created_at`,`createdAt`,`added_at`,`addedAt`,`timestamp`,`updated_at`,`updatedAt`])??W(n,[`created_at`,`createdAt`,`added_at`,`addedAt`,`timestamp`,`updated_at`,`updatedAt`]);return[{id:t,label:a,type:r,summary:o,importance:s,...c===void 0?{}:{createdAt:c}}]}).sort((e,t)=>t.importance-e.importance),s=new Set(a.map(e=>e.id));return{nodes:a,edges:r.flatMap((e,t)=>{let n=H(e,[`from`,`source`,`source_id`]),r=H(e,[`to`,`target`,`target_id`]);return!n||!r||!s.has(n)||!s.has(r)?[]:[{id:H(e,[`id`],`edge-${t}`),source:n,target:r,label:U(e,[`type`,`label`,`relationship`],`Relates`),weight:K(e,[`weight`,`score`,`confidence`])||1}]})}}function ae(e){let t=V(e)?e:{},n=[t,t.knowledge_graph,t.ingestion,t.result].filter(V),r=new Set,i=0,a,s;for(let e of n){let t=H(e,[`node_id`,`graph_node`,`graph_node_id`]);t&&r.add(t);for(let t of o(e.indexed_nodes))if(typeof t==`string`&&t.trim())r.add(t.trim());else if(V(t)){let e=H(t,[`node_id`,`graph_node_id`,`id`]);e&&r.add(e)}i=Math.max(i,K(e,[`chunk_count`,`chunks`,`indexed_count`])),typeof e.duplicate==`boolean`&&(a=e.duplicate),s||=H(e,[`provenance_id`])}let c;for(let e of n){let t=x(e);if(t){c=t;break}}return{nodeIds:Array.from(r),chunkCount:i,...a===void 0?{}:{duplicate:a},...s?{provenanceId:s}:{},...c?{extraction:c}:{}}}function x(e){let t=V(e)?e:{},n=V(t.extraction_quality)?t.extraction_quality:null;if(!n)return null;let r=H(n,[`level`]);if(r!==`high`&&r!==`medium`&&r!==`low`)return null;let i=G(t,[`warnings`]).length?G(t,[`warnings`]):G(n,[`warnings`]);return{score:K(n,[`score`]),level:r,reasons:G(n,[`reasons`]),warnings:i}}function S(e){let t=V(e)?e:{},n=V(t.context_quality)?t.context_quality:null,r=!n&&V(t.trace)&&V(t.trace.context_quality)?t.trace.context_quality:null,i=n||r||(typeof t.mode==`string`&&typeof t.limited==`boolean`?t:null);if(!i)return null;let a=H(i,[`mode`]);if(!a)return null;let o=typeof i.reason==`string`&&i.reason.trim()?i.reason.trim():null;return{mode:a,nodes:Math.max(0,Math.round(K(i,[`nodes`]))),limited:q(i,[`limited`],!1),reason:o}}function C(e){let t=V(e)?e:{},n=(V(t.grounding)?t.grounding:null)||(typeof t.status==`string`&&`label`in t?t:null);if(!n)return null;let r=H(n,[`status`]);return[`supported`,`unsupported`,`no_context`].includes(r)?{status:r,reason:typeof n.reason==`string`&&n.reason.trim()?n.reason.trim():null}:null}function w(e){if(!V(e))return null;let t=H(e,[`status`]);if(t!==`ok`&&t!==`pending`&&t!==`failed`)return null;let n=H(e,[`detail`]);return{status:t,...n?{detail:n}:{}}}function oe(e){let t=!!e.generation?.repaired,n=new Map;for(let t of e.artifacts||[])t&&typeof t.path==`string`&&n.set(t.path,!!t.previewable);let r=new Map,i=null;if(Array.isArray(e.brain_ingest))for(let t of e.brain_ingest){let e=w(t);e&&V(t)&&typeof t.path==`string`&&r.set(t.path,e)}else i=w(e.brain_ingest);let a=e.created_files||[];return a.map(e=>{let o=r.get(e.path)||(a.length===1?i:null);return{path:e.path,filename:e.filename||e.path.split(`/`).pop()||e.path,bytes:e.bytes||0,repaired:t,...n.has(e.path)?{previewable:n.get(e.path)}:{},...o?{brainIngest:o}:{}}})}function se(e){if(!V(e))return null;let t=H(e,[`phase`]),n=H(e,[`event`]);if(!t||!n)return null;let r=Number(e.step);return{phase:t,event:n,...H(e,[`action`])?{action:H(e,[`action`])}:{},...H(e,[`path`])?{path:H(e,[`path`])}:{},...Number.isFinite(r)?{step:Math.round(r)}:{},...typeof e.ok==`boolean`?{ok:e.ok}:{},...H(e,[`decision`])?{decision:H(e,[`decision`])}:{},...H(e,[`verdict`])?{verdict:H(e,[`verdict`])}:{},...H(e,[`state`])?{state:H(e,[`state`])}:{},...H(e,[`detail`,`error`])?{detail:H(e,[`detail`,`error`])}:{}}}function ce(e){return o(e).flatMap(e=>{if(!V(e))return[];let t=H(e,[`action`,`tool`]),n=H(e,[`state`]),r=H(e,[`error`]);if(!t&&!n&&!r)return[];let i=H(V(e.args)?e.args:{},[`path`,`target`,`file`]);return t?[{phase:`execute`,event:`tool`,action:t,...i?{path:i}:{},ok:!r,...r?{detail:r}:{}}]:r?[{phase:`execute`,event:`state`,...n?{state:n}:{},ok:!1,detail:r}]:[{phase:`terminal`,event:`state`,state:n}]})}function le(e){if(!V(e))return null;let t={};if(V(e.repairs))for(let[n,r]of Object.entries(e.repairs)){let e=Number(r);Number.isFinite(e)&&e>0&&(t[n]=Math.round(e))}let n=Math.max(0,Math.round(K(e,[`parse_errors`,`parseErrors`]))),r=Math.max(0,Math.round(K(e,[`parse_recovered`,`parseRecovered`]))),i=Object.values(t).reduce((e,t)=>e+t,0)+r;return i<1?null:{repairs:t,parseErrors:n,parseRecovered:r,total:i}}function T(e){return o((V(e)?e:{}).pending).flatMap(e=>{let t=H(e,[`run_id`,`runId`]);return t?[{runId:t,goal:H(e,[`goal`]),expiresAt:H(e,[`expires_at`,`expiresAt`])}]:[]})}function E(e){let t=V(e)?e:{},n=o(t.watches).flatMap(e=>{if(!V(e))return[];let t=H(e,[`id`]),n=H(e,[`path`]);if(!t&&!n)return[];let r=V(e.last_result)?e.last_result:null,i=o(e.last_errors).flatMap(e=>{if(typeof e==`string`&&e.trim())return[{path:``,detail:e.trim()}];if(!V(e))return[];let t=H(e,[`detail`,`reason`,`error`]),n=H(e,[`path`,`source`,`file`]);return!t&&!n?[]:[{path:n,detail:t}]});return[{id:t||n,path:n,enabled:q(e,[`enabled`],!1),lastScanAt:H(e,[`last_scan_at`,`lastScanAt`]),lastResult:r?{status:H(r,[`status`]),ingested:Math.max(0,Math.round(K(r,[`ingested`]))),failed:Math.max(0,Math.round(K(r,[`failed`])))}:null,trackedFiles:Math.max(0,Math.round(K(e,[`tracked_files`,`trackedFiles`]))),lastErrors:i.slice(0,3)}]});return{enabledCount:Math.max(0,Math.round(K(t,[`enabled_count`,`enabledCount`]))),polling:q(t,[`polling`],!1),intervalSeconds:Math.max(0,Math.round(K(t,[`interval_seconds`,`intervalSeconds`]))),watches:n}}function D(e){let t=V(e)?e:{};return{status:H(t,[`status`],`unavailable`),pendingItems:Math.max(0,Math.round(K(t,[`pending_items`,`pendingItems`]))),totalItems:Math.max(0,Math.round(K(t,[`total_items`,`totalItems`]))),detail:H(t,[`detail`])}}function O(e){return typeof e==`string`?e.trim():V(e)?[H(e,[`source`,`path`,`file`]),H(e,[`detail`,`reason`,`error`])].filter(Boolean).join(` — `):``}function k(e){return o((V(e)?e:{}).jobs).flatMap(e=>{let t=H(e,[`job_id`,`jobId`,`id`]);if(!t)return[];let n=H(e,[`created_at`,`createdAt`]),r=H(e,[`updated_at`,`updatedAt`]);return[{jobId:t,status:H(e,[`status`],`queued`),total:Math.max(0,Math.round(K(e,[`total`]))),processed:Math.max(0,Math.round(K(e,[`processed`]))),failed:Math.max(0,Math.round(K(e,[`failed`]))),errors:o(e.errors).map(O).filter(Boolean).slice(0,10),...n?{createdAt:n}:{},...r?{updatedAt:r}:{}}]})}function A(e){let t=V(e)?e:{},n=H(t,[`current`,`current_model`,`local_model`]);if(n)return n;let r=o(t.loaded||t.loaded_models).find(e=>e.id||e.name||e.model_id);return r?H(r,[`name`,`id`,`model_id`],`local mind`):`local mind`}function j(e){let t=V(e)?e:{};return H(t,[`current`,`current_model`,`local_model`])?!0:o(t.loaded||t.loaded_models).some(e=>e.id||e.name||e.model_id)}function M(e,t,n){let r=V(e)?e:{},a=V(r.brain_readiness)?r.brain_readiness:{},o=H(a,[`state`]),s=K(a,[`depth`]),c=K(a,[`score`]);if((o===`quiet`||o===`forming`||o===`alive`)&&B(s)){let e=V(a.signals)?a.signals:{};return{score:i(Math.round(c||0),0,100),state:o,depth:s,titleKey:H(a,[`title_key`,`titleKey`],`brain.readiness.${o}`),actionKey:H(a,[`action_key`,`actionKey`],z(o)),source:`memory_service`,signals:{memoryCount:K(e,[`memory_count`,`memoryCount`]),conceptCount:K(e,[`concept_count`,`conceptCount`]),relationshipCount:K(e,[`relationship_count`,`relationshipCount`]),healthySources:K(e,[`healthy_sources`,`healthySources`])}}}return R(t,n)}function N(e,t=``){let n=V(e)&&typeof e.ok==`boolean`&&`data`in e?e:null;if(n&&!n.ok)return P(t);let r=n?n.data:e,i=V(r)?r:{},a=V(i.model_continuity)?i.model_continuity:{},s=V(i.proofs)?i.proofs:{},c=V(i.recall)?i.recall:{},l=V(i.claims)?i.claims:{},u=K(s,[`durable_items`,`durableItems`]);return{status:H(i,[`status`],`quiet`),modelContinuity:{activeModel:H(a,[`active_model`,`activeModel`],t),brainOwner:H(a,[`brain_owner`,`brainOwner`],`lattice_brain`),capability:q(a,[`capability`],!0),survivesModelSwitch:q(a,[`survives_model_switch`,`survivesModelSwitch`],!1),proven:q(a,[`proven`],!1),contextStore:H(a,[`context_store`,`contextStore`],`workspace + conversation + graph + vector`)},proofs:{durableItems:u,hasDurableEvidence:q(s,[`has_durable_evidence`,`hasDurableEvidence`],u>0),workspaceMemories:K(s,[`workspace_memories`,`workspaceMemories`]),conversations:K(s,[`conversations`]),graphConcepts:K(s,[`graph_concepts`,`graphConcepts`]),vectorItems:K(s,[`vector_items`,`vectorItems`]),healthySources:K(s,[`healthy_sources`,`healthySources`])},recall:{query:H(c,[`query`]),count:K(c,[`count`]),items:o(c.items).map((e,t)=>({id:H(e,[`id`],`recall-${t}`),source:U(e,[`source`],`Memory`),title:H(e,[`title`],`Memory`),snippet:H(e,[`snippet`]),score:K(e,[`score`]),matchedTerms:G(e,[`matched_terms`,`matchedTerms`]),confidence:ue(e,K(e,[`score`]))}))},claims:{canRecallUserContext:q(l,[`can_recall_user_context`,`canRecallUserContext`],!1),keepsContextAcrossModels:q(l,[`keeps_context_across_models`,`keepsContextAcrossModels`],!1),isKnowledgeStore:q(l,[`is_knowledge_store`,`isKnowledgeStore`],!1)}}}function P(e){return{status:`unavailable`,modelContinuity:{activeModel:e,brainOwner:``,capability:!1,survivesModelSwitch:!1,proven:!1,contextStore:``},proofs:{durableItems:0,hasDurableEvidence:!1,workspaceMemories:0,conversations:0,graphConcepts:0,vectorItems:0,healthySources:0},recall:{query:``,count:0,items:[]},claims:{canRecallUserContext:!1,keepsContextAcrossModels:!1,isKnowledgeStore:!1}}}function F(e){let t=V(e)?e:{},n=V(t.focus)?t.focus:{},r=o(t.next_actions||t.nextActions),a=o(t.suggested_questions||t.suggestedQuestions),s=o(t.proactive_actions||t.proactiveActions),c=o(t.evidence),l=r.length?r:[{id:`add_source`,label_key:`brain.brief.action.add`,detail_key:`brain.brief.action.add.detail`,route:`/capture`,priority:10},{id:`ask_brain`,label_key:`brain.brief.action.ask`,detail_key:`brain.brief.action.ask.detail`,route:``,priority:9}],u=c.length?c:[{id:`durable`,label_key:`brain.brief.evidence.durable`,value:0,detail_key:`brain.brief.evidence.durable.detail`},{id:`graph`,label_key:`brain.brief.evidence.graph`,value:0,detail_key:`brain.brief.evidence.graph.detail`},{id:`sources`,label_key:`brain.brief.evidence.sources`,value:0,detail_key:`brain.brief.evidence.sources.detail`}];return{status:H(t,[`status`],`quiet`),score:i(Math.round(K(t,[`score`])),0,100),headlineKey:H(t,[`headline_key`,`headlineKey`],`brain.brief.headline.quiet`),bodyKey:H(t,[`body_key`,`bodyKey`],`brain.brief.body.quiet`),focus:{kind:H(n,[`kind`],`empty`),title:H(n,[`title`]),detail:H(n,[`detail`]),source:U(n,[`source`],`Memory`),score:K(n,[`score`]),empty:q(n,[`empty`],!H(n,[`title`]))},nextActions:l.map(e=>({id:H(e,[`id`],`ask_brain`),labelKey:H(e,[`label_key`,`labelKey`],`brain.brief.action.ask`),detailKey:H(e,[`detail_key`,`detailKey`],`brain.brief.action.ask.detail`),route:H(e,[`route`]),priority:K(e,[`priority`])})),suggestedQuestions:a.map(e=>({id:H(e,[`id`],`suggested-question`),labelKey:H(e,[`label_key`,`labelKey`],`brain.suggestion.focus.label`),detailKey:H(e,[`detail_key`,`detailKey`],`brain.suggestion.focus.detail`),promptKey:H(e,[`prompt_key`,`promptKey`],`brain.suggestion.focus.prompt`),params:L(e.params),priority:K(e,[`priority`])})).sort((e,t)=>t.priority-e.priority),proactiveActions:s.map(e=>({id:H(e,[`id`],`proactive-action`),intent:H(e,[`intent`],`ask`),labelKey:H(e,[`label_key`,`labelKey`],`brain.proactive.evidence.label`),detailKey:H(e,[`detail_key`,`detailKey`],`brain.proactive.evidence.detail`),prompt:H(e,[`prompt`]),route:H(e,[`route`]),priority:K(e,[`priority`]),context:L(e.context)})).sort((e,t)=>t.priority-e.priority),evidence:u.map(e=>({id:H(e,[`id`],`evidence`),labelKey:H(e,[`label_key`,`labelKey`],`brain.brief.evidence.durable`),value:K(e,[`value`]),detailKey:H(e,[`detail_key`,`detailKey`],`brain.brief.evidence.durable.detail`)})),generatedAt:H(t,[`generated_at`,`generatedAt`])}}function I(e){let t=new Set;return e.filter(e=>t.has(e.id)?!1:(t.add(e.id),!0))}function L(e){return V(e)?Object.entries(e).reduce((e,[t,n])=>((typeof n==`string`||typeof n==`number`)&&(e[t]=n),e),{}):{}}function R(e,t){let n=Math.min(100,Math.round(e*12+t*10));return e<1?{score:Math.max(12,n),state:`quiet`,depth:2,titleKey:`brain.readiness.quiet`,actionKey:`brain.readiness.start`,source:`frontend_fallback`,signals:{memoryCount:e,conceptCount:t,relationshipCount:0,healthySources:0}}:t<3?{score:Math.max(38,n),state:`forming`,depth:3,titleKey:`brain.readiness.forming`,actionKey:`brain.readiness.grow`,source:`frontend_fallback`,signals:{memoryCount:e,conceptCount:t,relationshipCount:0,healthySources:0}}:{score:Math.max(72,n),state:`alive`,depth:5,titleKey:`brain.readiness.alive`,actionKey:`brain.readiness.map`,source:`frontend_fallback`,signals:{memoryCount:e,conceptCount:t,relationshipCount:0,healthySources:0}}}function z(e){return e===`quiet`?`brain.readiness.start`:e===`forming`?`brain.readiness.grow`:`brain.readiness.map`}function B(e){return e>=1&&e<=5&&Number.isInteger(e)}var V=t;function H(e,t,n=``){for(let n of t){let t=e[n];if(typeof t==`string`&&t.trim())return t;if(typeof t==`number`&&Number.isFinite(t))return String(t)}return n}function U(e,t,n=``){return H(e,t,n).replace(/[_-]+/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}function W(e,t){for(let n of t){let t=e[n];if(typeof t==`number`&&Number.isFinite(t))return t<0xe8d4a51000?t*1e3:t;if(typeof t==`string`&&t.trim()){let e=Number(t);if(Number.isFinite(e)&&/^\d+$/.test(t.trim()))return e<0xe8d4a51000?e*1e3:e;let n=Date.parse(t);if(Number.isFinite(n))return n}}}function G(e,t){for(let n of t){let t=e[n];if(Array.isArray(t))return t.filter(e=>typeof e==`string`&&e.trim().length>0)}return[]}function ue(e,t){let n=e.confidence;return n===`high`||n===`medium`||n===`low`?n:t>=.65?`high`:t>=.3?`medium`:`low`}function K(e,t){for(let n of t){let t=Number(e[n]);if(Number.isFinite(t))return t}return 0}function q(e,t,n){for(let n of t){let t=e[n];if(typeof t==`boolean`)return t}return n}var J=e();function Y(){let e=u({queryKey:[`vectorFreshness`],queryFn:s.brainVectorFreshness,staleTime:6e4,refetchOnWindowFocus:!1,retry:!1});return v.useMemo(()=>e.data?.ok?D(e.data.data):null,[e.data])}function de({language:e}){let t=Y();return!t||t.status!==`pending`||t.pendingItems<1?null:(0,J.jsxs)(`p`,{className:`brain-freshness-chip`,role:`status`,"data-testid":`vector-freshness-chip`,children:[(0,J.jsx)(ee,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),(0,J.jsx)(`span`,{children:a(e,`brain.freshness.pending`,{count:t.pendingItems})})]})}var X=new Set([`queued`,`running`]),Z=new Set([`failed`,`partial`]);function Q(e){return X.has(e.status)}function fe(e){return e===`queued`||e===`running`||e===`completed`||e===`failed`||e===`partial`?`brain.jobs.status.${e}`:`brain.jobs.status.queued`}var pe=new Set([`completed`,`partial`]),me=3;function he({language:e,job:t,freshness:n,onDismiss:r}){let i=n&&n.totalItems>0&&(n.status===`ready`||n.status===`pending`)?Math.max(0,Math.min(100,Math.round((n.totalItems-n.pendingItems)/n.totalItems*100))):null,o=t.errors.slice(0,me);return(0,J.jsxs)(`div`,{className:`brain-jobs-report lattice-success-pulse is-${t.status}`,role:`status`,"data-testid":`ingestion-job-report`,children:[(0,J.jsxs)(`div`,{className:`brain-jobs-report-head`,children:[(0,J.jsx)(d,{className:`h-4 w-4`,"aria-hidden":`true`}),(0,J.jsx)(`strong`,{children:a(e,t.status===`partial`?`brain.jobs.report.titlePartial`:`brain.jobs.report.title`)}),r?(0,J.jsx)(`button`,{type:`button`,className:`brain-jobs-report-dismiss`,"aria-label":a(e,`brain.jobs.report.dismiss`),onClick:r,children:(0,J.jsx)(p,{className:`h-3.5 w-3.5`,"aria-hidden":`true`})}):null]}),(0,J.jsxs)(`div`,{className:`brain-jobs-report-stats`,children:[t.processed>0?(0,J.jsx)(`span`,{className:`brain-jobs-report-stat`,children:a(e,`brain.jobs.report.documents`,{count:t.processed})}):null,t.failed>0?(0,J.jsx)(`span`,{className:`brain-jobs-report-stat is-failed`,children:a(e,`brain.jobs.failedCount`,{count:t.failed})}):null,i===null?null:(0,J.jsx)(`span`,{className:`brain-jobs-report-stat`,children:a(e,`brain.jobs.report.vector`,{percent:i})})]}),o.length?(0,J.jsxs)(`div`,{className:`brain-jobs-report-samples`,children:[(0,J.jsx)(`small`,{children:a(e,`brain.jobs.report.skipped`)}),(0,J.jsx)(`ul`,{children:o.map(e=>(0,J.jsx)(`li`,{children:e},e))})]}):null]})}function ge({language:e}){let t=l(),n=Y(),r=u({queryKey:[`ingestionJobs`],queryFn:s.ingestionJobs,refetchOnWindowFocus:!1,retry:!1,refetchInterval:e=>{let t=e.state.data;return t?.ok&&k(t.data).some(Q)?4e3:!1}}),i=g({mutationFn:e=>s.resumeIngestionJob(e),onSettled:()=>void t.invalidateQueries({queryKey:[`ingestionJobs`]})}),o=v.useMemo(()=>r.data?.ok?k(r.data.data):[],[r.data]),c=v.useRef(new Map),[d,f]=v.useState([]);v.useEffect(()=>{let e=c.current,t=[];for(let n of o){let r=e.get(n.jobId);r&&X.has(r)&&pe.has(n.status)&&t.push(n.jobId),e.set(n.jobId,n.status)}t.length&&f(e=>[...t,...e.filter(e=>!t.includes(e))].slice(0,2))},[o]);let p=d.map(e=>o.find(t=>t.jobId===e)).filter(e=>!!e),_=o.filter(e=>Q(e)||Z.has(e.status)).slice(0,4);return!_.length&&!p.length?null:(0,J.jsxs)(`section`,{className:`brain-jobs-panel`,"aria-label":a(e,`brain.jobs.aria`),"data-testid":`ingestion-jobs-panel`,children:[p.map(t=>(0,J.jsx)(he,{language:e,job:t,freshness:n,onDismiss:()=>f(e=>e.filter(e=>e!==t.jobId))},t.jobId)),_.length?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`header`,{className:`brain-jobs-head`,children:(0,J.jsx)(`strong`,{children:a(e,`brain.jobs.title`)})}),(0,J.jsx)(`ul`,{className:`brain-jobs-list`,children:_.map(t=>{let n=Math.max(t.total,t.processed,1),r=Math.min(100,Math.round(t.processed/n*100)),o=Z.has(t.status),s=i.isPending&&i.variables===t.jobId;return(0,J.jsxs)(`li`,{className:`brain-jobs-item is-${t.status}`,children:[(0,J.jsxs)(`div`,{className:`brain-jobs-item-row`,children:[(0,J.jsx)(`span`,{className:`brain-jobs-status`,children:a(e,fe(t.status))}),(0,J.jsx)(`span`,{className:`brain-jobs-counts`,children:a(e,`brain.jobs.progress`,{processed:t.processed,total:t.total})}),t.failed>0?(0,J.jsxs)(`span`,{className:`brain-jobs-failed`,children:[(0,J.jsx)(m,{className:`h-3 w-3`,"aria-hidden":`true`}),a(e,`brain.jobs.failedCount`,{count:t.failed})]}):null]}),(0,J.jsx)(`div`,{className:`brain-jobs-bar`,role:`progressbar`,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":r,"aria-label":a(e,`brain.jobs.progressAria`,{processed:t.processed,total:t.total}),children:(0,J.jsx)(`span`,{className:`brain-jobs-bar-fill`,style:{width:`${r}%`}})}),o?(0,J.jsxs)(`button`,{type:`button`,className:`brain-jobs-resume`,disabled:i.isPending,onClick:()=>i.mutate(t.jobId),children:[(0,J.jsx)(h,{className:`h-3 w-3`,"aria-hidden":`true`}),s?a(e,`brain.jobs.resuming`):a(e,`brain.jobs.resume`)]}):null]},t.jobId)})})]}):null]})}function $(e){return e.split(/[\\/]/).filter(Boolean).pop()||e}function _e(e,t){if(!t)return a(e,`brain.watch.scan.never`);let n=Date.parse(t);if(!Number.isFinite(n))return a(e,`brain.watch.scan.never`);let r=Math.max(0,Date.now()-n),i=Math.floor(r/6e4);if(i<1)return a(e,`brain.watch.scan.now`);if(i<60)return a(e,`brain.watch.scan.minutes`,{count:i});let o=Math.floor(i/60);return o<24?a(e,`brain.watch.scan.hours`,{count:o}):a(e,`brain.watch.scan.days`,{count:Math.floor(o/24)})}var ve=4;function ye({language:e}){let t=u({queryKey:[`ingestionWatch`],queryFn:s.ingestionWatchStatus,staleTime:3e4,refetchOnWindowFocus:!1,retry:!1}),n=v.useMemo(()=>t.data?.ok?E(t.data.data):null,[t.data]);if(!n||n.enabledCount<1)return null;let r=n.watches.filter(e=>e.enabled).slice(0,ve);return r.length?(0,J.jsxs)(`section`,{className:`brain-watch-card`,"aria-label":a(e,`brain.watch.aria`),"data-testid":`watch-health-card`,children:[(0,J.jsxs)(`header`,{className:`brain-watch-head`,children:[(0,J.jsx)(ne,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),(0,J.jsx)(`strong`,{children:a(e,`brain.watch.title`)})]}),n.polling?null:(0,J.jsxs)(`p`,{className:`brain-watch-note`,role:`note`,"data-testid":`watch-polling-note`,children:[(0,J.jsx)(f,{className:`h-3 w-3`,"aria-hidden":`true`}),a(e,`brain.watch.notLive`)]}),(0,J.jsx)(`ul`,{className:`brain-watch-list`,children:r.map(t=>(0,J.jsx)(be,{language:e,watch:t},t.id))})]}):null}function be({language:e,watch:t}){return(0,J.jsxs)(`li`,{className:`brain-watch-item`,children:[(0,J.jsxs)(`div`,{className:`brain-watch-item-row`,children:[(0,J.jsx)(`span`,{className:`brain-watch-path`,title:t.path,children:$(t.path)}),(0,J.jsx)(`small`,{className:`brain-watch-scan`,children:_e(e,t.lastScanAt)})]}),(0,J.jsxs)(`div`,{className:`brain-watch-item-row`,children:[t.lastResult&&t.lastResult.ingested>0?(0,J.jsx)(`span`,{className:`brain-watch-stat`,children:a(e,`brain.watch.ingested`,{count:t.lastResult.ingested})}):null,t.lastResult&&t.lastResult.failed>0?(0,J.jsxs)(`span`,{className:`brain-watch-stat is-failed`,children:[(0,J.jsx)(m,{className:`h-3 w-3`,"aria-hidden":`true`}),a(e,`brain.jobs.failedCount`,{count:t.lastResult.failed})]}):null,t.trackedFiles>0?(0,J.jsx)(`small`,{className:`brain-watch-tracked`,children:a(e,`brain.watch.tracked`,{count:t.trackedFiles})}):null]}),t.lastErrors.length?(0,J.jsxs)(`div`,{className:`brain-watch-errors`,children:[(0,J.jsx)(`small`,{children:a(e,`brain.watch.errors`)}),(0,J.jsx)(`ul`,{children:t.lastErrors.slice(0,3).map((e,t)=>(0,J.jsx)(`li`,{children:[e.path?$(e.path):``,e.detail].filter(Boolean).join(` — `)},`${e.path}-${t}`))})]}):null]})}function xe(e,t){if(!t)return``;let n=new Date(t);return Number.isNaN(n.getTime())?``:n.toLocaleTimeString(e===`ko`?`ko-KR`:`en-US`,{hour:`2-digit`,minute:`2-digit`})}function Se({language:e,knownRunIds:t}){let n=u({queryKey:[`agentApprovals`],queryFn:s.agentApprovals,staleTime:1/0,refetchOnWindowFocus:!1,retry:!1}),r=v.useMemo(()=>n.data?.ok?T(n.data.data):[],[n.data]),i=v.useMemo(()=>new Set(t),[t]),o=r.filter(e=>!i.has(e.runId));return o.length?(0,J.jsx)(`aside`,{className:`brain-pending-approvals`,role:`note`,"aria-label":a(e,`brain.approval.pendingNotice.aria`),"data-testid":`pending-approvals-notice`,children:o.slice(0,2).map(t=>{let n=xe(e,t.expiresAt);return(0,J.jsxs)(`p`,{children:[(0,J.jsx)(`span`,{children:t.goal?a(e,`brain.approval.pendingNotice`,{goal:t.goal}):a(e,`brain.approval.pendingNotice.generic`)}),(0,J.jsx)(`small`,{children:n?a(e,`brain.approval.pendingNotice.expiry`,{time:n}):a(e,`brain.approval.pendingNotice.hint`)})]},t.runId)})}):null}export{te as C,H as S,S as _,oe as a,b,M as c,A as d,ae as f,ce as g,se as h,ye as i,re as l,V as m,Se as n,F as o,j as p,de as r,N as s,ge as t,y as u,ie as v,_ as w,le as x,C as y};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,b as t,h as n,m as r,p as i,t as a,u as o,v as s}from"./utils-SJUNVOj5.js";import{a as c,n as l,r as u}from"./navigation-Bot0hvuv.js";import{_ as d,b as f,c as p,d as m,g as h,h as g,i as _,m as v,n as y,p as b,t as x,u as S,x as C}from"./primitives-CX2Komon.js";import{n as w,t as T}from"./input-gtVCg-ll.js";import{n as E,r as D,t as O}from"./hard-drive-CBV_B_Yd.js";import{t as k}from"./folder-open-hmN0N9cX.js";import{f as A,i as j,w as M}from"./index-DrmOCySv.js";var N=r(`clipboard-paste`,[[`path`,{d:`M11 14h10`,key:`1w8e9d`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v1.344`,key:`1e62lh`}],[`path`,{d:`m17 18 4-4-4-4`,key:`z2g111`}],[`path`,{d:`M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 1.793-1.113`,key:`bjbb7m`}],[`rect`,{x:`8`,y:`2`,width:`8`,height:`4`,rx:`1`,key:`ublpy`}]]),P=r(`scan-line`,[[`path`,{d:`M3 7V5a2 2 0 0 1 2-2h2`,key:`aa7l1z`}],[`path`,{d:`M17 3h2a2 2 0 0 1 2 2v2`,key:`4qcy5o`}],[`path`,{d:`M21 17v2a2 2 0 0 1-2 2h-2`,key:`6vwrx8`}],[`path`,{d:`M7 21H5a2 2 0 0 1-2-2v-2`,key:`ioqczr`}],[`path`,{d:`M7 12h10`,key:`b7w52i`}]]),F=r(`upload`,[[`path`,{d:`M12 3v12`,key:`1x0j5s`}],[`path`,{d:`m17 8-5-5-5 5`,key:`7q97r8`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}]]),I=t(s()),L=e();function R({initialTab:e}){let t=n(e=>e.language),r=n(e=>e.mode),[a,o]=I.useState(e||`files`),s=[{id:`files`,label:i(t,`capture.tab.files`)},{id:`local`,label:i(t,`capture.tab.local`)},{id:`browser`,label:i(t,`capture.tab.browser`)},{id:`pipeline`,label:i(t,`capture.tab.pipeline`)}];I.useEffect(()=>{(e===`pipeline`||e===`local`||e===`browser`||e===`files`)&&o(e)},[e]);let c=e=>{o(e),l(`/`+{files:`capture`,local:`my-computer`,browser:`capture-browser`,pipeline:`pipeline`}[e])};return(0,L.jsxs)(`div`,{className:`product-page capture-page space-y-5`,children:[(0,L.jsxs)(`header`,{className:`page-hero`,children:[(0,L.jsxs)(`div`,{className:`page-kicker`,children:[(0,L.jsx)(F,{className:`h-4 w-4`}),` `,i(t,`capture.kicker`)]}),(0,L.jsx)(`h1`,{className:`page-title`,children:i(t,`capture.title`)}),(0,L.jsx)(`p`,{className:`page-copy`,children:i(t,`capture.body`)})]}),(0,L.jsx)(m,{tabs:r===`basic`?s.filter(e=>e.id!==`pipeline`):s,value:a,onChange:e=>c(e)}),a===`files`?(0,L.jsx)(z,{}):null,a===`local`?(0,L.jsx)(X,{}):null,a===`browser`?(0,L.jsx)(Z,{}):null,a===`pipeline`?(0,L.jsx)($,{}):null]})}function z(){let e=n(e=>e.language),t=c(),r=u({queryKey:[`documents`],queryFn:()=>o.documents(200)}),[a,s]=I.useState([]),l=M({mutationFn:e=>B(e,s),onSuccess:()=>{t.invalidateQueries({queryKey:[`documents`]}),t.invalidateQueries({queryKey:[`graphStats`]}),t.invalidateQueries({queryKey:[`memoryManager`]})}}),f=I.useCallback(e=>{let t=Array.from(e);t.length&&l.mutate(t)},[l]);return(0,L.jsxs)(`div`,{className:`capture-files-flow grid gap-4 xl:grid-cols-[0.75fr_1.25fr]`,children:[(0,L.jsxs)(b,{children:[(0,L.jsxs)(h,{children:[(0,L.jsxs)(d,{className:`flex items-center gap-2`,children:[(0,L.jsx)(F,{className:`h-4 w-4`}),` `,i(e,`capture.files.title`)]}),(0,L.jsx)(g,{children:i(e,`capture.files.description`)})]}),(0,L.jsxs)(v,{children:[(0,L.jsxs)(`label`,{className:`flex min-h-56 cursor-pointer flex-col items-center justify-center gap-3 rounded-lg border border-dashed border-border bg-muted/30 p-6 text-center transition hover:bg-muted/50`,onDragOver:e=>e.preventDefault(),onDrop:e=>{e.preventDefault(),f(e.dataTransfer.files)},children:[(0,L.jsx)(F,{className:`h-7 w-7 text-primary`}),(0,L.jsx)(`span`,{className:`text-lg font-semibold`,children:i(e,`capture.files.drop`)}),(0,L.jsx)(`span`,{className:`max-w-sm text-sm leading-6 text-muted-foreground`,children:i(e,`capture.files.dropDetail`)}),(0,L.jsx)(`input`,{type:`file`,multiple:!0,className:`sr-only`,onChange:e=>e.target.files&&f(e.target.files)})]}),(0,L.jsx)(V,{queue:a,onRetry:e=>f([e])})]})]}),(0,L.jsx)(y,{title:i(e,`capture.files.uploaded`),result:r.data,children:t=>(0,L.jsxs)(`div`,{className:`space-y-3`,children:[(0,L.jsx)(_,{items:t.documents||t,titleKey:`filename`,metaKey:`ingest_state`,limit:12}),(0,L.jsx)(`div`,{className:`rounded-md border border-border bg-background/55 p-3 text-sm text-muted-foreground`,children:i(e,`capture.files.completed`)})]})})]})}async function B(e,t){let n=e.map(e=>({id:`${e.name}-${e.size}-${e.lastModified}-${Date.now()}`,file:e,name:W(e),size:e.size,status:`queued`}));t(e=>[...n,...e].slice(0,12));let r=[];for(let e of n){t(t=>t.map(t=>t.id===e.id?{...t,status:`uploading`}:t));let n=await o.uploadDocument(e.file);r.push(n),t(t=>t.map(t=>t.id===e.id?{...t,status:n.ok?`done`:`failed`,result:n}:t))}return r}function V({queue:e,onRetry:t}){let r=n(e=>e.language);return e.length?(0,L.jsx)(`div`,{className:`mt-4 space-y-2`,children:e.map(e=>{let n=H(e,r);return(0,L.jsxs)(`div`,{className:`rounded-md border border-border bg-background/55 p-3 text-sm`,children:[(0,L.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-3`,children:[(0,L.jsxs)(`div`,{children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-2 font-medium`,children:[e.status===`done`?(0,L.jsx)(w,{className:`h-4 w-4 text-emerald-400`}):e.status===`failed`?(0,L.jsx)(C,{className:`h-4 w-4 text-amber-400`}):(0,L.jsx)(f,{className:`h-4 w-4 animate-spin text-primary`}),e.name]}),(0,L.jsxs)(`div`,{className:`mt-1 text-xs text-muted-foreground`,children:[Math.max(1,Math.round(e.size/1024)),` KB · `,n]})]}),e.status===`failed`?(0,L.jsxs)(j,{size:`sm`,variant:`outline`,onClick:()=>t(e.file),children:[(0,L.jsx)(A,{className:`h-3.5 w-3.5`}),` `,i(r,`capture.retry`)]}):null]}),e.result?(0,L.jsx)(p,{result:e.result,successLabel:i(r,`capture.files.success`)}):null]},e.id)})}):null}function H(e,t){if(e.status===`queued`)return i(t,`capture.files.queued`);if(e.status===`uploading`)return i(t,`capture.files.uploading`);if(!e.result?.ok)return e.result?.error||i(t,`capture.files.failed`);let n=e.result.data||{},r=String(n.node_id||n.graph_node||n.provenance_id||``);return r?i(t,`capture.files.capturedWithNode`,{node:r}):i(t,`capture.files.captured`)}var U={webkitdirectory:``,directory:``};function W(e){return e.webkitRelativePath||e.name}function G(e){return(e[0]?.webkitRelativePath||``).split(`/`).filter(Boolean)[0]||``}function K(){let e=window;return!!(e.__TAURI__?.core?.invoke||e.latticeDesktop?.selectFolder||e.__TAURI_INTERNALS__&&window.location.protocol===`tauri:`)}function q(e){return e instanceof DOMException&&e.name===`AbortError`}async function J(e){let t=[];if(typeof e.values==`function`){for await(let n of e.values())t.push(n);return t}if(typeof e.entries==`function`)for await(let[,n]of e.entries())t.push(n);return t}async function Y(e){let t=[];for(let n of await J(e)){if(n.kind===`file`){t.push(await n.getFile());continue}t.push(...await Y(n))}return t}function X(){let e=n(e=>e.language),t=c(),r=I.useRef(null),[s,l]=I.useState(``),[m,C]=I.useState(null),[w,D]=I.useState(``),[O,A]=I.useState(!1),[N,F]=I.useState([]),R=u({queryKey:[`localSources`],queryFn:o.localSources}),z=u({queryKey:[`localAgent`],queryFn:o.localAgent}),H=M({mutationFn:e=>o.connectFolder((e||s).trim()),onSuccess:()=>{C(null),t.invalidateQueries({queryKey:[`localSources`]}),t.invalidateQueries({queryKey:[`graphStats`]}),t.invalidateQueries({queryKey:[`memoryManager`]})}}),W=M({mutationFn:e=>B(e,F),onSuccess:()=>{t.invalidateQueries({queryKey:[`documents`]}),t.invalidateQueries({queryKey:[`graphStats`]}),t.invalidateQueries({queryKey:[`memoryManager`]})}}),J=I.useCallback((t,n)=>{if(!t.length){C(i(e,`capture.local.emptyFolder`));return}C(null),D(n||G(t)||i(e,`capture.local.browserFolder`)),W.mutate(t)},[W,e]),X=I.useCallback(async()=>{if(!O){A(!0),C(null);try{let t=window.showDirectoryPicker;if(!K()&&typeof t==`function`){let e=await t.call(window);J(await Y(e),e.name);return}if(K()){let e=await o.selectFolder();if(e){D(``),l(e),H.mutate(e);return}}if(typeof t==`function`){let e=await t.call(window);J(await Y(e),e.name);return}if(r.current){r.current.click();return}C(i(e,`capture.local.pickUnavailable`))}catch(t){q(t)||C(i(e,`capture.local.pickUnavailable`))}finally{A(!1)}}},[J,O,H,e]),Z=I.useCallback(()=>{let e=s.trim();e&&(C(null),D(``),H.mutate(e))},[H,s]),Q=(W.data||[]).find(e=>!e.ok)?.error,$=!!(W.error||Q);return(0,L.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[0.9fr_1.1fr]`,children:[(0,L.jsxs)(b,{children:[(0,L.jsxs)(h,{children:[(0,L.jsxs)(d,{className:`flex items-center gap-2`,children:[(0,L.jsx)(E,{className:`h-4 w-4`}),` `,i(e,`capture.local.title`)]}),(0,L.jsx)(g,{children:i(e,`capture.local.description`)})]}),(0,L.jsxs)(v,{className:`space-y-3`,children:[(0,L.jsxs)(`form`,{className:`space-y-3`,onSubmit:e=>{e.preventDefault(),Z()},children:[(0,L.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row`,children:[(0,L.jsx)(T,{value:s,onChange:e=>l(e.target.value),placeholder:i(e,`capture.local.placeholder`)}),(0,L.jsxs)(j,{type:`button`,variant:`outline`,disabled:O||H.isPending||W.isPending,onClick:()=>void X(),children:[O?(0,L.jsx)(f,{className:`h-4 w-4 animate-spin`}):(0,L.jsx)(k,{className:`h-4 w-4`}),O?i(e,`capture.local.choosing`):i(e,`capture.local.choose`)]})]}),(0,L.jsx)(`input`,{ref:r,type:`file`,multiple:!0,className:`sr-only`,"aria-hidden":`true`,tabIndex:-1,...U,onChange:e=>{let t=Array.from(e.currentTarget.files||[]);e.currentTarget.value=``,J(t)}}),(0,L.jsxs)(j,{type:`submit`,disabled:!s.trim()||H.isPending,children:[H.isPending?(0,L.jsx)(f,{className:`h-4 w-4 animate-spin`}):(0,L.jsx)(P,{className:`h-4 w-4`}),i(e,`capture.local.connect`)]})]}),m?(0,L.jsx)(p,{result:{ok:!1,status:0,data:{},source:`unavailable`,error:m}}):null,H.data?(0,L.jsx)(p,{result:H.data,successLabel:i(e,`capture.local.success`)}):null,w?(0,L.jsx)(p,{result:{ok:W.isPending||!$,status:$?0:200,data:{folder:w},source:$?`unavailable`:`live`,error:W.error?i(e,`capture.local.browserImportFailed`):Q},successLabel:W.isPending?i(e,`capture.local.browserImporting`):i(e,`capture.local.browserImportSuccess`,{folder:w})}):null,(0,L.jsx)(V,{queue:N,onRetry:e=>J([e],w)})]})]}),(0,L.jsx)(y,{title:i(e,`capture.local.sources`),result:R.data,children:t=>(0,L.jsxs)(`div`,{className:`space-y-3`,children:[(0,L.jsx)(_,{items:t.sources,titleKey:`path`,metaKey:`status`}),a(t.sources).map(t=>(0,L.jsx)(x,{label:i(e,`capture.local.stop`,{source:String(t.path||t.id||i(e,`capture.local.source`))}),action:()=>o.localWatchStop(String(t.id||t.source_id)),invalidate:[`localSources`]},String(t.id||t.source_id||t.path)))]})}),(0,L.jsx)(y,{title:i(e,`capture.local.access`),result:z.data,className:`xl:col-span-2`,children:e=>(0,L.jsx)(S,{value:e})})]})}function Z(){let e=n(e=>e.language),t=c(),[r,a]=I.useState(``),s=M({mutationFn:e=>o.browserReadUrl(e),onSuccess:()=>{t.invalidateQueries({queryKey:[`graphStats`]}),t.invalidateQueries({queryKey:[`memoryManager`]})}}),l=I.useCallback(()=>{let e=Q(r);e&&(a(e),s.mutate(e))},[s,r]),u=I.useCallback(async()=>{let e=Q(await navigator.clipboard?.readText().catch(()=>``)||``);e&&(a(e),s.mutate(e))},[s]);return(0,L.jsxs)(b,{children:[(0,L.jsxs)(h,{children:[(0,L.jsxs)(d,{className:`flex items-center gap-2`,children:[(0,L.jsx)(D,{className:`h-4 w-4`}),` `,i(e,`capture.browser.title`)]}),(0,L.jsx)(g,{children:i(e,`capture.browser.description`)})]}),(0,L.jsxs)(v,{className:`space-y-3`,children:[(0,L.jsxs)(`form`,{className:`flex flex-col gap-2 sm:flex-row`,onSubmit:e=>{e.preventDefault(),l()},children:[(0,L.jsx)(T,{value:r,onChange:e=>a(e.target.value),placeholder:i(e,`capture.browser.placeholder`),inputMode:`url`}),(0,L.jsxs)(j,{type:`button`,variant:`outline`,disabled:s.isPending,onClick:()=>void u(),children:[(0,L.jsx)(N,{className:`h-4 w-4`}),` `,i(e,`capture.browser.paste`)]}),(0,L.jsxs)(j,{type:`submit`,disabled:!r.trim()||s.isPending,children:[s.isPending?(0,L.jsx)(f,{className:`h-4 w-4 animate-spin`}):(0,L.jsx)(P,{className:`h-4 w-4`}),i(e,`capture.browser.capture`)]})]}),s.data?(0,L.jsx)(p,{result:s.data,successLabel:i(e,`capture.browser.success`)}):null]})]})}function Q(e){let t=e.trim();return t?/^https?:\/\//i.test(t)?t:/^[\w.-]+\.[a-z]{2,}([/:?#].*)?$/i.test(t)?`https://${t}`:t:``}function $(){let e=n(e=>e.language),t=u({queryKey:[`index`],queryFn:o.indexStatus}),r=u({queryKey:[`graphStats`],queryFn:o.graphStats});return(0,L.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,L.jsx)(y,{title:i(e,`capture.pipeline.status`),result:t.data,children:e=>(0,L.jsx)(S,{value:e})}),(0,L.jsx)(y,{title:i(e,`capture.pipeline.growth`),result:r.data,children:e=>(0,L.jsx)(S,{value:e})}),(0,L.jsxs)(b,{className:`xl:col-span-2`,children:[(0,L.jsxs)(h,{children:[(0,L.jsxs)(d,{className:`flex items-center gap-2`,children:[(0,L.jsx)(O,{className:`h-4 w-4`}),` `,i(e,`capture.pipeline.refresh`)]}),(0,L.jsx)(g,{children:i(e,`capture.pipeline.description`)})]}),(0,L.jsx)(v,{children:(0,L.jsx)(x,{label:i(e,`capture.pipeline.rebuild`),action:()=>o.rebuildIndex(),invalidate:[`index`]})})]})]})}export{R as CapturePage};
|
|
1
|
+
import{_ as e,b as t,h as n,m as r,p as i,t as a,u as o,v as s}from"./utils-BqoznzGP.js";import{a as c,n as l,r as u}from"./navigation-BPQqEQwr.js";import{_ as d,b as f,c as p,d as m,g as h,h as g,i as _,m as v,n as y,p as b,t as x,u as S,x as C}from"./primitives-B2f9N7Dh.js";import{n as w,t as T}from"./input-CSi6OBJ9.js";import{n as E,r as D,t as O}from"./hard-drive-CjJtYqHf.js";import{t as k}from"./folder-open-B2K_22VI.js";import{f as A,i as j,w as M}from"./index-CEu0Wqjl.js";var N=r(`clipboard-paste`,[[`path`,{d:`M11 14h10`,key:`1w8e9d`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v1.344`,key:`1e62lh`}],[`path`,{d:`m17 18 4-4-4-4`,key:`z2g111`}],[`path`,{d:`M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 1.793-1.113`,key:`bjbb7m`}],[`rect`,{x:`8`,y:`2`,width:`8`,height:`4`,rx:`1`,key:`ublpy`}]]),P=r(`scan-line`,[[`path`,{d:`M3 7V5a2 2 0 0 1 2-2h2`,key:`aa7l1z`}],[`path`,{d:`M17 3h2a2 2 0 0 1 2 2v2`,key:`4qcy5o`}],[`path`,{d:`M21 17v2a2 2 0 0 1-2 2h-2`,key:`6vwrx8`}],[`path`,{d:`M7 21H5a2 2 0 0 1-2-2v-2`,key:`ioqczr`}],[`path`,{d:`M7 12h10`,key:`b7w52i`}]]),F=r(`upload`,[[`path`,{d:`M12 3v12`,key:`1x0j5s`}],[`path`,{d:`m17 8-5-5-5 5`,key:`7q97r8`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}]]),I=t(s()),L=e();function R({initialTab:e}){let t=n(e=>e.language),r=n(e=>e.mode),[a,o]=I.useState(e||`files`),s=[{id:`files`,label:i(t,`capture.tab.files`)},{id:`local`,label:i(t,`capture.tab.local`)},{id:`browser`,label:i(t,`capture.tab.browser`)},{id:`pipeline`,label:i(t,`capture.tab.pipeline`)}];I.useEffect(()=>{(e===`pipeline`||e===`local`||e===`browser`||e===`files`)&&o(e)},[e]);let c=e=>{o(e),l(`/`+{files:`capture`,local:`my-computer`,browser:`capture-browser`,pipeline:`pipeline`}[e])};return(0,L.jsxs)(`div`,{className:`product-page capture-page space-y-5`,children:[(0,L.jsxs)(`header`,{className:`page-hero`,children:[(0,L.jsxs)(`div`,{className:`page-kicker`,children:[(0,L.jsx)(F,{className:`h-4 w-4`}),` `,i(t,`capture.kicker`)]}),(0,L.jsx)(`h1`,{className:`page-title`,children:i(t,`capture.title`)}),(0,L.jsx)(`p`,{className:`page-copy`,children:i(t,`capture.body`)})]}),(0,L.jsx)(m,{tabs:r===`basic`?s.filter(e=>e.id!==`pipeline`):s,value:a,onChange:e=>c(e)}),a===`files`?(0,L.jsx)(z,{}):null,a===`local`?(0,L.jsx)(X,{}):null,a===`browser`?(0,L.jsx)(Z,{}):null,a===`pipeline`?(0,L.jsx)($,{}):null]})}function z(){let e=n(e=>e.language),t=c(),r=u({queryKey:[`documents`],queryFn:()=>o.documents(200)}),[a,s]=I.useState([]),l=M({mutationFn:e=>B(e,s),onSuccess:()=>{t.invalidateQueries({queryKey:[`documents`]}),t.invalidateQueries({queryKey:[`graphStats`]}),t.invalidateQueries({queryKey:[`memoryManager`]})}}),f=I.useCallback(e=>{let t=Array.from(e);t.length&&l.mutate(t)},[l]);return(0,L.jsxs)(`div`,{className:`capture-files-flow grid gap-4 xl:grid-cols-[0.75fr_1.25fr]`,children:[(0,L.jsxs)(b,{children:[(0,L.jsxs)(h,{children:[(0,L.jsxs)(d,{className:`flex items-center gap-2`,children:[(0,L.jsx)(F,{className:`h-4 w-4`}),` `,i(e,`capture.files.title`)]}),(0,L.jsx)(g,{children:i(e,`capture.files.description`)})]}),(0,L.jsxs)(v,{children:[(0,L.jsxs)(`label`,{className:`flex min-h-56 cursor-pointer flex-col items-center justify-center gap-3 rounded-lg border border-dashed border-border bg-muted/30 p-6 text-center transition hover:bg-muted/50`,onDragOver:e=>e.preventDefault(),onDrop:e=>{e.preventDefault(),f(e.dataTransfer.files)},children:[(0,L.jsx)(F,{className:`h-7 w-7 text-primary`}),(0,L.jsx)(`span`,{className:`text-lg font-semibold`,children:i(e,`capture.files.drop`)}),(0,L.jsx)(`span`,{className:`max-w-sm text-sm leading-6 text-muted-foreground`,children:i(e,`capture.files.dropDetail`)}),(0,L.jsx)(`input`,{type:`file`,multiple:!0,className:`sr-only`,onChange:e=>e.target.files&&f(e.target.files)})]}),(0,L.jsx)(V,{queue:a,onRetry:e=>f([e])})]})]}),(0,L.jsx)(y,{title:i(e,`capture.files.uploaded`),result:r.data,children:t=>(0,L.jsxs)(`div`,{className:`space-y-3`,children:[(0,L.jsx)(_,{items:t.documents||t,titleKey:`filename`,metaKey:`ingest_state`,limit:12}),(0,L.jsx)(`div`,{className:`rounded-md border border-border bg-background/55 p-3 text-sm text-muted-foreground`,children:i(e,`capture.files.completed`)})]})})]})}async function B(e,t){let n=e.map(e=>({id:`${e.name}-${e.size}-${e.lastModified}-${Date.now()}`,file:e,name:W(e),size:e.size,status:`queued`}));t(e=>[...n,...e].slice(0,12));let r=[];for(let e of n){t(t=>t.map(t=>t.id===e.id?{...t,status:`uploading`}:t));let n=await o.uploadDocument(e.file);r.push(n),t(t=>t.map(t=>t.id===e.id?{...t,status:n.ok?`done`:`failed`,result:n}:t))}return r}function V({queue:e,onRetry:t}){let r=n(e=>e.language);return e.length?(0,L.jsx)(`div`,{className:`mt-4 space-y-2`,children:e.map(e=>{let n=H(e,r);return(0,L.jsxs)(`div`,{className:`rounded-md border border-border bg-background/55 p-3 text-sm`,children:[(0,L.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-3`,children:[(0,L.jsxs)(`div`,{children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-2 font-medium`,children:[e.status===`done`?(0,L.jsx)(w,{className:`h-4 w-4 text-emerald-400`}):e.status===`failed`?(0,L.jsx)(C,{className:`h-4 w-4 text-amber-400`}):(0,L.jsx)(f,{className:`h-4 w-4 animate-spin text-primary`}),e.name]}),(0,L.jsxs)(`div`,{className:`mt-1 text-xs text-muted-foreground`,children:[Math.max(1,Math.round(e.size/1024)),` KB · `,n]})]}),e.status===`failed`?(0,L.jsxs)(j,{size:`sm`,variant:`outline`,onClick:()=>t(e.file),children:[(0,L.jsx)(A,{className:`h-3.5 w-3.5`}),` `,i(r,`capture.retry`)]}):null]}),e.result?(0,L.jsx)(p,{result:e.result,successLabel:i(r,`capture.files.success`)}):null]},e.id)})}):null}function H(e,t){if(e.status===`queued`)return i(t,`capture.files.queued`);if(e.status===`uploading`)return i(t,`capture.files.uploading`);if(!e.result?.ok)return e.result?.error||i(t,`capture.files.failed`);let n=e.result.data||{},r=String(n.node_id||n.graph_node||n.provenance_id||``);return r?i(t,`capture.files.capturedWithNode`,{node:r}):i(t,`capture.files.captured`)}var U={webkitdirectory:``,directory:``};function W(e){return e.webkitRelativePath||e.name}function G(e){return(e[0]?.webkitRelativePath||``).split(`/`).filter(Boolean)[0]||``}function K(){let e=window;return!!(e.__TAURI__?.core?.invoke||e.latticeDesktop?.selectFolder||e.__TAURI_INTERNALS__&&window.location.protocol===`tauri:`)}function q(e){return e instanceof DOMException&&e.name===`AbortError`}async function J(e){let t=[];if(typeof e.values==`function`){for await(let n of e.values())t.push(n);return t}if(typeof e.entries==`function`)for await(let[,n]of e.entries())t.push(n);return t}async function Y(e){let t=[];for(let n of await J(e)){if(n.kind===`file`){t.push(await n.getFile());continue}t.push(...await Y(n))}return t}function X(){let e=n(e=>e.language),t=c(),r=I.useRef(null),[s,l]=I.useState(``),[m,C]=I.useState(null),[w,D]=I.useState(``),[O,A]=I.useState(!1),[N,F]=I.useState([]),R=u({queryKey:[`localSources`],queryFn:o.localSources}),z=u({queryKey:[`localAgent`],queryFn:o.localAgent}),H=M({mutationFn:e=>o.connectFolder((e||s).trim()),onSuccess:()=>{C(null),t.invalidateQueries({queryKey:[`localSources`]}),t.invalidateQueries({queryKey:[`graphStats`]}),t.invalidateQueries({queryKey:[`memoryManager`]})}}),W=M({mutationFn:e=>B(e,F),onSuccess:()=>{t.invalidateQueries({queryKey:[`documents`]}),t.invalidateQueries({queryKey:[`graphStats`]}),t.invalidateQueries({queryKey:[`memoryManager`]})}}),J=I.useCallback((t,n)=>{if(!t.length){C(i(e,`capture.local.emptyFolder`));return}C(null),D(n||G(t)||i(e,`capture.local.browserFolder`)),W.mutate(t)},[W,e]),X=I.useCallback(async()=>{if(!O){A(!0),C(null);try{let t=window.showDirectoryPicker;if(!K()&&typeof t==`function`){let e=await t.call(window);J(await Y(e),e.name);return}if(K()){let e=await o.selectFolder();if(e){D(``),l(e),H.mutate(e);return}}if(typeof t==`function`){let e=await t.call(window);J(await Y(e),e.name);return}if(r.current){r.current.click();return}C(i(e,`capture.local.pickUnavailable`))}catch(t){q(t)||C(i(e,`capture.local.pickUnavailable`))}finally{A(!1)}}},[J,O,H,e]),Z=I.useCallback(()=>{let e=s.trim();e&&(C(null),D(``),H.mutate(e))},[H,s]),Q=(W.data||[]).find(e=>!e.ok)?.error,$=!!(W.error||Q);return(0,L.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[0.9fr_1.1fr]`,children:[(0,L.jsxs)(b,{children:[(0,L.jsxs)(h,{children:[(0,L.jsxs)(d,{className:`flex items-center gap-2`,children:[(0,L.jsx)(E,{className:`h-4 w-4`}),` `,i(e,`capture.local.title`)]}),(0,L.jsx)(g,{children:i(e,`capture.local.description`)})]}),(0,L.jsxs)(v,{className:`space-y-3`,children:[(0,L.jsxs)(`form`,{className:`space-y-3`,onSubmit:e=>{e.preventDefault(),Z()},children:[(0,L.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row`,children:[(0,L.jsx)(T,{value:s,onChange:e=>l(e.target.value),placeholder:i(e,`capture.local.placeholder`)}),(0,L.jsxs)(j,{type:`button`,variant:`outline`,disabled:O||H.isPending||W.isPending,onClick:()=>void X(),children:[O?(0,L.jsx)(f,{className:`h-4 w-4 animate-spin`}):(0,L.jsx)(k,{className:`h-4 w-4`}),O?i(e,`capture.local.choosing`):i(e,`capture.local.choose`)]})]}),(0,L.jsx)(`input`,{ref:r,type:`file`,multiple:!0,className:`sr-only`,"aria-hidden":`true`,tabIndex:-1,...U,onChange:e=>{let t=Array.from(e.currentTarget.files||[]);e.currentTarget.value=``,J(t)}}),(0,L.jsxs)(j,{type:`submit`,disabled:!s.trim()||H.isPending,children:[H.isPending?(0,L.jsx)(f,{className:`h-4 w-4 animate-spin`}):(0,L.jsx)(P,{className:`h-4 w-4`}),i(e,`capture.local.connect`)]})]}),m?(0,L.jsx)(p,{result:{ok:!1,status:0,data:{},source:`unavailable`,error:m}}):null,H.data?(0,L.jsx)(p,{result:H.data,successLabel:i(e,`capture.local.success`)}):null,w?(0,L.jsx)(p,{result:{ok:W.isPending||!$,status:$?0:200,data:{folder:w},source:$?`unavailable`:`live`,error:W.error?i(e,`capture.local.browserImportFailed`):Q},successLabel:W.isPending?i(e,`capture.local.browserImporting`):i(e,`capture.local.browserImportSuccess`,{folder:w})}):null,(0,L.jsx)(V,{queue:N,onRetry:e=>J([e],w)})]})]}),(0,L.jsx)(y,{title:i(e,`capture.local.sources`),result:R.data,children:t=>(0,L.jsxs)(`div`,{className:`space-y-3`,children:[(0,L.jsx)(_,{items:t.sources,titleKey:`path`,metaKey:`status`}),a(t.sources).map(t=>(0,L.jsx)(x,{label:i(e,`capture.local.stop`,{source:String(t.path||t.id||i(e,`capture.local.source`))}),action:()=>o.localWatchStop(String(t.id||t.source_id)),invalidate:[`localSources`]},String(t.id||t.source_id||t.path)))]})}),(0,L.jsx)(y,{title:i(e,`capture.local.access`),result:z.data,className:`xl:col-span-2`,children:e=>(0,L.jsx)(S,{value:e})})]})}function Z(){let e=n(e=>e.language),t=c(),[r,a]=I.useState(``),s=M({mutationFn:e=>o.browserReadUrl(e),onSuccess:()=>{t.invalidateQueries({queryKey:[`graphStats`]}),t.invalidateQueries({queryKey:[`memoryManager`]})}}),l=I.useCallback(()=>{let e=Q(r);e&&(a(e),s.mutate(e))},[s,r]),u=I.useCallback(async()=>{let e=Q(await navigator.clipboard?.readText().catch(()=>``)||``);e&&(a(e),s.mutate(e))},[s]);return(0,L.jsxs)(b,{children:[(0,L.jsxs)(h,{children:[(0,L.jsxs)(d,{className:`flex items-center gap-2`,children:[(0,L.jsx)(D,{className:`h-4 w-4`}),` `,i(e,`capture.browser.title`)]}),(0,L.jsx)(g,{children:i(e,`capture.browser.description`)})]}),(0,L.jsxs)(v,{className:`space-y-3`,children:[(0,L.jsxs)(`form`,{className:`flex flex-col gap-2 sm:flex-row`,onSubmit:e=>{e.preventDefault(),l()},children:[(0,L.jsx)(T,{value:r,onChange:e=>a(e.target.value),placeholder:i(e,`capture.browser.placeholder`),inputMode:`url`}),(0,L.jsxs)(j,{type:`button`,variant:`outline`,disabled:s.isPending,onClick:()=>void u(),children:[(0,L.jsx)(N,{className:`h-4 w-4`}),` `,i(e,`capture.browser.paste`)]}),(0,L.jsxs)(j,{type:`submit`,disabled:!r.trim()||s.isPending,children:[s.isPending?(0,L.jsx)(f,{className:`h-4 w-4 animate-spin`}):(0,L.jsx)(P,{className:`h-4 w-4`}),i(e,`capture.browser.capture`)]})]}),s.data?(0,L.jsx)(p,{result:s.data,successLabel:i(e,`capture.browser.success`)}):null]})]})}function Q(e){let t=e.trim();return t?/^https?:\/\//i.test(t)?t:/^[\w.-]+\.[a-z]{2,}([/:?#].*)?$/i.test(t)?`https://${t}`:t:``}function $(){let e=n(e=>e.language),t=u({queryKey:[`index`],queryFn:o.indexStatus}),r=u({queryKey:[`graphStats`],queryFn:o.graphStats});return(0,L.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,L.jsx)(y,{title:i(e,`capture.pipeline.status`),result:t.data,children:e=>(0,L.jsx)(S,{value:e})}),(0,L.jsx)(y,{title:i(e,`capture.pipeline.growth`),result:r.data,children:e=>(0,L.jsx)(S,{value:e})}),(0,L.jsxs)(b,{className:`xl:col-span-2`,children:[(0,L.jsxs)(h,{children:[(0,L.jsxs)(d,{className:`flex items-center gap-2`,children:[(0,L.jsx)(O,{className:`h-4 w-4`}),` `,i(e,`capture.pipeline.refresh`)]}),(0,L.jsx)(g,{children:i(e,`capture.pipeline.description`)})]}),(0,L.jsx)(v,{children:(0,L.jsx)(x,{label:i(e,`capture.pipeline.rebuild`),action:()=>o.rebuildIndex(),invalidate:[`index`]})})]})]})}export{R as CapturePage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,b as t,m as n,p as r,t as i,u as a,v as o}from"./utils-
|
|
1
|
+
import{_ as e,b as t,m as n,p as r,t as i,u as a,v as o}from"./utils-BqoznzGP.js";import{n as s,r as c}from"./navigation-BPQqEQwr.js";import{t as l}from"./bot-VmP0kkeA.js";import{n as u,t as d}from"./useFocusTrap-CsnIhsDJ.js";import{b as f,d as p,g as m,m as h,o as g,p as _,u as v}from"./index-CEu0Wqjl.js";var y=n(`command`,[[`path`,{d:`M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3`,key:`11bfej`}]]),b=n(`corner-down-left`,[[`path`,{d:`M20 4v7a4 4 0 0 1-4 4H4`,key:`6o5b7l`}],[`path`,{d:`m9 10-5 5 5 5`,key:`1kshq7`}]]),x=n(`file-search`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`circle`,{cx:`11.5`,cy:`14.5`,r:`2.5`,key:`1bq0ko`}],[`path`,{d:`M13.3 16.3 15 18`,key:`2quom7`}]]),S=n(`message-circle`,[[`path`,{d:`M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719`,key:`1sd12s`}]]),C=t(o()),w=e(),T=[{id:`page-brain`,labelKey:`shell.route.brain`,target:`/brain`,icon:(0,w.jsx)(f,{className:`h-4 w-4`})},{id:`page-capture`,labelKey:`shell.route.capture`,target:`/capture`,icon:(0,w.jsx)(h,{className:`h-4 w-4`})},{id:`page-memory`,labelKey:`shell.route.memory`,target:`/hybrid-search`,icon:(0,w.jsx)(m,{className:`h-4 w-4`})},{id:`page-library`,labelKey:`shell.route.library`,target:`/models`,icon:(0,w.jsx)(_,{className:`h-4 w-4`})},{id:`page-act`,labelKey:`shell.route.act`,target:`/agents`,icon:(0,w.jsx)(g,{className:`h-4 w-4`})},{id:`page-review`,labelKey:`command.page.review`,target:`/act/review`,icon:(0,w.jsx)(x,{className:`h-4 w-4`})},{id:`page-system`,labelKey:`shell.route.system`,target:`/settings`,icon:(0,w.jsx)(v,{className:`h-4 w-4`})}];function E(e,t){let[n,r]=C.useState(e);return C.useEffect(()=>{let n=window.setTimeout(()=>r(e),t);return()=>window.clearTimeout(n)},[e,t]),n}function D({language:e,initialOpen:t=!1}){let[n,o]=C.useState(t),[f,h]=C.useState(``),[g,_]=C.useState(0),v=C.useRef(null),D=E(f.trim(),220);C.useEffect(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&e.key.toLowerCase()===`k`&&(e.preventDefault(),o(e=>!e))},t=()=>o(!0);return window.addEventListener(`keydown`,e),window.addEventListener(`lattice:open-command`,t),()=>{window.removeEventListener(`keydown`,e),window.removeEventListener(`lattice:open-command`,t)}},[]),C.useEffect(()=>{n&&(h(``),_(0),window.setTimeout(()=>v.current?.focus(),0))},[n]);let O=c({queryKey:[`commandSearch`,D],queryFn:()=>a.commandSearch(D),enabled:n&&D.length>0}),k=c({queryKey:[`commandBriefing`],queryFn:a.commandBriefing,enabled:n,staleTime:6e4}),A=C.useMemo(()=>{let t=f.trim().toLowerCase(),n=[];if(!t&&k.data?.ok){let t=(k.data.data||{}).sections||{},i=t.review||{},a=t.suggestions||{},o=Number(a.count??0)||0,s=Number(i.pending??0)||0;n.push({id:`proactive-briefing`,group:`proactive`,title:r(e,`command.proactive.briefing`),detail:o>0?r(e,`command.proactive.suggestions`,{count:o}):void 0,icon:(0,w.jsx)(u,{className:`h-4 w-4`}),target:`/brain`,action:`open-briefing`}),n.push({id:`proactive-review`,group:`proactive`,title:r(e,`command.proactive.review`),detail:s>0?r(e,`command.proactive.pending`,{count:s}):void 0,icon:(0,w.jsx)(x,{className:`h-4 w-4`}),target:`/act/review`}),n.push({id:`proactive-ask`,group:`proactive`,title:r(e,`briefing.action.askBrain`),icon:(0,w.jsx)(S,{className:`h-4 w-4`}),target:`/brain`})}let a=T.map(t=>({id:t.id,group:`pages`,title:r(e,t.labelKey),icon:t.icon,target:t.target})).filter(e=>!t||e.title.toLowerCase().includes(t)),o=i(O.data?.data?.groups),s=[];for(let t of o)for(let n of i(t.items))t.kind===`knowledge`?s.push({id:`kg-${String(n.id??s.length)}`,group:`knowledge`,title:String(n.title||n.id||``),detail:String(n.summary||n.type||``),icon:(0,w.jsx)(m,{className:`h-4 w-4`}),target:`/brain/graph`}):t.kind===`conversation`?s.push({id:`conv-${String(n.conversation_id??s.length)}`,group:`conversation`,title:String(n.snippet||``),detail:String(n.timestamp||``).slice(0,10),icon:(0,w.jsx)(S,{className:`h-4 w-4`}),target:`/brain`}):t.kind===`automation`&&s.push({id:`wf-${String(n.id??s.length)}`,group:`automation`,title:String(n.name||``),detail:n.enabled?r(e,`command.automation.enabled`):r(e,`command.automation.draft`),icon:(0,w.jsx)(l,{className:`h-4 w-4`}),target:`/act/workflows`});return[...n,...s,...a]},[e,f,O.data,k.data]);C.useEffect(()=>{_(0)},[A.length,D]);let j=C.useCallback(()=>o(!1),[]),M=d(j,n),N=C.useCallback(e=>{e&&(j(),s(e.target),e.action===`open-briefing`&&window.dispatchEvent(new Event(`lattice:open-briefing`)))},[j]),P=e=>{e.key===`Escape`?(e.preventDefault(),j()):e.key===`ArrowDown`?(e.preventDefault(),_(e=>Math.min(e+1,Math.max(A.length-1,0)))):e.key===`ArrowUp`?(e.preventDefault(),_(e=>Math.max(e-1,0))):e.key===`Enter`&&(e.preventDefault(),N(A[g]))};if(!n)return null;let F={proactive:r(e,`command.proactive.title`),pages:r(e,`command.group.pages`),knowledge:r(e,`command.group.knowledge`),conversation:r(e,`command.group.conversation`),automation:r(e,`command.group.automation`)},I=null;return(0,w.jsx)(`div`,{className:`command-palette-backdrop`,role:`presentation`,onMouseDown:e=>{e.target===e.currentTarget&&j()},children:(0,w.jsxs)(`div`,{ref:M,className:`command-palette`,role:`dialog`,"aria-modal":`true`,"aria-label":r(e,`command.title`),"data-testid":`command-palette`,children:[(0,w.jsxs)(`div`,{className:`command-palette-input`,children:[(0,w.jsx)(p,{className:`h-4 w-4`,"aria-hidden":`true`}),(0,w.jsx)(`input`,{ref:v,value:f,onChange:e=>h(e.target.value),onKeyDown:P,placeholder:r(e,`command.placeholder`),"aria-label":r(e,`command.title`),autoComplete:`off`,spellCheck:!1}),(0,w.jsxs)(`span`,{className:`command-palette-hint`,"aria-hidden":`true`,children:[(0,w.jsx)(y,{className:`h-3 w-3`}),r(e,`command.shortcutKey`)]})]}),(0,w.jsxs)(`div`,{className:`command-palette-results`,role:`listbox`,"aria-label":r(e,`command.results`),children:[O.isFetching?(0,w.jsx)(`p`,{className:`command-palette-note`,children:r(e,`command.searching`)}):null,A.length===0&&!O.isFetching?(0,w.jsx)(`p`,{className:`command-palette-note`,children:r(e,`command.empty`)}):null,A.map((e,t)=>{let n=e.group===I?null:(0,w.jsx)(`p`,{className:`command-palette-group`,children:F[e.group]},`h-${e.group}`);return I=e.group,(0,w.jsxs)(C.Fragment,{children:[n,(0,w.jsxs)(`button`,{type:`button`,role:`option`,"aria-selected":t===g,className:`command-palette-item ${t===g?`is-active`:``}`,onMouseEnter:()=>_(t),onClick:()=>N(e),children:[e.icon,(0,w.jsx)(`span`,{className:`command-palette-item-title`,children:e.title}),e.detail?(0,w.jsx)(`span`,{className:`command-palette-item-detail`,children:e.detail}):null,t===g?(0,w.jsx)(b,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}):null]})]},e.id)})]}),(0,w.jsx)(`p`,{className:`command-palette-footer`,children:r(e,`command.footer`)})]})})}export{D as CommandPalette};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,b as t,h as n,m as r,p as i,t as a,u as o,v as s}from"./utils-SJUNVOj5.js";import{a as c,n as l,r as u}from"./navigation-Bot0hvuv.js";import{_ as d,c as f,d as p,f as m,g as h,h as g,i as _,l as v,m as y,n as b,p as x,r as S,t as C,u as w,v as T}from"./primitives-CX2Komon.js";import{n as E,t as D}from"./input-gtVCg-ll.js";import{t as O}from"./circle-play-B-IsFL1y.js";import{t as k}from"./cpu-CEPBHaBl.js";import{n as A,t as j}from"./shield-alert-BftATuAA.js";import{i as M,w as N}from"./index-DrmOCySv.js";var P=r(`boxes`,[[`path`,{d:`M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z`,key:`lc1i9w`}],[`path`,{d:`m7 16.5-4.74-2.85`,key:`1o9zyk`}],[`path`,{d:`m7 16.5 5-3`,key:`va8pkn`}],[`path`,{d:`M7 16.5v5.17`,key:`jnp8gn`}],[`path`,{d:`M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z`,key:`8zsnat`}],[`path`,{d:`m17 16.5-5-3`,key:`8arw3v`}],[`path`,{d:`m17 16.5 4.74-2.85`,key:`8rfmw`}],[`path`,{d:`M17 16.5v5.17`,key:`k6z78m`}],[`path`,{d:`M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z`,key:`1xygjf`}],[`path`,{d:`M12 8 7.26 5.15`,key:`1vbdud`}],[`path`,{d:`m12 8 4.74-2.85`,key:`3rx089`}],[`path`,{d:`M12 13.5V8`,key:`1io7kd`}]]),F=r(`package-plus`,[[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`path`,{d:`M16 17h6`,key:`1ook5g`}],[`path`,{d:`M19 14v6`,key:`1ckrd5`}],[`path`,{d:`M21 10.535V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.729l7 4a2 2 0 0 0 2 .001l1.675-.955`,key:`28k6lz`}],[`path`,{d:`M3.29 7 12 12l8.71-5`,key:`19ckod`}],[`path`,{d:`m7.5 4.27 8.997 5.148`,key:`9yrvtv`}]]),I=r(`plug`,[[`path`,{d:`M12 22v-5`,key:`1ega77`}],[`path`,{d:`M15 8V2`,key:`18g5xt`}],[`path`,{d:`M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z`,key:`1xoxul`}],[`path`,{d:`M9 8V2`,key:`14iosj`}]]),L=t(s()),R=e(),z=[{id:`models`,labelKey:`library.tab.models`},{id:`skills`,labelKey:`library.tab.skills`},{id:`mcp`,labelKey:`library.tab.mcp`},{id:`marketplace`,labelKey:`library.tab.marketplace`}];function B({initialTab:e}){let t=n(e=>e.mode),r=n(e=>e.language),[a,o]=L.useState(e||`models`);L.useEffect(()=>{z.some(t=>t.id===e)&&o(e)},[e]);let s=(t===`basic`?z.filter(e=>e.id===`models`):z).map(e=>({id:e.id,label:i(r,e.labelKey)})),c=e=>{o(e),l(`/`+e)};return(0,R.jsxs)(`div`,{className:`product-page library-page space-y-5`,children:[(0,R.jsxs)(`header`,{className:`page-hero`,children:[(0,R.jsxs)(`div`,{className:`page-kicker`,children:[(0,R.jsx)(P,{className:`h-4 w-4`}),` `,i(r,`library.kicker`)]}),(0,R.jsx)(`h1`,{className:`page-title`,children:i(r,`library.title`)}),(0,R.jsx)(`p`,{className:`page-copy`,children:i(r,`library.body`)})]}),(0,R.jsx)(p,{tabs:s,value:a,onChange:e=>c(e)}),a===`models`?(0,R.jsx)(V,{}):null,a===`skills`?(0,R.jsx)(K,{}):null,a===`mcp`?(0,R.jsx)(q,{}):null,a===`marketplace`?(0,R.jsx)(J,{}):null]})}function V(){let e=c(),t=n(e=>e.mode),r=n(e=>e.language),s=u({queryKey:[`models`],queryFn:o.models}),l=u({queryKey:[`modelRecommendations`,`local_mlx`],queryFn:()=>o.modelRecommendations(`local_mlx`)}),d=u({queryKey:[`embeddings`],queryFn:o.embeddingsStatus}),[f,p]=L.useState(!1),[h,g]=L.useState(null),[v,y]=L.useState([]),[x,D]=L.useState(null),[N,P]=L.useState(null),[I,z]=L.useState(!1),B=[...a(s.data?.data?.catalog),...a(s.data?.data?.recommended)],V=a(l.data?.data?.recommendations?.models),K=new Map(V.map(e=>[String(e.id),e])),q=a(s.data?.data?.loaded),J=String(s.data?.data?.current||``),Y=B.find(e=>q.includes(String(e.id))||String(e.id)===J),X=l.data?.data?.recommendations?.top_pick||null,Z=v[v.length-1]||null,Q=L.useCallback(e=>{let n=String(e||i(r,`library.model.notReady`));if(t!==`basic`)return n;let a=n.replace(/gemma4_unified/gi,i(r,`library.model.localFormat`)).replace(/mlx[-_ ]?vlm|mlx[-_ ]?lm|local_mlx|\bmlx\b|\bgguf\b|\bollama\b|hugging face/gi,i(r,`library.model.localSupport`)).replace(/runtime/gi,i(r,`library.model.support`)).replace(/model_type/gi,i(r,`library.model.format`));return r===`en`?a.replace(/this local model format local model support format/gi,i(r,`library.model.localFormat`)).replace(/local model support model support/gi,i(r,`library.model.localSupport`)):a},[r,t]);async function $(t,n,r){z(!0),g(t),y([]),D(null),P(null);let i=await o.streamModelPrepare({model:t,engine:n||`local_mlx`,allow_download:r},{onProgress:e=>y(t=>[...t.slice(-8),e]),onDone:e=>D(e),onError:e=>P(e)});z(!1),await e.invalidateQueries({queryKey:[`models`]}),await e.invalidateQueries({queryKey:[`modelRecommendations`,`local_mlx`]}),!i.ok&&!N&&P(i.data)}return(0,R.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[1.2fr_0.8fr]`,children:[(0,R.jsxs)(`div`,{className:`space-y-4`,children:[(0,R.jsx)(b,{title:i(r,`library.models.setup.title`),description:i(r,`library.models.setup.desc`),result:l.data,children:n=>{let a=n.recommendations,s=n.profile;return(0,R.jsxs)(`div`,{className:`space-y-4`,children:[(0,R.jsx)(U,{language:r,mode:t,profile:s||{},recommendation:a||{},current:Y,currentId:J,latestProgress:Z,lastResult:x,onReload:()=>{Y&&$(String(Y.recommended_load_id||Y.id||J),String(Y.recommended_engine||Y.engine||`local_mlx`),f)},onUnload:()=>{J&&o.unloadModel(J).then(()=>e.invalidateQueries({queryKey:[`models`]}))}}),(0,R.jsx)(`div`,{className:`grid gap-2 md:grid-cols-3 xl:grid-cols-6`,children:[[i(r,`library.step.environment`),!0,k],[i(r,`library.step.recommend`),!!(X||B.length),E],[i(r,`library.step.install`),!!(Y||Z?.stage===`engine`),F],[i(r,`library.step.download`),!!(Y||Z?.stage===`download`),A],[i(r,`library.step.validate`),!!(Y||Z?.stage===`smoke_test`),j],[i(r,`library.step.ready`),!!(Y||x),O]].map(([e,t,n])=>(0,R.jsxs)(`div`,{className:`rounded-lg border border-border bg-background/55 p-3`,children:[L.createElement(n,{className:`h-4 w-4 text-primary`}),(0,R.jsx)(`div`,{className:`mt-2 text-sm font-medium`,children:String(e)}),(0,R.jsx)(T,{variant:t?`success`:`muted`,children:t?i(r,`library.step.done`):i(r,`library.step.pending`)})]},String(e)))}),(0,R.jsxs)(`label`,{className:`flex items-start gap-2 rounded-lg border border-border bg-background/55 p-3 text-sm leading-6`,children:[(0,R.jsx)(`input`,{className:`mt-1`,type:`checkbox`,checked:f,onChange:e=>p(e.target.checked)}),(0,R.jsx)(`span`,{children:i(r,`library.consent`)})]}),Z?(0,R.jsxs)(`div`,{className:`rounded-lg border border-border bg-background/55 p-3 text-sm`,children:[(0,R.jsx)(`div`,{className:`font-medium`,children:String(Z.message||i(r,`library.preparing`))}),(0,R.jsx)(`div`,{className:`mt-2 h-2 overflow-hidden rounded-full bg-muted`,children:(0,R.jsx)(`div`,{className:`h-full bg-primary`,style:{width:`${Number(Z.percent||8)}%`}})}),Z.detail?(0,R.jsx)(`div`,{className:`mt-2 text-xs text-muted-foreground`,children:String(Z.detail)}):null]}):null,N?(0,R.jsx)(W,{error:N}):null]})}}),(0,R.jsx)(b,{title:t===`basic`?i(r,`library.panel.recommended.basic`):i(r,`library.panel.recommended.other`),result:s.data,children:e=>(0,R.jsxs)(`div`,{className:`grid gap-2`,children:[(B.length?B:a(e.loaded)).slice(0,t===`basic`?3:14).map((n,s)=>{let c=String(n.id||n.model_id||n.name||s),l=a(e.loaded).includes(c)||e.current===c||n.state===`loaded`,u=String(n.recommended_load_id||c),d=String(n.recommended_engine||n.engine||``),p=K.get(c)||K.get(u)||{},m=G(n.verification),g=G(p.verification),_=G(n.hardware),v=G(p.hardware),y=_.notes||v.notes||(_.recommended_ram_gb?i(r,`library.model.ramRecommended`,{ram:String(_.recommended_ram_gb)}):``),b=n.safety_notes||p.safety_notes,x=n.license||p.license,S=n.runtime_compatibility||p.runtime_compatibility||{},w=String(S.status||``)===`fallback_available`,E=n.load_status===`unsupported`||S.supported===!1,D=!!n.download_required,O=(!!n.load_available||l)&&!E,k=String(n.load_status||(l?`loaded`:`unavailable`)),A=Q(n.unavailable_reason||i(r,`library.model.notReady`)),j=String(n.runtime_label||S.preferred_runtime||d||`local_mlx`),N=String(S.action||k.replace(/_/g,` `)),P=E&&t===`basic`?i(r,`library.model.needsAttention`):E?N:k,F=O||D,L=n.download_size||n.estimated_size||p.download_size||p.estimated_size||n.size||p.size,z=n.provider||p.provider||n.organization||p.organization;return(0,R.jsxs)(`div`,{className:`grid gap-3 rounded-lg border border-border bg-background/55 p-4 md:grid-cols-[1fr_auto]`,children:[(0,R.jsxs)(`div`,{className:`min-w-0`,children:[(0,R.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,R.jsx)(`div`,{className:`text-base font-semibold`,children:String(n.name||c)}),X?.id===c||n.recommended_default?(0,R.jsx)(T,{variant:`success`,children:i(r,`library.model.recommended`)}):null,String(n.modality||p.modality||``).includes(`multi`)||String(n.modality||``)===`multimodal`?(0,R.jsx)(T,{variant:`muted`,children:i(r,`library.model.multimodal`)}):null,m.verified||g.verified?(0,R.jsx)(T,{variant:`success`,title:i(r,`library.model.hfVerified`),children:`✓ HF`}):null]}),(0,R.jsx)(`div`,{className:`mt-1 text-sm text-muted-foreground`,children:t===`basic`?[Q(n.family||p.family||i(r,`library.model.local`)),/mlx|gguf|ollama/i.test(String(n.size||p.size||``))?``:n.size||p.size].filter(Boolean).map(String).join(` · `):[n.family||p.family||i(r,`library.value.local`),n.size||p.size].filter(Boolean).map(String).join(` · `)}),n.hardware||p.hardware?(0,R.jsx)(`div`,{className:`mt-1 text-[11px] text-muted-foreground/80`,children:String(y)}):null,(0,R.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-1 text-[11px] text-muted-foreground`,children:[(0,R.jsx)(T,{variant:`muted`,children:D?i(r,`library.model.downloadSize`,{size:String(L||i(r,`library.model.downloadRequired`))}):i(r,`library.model.noDownload`)}),(0,R.jsx)(T,{variant:`muted`,children:D?i(r,`library.model.internetDuringDownload`):i(r,`library.model.runsLocally`)}),z?(0,R.jsx)(T,{variant:`muted`,children:String(z)}):null]}),E?(0,R.jsxs)(`div`,{className:`mt-3 rounded-lg border border-amber-500/30 bg-amber-500/10 p-3 text-sm`,children:[(0,R.jsx)(`div`,{className:`font-medium`,children:t===`basic`?i(r,`library.model.attentionBeforeLoad`):N}),(0,R.jsx)(`div`,{className:`text-muted-foreground`,children:Q(S.user_message||A)})]}):w?(0,R.jsxs)(`div`,{className:`mt-3 rounded-lg border border-amber-500/30 bg-amber-500/10 p-3 text-sm`,children:[(0,R.jsx)(`div`,{className:`font-medium`,children:t===`basic`?i(r,`library.model.compatiblePath`):i(r,`library.model.runtimeFallback`)}),(0,R.jsx)(`div`,{className:`text-muted-foreground`,children:Q(S.user_message||i(r,`library.model.compatibilityFallback`))})]}):!l&&!O?(0,R.jsx)(`div`,{className:`mt-1 text-xs text-muted-foreground`,children:A}):null,t===`basic`?null:(0,R.jsxs)(`div`,{className:`mt-2 space-y-1 text-xs text-muted-foreground`,children:[(0,R.jsxs)(`div`,{children:[j,` · `,u,n.load_strategy||p.load_strategy?` · ${String(n.load_strategy||p.load_strategy)}`:``,m.notes?` · ${String(m.notes).slice(0,60)}`:``]}),b||x?(0,R.jsx)(`div`,{children:[x?i(r,`library.model.license`,{license:String(x)}):``,b?String(b):``].filter(Boolean).join(` · `)}):null]}),E||w?(0,R.jsx)(H,{compatibility:S}):null]}),(0,R.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 md:justify-end`,children:[(0,R.jsx)(T,{variant:l?`success`:O?`muted`:`warning`,children:l?i(r,`library.model.loaded`):P}),l?(0,R.jsx)(C,{label:i(r,`library.runtime.unload`),action:()=>o.unloadModel(u),invalidate:[`models`]}):(0,R.jsx)(M,{variant:`outline`,disabled:I||E||!F||D&&!f,onClick:()=>$(u,d||`local_mlx`,f),children:h===u&&I?i(r,`library.btn.preparing`):D?i(r,`library.btn.installLoad`):i(r,`library.btn.validateLoad`)})]})]},c)}),t===`basic`&&B.length>3?(0,R.jsx)(`div`,{className:`rounded-lg border border-border bg-background/55 p-3 text-sm text-muted-foreground`,children:i(r,`library.model.shortListHint`)}):null]})})]}),(0,R.jsxs)(`div`,{className:`space-y-4`,children:[(0,R.jsx)(b,{title:t===`basic`?i(r,`library.models.embedding.basic`):i(r,`library.models.embedding.advanced`),result:d.data,children:e=>t===`basic`?(0,R.jsx)(m,{value:e.state||i(r,`library.value.ready`)}):(0,R.jsx)(w,{value:e})}),(0,R.jsx)(b,{title:t===`basic`?i(r,`library.models.validation`):i(r,`library.models.validationAdvanced`),result:s.data,children:e=>{let n=a(e.compat_profiles);return n.length?(0,R.jsx)(_,{items:n.map(e=>({...e,name:t===`basic`?e.name||e.display_name||i(r,`library.model.loadedName`):e.name||e.display_name||e.model_id,status:e.quality_status||e.load_status||i(r,`library.model.checked`)})),titleKey:`name`,metaKey:`status`,limit:6}):(0,R.jsx)(S,{title:i(r,`library.model.noneChecked`),detail:i(r,`library.model.noneCheckedHint`)})}})]})]})}function H({compatibility:e}){let t=n(e=>e.mode),r=n(e=>e.language),o=a(e.alternatives);return o.length?(0,R.jsx)(`div`,{className:`mt-2 flex flex-wrap gap-1`,children:o.slice(0,3).map(e=>(0,R.jsx)(T,{variant:`muted`,children:t===`basic`&&/mlx|gguf|ollama|lm studio/i.test(String(e.name||e.id))?i(r,`library.model.compatibleAlternative`):String(e.name||e.id)},String(e.id||e.name)))}):null}function U({language:e=`en`,mode:t=`advanced`,profile:n,recommendation:r,current:a,currentId:o,latestProgress:s,lastResult:c,onReload:l,onUnload:u}){let d=String(a?.name||a?.id||o||``),f=String(a?.engine||a?.recommended_engine||s?.engine||`local_mlx`),p=String(a?.local_path||a?.storage_location||r.cache_path||r.storage_location||`~/.cache/huggingface / ~/.latticeai/models`),m=String(s?.stage||c?.stage||(d?i(e,`library.value.ready`):i(e,`library.value.idle`))),h=t===`basic`;return(0,R.jsxs)(`div`,{className:`space-y-3`,children:[(0,R.jsx)(v,{stats:h?[{label:i(e,`library.runtime.computer`),value:n?.os?`${String(n.os)} ${String(n.arch||``)}`:i(e,`library.value.detected`)},{label:i(e,`library.runtime.loaded`),value:d||i(e,`library.runtime.noneShort`)}]:[{label:i(e,`library.runtime.computer`),value:n?.os?`${String(n.os)} ${String(n.arch||``)}`:i(e,`library.value.detected`)},{label:i(e,`library.runtime.engine`),value:f},{label:i(e,`library.runtime.loaded`),value:d||i(e,`library.runtime.noLoaded`)},{label:i(e,`library.runtime.state`),value:m}]}),(0,R.jsxs)(`div`,{className:`rounded-lg border border-border bg-background/55 p-3 text-sm`,children:[(0,R.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-3`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`div`,{className:`font-medium`,children:d?i(e,`library.models.runtime.available`):i(e,`library.models.runtime.none`)}),h?null:(0,R.jsx)(`div`,{className:`mt-1 text-muted-foreground`,children:i(e,`library.runtime.cacheStorage`,{path:p})})]}),(0,R.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,R.jsx)(M,{variant:`outline`,size:`sm`,disabled:!d,onClick:l,children:i(e,`library.runtime.reload`)}),(0,R.jsx)(M,{variant:`outline`,size:`sm`,disabled:!d,onClick:u,children:i(e,`library.runtime.unload`)})]})]}),s?(0,R.jsxs)(`div`,{className:`mt-3`,children:[(0,R.jsxs)(`div`,{className:`flex justify-between text-xs text-muted-foreground`,children:[(0,R.jsx)(`span`,{children:String(s.message||i(e,`library.preparing`))}),(0,R.jsxs)(`span`,{children:[Number(s.percent||0),`%`]})]}),(0,R.jsx)(`div`,{className:`mt-1 h-2 overflow-hidden rounded-full bg-muted`,children:(0,R.jsx)(`div`,{className:`h-full bg-primary`,style:{width:`${Number(s.percent||8)}%`}})})]}):null]})]})}function W({error:e}){let t=n(e=>e.language),r=a(e.recovery_guidance);return(0,R.jsxs)(`div`,{className:`rounded-lg border border-amber-500/30 bg-amber-500/10 p-3 text-sm`,children:[(0,R.jsx)(`div`,{className:`font-medium`,children:String(e.user_message||i(t,`library.model.setupAttention`))}),r.length?(0,R.jsx)(`ul`,{className:`mt-2 list-inside list-disc text-muted-foreground`,children:r.slice(0,3).map(e=>(0,R.jsx)(`li`,{children:e},e))}):null]})}function G(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function K(){let e=c(),t=n(e=>e.language),r=u({queryKey:[`skills`],queryFn:o.skills}),s=u({queryKey:[`skillsMarketplace`],queryFn:o.skillsMarketplace}),l=N({mutationFn:e=>o.skillInstall(String(e.name||e.id),String(e.plugin||``)),onSuccess:()=>e.invalidateQueries({queryKey:[`skills`]})});return(0,R.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,R.jsx)(b,{title:i(t,`library.skills.installed`),result:r.data,children:e=>(0,R.jsx)(`div`,{className:`grid gap-2`,children:a(e.skills).map(e=>(0,R.jsxs)(`div`,{className:`flex items-center justify-between gap-3 rounded-md border border-border p-3`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`div`,{className:`font-medium`,children:String(e.name||e.id)}),(0,R.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:String(e.plugin||e.description||``)})]}),(0,R.jsx)(C,{label:i(t,e.enabled?`library.skills.disable`:`library.skills.enable`),action:()=>o.skillToggle(String(e.name||e.id),!!e.enabled),invalidate:[`skills`]})]},String(e.name||e.id)))})}),(0,R.jsx)(b,{title:i(t,`library.skills.marketplace`),result:s.data,children:e=>(0,R.jsx)(`div`,{className:`grid gap-2`,children:a(e.skills).slice(0,10).map(e=>(0,R.jsxs)(`div`,{className:`flex items-center justify-between gap-3 rounded-md border border-border p-3`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`div`,{className:`font-medium`,children:String(e.name||e.id)}),(0,R.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:String(e.description||e.category||``)})]}),(0,R.jsx)(M,{variant:`outline`,disabled:l.isPending,onClick:()=>l.mutate(e),children:i(t,`library.skills.install`)})]},String(e.name||e.id)))})})]})}function q(){let e=n(e=>e.mode),t=n(e=>e.language),[r,a]=L.useState(`github`),s=u({queryKey:[`mcpTools`],queryFn:o.mcpTools}),c=N({mutationFn:()=>o.mcpRecommend(r)});return(0,R.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[1fr_1fr]`,children:[(0,R.jsx)(b,{title:i(t,e===`basic`?`library.connector.connections`:`library.connector.mcpTools`),result:s.data,children:e=>(0,R.jsx)(_,{items:e.tools||e.installed_mcps,titleKey:`name`,metaKey:`status`})}),(0,R.jsxs)(x,{children:[(0,R.jsxs)(h,{children:[(0,R.jsxs)(d,{className:`flex items-center gap-2`,children:[(0,R.jsx)(I,{className:`h-4 w-4`}),` `,i(t,`library.connector.recommend`)]}),(0,R.jsx)(g,{children:i(t,`library.connector.recommendHint`)})]}),(0,R.jsxs)(y,{className:`space-y-3`,children:[(0,R.jsxs)(`div`,{className:`flex gap-2`,children:[(0,R.jsx)(D,{value:r,onChange:e=>a(e.target.value)}),(0,R.jsx)(M,{onClick:()=>c.mutate(),disabled:!r.trim()||c.isPending,children:i(t,`library.connector.recommendAction`)})]}),c.data?(0,R.jsx)(f,{result:c.data,successLabel:i(t,`library.connector.recommendDone`)}):null]})]})]})}function J(){let e=n(e=>e.language),t=u({queryKey:[`templates`],queryFn:o.templates}),r=u({queryKey:[`plugins`],queryFn:o.pluginsRegistry}),s=u({queryKey:[`pluginsDirectory`],queryFn:o.pluginsDirectory});return(0,R.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-3`,children:[(0,R.jsx)(b,{title:i(e,`library.market.templates`),result:t.data,children:e=>(0,R.jsx)(_,{items:e.templates,titleKey:`name`,metaKey:`kind`})}),(0,R.jsx)(b,{title:i(e,`library.market.installedPlugins`),result:r.data,children:e=>(0,R.jsx)(_,{items:e.plugins,titleKey:`name`,metaKey:`status`})}),(0,R.jsx)(b,{title:i(e,`library.market.pluginDirectory`),result:s.data,children:e=>(0,R.jsx)(_,{items:e.plugins,titleKey:`name`,metaKey:`category`})}),(0,R.jsxs)(x,{className:`xl:col-span-3`,children:[(0,R.jsxs)(h,{children:[(0,R.jsxs)(d,{className:`flex items-center gap-2`,children:[(0,R.jsx)(F,{className:`h-4 w-4`}),` `,i(e,`library.market.templateInstall`)]}),(0,R.jsx)(g,{children:i(e,`library.market.templateInstallHint`)})]}),(0,R.jsx)(y,{children:a(t.data?.data?.templates).length?(0,R.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:a(t.data?.data?.templates).slice(0,6).map(t=>(0,R.jsx)(C,{label:i(e,`library.market.installTemplate`,{name:String(t.name||t.id)}),action:()=>o.installTemplate(t)},String(t.id||t.name)))}):(0,R.jsx)(_,{items:[]})})]})]})}export{B as LibraryPage};
|
|
1
|
+
import{_ as e,b as t,h as n,m as r,p as i,t as a,u as o,v as s}from"./utils-BqoznzGP.js";import{a as c,n as l,r as u}from"./navigation-BPQqEQwr.js";import{_ as d,c as f,d as p,f as m,g as h,h as g,i as _,l as v,m as y,n as b,p as x,r as S,t as C,u as w,v as T}from"./primitives-B2f9N7Dh.js";import{n as E,t as D}from"./input-CSi6OBJ9.js";import{t as O}from"./circle-play-Bz5iTD0p.js";import{t as k}from"./cpu-CJhjRtNq.js";import{n as A,t as j}from"./shield-alert-yA_Y8lOB.js";import{i as M,w as N}from"./index-CEu0Wqjl.js";var P=r(`boxes`,[[`path`,{d:`M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z`,key:`lc1i9w`}],[`path`,{d:`m7 16.5-4.74-2.85`,key:`1o9zyk`}],[`path`,{d:`m7 16.5 5-3`,key:`va8pkn`}],[`path`,{d:`M7 16.5v5.17`,key:`jnp8gn`}],[`path`,{d:`M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z`,key:`8zsnat`}],[`path`,{d:`m17 16.5-5-3`,key:`8arw3v`}],[`path`,{d:`m17 16.5 4.74-2.85`,key:`8rfmw`}],[`path`,{d:`M17 16.5v5.17`,key:`k6z78m`}],[`path`,{d:`M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z`,key:`1xygjf`}],[`path`,{d:`M12 8 7.26 5.15`,key:`1vbdud`}],[`path`,{d:`m12 8 4.74-2.85`,key:`3rx089`}],[`path`,{d:`M12 13.5V8`,key:`1io7kd`}]]),F=r(`package-plus`,[[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`path`,{d:`M16 17h6`,key:`1ook5g`}],[`path`,{d:`M19 14v6`,key:`1ckrd5`}],[`path`,{d:`M21 10.535V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.729l7 4a2 2 0 0 0 2 .001l1.675-.955`,key:`28k6lz`}],[`path`,{d:`M3.29 7 12 12l8.71-5`,key:`19ckod`}],[`path`,{d:`m7.5 4.27 8.997 5.148`,key:`9yrvtv`}]]),I=r(`plug`,[[`path`,{d:`M12 22v-5`,key:`1ega77`}],[`path`,{d:`M15 8V2`,key:`18g5xt`}],[`path`,{d:`M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z`,key:`1xoxul`}],[`path`,{d:`M9 8V2`,key:`14iosj`}]]),L=t(s()),R=e(),z=[{id:`models`,labelKey:`library.tab.models`},{id:`skills`,labelKey:`library.tab.skills`},{id:`mcp`,labelKey:`library.tab.mcp`},{id:`marketplace`,labelKey:`library.tab.marketplace`}];function B({initialTab:e}){let t=n(e=>e.mode),r=n(e=>e.language),[a,o]=L.useState(e||`models`);L.useEffect(()=>{z.some(t=>t.id===e)&&o(e)},[e]);let s=(t===`basic`?z.filter(e=>e.id===`models`):z).map(e=>({id:e.id,label:i(r,e.labelKey)})),c=e=>{o(e),l(`/`+e)};return(0,R.jsxs)(`div`,{className:`product-page library-page space-y-5`,children:[(0,R.jsxs)(`header`,{className:`page-hero`,children:[(0,R.jsxs)(`div`,{className:`page-kicker`,children:[(0,R.jsx)(P,{className:`h-4 w-4`}),` `,i(r,`library.kicker`)]}),(0,R.jsx)(`h1`,{className:`page-title`,children:i(r,`library.title`)}),(0,R.jsx)(`p`,{className:`page-copy`,children:i(r,`library.body`)})]}),(0,R.jsx)(p,{tabs:s,value:a,onChange:e=>c(e)}),a===`models`?(0,R.jsx)(V,{}):null,a===`skills`?(0,R.jsx)(K,{}):null,a===`mcp`?(0,R.jsx)(q,{}):null,a===`marketplace`?(0,R.jsx)(J,{}):null]})}function V(){let e=c(),t=n(e=>e.mode),r=n(e=>e.language),s=u({queryKey:[`models`],queryFn:o.models}),l=u({queryKey:[`modelRecommendations`,`local_mlx`],queryFn:()=>o.modelRecommendations(`local_mlx`)}),d=u({queryKey:[`embeddings`],queryFn:o.embeddingsStatus}),[f,p]=L.useState(!1),[h,g]=L.useState(null),[v,y]=L.useState([]),[x,D]=L.useState(null),[N,P]=L.useState(null),[I,z]=L.useState(!1),B=[...a(s.data?.data?.catalog),...a(s.data?.data?.recommended)],V=a(l.data?.data?.recommendations?.models),K=new Map(V.map(e=>[String(e.id),e])),q=a(s.data?.data?.loaded),J=String(s.data?.data?.current||``),Y=B.find(e=>q.includes(String(e.id))||String(e.id)===J),X=l.data?.data?.recommendations?.top_pick||null,Z=v[v.length-1]||null,Q=L.useCallback(e=>{let n=String(e||i(r,`library.model.notReady`));if(t!==`basic`)return n;let a=n.replace(/gemma4_unified/gi,i(r,`library.model.localFormat`)).replace(/mlx[-_ ]?vlm|mlx[-_ ]?lm|local_mlx|\bmlx\b|\bgguf\b|\bollama\b|hugging face/gi,i(r,`library.model.localSupport`)).replace(/runtime/gi,i(r,`library.model.support`)).replace(/model_type/gi,i(r,`library.model.format`));return r===`en`?a.replace(/this local model format local model support format/gi,i(r,`library.model.localFormat`)).replace(/local model support model support/gi,i(r,`library.model.localSupport`)):a},[r,t]);async function $(t,n,r){z(!0),g(t),y([]),D(null),P(null);let i=await o.streamModelPrepare({model:t,engine:n||`local_mlx`,allow_download:r},{onProgress:e=>y(t=>[...t.slice(-8),e]),onDone:e=>D(e),onError:e=>P(e)});z(!1),await e.invalidateQueries({queryKey:[`models`]}),await e.invalidateQueries({queryKey:[`modelRecommendations`,`local_mlx`]}),!i.ok&&!N&&P(i.data)}return(0,R.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[1.2fr_0.8fr]`,children:[(0,R.jsxs)(`div`,{className:`space-y-4`,children:[(0,R.jsx)(b,{title:i(r,`library.models.setup.title`),description:i(r,`library.models.setup.desc`),result:l.data,children:n=>{let a=n.recommendations,s=n.profile;return(0,R.jsxs)(`div`,{className:`space-y-4`,children:[(0,R.jsx)(U,{language:r,mode:t,profile:s||{},recommendation:a||{},current:Y,currentId:J,latestProgress:Z,lastResult:x,onReload:()=>{Y&&$(String(Y.recommended_load_id||Y.id||J),String(Y.recommended_engine||Y.engine||`local_mlx`),f)},onUnload:()=>{J&&o.unloadModel(J).then(()=>e.invalidateQueries({queryKey:[`models`]}))}}),(0,R.jsx)(`div`,{className:`grid gap-2 md:grid-cols-3 xl:grid-cols-6`,children:[[i(r,`library.step.environment`),!0,k],[i(r,`library.step.recommend`),!!(X||B.length),E],[i(r,`library.step.install`),!!(Y||Z?.stage===`engine`),F],[i(r,`library.step.download`),!!(Y||Z?.stage===`download`),A],[i(r,`library.step.validate`),!!(Y||Z?.stage===`smoke_test`),j],[i(r,`library.step.ready`),!!(Y||x),O]].map(([e,t,n])=>(0,R.jsxs)(`div`,{className:`rounded-lg border border-border bg-background/55 p-3`,children:[L.createElement(n,{className:`h-4 w-4 text-primary`}),(0,R.jsx)(`div`,{className:`mt-2 text-sm font-medium`,children:String(e)}),(0,R.jsx)(T,{variant:t?`success`:`muted`,children:t?i(r,`library.step.done`):i(r,`library.step.pending`)})]},String(e)))}),(0,R.jsxs)(`label`,{className:`flex items-start gap-2 rounded-lg border border-border bg-background/55 p-3 text-sm leading-6`,children:[(0,R.jsx)(`input`,{className:`mt-1`,type:`checkbox`,checked:f,onChange:e=>p(e.target.checked)}),(0,R.jsx)(`span`,{children:i(r,`library.consent`)})]}),Z?(0,R.jsxs)(`div`,{className:`rounded-lg border border-border bg-background/55 p-3 text-sm`,children:[(0,R.jsx)(`div`,{className:`font-medium`,children:String(Z.message||i(r,`library.preparing`))}),(0,R.jsx)(`div`,{className:`mt-2 h-2 overflow-hidden rounded-full bg-muted`,children:(0,R.jsx)(`div`,{className:`h-full bg-primary`,style:{width:`${Number(Z.percent||8)}%`}})}),Z.detail?(0,R.jsx)(`div`,{className:`mt-2 text-xs text-muted-foreground`,children:String(Z.detail)}):null]}):null,N?(0,R.jsx)(W,{error:N}):null]})}}),(0,R.jsx)(b,{title:t===`basic`?i(r,`library.panel.recommended.basic`):i(r,`library.panel.recommended.other`),result:s.data,children:e=>(0,R.jsxs)(`div`,{className:`grid gap-2`,children:[(B.length?B:a(e.loaded)).slice(0,t===`basic`?3:14).map((n,s)=>{let c=String(n.id||n.model_id||n.name||s),l=a(e.loaded).includes(c)||e.current===c||n.state===`loaded`,u=String(n.recommended_load_id||c),d=String(n.recommended_engine||n.engine||``),p=K.get(c)||K.get(u)||{},m=G(n.verification),g=G(p.verification),_=G(n.hardware),v=G(p.hardware),y=_.notes||v.notes||(_.recommended_ram_gb?i(r,`library.model.ramRecommended`,{ram:String(_.recommended_ram_gb)}):``),b=n.safety_notes||p.safety_notes,x=n.license||p.license,S=n.runtime_compatibility||p.runtime_compatibility||{},w=String(S.status||``)===`fallback_available`,E=n.load_status===`unsupported`||S.supported===!1,D=!!n.download_required,O=(!!n.load_available||l)&&!E,k=String(n.load_status||(l?`loaded`:`unavailable`)),A=Q(n.unavailable_reason||i(r,`library.model.notReady`)),j=String(n.runtime_label||S.preferred_runtime||d||`local_mlx`),N=String(S.action||k.replace(/_/g,` `)),P=E&&t===`basic`?i(r,`library.model.needsAttention`):E?N:k,F=O||D,L=n.download_size||n.estimated_size||p.download_size||p.estimated_size||n.size||p.size,z=n.provider||p.provider||n.organization||p.organization;return(0,R.jsxs)(`div`,{className:`grid gap-3 rounded-lg border border-border bg-background/55 p-4 md:grid-cols-[1fr_auto]`,children:[(0,R.jsxs)(`div`,{className:`min-w-0`,children:[(0,R.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,R.jsx)(`div`,{className:`text-base font-semibold`,children:String(n.name||c)}),X?.id===c||n.recommended_default?(0,R.jsx)(T,{variant:`success`,children:i(r,`library.model.recommended`)}):null,String(n.modality||p.modality||``).includes(`multi`)||String(n.modality||``)===`multimodal`?(0,R.jsx)(T,{variant:`muted`,children:i(r,`library.model.multimodal`)}):null,m.verified||g.verified?(0,R.jsx)(T,{variant:`success`,title:i(r,`library.model.hfVerified`),children:`✓ HF`}):null]}),(0,R.jsx)(`div`,{className:`mt-1 text-sm text-muted-foreground`,children:t===`basic`?[Q(n.family||p.family||i(r,`library.model.local`)),/mlx|gguf|ollama/i.test(String(n.size||p.size||``))?``:n.size||p.size].filter(Boolean).map(String).join(` · `):[n.family||p.family||i(r,`library.value.local`),n.size||p.size].filter(Boolean).map(String).join(` · `)}),n.hardware||p.hardware?(0,R.jsx)(`div`,{className:`mt-1 text-[11px] text-muted-foreground/80`,children:String(y)}):null,(0,R.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-1 text-[11px] text-muted-foreground`,children:[(0,R.jsx)(T,{variant:`muted`,children:D?i(r,`library.model.downloadSize`,{size:String(L||i(r,`library.model.downloadRequired`))}):i(r,`library.model.noDownload`)}),(0,R.jsx)(T,{variant:`muted`,children:D?i(r,`library.model.internetDuringDownload`):i(r,`library.model.runsLocally`)}),z?(0,R.jsx)(T,{variant:`muted`,children:String(z)}):null]}),E?(0,R.jsxs)(`div`,{className:`mt-3 rounded-lg border border-amber-500/30 bg-amber-500/10 p-3 text-sm`,children:[(0,R.jsx)(`div`,{className:`font-medium`,children:t===`basic`?i(r,`library.model.attentionBeforeLoad`):N}),(0,R.jsx)(`div`,{className:`text-muted-foreground`,children:Q(S.user_message||A)})]}):w?(0,R.jsxs)(`div`,{className:`mt-3 rounded-lg border border-amber-500/30 bg-amber-500/10 p-3 text-sm`,children:[(0,R.jsx)(`div`,{className:`font-medium`,children:t===`basic`?i(r,`library.model.compatiblePath`):i(r,`library.model.runtimeFallback`)}),(0,R.jsx)(`div`,{className:`text-muted-foreground`,children:Q(S.user_message||i(r,`library.model.compatibilityFallback`))})]}):!l&&!O?(0,R.jsx)(`div`,{className:`mt-1 text-xs text-muted-foreground`,children:A}):null,t===`basic`?null:(0,R.jsxs)(`div`,{className:`mt-2 space-y-1 text-xs text-muted-foreground`,children:[(0,R.jsxs)(`div`,{children:[j,` · `,u,n.load_strategy||p.load_strategy?` · ${String(n.load_strategy||p.load_strategy)}`:``,m.notes?` · ${String(m.notes).slice(0,60)}`:``]}),b||x?(0,R.jsx)(`div`,{children:[x?i(r,`library.model.license`,{license:String(x)}):``,b?String(b):``].filter(Boolean).join(` · `)}):null]}),E||w?(0,R.jsx)(H,{compatibility:S}):null]}),(0,R.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 md:justify-end`,children:[(0,R.jsx)(T,{variant:l?`success`:O?`muted`:`warning`,children:l?i(r,`library.model.loaded`):P}),l?(0,R.jsx)(C,{label:i(r,`library.runtime.unload`),action:()=>o.unloadModel(u),invalidate:[`models`]}):(0,R.jsx)(M,{variant:`outline`,disabled:I||E||!F||D&&!f,onClick:()=>$(u,d||`local_mlx`,f),children:h===u&&I?i(r,`library.btn.preparing`):D?i(r,`library.btn.installLoad`):i(r,`library.btn.validateLoad`)})]})]},c)}),t===`basic`&&B.length>3?(0,R.jsx)(`div`,{className:`rounded-lg border border-border bg-background/55 p-3 text-sm text-muted-foreground`,children:i(r,`library.model.shortListHint`)}):null]})})]}),(0,R.jsxs)(`div`,{className:`space-y-4`,children:[(0,R.jsx)(b,{title:t===`basic`?i(r,`library.models.embedding.basic`):i(r,`library.models.embedding.advanced`),result:d.data,children:e=>t===`basic`?(0,R.jsx)(m,{value:e.state||i(r,`library.value.ready`)}):(0,R.jsx)(w,{value:e})}),(0,R.jsx)(b,{title:t===`basic`?i(r,`library.models.validation`):i(r,`library.models.validationAdvanced`),result:s.data,children:e=>{let n=a(e.compat_profiles);return n.length?(0,R.jsx)(_,{items:n.map(e=>({...e,name:t===`basic`?e.name||e.display_name||i(r,`library.model.loadedName`):e.name||e.display_name||e.model_id,status:e.quality_status||e.load_status||i(r,`library.model.checked`)})),titleKey:`name`,metaKey:`status`,limit:6}):(0,R.jsx)(S,{title:i(r,`library.model.noneChecked`),detail:i(r,`library.model.noneCheckedHint`)})}})]})]})}function H({compatibility:e}){let t=n(e=>e.mode),r=n(e=>e.language),o=a(e.alternatives);return o.length?(0,R.jsx)(`div`,{className:`mt-2 flex flex-wrap gap-1`,children:o.slice(0,3).map(e=>(0,R.jsx)(T,{variant:`muted`,children:t===`basic`&&/mlx|gguf|ollama|lm studio/i.test(String(e.name||e.id))?i(r,`library.model.compatibleAlternative`):String(e.name||e.id)},String(e.id||e.name)))}):null}function U({language:e=`en`,mode:t=`advanced`,profile:n,recommendation:r,current:a,currentId:o,latestProgress:s,lastResult:c,onReload:l,onUnload:u}){let d=String(a?.name||a?.id||o||``),f=String(a?.engine||a?.recommended_engine||s?.engine||`local_mlx`),p=String(a?.local_path||a?.storage_location||r.cache_path||r.storage_location||`~/.cache/huggingface / ~/.latticeai/models`),m=String(s?.stage||c?.stage||(d?i(e,`library.value.ready`):i(e,`library.value.idle`))),h=t===`basic`;return(0,R.jsxs)(`div`,{className:`space-y-3`,children:[(0,R.jsx)(v,{stats:h?[{label:i(e,`library.runtime.computer`),value:n?.os?`${String(n.os)} ${String(n.arch||``)}`:i(e,`library.value.detected`)},{label:i(e,`library.runtime.loaded`),value:d||i(e,`library.runtime.noneShort`)}]:[{label:i(e,`library.runtime.computer`),value:n?.os?`${String(n.os)} ${String(n.arch||``)}`:i(e,`library.value.detected`)},{label:i(e,`library.runtime.engine`),value:f},{label:i(e,`library.runtime.loaded`),value:d||i(e,`library.runtime.noLoaded`)},{label:i(e,`library.runtime.state`),value:m}]}),(0,R.jsxs)(`div`,{className:`rounded-lg border border-border bg-background/55 p-3 text-sm`,children:[(0,R.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-3`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`div`,{className:`font-medium`,children:d?i(e,`library.models.runtime.available`):i(e,`library.models.runtime.none`)}),h?null:(0,R.jsx)(`div`,{className:`mt-1 text-muted-foreground`,children:i(e,`library.runtime.cacheStorage`,{path:p})})]}),(0,R.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,R.jsx)(M,{variant:`outline`,size:`sm`,disabled:!d,onClick:l,children:i(e,`library.runtime.reload`)}),(0,R.jsx)(M,{variant:`outline`,size:`sm`,disabled:!d,onClick:u,children:i(e,`library.runtime.unload`)})]})]}),s?(0,R.jsxs)(`div`,{className:`mt-3`,children:[(0,R.jsxs)(`div`,{className:`flex justify-between text-xs text-muted-foreground`,children:[(0,R.jsx)(`span`,{children:String(s.message||i(e,`library.preparing`))}),(0,R.jsxs)(`span`,{children:[Number(s.percent||0),`%`]})]}),(0,R.jsx)(`div`,{className:`mt-1 h-2 overflow-hidden rounded-full bg-muted`,children:(0,R.jsx)(`div`,{className:`h-full bg-primary`,style:{width:`${Number(s.percent||8)}%`}})})]}):null]})]})}function W({error:e}){let t=n(e=>e.language),r=a(e.recovery_guidance);return(0,R.jsxs)(`div`,{className:`rounded-lg border border-amber-500/30 bg-amber-500/10 p-3 text-sm`,children:[(0,R.jsx)(`div`,{className:`font-medium`,children:String(e.user_message||i(t,`library.model.setupAttention`))}),r.length?(0,R.jsx)(`ul`,{className:`mt-2 list-inside list-disc text-muted-foreground`,children:r.slice(0,3).map(e=>(0,R.jsx)(`li`,{children:e},e))}):null]})}function G(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function K(){let e=c(),t=n(e=>e.language),r=u({queryKey:[`skills`],queryFn:o.skills}),s=u({queryKey:[`skillsMarketplace`],queryFn:o.skillsMarketplace}),l=N({mutationFn:e=>o.skillInstall(String(e.name||e.id),String(e.plugin||``)),onSuccess:()=>e.invalidateQueries({queryKey:[`skills`]})});return(0,R.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,R.jsx)(b,{title:i(t,`library.skills.installed`),result:r.data,children:e=>(0,R.jsx)(`div`,{className:`grid gap-2`,children:a(e.skills).map(e=>(0,R.jsxs)(`div`,{className:`flex items-center justify-between gap-3 rounded-md border border-border p-3`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`div`,{className:`font-medium`,children:String(e.name||e.id)}),(0,R.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:String(e.plugin||e.description||``)})]}),(0,R.jsx)(C,{label:i(t,e.enabled?`library.skills.disable`:`library.skills.enable`),action:()=>o.skillToggle(String(e.name||e.id),!!e.enabled),invalidate:[`skills`]})]},String(e.name||e.id)))})}),(0,R.jsx)(b,{title:i(t,`library.skills.marketplace`),result:s.data,children:e=>(0,R.jsx)(`div`,{className:`grid gap-2`,children:a(e.skills).slice(0,10).map(e=>(0,R.jsxs)(`div`,{className:`flex items-center justify-between gap-3 rounded-md border border-border p-3`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`div`,{className:`font-medium`,children:String(e.name||e.id)}),(0,R.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:String(e.description||e.category||``)})]}),(0,R.jsx)(M,{variant:`outline`,disabled:l.isPending,onClick:()=>l.mutate(e),children:i(t,`library.skills.install`)})]},String(e.name||e.id)))})})]})}function q(){let e=n(e=>e.mode),t=n(e=>e.language),[r,a]=L.useState(`github`),s=u({queryKey:[`mcpTools`],queryFn:o.mcpTools}),c=N({mutationFn:()=>o.mcpRecommend(r)});return(0,R.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[1fr_1fr]`,children:[(0,R.jsx)(b,{title:i(t,e===`basic`?`library.connector.connections`:`library.connector.mcpTools`),result:s.data,children:e=>(0,R.jsx)(_,{items:e.tools||e.installed_mcps,titleKey:`name`,metaKey:`status`})}),(0,R.jsxs)(x,{children:[(0,R.jsxs)(h,{children:[(0,R.jsxs)(d,{className:`flex items-center gap-2`,children:[(0,R.jsx)(I,{className:`h-4 w-4`}),` `,i(t,`library.connector.recommend`)]}),(0,R.jsx)(g,{children:i(t,`library.connector.recommendHint`)})]}),(0,R.jsxs)(y,{className:`space-y-3`,children:[(0,R.jsxs)(`div`,{className:`flex gap-2`,children:[(0,R.jsx)(D,{value:r,onChange:e=>a(e.target.value)}),(0,R.jsx)(M,{onClick:()=>c.mutate(),disabled:!r.trim()||c.isPending,children:i(t,`library.connector.recommendAction`)})]}),c.data?(0,R.jsx)(f,{result:c.data,successLabel:i(t,`library.connector.recommendDone`)}):null]})]})]})}function J(){let e=n(e=>e.language),t=u({queryKey:[`templates`],queryFn:o.templates}),r=u({queryKey:[`plugins`],queryFn:o.pluginsRegistry}),s=u({queryKey:[`pluginsDirectory`],queryFn:o.pluginsDirectory});return(0,R.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-3`,children:[(0,R.jsx)(b,{title:i(e,`library.market.templates`),result:t.data,children:e=>(0,R.jsx)(_,{items:e.templates,titleKey:`name`,metaKey:`kind`})}),(0,R.jsx)(b,{title:i(e,`library.market.installedPlugins`),result:r.data,children:e=>(0,R.jsx)(_,{items:e.plugins,titleKey:`name`,metaKey:`status`})}),(0,R.jsx)(b,{title:i(e,`library.market.pluginDirectory`),result:s.data,children:e=>(0,R.jsx)(_,{items:e.plugins,titleKey:`name`,metaKey:`category`})}),(0,R.jsxs)(x,{className:`xl:col-span-3`,children:[(0,R.jsxs)(h,{children:[(0,R.jsxs)(d,{className:`flex items-center gap-2`,children:[(0,R.jsx)(F,{className:`h-4 w-4`}),` `,i(e,`library.market.templateInstall`)]}),(0,R.jsx)(g,{children:i(e,`library.market.templateInstallHint`)})]}),(0,R.jsx)(y,{children:a(t.data?.data?.templates).length?(0,R.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:a(t.data?.data?.templates).slice(0,6).map(t=>(0,R.jsx)(C,{label:i(e,`library.market.installTemplate`,{name:String(t.name||t.id)}),action:()=>o.installTemplate(t)},String(t.id||t.name)))}):(0,R.jsx)(_,{items:[]})})]})]})}export{B as LibraryPage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,b as t,h as n,m as r,p as i,r as a,v as o}from"./utils-
|
|
1
|
+
import{_ as e,b as t,h as n,m as r,p as i,r as a,v as o}from"./utils-BqoznzGP.js";var s=r(`arrow-right`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`m12 5 7 7-7 7`,key:`xquz4c`}]]),c=r(`refresh-cw`,[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]),l=t(o()),u=e(),d=Array.from({length:12},(e,t)=>t),f=[{x:22,y:32,delay:-.4,duration:5.8},{x:36,y:18,delay:-2.1,duration:6.4},{x:65,y:22,delay:-3.7,duration:5.4},{x:79,y:42,delay:-1.3,duration:6.8},{x:68,y:72,delay:-4.5,duration:5.9},{x:31,y:75,delay:-2.8,duration:6.2}];function p({state:e=`idle`,intensity:t=.6,onPulse:r,size:o=`large`,label:s,className:c,showLabel:p=!0,depth:h=0,onInteract:g}){let _=n(e=>e.language),v=l.useRef(null),y=l.useRef(null),b=l.useRef(null),x=l.useRef({x:0,y:0}),S=l.useId().replace(/:/g,``),C={left:`${S}-lobe-left`,right:`${S}-lobe-right`,bridge:`${S}-bridge`,stem:`${S}-stem`,sheen:`${S}-sheen`},w=l.useCallback(()=>{v.current&&(v.current.classList.add(`pulse`),y.current!==null&&window.clearTimeout(y.current),y.current=window.setTimeout(()=>{v.current&&v.current.classList.remove(`pulse`)},1350)),r?.()},[r]);l.useEffect(()=>{let e=()=>w();return window.addEventListener(`brain:recall`,e),()=>{window.removeEventListener(`brain:recall`,e),y.current!==null&&window.clearTimeout(y.current)}},[w]),l.useEffect(()=>{if(e===`recalling`||t>.82){let e=window.setTimeout(()=>w(),180);return()=>clearTimeout(e)}},[e,t,w]);let T=e,E=o===`large`,D=o===`trace`,O=Math.max(.35,Math.min(1,t)),k=Math.max(0,Math.min(5,h||0)),A=e===`thinking`||e===`recalling`||e===`synthesizing`||e===`acting`,j=()=>{w(),!A&&g?.()},M=l.useRef(!1);l.useEffect(()=>{let e=window.matchMedia(`(prefers-reduced-motion: reduce)`),t=()=>{M.current=e.matches};return t(),e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]);let N=l.useCallback(e=>{if(M.current||e.pointerType===`touch`)return;let t=v.current;if(!t)return;let n=t.getBoundingClientRect(),r=(e.clientX-n.left)/n.width*2-1;x.current={x:((e.clientY-n.top)/n.height*2-1)*-9,y:r*11},b.current===null&&(b.current=window.requestAnimationFrame(()=>{b.current=null;let e=v.current;e&&(e.style.setProperty(`--tilt-y`,`${x.current.y.toFixed(2)}deg`),e.style.setProperty(`--tilt-x`,`${x.current.x.toFixed(2)}deg`))}))},[]),P=l.useCallback(()=>{b.current!==null&&(window.cancelAnimationFrame(b.current),b.current=null);let e=v.current;e&&(e.style.setProperty(`--tilt-y`,`0deg`),e.style.setProperty(`--tilt-x`,`0deg`))},[]);return l.useEffect(()=>()=>{b.current!==null&&window.cancelAnimationFrame(b.current)},[]),(0,u.jsxs)(`div`,{className:a(`brain-presence select-none`,E&&`large`,D&&`trace`,c,k>0&&`is-exploring`),"aria-label":i(_,`brain.living.aria`),role:`group`,"data-depth":k,children:[(0,u.jsxs)(`button`,{type:`button`,ref:v,className:a(`brain-organism`,`size-${o}`,`depth-${k}`),"data-state":T,"data-testid":`living-brain`,"aria-label":i(_,k<5?`brain.living.open`:`brain.living.graph`),"aria-busy":A,style:{"--brain-scale":`${.96+(O-.5)*.09+k*.015}`},onClick:j,onPointerMove:N,onPointerLeave:P,title:i(_,k<5?`brain.living.open`:`brain.living.graph`),children:[(0,u.jsxs)(`div`,{className:`brain-vital-field`,"aria-hidden":`true`,children:[(0,u.jsx)(`span`,{className:`brain-vital-ring is-primary`}),(0,u.jsx)(`span`,{className:`brain-vital-ring is-echo`}),(0,u.jsx)(`span`,{className:`brain-orbit is-near`,children:(0,u.jsx)(`i`,{})}),(0,u.jsx)(`span`,{className:`brain-orbit is-far`,children:(0,u.jsx)(`i`,{})}),f.map((e,t)=>(0,u.jsx)(`i`,{className:`brain-vital-spark`,style:{left:`${e.x}%`,top:`${e.y}%`,animationDelay:`${e.delay}s`,animationDuration:`${e.duration}s`,"--spark-index":t}},`${e.x}-${e.y}`))]}),(0,u.jsx)(`div`,{className:`brain-core`,style:{"--core-scale":`${1+k*.045}`},children:(0,u.jsx)(`div`,{className:`brain-body-motion`,children:(0,u.jsxs)(`svg`,{className:`brain-anatomy`,viewBox:`0 0 220 174`,"aria-hidden":!0,children:[(0,u.jsxs)(`defs`,{children:[(0,u.jsxs)(`radialGradient`,{id:C.left,cx:`34%`,cy:`26%`,r:`85%`,children:[(0,u.jsx)(`stop`,{offset:`0%`,stopColor:`hsl(var(--brain-halo) / 0.8)`}),(0,u.jsx)(`stop`,{offset:`42%`,stopColor:`hsl(var(--brain-core) / 0.46)`}),(0,u.jsx)(`stop`,{offset:`78%`,stopColor:`hsl(var(--brain-core) / 0.2)`}),(0,u.jsx)(`stop`,{offset:`100%`,stopColor:`hsl(228 30% 8% / 0.28)`})]}),(0,u.jsxs)(`radialGradient`,{id:C.right,cx:`62%`,cy:`24%`,r:`88%`,children:[(0,u.jsx)(`stop`,{offset:`0%`,stopColor:`hsl(var(--connection) / 0.66)`}),(0,u.jsx)(`stop`,{offset:`46%`,stopColor:`hsl(var(--connection) / 0.32)`}),(0,u.jsx)(`stop`,{offset:`80%`,stopColor:`hsl(var(--connection) / 0.14)`}),(0,u.jsx)(`stop`,{offset:`100%`,stopColor:`hsl(228 30% 8% / 0.3)`})]}),(0,u.jsxs)(`radialGradient`,{id:C.bridge,cx:`50%`,cy:`30%`,r:`80%`,children:[(0,u.jsx)(`stop`,{offset:`0%`,stopColor:`hsl(var(--memory) / 0.55)`}),(0,u.jsx)(`stop`,{offset:`100%`,stopColor:`hsl(var(--memory) / 0.1)`})]}),(0,u.jsxs)(`linearGradient`,{id:C.stem,x1:`0`,y1:`0`,x2:`0`,y2:`1`,children:[(0,u.jsx)(`stop`,{offset:`0%`,stopColor:`hsl(var(--knowledge) / 0.42)`}),(0,u.jsx)(`stop`,{offset:`100%`,stopColor:`hsl(var(--knowledge) / 0.08)`})]}),(0,u.jsxs)(`linearGradient`,{id:C.sheen,x1:`0`,y1:`0`,x2:`0.4`,y2:`1`,children:[(0,u.jsx)(`stop`,{offset:`0%`,stopColor:`hsl(40 60% 98% / 0.5)`}),(0,u.jsx)(`stop`,{offset:`70%`,stopColor:`hsl(40 60% 98% / 0.06)`}),(0,u.jsx)(`stop`,{offset:`100%`,stopColor:`hsl(40 60% 98% / 0)`})]})]}),(0,u.jsx)(`path`,{className:`brain-lobe brain-lobe-left`,style:{fill:`url(#${C.left})`},d:`M102 30c-13-20-44-19-55 1-18 1-29 16-28 33-13 8-18 25-11 39-9 16-1 36 17 42 5 19 27 26 43 15 13 10 33 8 43-5 5-7 8-16 8-27V52c0-8-6-17-17-22Z`}),(0,u.jsx)(`path`,{className:`brain-lobe brain-lobe-right`,style:{fill:`url(#${C.right})`},d:`M118 30c13-20 44-19 55 1 18 1 29 16 28 33 13 8 18 25 11 39 9 16 1 36-17 42-5 19-27 26-43 15-13 10-33 8-43-5-5-7-8-16-8-27V52c0-8 6-17 17-22Z`}),(0,u.jsx)(`path`,{className:`brain-bridge`,style:{fill:`url(#${C.bridge})`},d:`M103 48c9-8 24-8 33 0 7 6 9 16 5 25-5 11-16 15-31 12-15 3-26-1-31-12-4-9-2-19 5-25 5-4 12-6 19 0Z`}),(0,u.jsx)(`path`,{className:`brain-stem`,style:{fill:`url(#${C.stem})`},d:`M92 137c10 9 26 9 36 0 1 14 7 25 20 33H76c12-8 17-19 16-33Z`}),(0,u.jsx)(`path`,{className:`brain-fold fold-a`,d:`M48 50c18-11 38-8 47 8`}),(0,u.jsx)(`path`,{className:`brain-fold fold-b`,d:`M34 82c22-8 45-5 58 8`}),(0,u.jsx)(`path`,{className:`brain-fold fold-c`,d:`M43 119c18 5 35 2 49-11`}),(0,u.jsx)(`path`,{className:`brain-fold fold-d`,d:`M172 50c-18-11-38-8-47 8`}),(0,u.jsx)(`path`,{className:`brain-fold fold-e`,d:`M186 82c-22-8-45-5-58 8`}),(0,u.jsx)(`path`,{className:`brain-fold fold-f`,d:`M177 119c-18 5-35 2-49-11`}),(0,u.jsx)(`path`,{className:`brain-fold fold-mid`,d:`M110 38c-5 30-5 70 0 112`}),(0,u.jsx)(`path`,{className:`brain-sheen`,style:{fill:`url(#${C.sheen})`},d:`M58 38c22-16 52-20 78-10-30-2-58 6-74 22-8 8-16 6-4-12Z`})]})})}),(0,u.jsx)(`div`,{className:`brain-aura`,style:{animationDuration:e===`thinking`?`1.65s`:e===`recalling`?`2.4s`:`6.8s`,"--aura-scale":`${1+k*.12}`,opacity:.65+k*.05,boxShadow:k>2?`0 0 60px hsl(var(--brain-core) / 0.25)`:`none`}}),(0,u.jsx)(`div`,{className:`thought-activity`,"aria-hidden":!0,children:d.slice(0,Math.min(12,5+k*2)).map(e=>(0,u.jsx)(`div`,{className:a(`thought-particle`,k>=3&&`resolving`),style:{left:`${18+(e*13+k*4)%64}%`,top:`${22+e%5*14}%`,animationDelay:`-${e*.55+t*1.1-k*.2}s`,animationDuration:`${2.8+(1-O)*1.6-k*.15}s`}},e))}),Array.from({length:1+Math.floor(k/1.5)}).map((e,t)=>(0,u.jsx)(`div`,{className:`memory-ripple`,"aria-hidden":!0,style:{inset:`${18+t*6}%`,animationDelay:`${180+t*220}ms`,opacity:.55+k*.06}},t))]}),p&&!D&&(0,u.jsxs)(`div`,{className:`brain-presence-label`,"data-state":e,children:[(0,u.jsx)(`span`,{className:`dot`}),s||(k>0?i(_,`brain.living.depth`,{depth:k}):i(_,m(e)))]})]})}function m(e){switch(e){case`listening`:return`brain.living.state.listening`;case`thinking`:return`brain.living.state.thinking`;case`recalling`:return`brain.living.state.recalling`;case`synthesizing`:return`brain.living.state.synthesizing`;case`planning`:return`brain.living.state.planning`;case`acting`:return`brain.living.state.acting`;case`resting`:return`brain.living.state.resting`;default:return`brain.living.state.idle`}}function h(){typeof window<`u`&&window.dispatchEvent(new CustomEvent(`brain:recall`))}export{s as i,h as n,c as r,p as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,b as t,f as n,h as r,m as i,p as a,t as o,u as s,v as c}from"./utils-SJUNVOj5.js";import{i as l,r as u,t as d}from"./LivingBrain-Jlf2wFqI.js";import{n as f,t as p}from"./input-gtVCg-ll.js";import{t as m}from"./cpu-CEPBHaBl.js";import{S as h,c as g,i as _}from"./index-DrmOCySv.js";var v=i(`gauge`,[[`path`,{d:`m12 14 4-4`,key:`9kzdfg`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`,key:`19p75a`}]]),y=i(`shield`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}]]),b=i(`star`,[[`path`,{d:`M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z`,key:`r04s7s`}]]),x=i(`zap`,[[`path`,{d:`M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z`,key:`1xq2db`}]]),S=t(c());function C(e){let t=M(e?.models),n=[...o(t.recommended),...o(t.catalog)],r=M(e?.recommendations?.recommendations),i=o(r.models),a=M(r.top_pick),s=new Map;for(let e of[...i,...n]){let t=String(e.id||e.model_id||e.recommended_load_id||``);t&&s.set(t,{...s.get(t)||{},...e})}a.id&&!s.has(String(a.id))&&s.set(String(a.id),a);let c=Array.from(s.values()).map(T).filter(e=>e.id),l=c.filter(e=>e.supported),u=l.length?l:c,d=(e=>u.find(t=>t.id===String(e)))(a.id)||(e=>u.find(t=>e.test(`${t.name} ${t.id}`)))(/gemma.*12|12b/i)||u[0],f=u.find(e=>e.id!==d?.id&&/qwen|8b|7b/i.test(`${e.name} ${e.id}`))||u.find(e=>e.id!==d?.id),p=u.find(e=>e.id!==d?.id&&e.id!==f?.id&&/26b|32b|70b|advanced/i.test(`${e.name} ${e.id}`))||u.find(e=>e.id!==d?.id&&e.id!==f?.id);return[d?{...d,role:`best`,reason:d.reason||`best`}:null,f?{...f,role:`faster`,reason:f.reason||`faster`}:null,p?{...p,role:`advanced`,reason:p.reason||`advanced`}:null].filter(Boolean)}function ee(e){let{analysis:t,endpoints:n}=e;if(!n)return{status:`loading`,recommendations:[],reason:null,failedEndpoints:[]};let r=Object.keys(n).filter(e=>!n[e]);if(!(n.recommendations||n.models))return{status:`unavailable`,recommendations:[],reason:`probe_failed`,failedEndpoints:r};let i=C(t).filter(e=>e.supported);return i.length?{status:`ready`,recommendations:i,reason:null,failedEndpoints:r}:{status:`unavailable`,recommendations:[],reason:`no_supported_model`,failedEndpoints:r}}function w(){return{id:`mlx-community/Qwen3-VL-8B-Instruct-4bit`,loadId:`mlx-community/Qwen3-VL-8B-Instruct-4bit`,engine:`local_mlx`,name:`Qwen3-VL 8B`,shortName:`Qwen 3`,family:`Qwen 3`,size:``,role:`best`,reason:`best`,supported:!0,downloadRequired:!1,downloadSize:``,storageLocation:`~/.latticeai/models`,externalHost:``,estimatedDownloadMinutes:0,estimatedFirstResponseSeconds:5,parameterBillions:8}}function T(e){let t=M(e.runtime_compatibility),n=String(e.id||e.model_id||e.recommended_load_id||``),r=String(e.recommended_load_id||e.load_id||n),i=String(e.display_name||e.name||n||`recommended_brain`),a=e.load_status!==`unsupported`&&e.load_status!==`runtime_update_needed`&&e.status!==`not_recommended`&&t.supported!==!1,o=!!e.download_required,s=o?String(e.download_size||e.size||``):``,c=O(`${i} ${n}`);return{id:n,loadId:r,engine:String(e.recommended_engine||e.engine||`local_mlx`),name:i,shortName:j(i||n),family:j(String(e.family||i||`local_brain`)),size:String(e.size||``),role:`best`,reason:String(e.reason||``),supported:a,downloadRequired:o,downloadSize:s,storageLocation:String(e.storage_location||e.local_path||`~/.latticeai/models`),externalHost:o?A(e):``,estimatedDownloadMinutes:o?D(s):0,estimatedFirstResponseSeconds:k(c),parameterBillions:c}}function E(e){let t=String(e||``).match(/([\d.]+)\s*(t|g|m)?b?/i);if(!t)return null;let n=Number(t[1]);if(!Number.isFinite(n)||n<=0)return null;let r=(t[2]||`g`).toLowerCase();return r===`t`?n*1024*1024:r===`m`?n:n*1024}function D(e){let t=E(e);if(t===null)return null;let n=t/(15/8)/60;return Math.max(1,Math.round(n))}function O(e){let t=String(e||``).match(/(\d{1,3}(?:\.\d)?)\s*b\b/i);if(!t)return null;let n=Number(t[1]);return Number.isFinite(n)&&n>0?n:null}function k(e){return e===null?8:e<=9?5:e<=16?10:e<=40?18:30}function A(e){let t=String(e.source_url||e.download_url||e.repository||e.provider||e.id||``);return t?/huggingface|hf\\.co|mlx-community/i.test(t)?`huggingface`:/ollama/i.test(t)?`ollama`:t.replace(/^https?:\/\//,``).split(`/`)[0]||t:``}function j(e){return String(e||`recommended_brain`).replace(/^mlx-community\//i,``).replace(/[-_]?Instruct/gi,``).replace(/[-_]?4bit/gi,``).replace(/Qwen3[-_ ]?VL/gi,`Qwen 3`).replace(/Qwen3/gi,`Qwen 3`).replace(/Gemma[-_ ]?4/gi,`Gemma 4`).replace(/A4B/gi,``).replace(/[-_]+/g,` `).replace(/\s+/g,` `).trim()}function M(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}var N=e();function te({model:e}){let t=r(e=>e.language),n=e.downloadRequired?[{label:a(t,`flow.consent.size`),value:e.downloadSize||a(t,`flow.consent.sizeUnknown`)},{label:a(t,`flow.consent.location`),value:e.storageLocation},{label:a(t,`flow.consent.external`),value:e.externalHost||a(t,`flow.consent.externalUnknown`)}]:[{label:a(t,`flow.consent.state`),value:a(t,`flow.consent.stateReady`)},{label:a(t,`flow.consent.location`),value:e.storageLocation},{label:a(t,`flow.consent.external`),value:a(t,`flow.consent.externalNone`)}],i=e.downloadRequired?`flow.consent.title`:`flow.consent.readyTitle`;return(0,N.jsxs)(`section`,{className:`ritual-consent-panel`,"aria-label":a(t,i),children:[(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`strong`,{children:a(t,i)}),(0,N.jsx)(`p`,{children:e.downloadRequired?a(t,`flow.consent.body`):a(t,`flow.consent.ready`)})]}),(0,N.jsx)(`dl`,{children:n.map(e=>(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`dt`,{children:e.label}),(0,N.jsx)(`dd`,{children:e.value})]},e.label))})]})}function P({model:e,onBack:t,onComplete:n,onLater:i}){let o=r(e=>e.language),[c,l]=S.useState(!1),[u,p]=S.useState(`idle`),[m,h]=S.useState(0),[g,v]=S.useState(a(o,`flow.install.wait`)),[y,b]=S.useState(null);async function x(){l(!0),b(null),p(`install`),h(8),v(a(o,`flow.install.prepare`));let t=await s.streamModelPrepare({model:e.loadId,engine:e.engine||`local_mlx`,allow_download:e.downloadRequired},{onProgress:e=>{let t=L(String(e.stage||``));p(t),h(Number(e.percent||R(t))),v(z(e,t,o))},onDone:()=>{p(`done`),h(100),v(a(o,`flow.install.done`))},onError:e=>{p(`error`),b(U(e))}});l(!1),t.ok?(p(`done`),h(100),v(a(o,`flow.install.done`)),window.setTimeout(n,700)):(p(`error`),b(U(t.data)))}let C=u===`download`?`thinking`:u===`validate`?`recalling`:u===`load`?`synthesizing`:u===`done`?`idle`:`listening`;return(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`div`,{className:`ritual-title`,children:a(o,e.downloadRequired?`flow.install.title`:`flow.install.title.ready`)}),(0,N.jsxs)(`div`,{className:`ritual-subtitle`,children:[(0,N.jsx)(`strong`,{children:e.shortName}),` — `,e.reason,`.`,(0,N.jsx)(`br`,{}),a(o,e.downloadRequired?`flow.install.body`:`flow.install.body.ready`)]}),(0,N.jsxs)(`section`,{className:`ritual-card ritual-expected-card`,"aria-label":a(o,`flow.install.expectedTitle`),children:[(0,N.jsx)(`div`,{className:`ritual-fact-label`,children:a(o,`flow.install.expectedTitle`)}),(0,N.jsx)(`div`,{className:`ritual-time-estimate ritual-expected-line`,children:F(e,o)}),(0,N.jsx)(`ol`,{className:`ritual-timeline`,children:I(e,o).map(e=>(0,N.jsxs)(`li`,{className:`ritual-timeline-step`,children:[(0,N.jsx)(`span`,{className:`ritual-timeline-name`,children:e.name}),(0,N.jsx)(`span`,{className:`ritual-timeline-time`,children:e.time})]},e.key))}),(0,N.jsx)(`div`,{className:`ritual-muted-hint`,children:a(o,`flow.install.expectedCompletion`)})]}),(0,N.jsx)(`div`,{className:`ritual-install-brain`,children:(0,N.jsx)(d,{state:C,intensity:u===`download`||u===`load`?.96:.82,size:`normal`})}),(0,N.jsx)(te,{model:e}),(0,N.jsxs)(`div`,{className:`ritual-progress`,children:[(0,N.jsx)(`div`,{className:`ritual-stage-list`,children:[`install`,`download`,`validate`,`load`].map(t=>(0,N.jsxs)(`div`,{className:`ritual-stage ${H(u,t)}`,children:[(0,N.jsx)(f,{className:`ritual-stage-icon`}),(0,N.jsx)(`span`,{children:B(t,o,e)})]},t))}),(0,N.jsx)(`div`,{className:`ritual-bar`,children:(0,N.jsx)(`span`,{className:`ritual-bar-fill ${V(m)}`})})]}),(0,N.jsx)(`div`,{className:`ritual-status`,children:g}),(0,N.jsx)(`div`,{className:`ritual-card ritual-status-card`,children:a(o,e.downloadRequired?`flow.install.note`:`flow.install.note.ready`)}),y&&(0,N.jsxs)(`div`,{className:`ritual-card ritual-error-card ritual-install-error`,role:`alert`,children:[y,(0,N.jsx)(`div`,{className:`ritual-error-detail`,children:a(o,`flow.install.retry`)})]}),(0,N.jsxs)(`div`,{className:`ritual-button-row`,children:[(0,N.jsx)(_,{variant:`ghost`,onClick:t,disabled:c,children:a(o,`flow.install.back`)}),(0,N.jsx)(_,{variant:`outline`,onClick:i,disabled:c,children:a(o,`flow.install.later`)}),u===`done`?(0,N.jsx)(_,{onClick:n,children:a(o,`flow.install.enter`)}):(0,N.jsx)(_,{onClick:x,disabled:c||!e.supported,children:c?a(o,`flow.install.busy`):a(o,e.downloadRequired?`flow.install.start`:`flow.install.startReady`)})]}),(0,N.jsx)(`div`,{className:`ritual-local-note`,children:a(o,e.downloadRequired?`flow.install.local`:`flow.install.local.ready`)})]})}function F(e,t){let n=e.estimatedFirstResponseSeconds;return!e.downloadRequired||e.estimatedDownloadMinutes===0?a(t,`flow.install.expected.ready`,{response:n}):e.estimatedDownloadMinutes===null?a(t,`flow.install.expected.unknown`,{response:n}):a(t,`flow.install.expected`,{download:a(t,`flow.recommend.minutes`,{count:e.estimatedDownloadMinutes}),response:n})}function I(e,t){let n=e.downloadRequired&&e.estimatedDownloadMinutes?a(t,`flow.install.timelineApprox`,{time:a(t,`flow.recommend.minutes`,{count:e.estimatedDownloadMinutes})}):a(t,`flow.install.timelineQuick`);return[{key:`download`,name:a(t,e.downloadRequired?`flow.install.timelineStep.download`:`flow.install.timelineStep.ready`),time:n},{key:`validate`,name:a(t,`flow.install.timelineStep.validate`),time:a(t,`flow.install.timelineQuick`)},{key:`load`,name:a(t,`flow.install.timelineStep.load`),time:a(t,`flow.install.timelineApprox`,{time:`${e.estimatedFirstResponseSeconds}s`})}]}function L(e){return/download|pull|weights/i.test(e)?`download`:/smoke|validate|verify|test/i.test(e)?`validate`:/load|ready/i.test(e)?`load`:/done|complete/i.test(e)?`done`:`install`}function R(e){return e===`install`?20:e===`download`?55:e===`validate`?82:e===`load`?94:e===`done`?100:8}function z(e,t,n){let r={install:a(n,`flow.install.prepare`),download:a(n,`flow.install.stage.download`),validate:a(n,`flow.install.stage.validate`),load:a(n,`flow.install.stage.load`),done:a(n,`flow.install.done`),idle:a(n,`flow.install.wait`),error:a(n,`flow.install.stage.error`)}[t];return W(String(e.user_message||e.message||r))}function B(e,t,n){return e===`download`&&!n.downloadRequired?a(t,`flow.install.step.ready`):a(t,`flow.install.step.${e}`)}function V(e){return`progress-${Math.max(0,Math.min(100,Math.round(e/10)*10))}`}function H(e,t){let n=[`idle`,`install`,`download`,`validate`,`load`,`done`],r=n.indexOf(e),i=n.indexOf(t);return e===`error`?`is-error`:e===`done`||r>i?`is-done`:e===t?`is-active`:``}function U(e){let t=M(e),n=o(t.recovery_guidance).map(W).filter(Boolean);return[W(String(t.user_message||t.reason||t.error||`The selected model could not be loaded.`)),...n.slice(0,2)].join(` `)}function W(e){return String(e||``).replace(/gemma4_unified/gi,`this model format`).replace(/mlx[-_ ]?vlm|mlx[-_ ]?lm|local_mlx|\bmlx\b|\bgguf\b|\bollama\b|huggingface|hugging face/gi,`local model support`).replace(/runtime/gi,`model support`).replace(/No module named ['\"][^'\"]+['\"]/gi,`A local support component is missing`).replace(/\s+/g,` `).trim()}function G(){let e=r(e=>e.language),t=r(e=>e.setLanguage);return(0,N.jsx)(`div`,{className:`language-switcher ritual-language`,"aria-label":a(e,`language.label`),children:[`ko`,`en`].map(r=>(0,N.jsx)(`button`,{type:`button`,className:e===r?`is-active`:``,onClick:()=>t(r),"aria-pressed":e===r,children:n[r]},r))})}var K=`lattice.productFlow.user`;function q(){try{let e=localStorage.getItem(K);return e?JSON.parse(e):null}catch{}return null}function J({onSuccess:e}){let t=r(e=>e.language),[n,i]=S.useState(()=>q()?.email||`you@local`),[o,c]=S.useState(``),[l,u]=S.useState(()=>q()?.name||`You`),[d,f]=S.useState(!1),[m,h]=S.useState(null);async function g(r){r.preventDefault();let i=n.trim(),c=o.trim(),u=l.trim()||i.split(`@`)[0]||`You`;if(!i||!c){h(a(t,`flow.login.missing`));return}f(!0),h(null);let d=q(),p=await s.login(i,c);if(!p.ok){if((await s.profile()).ok&&(!d?.email||d.email===i)){try{localStorage.setItem(K,JSON.stringify({email:i,name:u}))}catch{}f(!1),e();return}if(d?.email&&d.email!==i){f(!1),h(a(t,`flow.login.otherEmail`));return}if(d?.email===i){f(!1),h(a(t,`flow.login.wrongPassword`));return}(await s.register({email:i,password:c,name:u,nickname:u})).ok&&(p=await s.login(i,c))}if(!p.ok){f(!1),h(a(t,`flow.login.unavailable`));return}try{localStorage.setItem(K,JSON.stringify({email:i,name:u}))}catch{}f(!1),e()}return(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`div`,{className:`ritual-title`,children:a(t,`flow.login.title`)}),(0,N.jsx)(`div`,{className:`ritual-subtitle`,children:a(t,`flow.login.body`)}),(0,N.jsx)(Y,{}),(0,N.jsxs)(`form`,{onSubmit:g,className:`ritual-card ritual-form`,children:[(0,N.jsxs)(`div`,{className:`ritual-field-stack`,children:[(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`div`,{className:`ritual-field-label`,children:a(t,`flow.name`)}),(0,N.jsx)(p,{value:l,onChange:e=>u(e.target.value),placeholder:a(t,`flow.name.placeholder`),autoComplete:`name`})]}),(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`div`,{className:`ritual-field-label`,children:a(t,`flow.email`)}),(0,N.jsx)(p,{value:n,onChange:e=>i(e.target.value),type:`email`,placeholder:a(t,`flow.email.placeholder`),autoComplete:`email`})]}),(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`div`,{className:`ritual-field-label`,children:a(t,`flow.password`)}),(0,N.jsx)(p,{value:o,onChange:e=>c(e.target.value),type:`password`,placeholder:a(t,`flow.password.placeholder`),autoComplete:`current-password`})]})]}),m&&(0,N.jsx)(`div`,{className:`ritual-error`,role:`alert`,children:m}),(0,N.jsx)(`div`,{className:`ritual-muted-hint`,children:a(t,`flow.login.passwordLocal`)}),(0,N.jsx)(_,{type:`submit`,disabled:d||!n.trim()||!o.trim(),className:`ritual-full-button`,children:d?a(t,`flow.login.busy`):a(t,`flow.login.submit`)}),(0,N.jsx)(`div`,{className:`ritual-note`,children:a(t,`flow.login.note`)})]})]})}function Y(){let e=r(e=>e.language);return(0,N.jsxs)(`div`,{className:`ritual-promise`,"aria-label":a(e,`flow.promise.aria`),children:[(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`span`,{children:a(e,`flow.promise.memory.k`)}),(0,N.jsx)(`strong`,{children:a(e,`flow.promise.memory.v`)})]}),(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`span`,{children:a(e,`flow.promise.model.k`)}),(0,N.jsx)(`strong`,{children:a(e,`flow.promise.model.v`)})]}),(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`span`,{children:a(e,`flow.promise.ownership.k`)}),(0,N.jsx)(`strong`,{children:a(e,`flow.promise.ownership.v`)})]})]})}function X({status:e,reason:t,recommendations:n,analysis:i,onBack:o,onRetry:s,onSkipModel:c,onSelect:d}){let f=r(e=>e.language);if(e===`loading`)return(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`div`,{className:`ritual-title`,children:a(f,`flow.recommend.title`)}),(0,N.jsx)(`div`,{className:`ritual-subtitle`,children:a(f,`flow.recommend.body`)}),(0,N.jsxs)(`div`,{className:`ritual-scan-banner is-loading`,role:`status`,children:[(0,N.jsx)(`span`,{className:`ritual-scan-dot pulsing`}),(0,N.jsx)(`span`,{children:a(f,`flow.recommend.loading`)})]}),(0,N.jsxs)(`div`,{className:`ritual-action-row`,children:[(0,N.jsx)(_,{variant:`ghost`,onClick:o,children:a(f,`flow.recommend.back`)}),(0,N.jsx)(_,{variant:`outline`,onClick:c,children:a(f,`flow.recommend.skip`)})]})]});if(e===`unavailable`){let e=t===`no_supported_model`?`flow.recommend.unavailable.empty`:`flow.recommend.unavailable.probe`;return(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`div`,{className:`ritual-title`,children:a(f,`flow.recommend.title`)}),(0,N.jsx)(`section`,{className:`ritual-card ritual-error-card ritual-unavailable-card`,role:`alert`,"aria-label":a(f,`flow.recommend.unavailable.aria`),children:(0,N.jsxs)(`div`,{className:`ritual-inline-row`,children:[(0,N.jsx)(g,{className:`ritual-core-icon`,"aria-hidden":`true`}),(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`div`,{className:`ritual-strong-text`,children:a(f,`flow.recommend.unavailable.title`)}),(0,N.jsx)(`div`,{className:`ritual-muted-text`,children:a(f,e)})]})]})}),(0,N.jsxs)(`div`,{className:`ritual-button-row ritual-button-row-primary`,children:[(0,N.jsxs)(`button`,{type:`button`,className:`ritual-full-button ritual-full-button-primary`,onClick:s,children:[(0,N.jsx)(u,{size:16}),` `,a(f,`flow.recommend.unavailable.retry`)]}),(0,N.jsx)(`button`,{type:`button`,className:`ritual-secondary-button`,onClick:c,children:a(f,`flow.recommend.skip`)})]}),(0,N.jsxs)(`div`,{className:`ritual-action-row`,children:[(0,N.jsx)(_,{variant:`ghost`,onClick:o,children:a(f,`flow.recommend.back`)}),(0,N.jsx)(`div`,{className:`ritual-muted-hint`,children:a(f,`flow.recommend.unavailable.hint`)})]})]})}let p=n;function m(e,t){if(!e)return(0,N.jsxs)(`div`,{className:`ritual-scan-banner is-loading`,children:[(0,N.jsx)(`span`,{className:`ritual-scan-dot pulsing`}),(0,N.jsx)(`span`,{children:a(t,`flow.analysis.checking`)})]});let n=M(e.recommendations?.recommendations),r=M(e.setup?.environment),i=M(e.recommendations?.profile),o={...r,...i},s=Number(n.ram_gb||Number(o.ram_mb||0)/1024||0);return n.apple_silicon||String(o.arch||``).includes(`arm`)?(0,N.jsxs)(`div`,{className:`ritual-scan-banner is-success`,children:[(0,N.jsx)(`span`,{className:`ritual-scan-dot is-success`}),(0,N.jsx)(`span`,{children:a(t,`flow.recommend.environment.apple`,{ram:Math.round(s)})})]}):(0,N.jsxs)(`div`,{className:`ritual-scan-banner is-warning`,children:[(0,N.jsx)(`span`,{className:`ritual-scan-dot is-warning`}),(0,N.jsx)(`span`,{children:a(t,`flow.recommend.environment.standard`,{ram:Math.round(s)})})]})}return(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`div`,{className:`ritual-title`,children:a(f,`flow.recommend.title`)}),(0,N.jsx)(`div`,{className:`ritual-subtitle`,children:a(f,`flow.recommend.body`)}),m(i,f),(0,N.jsxs)(`div`,{className:`ritual-model-list`,children:[p[0]?.supported?(0,N.jsxs)(`div`,{className:`ritual-primary-cta`,children:[(0,N.jsxs)(_,{onClick:()=>d(p[0]),className:`ritual-primary-model-button`,children:[a(f,`flow.recommend.primary`),` `,(0,N.jsx)(l,{size:16})]}),(0,N.jsx)(`div`,{className:`ritual-time-estimate ritual-primary-note`,children:re(p[0],f)}),(0,N.jsx)(`div`,{className:`ritual-muted-hint ritual-next-hint`,children:a(f,p[0].downloadRequired?`flow.recommend.nextHint`:`flow.recommend.nextHint.ready`)})]}):null,p.slice(0,3).map((e,t)=>{let n=e.role===`best`?b:e.role===`faster`?x:v;return(0,N.jsxs)(`button`,{className:`ritual-model-card`,onClick:()=>e.supported&&d(e),disabled:!e.supported,children:[(0,N.jsxs)(`div`,{className:`ritual-model-heading`,children:[(0,N.jsx)(n,{size:16}),(0,N.jsx)(`div`,{className:`role`,children:ie(e.role,t,f)})]}),(0,N.jsx)(`div`,{className:`name`,children:e.shortName}),(0,N.jsxs)(`div`,{className:`reason`,children:[e.reason,` · `,e.size||a(f,`flow.recommend.sizeReady`),Q(e.role,f)?(0,N.jsxs)(`span`,{className:`ritual-model-comparison`,children:[` `,Q(e.role,f)]}):null]}),(0,N.jsx)(`div`,{className:`ritual-model-stats`,children:(0,N.jsx)(`span`,{className:`ritual-time-estimate`,children:ne(e,f)})}),e.supported?(0,N.jsxs)(`span`,{className:`ritual-model-choose`,children:[a(f,`flow.recommend.choose`),` `,(0,N.jsx)(l,{size:14})]}):(0,N.jsx)(`div`,{className:`ritual-model-warning`,children:a(f,`flow.recommend.unsupported`)})]},`${e.role}-${e.id}`)}),(0,N.jsx)(`div`,{className:`ritual-time-note`,children:a(f,`flow.recommend.timeNote`)})]}),(0,N.jsxs)(`div`,{className:`ritual-action-row`,children:[(0,N.jsx)(_,{variant:`ghost`,onClick:o,children:a(f,`flow.recommend.back`)}),(0,N.jsx)(_,{variant:`outline`,onClick:c,children:a(f,`flow.recommend.skip`)}),(0,N.jsx)(`div`,{className:`ritual-muted-hint`,children:a(f,`flow.recommend.hint`)})]})]})}function Z(e,t){return a(t,`flow.recommend.minutes`,{count:e})}function ne(e,t){let n=e.estimatedFirstResponseSeconds;return!e.downloadRequired||e.estimatedDownloadMinutes===0?a(t,`flow.recommend.timeEstimate.ready`,{response:n}):e.estimatedDownloadMinutes===null?a(t,`flow.recommend.timeEstimate.unknown`,{response:n}):a(t,`flow.recommend.timeEstimate`,{download:Z(e.estimatedDownloadMinutes,t),response:n})}function re(e,t){return!e.downloadRequired||e.estimatedDownloadMinutes===0?a(t,`flow.recommend.primaryNote.ready`):e.estimatedDownloadMinutes===null?a(t,`flow.recommend.primaryNote.unknown`):a(t,`flow.recommend.primaryNote`,{time:Z(e.estimatedDownloadMinutes,t)})}function Q(e,t){return e===`faster`?a(t,`flow.recommend.comparison.faster`):e===`advanced`?a(t,`flow.recommend.comparison.advanced`):``}function ie(e,t,n){return e===`best`?a(n,`flow.recommend.rank.best`):e===`faster`?a(n,`flow.recommend.rank.faster`):e===`advanced`?a(n,`flow.recommend.rank.advanced`):a(n,`flow.recommend.rank.choice`,{index:t+1})}function ae({onComplete:e}){let t=r(e=>e.language),[n,i]=S.useState(`wake`),[o,c]=S.useState(null),[l,u]=S.useState(null),[f,p]=S.useState(0),[m,h]=S.useState(null),g=S.useMemo(()=>ee({analysis:o,endpoints:l}),[o,l]);S.useEffect(()=>{let e=!1;async function t(){let[t,n,r,i]=await Promise.all([s.setupScan(),s.modelRecommendations(`local_mlx`),s.models(),s.sysinfo()]);e||(c({setup:t.ok?t.data:null,recommendations:n.ok?n.data:null,models:r.ok?r.data:null,sysinfo:i.ok?i.data:null}),u({setup:t.ok,recommendations:n.ok,models:r.ok,sysinfo:i.ok}))}return t(),()=>{e=!0}},[f]);let _=S.useCallback(()=>{c(null),u(null),p(e=>e+1)},[]);return(0,N.jsx)(`div`,{className:`ritual-shell`,"aria-label":a(t,`flow.shell`),children:(0,N.jsxs)(`div`,{className:`ritual-container`,children:[(0,N.jsx)(G,{}),(0,N.jsxs)(`div`,{className:`ritual-brain`,children:[(0,N.jsx)(d,{state:se(n),intensity:n===`install`?.92:.7,size:`large`,showLabel:!1}),(0,N.jsx)(`div`,{className:`ritual-edition`,title:a(t,`brain.edition.tip`),children:a(t,`brain.edition`)})]}),n===`wake`&&(0,N.jsx)(oe,{onWake:()=>i(`login`),onUseExisting:()=>$(e)}),n===`login`&&(0,N.jsx)(J,{onSuccess:()=>i(`recommend`)}),n===`recommend`&&(0,N.jsx)(X,{status:g.status,reason:g.reason,recommendations:g.recommendations,analysis:o,onBack:()=>i(`login`),onRetry:_,onSkipModel:()=>$(e),onSelect:e=>{h(e),i(`install`)}}),n===`install`&&(0,N.jsx)(P,{model:m||g.recommendations[0]||w(),onBack:()=>i(`recommend`),onComplete:()=>$(e),onLater:()=>$(e)})]})})}function oe({onWake:e,onUseExisting:t}){let n=r(e=>e.language),i=[{icon:y,label:a(n,`flow.wake.value.local.k`),body:a(n,`flow.wake.value.local.v`)},{icon:x,label:a(n,`flow.wake.value.instant.k`),body:a(n,`flow.wake.value.instant.v`)},{icon:m,label:a(n,`flow.wake.value.brain.k`),body:a(n,`flow.wake.value.brain.v`)}];return(0,N.jsxs)(`section`,{className:`ritual-wake`,"aria-label":a(n,`flow.wake.aria`),children:[(0,N.jsx)(`div`,{className:`ritual-title`,children:a(n,`flow.wake.title`)}),(0,N.jsx)(`div`,{className:`ritual-subtitle`,children:a(n,`flow.wake.body`)}),(0,N.jsx)(`div`,{className:`ritual-value-grid`,"aria-label":a(n,`flow.wake.value.aria`),children:i.map(e=>{let t=e.icon;return(0,N.jsxs)(`div`,{className:`ritual-value-card`,children:[(0,N.jsxs)(`div`,{className:`ritual-value-label`,children:[(0,N.jsx)(t,{size:14}),` `,e.label]}),(0,N.jsx)(`div`,{className:`ritual-value-body`,children:e.body})]},e.label)})}),(0,N.jsxs)(`div`,{className:`ritual-wake-plan`,"aria-label":a(n,`flow.wake.plan.aria`),children:[(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`span`,{children:`1`}),(0,N.jsx)(`strong`,{children:a(n,`flow.wake.step.identity`)})]}),(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`span`,{children:`2`}),(0,N.jsx)(`strong`,{children:a(n,`flow.wake.step.check`)})]}),(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`span`,{children:`3`}),(0,N.jsx)(`strong`,{children:a(n,`flow.wake.step.voice`)})]})]}),(0,N.jsxs)(`div`,{className:`ritual-button-row ritual-button-row-primary`,children:[(0,N.jsxs)(`button`,{type:`button`,className:`ritual-full-button ritual-full-button-primary`,onClick:e,children:[a(n,`flow.wake.primary`),` `,(0,N.jsx)(l,{size:18})]}),(0,N.jsx)(`button`,{type:`button`,className:`ritual-secondary-button`,onClick:t,children:a(n,`flow.wake.existing`)})]}),(0,N.jsx)(`div`,{className:`ritual-start-note`,children:a(n,`flow.wake.startNote`)})]})}function $(e){h(),e()}function se(e){return e===`wake`?`idle`:e===`analysis`?`listening`:e===`recommend`?`recalling`:e===`install`?`thinking`:`idle`}export{ae as ProductFlow};
|
|
1
|
+
import{_ as e,b as t,f as n,h as r,m as i,p as a,t as o,u as s,v as c}from"./utils-BqoznzGP.js";import{i as l,r as u,t as d}from"./LivingBrain-BVWk58MW.js";import{n as f,t as p}from"./input-CSi6OBJ9.js";import{t as m}from"./cpu-CJhjRtNq.js";import{S as h,c as g,i as _}from"./index-CEu0Wqjl.js";var v=i(`gauge`,[[`path`,{d:`m12 14 4-4`,key:`9kzdfg`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`,key:`19p75a`}]]),y=i(`shield`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}]]),b=i(`star`,[[`path`,{d:`M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z`,key:`r04s7s`}]]),x=i(`zap`,[[`path`,{d:`M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z`,key:`1xq2db`}]]),S=t(c());function C(e){let t=M(e?.models),n=[...o(t.recommended),...o(t.catalog)],r=M(e?.recommendations?.recommendations),i=o(r.models),a=M(r.top_pick),s=new Map;for(let e of[...i,...n]){let t=String(e.id||e.model_id||e.recommended_load_id||``);t&&s.set(t,{...s.get(t)||{},...e})}a.id&&!s.has(String(a.id))&&s.set(String(a.id),a);let c=Array.from(s.values()).map(T).filter(e=>e.id),l=c.filter(e=>e.supported),u=l.length?l:c,d=(e=>u.find(t=>t.id===String(e)))(a.id)||(e=>u.find(t=>e.test(`${t.name} ${t.id}`)))(/gemma.*12|12b/i)||u[0],f=u.find(e=>e.id!==d?.id&&/qwen|8b|7b/i.test(`${e.name} ${e.id}`))||u.find(e=>e.id!==d?.id),p=u.find(e=>e.id!==d?.id&&e.id!==f?.id&&/26b|32b|70b|advanced/i.test(`${e.name} ${e.id}`))||u.find(e=>e.id!==d?.id&&e.id!==f?.id);return[d?{...d,role:`best`,reason:d.reason||`best`}:null,f?{...f,role:`faster`,reason:f.reason||`faster`}:null,p?{...p,role:`advanced`,reason:p.reason||`advanced`}:null].filter(Boolean)}function ee(e){let{analysis:t,endpoints:n}=e;if(!n)return{status:`loading`,recommendations:[],reason:null,failedEndpoints:[]};let r=Object.keys(n).filter(e=>!n[e]);if(!(n.recommendations||n.models))return{status:`unavailable`,recommendations:[],reason:`probe_failed`,failedEndpoints:r};let i=C(t).filter(e=>e.supported);return i.length?{status:`ready`,recommendations:i,reason:null,failedEndpoints:r}:{status:`unavailable`,recommendations:[],reason:`no_supported_model`,failedEndpoints:r}}function w(){return{id:`mlx-community/Qwen3-VL-8B-Instruct-4bit`,loadId:`mlx-community/Qwen3-VL-8B-Instruct-4bit`,engine:`local_mlx`,name:`Qwen3-VL 8B`,shortName:`Qwen 3`,family:`Qwen 3`,size:``,role:`best`,reason:`best`,supported:!0,downloadRequired:!1,downloadSize:``,storageLocation:`~/.latticeai/models`,externalHost:``,estimatedDownloadMinutes:0,estimatedFirstResponseSeconds:5,parameterBillions:8}}function T(e){let t=M(e.runtime_compatibility),n=String(e.id||e.model_id||e.recommended_load_id||``),r=String(e.recommended_load_id||e.load_id||n),i=String(e.display_name||e.name||n||`recommended_brain`),a=e.load_status!==`unsupported`&&e.load_status!==`runtime_update_needed`&&e.status!==`not_recommended`&&t.supported!==!1,o=!!e.download_required,s=o?String(e.download_size||e.size||``):``,c=O(`${i} ${n}`);return{id:n,loadId:r,engine:String(e.recommended_engine||e.engine||`local_mlx`),name:i,shortName:j(i||n),family:j(String(e.family||i||`local_brain`)),size:String(e.size||``),role:`best`,reason:String(e.reason||``),supported:a,downloadRequired:o,downloadSize:s,storageLocation:String(e.storage_location||e.local_path||`~/.latticeai/models`),externalHost:o?A(e):``,estimatedDownloadMinutes:o?D(s):0,estimatedFirstResponseSeconds:k(c),parameterBillions:c}}function E(e){let t=String(e||``).match(/([\d.]+)\s*(t|g|m)?b?/i);if(!t)return null;let n=Number(t[1]);if(!Number.isFinite(n)||n<=0)return null;let r=(t[2]||`g`).toLowerCase();return r===`t`?n*1024*1024:r===`m`?n:n*1024}function D(e){let t=E(e);if(t===null)return null;let n=t/(15/8)/60;return Math.max(1,Math.round(n))}function O(e){let t=String(e||``).match(/(\d{1,3}(?:\.\d)?)\s*b\b/i);if(!t)return null;let n=Number(t[1]);return Number.isFinite(n)&&n>0?n:null}function k(e){return e===null?8:e<=9?5:e<=16?10:e<=40?18:30}function A(e){let t=String(e.source_url||e.download_url||e.repository||e.provider||e.id||``);return t?/huggingface|hf\\.co|mlx-community/i.test(t)?`huggingface`:/ollama/i.test(t)?`ollama`:t.replace(/^https?:\/\//,``).split(`/`)[0]||t:``}function j(e){return String(e||`recommended_brain`).replace(/^mlx-community\//i,``).replace(/[-_]?Instruct/gi,``).replace(/[-_]?4bit/gi,``).replace(/Qwen3[-_ ]?VL/gi,`Qwen 3`).replace(/Qwen3/gi,`Qwen 3`).replace(/Gemma[-_ ]?4/gi,`Gemma 4`).replace(/A4B/gi,``).replace(/[-_]+/g,` `).replace(/\s+/g,` `).trim()}function M(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}var N=e();function te({model:e}){let t=r(e=>e.language),n=e.downloadRequired?[{label:a(t,`flow.consent.size`),value:e.downloadSize||a(t,`flow.consent.sizeUnknown`)},{label:a(t,`flow.consent.location`),value:e.storageLocation},{label:a(t,`flow.consent.external`),value:e.externalHost||a(t,`flow.consent.externalUnknown`)}]:[{label:a(t,`flow.consent.state`),value:a(t,`flow.consent.stateReady`)},{label:a(t,`flow.consent.location`),value:e.storageLocation},{label:a(t,`flow.consent.external`),value:a(t,`flow.consent.externalNone`)}],i=e.downloadRequired?`flow.consent.title`:`flow.consent.readyTitle`;return(0,N.jsxs)(`section`,{className:`ritual-consent-panel`,"aria-label":a(t,i),children:[(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`strong`,{children:a(t,i)}),(0,N.jsx)(`p`,{children:e.downloadRequired?a(t,`flow.consent.body`):a(t,`flow.consent.ready`)})]}),(0,N.jsx)(`dl`,{children:n.map(e=>(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`dt`,{children:e.label}),(0,N.jsx)(`dd`,{children:e.value})]},e.label))})]})}function P({model:e,onBack:t,onComplete:n,onLater:i}){let o=r(e=>e.language),[c,l]=S.useState(!1),[u,p]=S.useState(`idle`),[m,h]=S.useState(0),[g,v]=S.useState(a(o,`flow.install.wait`)),[y,b]=S.useState(null);async function x(){l(!0),b(null),p(`install`),h(8),v(a(o,`flow.install.prepare`));let t=await s.streamModelPrepare({model:e.loadId,engine:e.engine||`local_mlx`,allow_download:e.downloadRequired},{onProgress:e=>{let t=L(String(e.stage||``));p(t),h(Number(e.percent||R(t))),v(z(e,t,o))},onDone:()=>{p(`done`),h(100),v(a(o,`flow.install.done`))},onError:e=>{p(`error`),b(U(e))}});l(!1),t.ok?(p(`done`),h(100),v(a(o,`flow.install.done`)),window.setTimeout(n,700)):(p(`error`),b(U(t.data)))}let C=u===`download`?`thinking`:u===`validate`?`recalling`:u===`load`?`synthesizing`:u===`done`?`idle`:`listening`;return(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`div`,{className:`ritual-title`,children:a(o,e.downloadRequired?`flow.install.title`:`flow.install.title.ready`)}),(0,N.jsxs)(`div`,{className:`ritual-subtitle`,children:[(0,N.jsx)(`strong`,{children:e.shortName}),` — `,e.reason,`.`,(0,N.jsx)(`br`,{}),a(o,e.downloadRequired?`flow.install.body`:`flow.install.body.ready`)]}),(0,N.jsxs)(`section`,{className:`ritual-card ritual-expected-card`,"aria-label":a(o,`flow.install.expectedTitle`),children:[(0,N.jsx)(`div`,{className:`ritual-fact-label`,children:a(o,`flow.install.expectedTitle`)}),(0,N.jsx)(`div`,{className:`ritual-time-estimate ritual-expected-line`,children:F(e,o)}),(0,N.jsx)(`ol`,{className:`ritual-timeline`,children:I(e,o).map(e=>(0,N.jsxs)(`li`,{className:`ritual-timeline-step`,children:[(0,N.jsx)(`span`,{className:`ritual-timeline-name`,children:e.name}),(0,N.jsx)(`span`,{className:`ritual-timeline-time`,children:e.time})]},e.key))}),(0,N.jsx)(`div`,{className:`ritual-muted-hint`,children:a(o,`flow.install.expectedCompletion`)})]}),(0,N.jsx)(`div`,{className:`ritual-install-brain`,children:(0,N.jsx)(d,{state:C,intensity:u===`download`||u===`load`?.96:.82,size:`normal`})}),(0,N.jsx)(te,{model:e}),(0,N.jsxs)(`div`,{className:`ritual-progress`,children:[(0,N.jsx)(`div`,{className:`ritual-stage-list`,children:[`install`,`download`,`validate`,`load`].map(t=>(0,N.jsxs)(`div`,{className:`ritual-stage ${H(u,t)}`,children:[(0,N.jsx)(f,{className:`ritual-stage-icon`}),(0,N.jsx)(`span`,{children:B(t,o,e)})]},t))}),(0,N.jsx)(`div`,{className:`ritual-bar`,children:(0,N.jsx)(`span`,{className:`ritual-bar-fill ${V(m)}`})})]}),(0,N.jsx)(`div`,{className:`ritual-status`,children:g}),(0,N.jsx)(`div`,{className:`ritual-card ritual-status-card`,children:a(o,e.downloadRequired?`flow.install.note`:`flow.install.note.ready`)}),y&&(0,N.jsxs)(`div`,{className:`ritual-card ritual-error-card ritual-install-error`,role:`alert`,children:[y,(0,N.jsx)(`div`,{className:`ritual-error-detail`,children:a(o,`flow.install.retry`)})]}),(0,N.jsxs)(`div`,{className:`ritual-button-row`,children:[(0,N.jsx)(_,{variant:`ghost`,onClick:t,disabled:c,children:a(o,`flow.install.back`)}),(0,N.jsx)(_,{variant:`outline`,onClick:i,disabled:c,children:a(o,`flow.install.later`)}),u===`done`?(0,N.jsx)(_,{onClick:n,children:a(o,`flow.install.enter`)}):(0,N.jsx)(_,{onClick:x,disabled:c||!e.supported,children:c?a(o,`flow.install.busy`):a(o,e.downloadRequired?`flow.install.start`:`flow.install.startReady`)})]}),(0,N.jsx)(`div`,{className:`ritual-local-note`,children:a(o,e.downloadRequired?`flow.install.local`:`flow.install.local.ready`)})]})}function F(e,t){let n=e.estimatedFirstResponseSeconds;return!e.downloadRequired||e.estimatedDownloadMinutes===0?a(t,`flow.install.expected.ready`,{response:n}):e.estimatedDownloadMinutes===null?a(t,`flow.install.expected.unknown`,{response:n}):a(t,`flow.install.expected`,{download:a(t,`flow.recommend.minutes`,{count:e.estimatedDownloadMinutes}),response:n})}function I(e,t){let n=e.downloadRequired&&e.estimatedDownloadMinutes?a(t,`flow.install.timelineApprox`,{time:a(t,`flow.recommend.minutes`,{count:e.estimatedDownloadMinutes})}):a(t,`flow.install.timelineQuick`);return[{key:`download`,name:a(t,e.downloadRequired?`flow.install.timelineStep.download`:`flow.install.timelineStep.ready`),time:n},{key:`validate`,name:a(t,`flow.install.timelineStep.validate`),time:a(t,`flow.install.timelineQuick`)},{key:`load`,name:a(t,`flow.install.timelineStep.load`),time:a(t,`flow.install.timelineApprox`,{time:`${e.estimatedFirstResponseSeconds}s`})}]}function L(e){return/download|pull|weights/i.test(e)?`download`:/smoke|validate|verify|test/i.test(e)?`validate`:/load|ready/i.test(e)?`load`:/done|complete/i.test(e)?`done`:`install`}function R(e){return e===`install`?20:e===`download`?55:e===`validate`?82:e===`load`?94:e===`done`?100:8}function z(e,t,n){let r={install:a(n,`flow.install.prepare`),download:a(n,`flow.install.stage.download`),validate:a(n,`flow.install.stage.validate`),load:a(n,`flow.install.stage.load`),done:a(n,`flow.install.done`),idle:a(n,`flow.install.wait`),error:a(n,`flow.install.stage.error`)}[t];return W(String(e.user_message||e.message||r))}function B(e,t,n){return e===`download`&&!n.downloadRequired?a(t,`flow.install.step.ready`):a(t,`flow.install.step.${e}`)}function V(e){return`progress-${Math.max(0,Math.min(100,Math.round(e/10)*10))}`}function H(e,t){let n=[`idle`,`install`,`download`,`validate`,`load`,`done`],r=n.indexOf(e),i=n.indexOf(t);return e===`error`?`is-error`:e===`done`||r>i?`is-done`:e===t?`is-active`:``}function U(e){let t=M(e),n=o(t.recovery_guidance).map(W).filter(Boolean);return[W(String(t.user_message||t.reason||t.error||`The selected model could not be loaded.`)),...n.slice(0,2)].join(` `)}function W(e){return String(e||``).replace(/gemma4_unified/gi,`this model format`).replace(/mlx[-_ ]?vlm|mlx[-_ ]?lm|local_mlx|\bmlx\b|\bgguf\b|\bollama\b|huggingface|hugging face/gi,`local model support`).replace(/runtime/gi,`model support`).replace(/No module named ['\"][^'\"]+['\"]/gi,`A local support component is missing`).replace(/\s+/g,` `).trim()}function G(){let e=r(e=>e.language),t=r(e=>e.setLanguage);return(0,N.jsx)(`div`,{className:`language-switcher ritual-language`,"aria-label":a(e,`language.label`),children:[`ko`,`en`].map(r=>(0,N.jsx)(`button`,{type:`button`,className:e===r?`is-active`:``,onClick:()=>t(r),"aria-pressed":e===r,children:n[r]},r))})}var K=`lattice.productFlow.user`;function q(){try{let e=localStorage.getItem(K);return e?JSON.parse(e):null}catch{}return null}function J({onSuccess:e}){let t=r(e=>e.language),[n,i]=S.useState(()=>q()?.email||`you@local`),[o,c]=S.useState(``),[l,u]=S.useState(()=>q()?.name||`You`),[d,f]=S.useState(!1),[m,h]=S.useState(null);async function g(r){r.preventDefault();let i=n.trim(),c=o.trim(),u=l.trim()||i.split(`@`)[0]||`You`;if(!i||!c){h(a(t,`flow.login.missing`));return}f(!0),h(null);let d=q(),p=await s.login(i,c);if(!p.ok){if((await s.profile()).ok&&(!d?.email||d.email===i)){try{localStorage.setItem(K,JSON.stringify({email:i,name:u}))}catch{}f(!1),e();return}if(d?.email&&d.email!==i){f(!1),h(a(t,`flow.login.otherEmail`));return}if(d?.email===i){f(!1),h(a(t,`flow.login.wrongPassword`));return}(await s.register({email:i,password:c,name:u,nickname:u})).ok&&(p=await s.login(i,c))}if(!p.ok){f(!1),h(a(t,`flow.login.unavailable`));return}try{localStorage.setItem(K,JSON.stringify({email:i,name:u}))}catch{}f(!1),e()}return(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`div`,{className:`ritual-title`,children:a(t,`flow.login.title`)}),(0,N.jsx)(`div`,{className:`ritual-subtitle`,children:a(t,`flow.login.body`)}),(0,N.jsx)(Y,{}),(0,N.jsxs)(`form`,{onSubmit:g,className:`ritual-card ritual-form`,children:[(0,N.jsxs)(`div`,{className:`ritual-field-stack`,children:[(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`div`,{className:`ritual-field-label`,children:a(t,`flow.name`)}),(0,N.jsx)(p,{value:l,onChange:e=>u(e.target.value),placeholder:a(t,`flow.name.placeholder`),autoComplete:`name`})]}),(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`div`,{className:`ritual-field-label`,children:a(t,`flow.email`)}),(0,N.jsx)(p,{value:n,onChange:e=>i(e.target.value),type:`email`,placeholder:a(t,`flow.email.placeholder`),autoComplete:`email`})]}),(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`div`,{className:`ritual-field-label`,children:a(t,`flow.password`)}),(0,N.jsx)(p,{value:o,onChange:e=>c(e.target.value),type:`password`,placeholder:a(t,`flow.password.placeholder`),autoComplete:`current-password`})]})]}),m&&(0,N.jsx)(`div`,{className:`ritual-error`,role:`alert`,children:m}),(0,N.jsx)(`div`,{className:`ritual-muted-hint`,children:a(t,`flow.login.passwordLocal`)}),(0,N.jsx)(_,{type:`submit`,disabled:d||!n.trim()||!o.trim(),className:`ritual-full-button`,children:d?a(t,`flow.login.busy`):a(t,`flow.login.submit`)}),(0,N.jsx)(`div`,{className:`ritual-note`,children:a(t,`flow.login.note`)})]})]})}function Y(){let e=r(e=>e.language);return(0,N.jsxs)(`div`,{className:`ritual-promise`,"aria-label":a(e,`flow.promise.aria`),children:[(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`span`,{children:a(e,`flow.promise.memory.k`)}),(0,N.jsx)(`strong`,{children:a(e,`flow.promise.memory.v`)})]}),(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`span`,{children:a(e,`flow.promise.model.k`)}),(0,N.jsx)(`strong`,{children:a(e,`flow.promise.model.v`)})]}),(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`span`,{children:a(e,`flow.promise.ownership.k`)}),(0,N.jsx)(`strong`,{children:a(e,`flow.promise.ownership.v`)})]})]})}function X({status:e,reason:t,recommendations:n,analysis:i,onBack:o,onRetry:s,onSkipModel:c,onSelect:d}){let f=r(e=>e.language);if(e===`loading`)return(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`div`,{className:`ritual-title`,children:a(f,`flow.recommend.title`)}),(0,N.jsx)(`div`,{className:`ritual-subtitle`,children:a(f,`flow.recommend.body`)}),(0,N.jsxs)(`div`,{className:`ritual-scan-banner is-loading`,role:`status`,children:[(0,N.jsx)(`span`,{className:`ritual-scan-dot pulsing`}),(0,N.jsx)(`span`,{children:a(f,`flow.recommend.loading`)})]}),(0,N.jsxs)(`div`,{className:`ritual-action-row`,children:[(0,N.jsx)(_,{variant:`ghost`,onClick:o,children:a(f,`flow.recommend.back`)}),(0,N.jsx)(_,{variant:`outline`,onClick:c,children:a(f,`flow.recommend.skip`)})]})]});if(e===`unavailable`){let e=t===`no_supported_model`?`flow.recommend.unavailable.empty`:`flow.recommend.unavailable.probe`;return(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`div`,{className:`ritual-title`,children:a(f,`flow.recommend.title`)}),(0,N.jsx)(`section`,{className:`ritual-card ritual-error-card ritual-unavailable-card`,role:`alert`,"aria-label":a(f,`flow.recommend.unavailable.aria`),children:(0,N.jsxs)(`div`,{className:`ritual-inline-row`,children:[(0,N.jsx)(g,{className:`ritual-core-icon`,"aria-hidden":`true`}),(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`div`,{className:`ritual-strong-text`,children:a(f,`flow.recommend.unavailable.title`)}),(0,N.jsx)(`div`,{className:`ritual-muted-text`,children:a(f,e)})]})]})}),(0,N.jsxs)(`div`,{className:`ritual-button-row ritual-button-row-primary`,children:[(0,N.jsxs)(`button`,{type:`button`,className:`ritual-full-button ritual-full-button-primary`,onClick:s,children:[(0,N.jsx)(u,{size:16}),` `,a(f,`flow.recommend.unavailable.retry`)]}),(0,N.jsx)(`button`,{type:`button`,className:`ritual-secondary-button`,onClick:c,children:a(f,`flow.recommend.skip`)})]}),(0,N.jsxs)(`div`,{className:`ritual-action-row`,children:[(0,N.jsx)(_,{variant:`ghost`,onClick:o,children:a(f,`flow.recommend.back`)}),(0,N.jsx)(`div`,{className:`ritual-muted-hint`,children:a(f,`flow.recommend.unavailable.hint`)})]})]})}let p=n;function m(e,t){if(!e)return(0,N.jsxs)(`div`,{className:`ritual-scan-banner is-loading`,children:[(0,N.jsx)(`span`,{className:`ritual-scan-dot pulsing`}),(0,N.jsx)(`span`,{children:a(t,`flow.analysis.checking`)})]});let n=M(e.recommendations?.recommendations),r=M(e.setup?.environment),i=M(e.recommendations?.profile),o={...r,...i},s=Number(n.ram_gb||Number(o.ram_mb||0)/1024||0);return n.apple_silicon||String(o.arch||``).includes(`arm`)?(0,N.jsxs)(`div`,{className:`ritual-scan-banner is-success`,children:[(0,N.jsx)(`span`,{className:`ritual-scan-dot is-success`}),(0,N.jsx)(`span`,{children:a(t,`flow.recommend.environment.apple`,{ram:Math.round(s)})})]}):(0,N.jsxs)(`div`,{className:`ritual-scan-banner is-warning`,children:[(0,N.jsx)(`span`,{className:`ritual-scan-dot is-warning`}),(0,N.jsx)(`span`,{children:a(t,`flow.recommend.environment.standard`,{ram:Math.round(s)})})]})}return(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`div`,{className:`ritual-title`,children:a(f,`flow.recommend.title`)}),(0,N.jsx)(`div`,{className:`ritual-subtitle`,children:a(f,`flow.recommend.body`)}),m(i,f),(0,N.jsxs)(`div`,{className:`ritual-model-list`,children:[p[0]?.supported?(0,N.jsxs)(`div`,{className:`ritual-primary-cta`,children:[(0,N.jsxs)(_,{onClick:()=>d(p[0]),className:`ritual-primary-model-button`,children:[a(f,`flow.recommend.primary`),` `,(0,N.jsx)(l,{size:16})]}),(0,N.jsx)(`div`,{className:`ritual-time-estimate ritual-primary-note`,children:re(p[0],f)}),(0,N.jsx)(`div`,{className:`ritual-muted-hint ritual-next-hint`,children:a(f,p[0].downloadRequired?`flow.recommend.nextHint`:`flow.recommend.nextHint.ready`)})]}):null,p.slice(0,3).map((e,t)=>{let n=e.role===`best`?b:e.role===`faster`?x:v;return(0,N.jsxs)(`button`,{className:`ritual-model-card`,onClick:()=>e.supported&&d(e),disabled:!e.supported,children:[(0,N.jsxs)(`div`,{className:`ritual-model-heading`,children:[(0,N.jsx)(n,{size:16}),(0,N.jsx)(`div`,{className:`role`,children:ie(e.role,t,f)})]}),(0,N.jsx)(`div`,{className:`name`,children:e.shortName}),(0,N.jsxs)(`div`,{className:`reason`,children:[e.reason,` · `,e.size||a(f,`flow.recommend.sizeReady`),Q(e.role,f)?(0,N.jsxs)(`span`,{className:`ritual-model-comparison`,children:[` `,Q(e.role,f)]}):null]}),(0,N.jsx)(`div`,{className:`ritual-model-stats`,children:(0,N.jsx)(`span`,{className:`ritual-time-estimate`,children:ne(e,f)})}),e.supported?(0,N.jsxs)(`span`,{className:`ritual-model-choose`,children:[a(f,`flow.recommend.choose`),` `,(0,N.jsx)(l,{size:14})]}):(0,N.jsx)(`div`,{className:`ritual-model-warning`,children:a(f,`flow.recommend.unsupported`)})]},`${e.role}-${e.id}`)}),(0,N.jsx)(`div`,{className:`ritual-time-note`,children:a(f,`flow.recommend.timeNote`)})]}),(0,N.jsxs)(`div`,{className:`ritual-action-row`,children:[(0,N.jsx)(_,{variant:`ghost`,onClick:o,children:a(f,`flow.recommend.back`)}),(0,N.jsx)(_,{variant:`outline`,onClick:c,children:a(f,`flow.recommend.skip`)}),(0,N.jsx)(`div`,{className:`ritual-muted-hint`,children:a(f,`flow.recommend.hint`)})]})]})}function Z(e,t){return a(t,`flow.recommend.minutes`,{count:e})}function ne(e,t){let n=e.estimatedFirstResponseSeconds;return!e.downloadRequired||e.estimatedDownloadMinutes===0?a(t,`flow.recommend.timeEstimate.ready`,{response:n}):e.estimatedDownloadMinutes===null?a(t,`flow.recommend.timeEstimate.unknown`,{response:n}):a(t,`flow.recommend.timeEstimate`,{download:Z(e.estimatedDownloadMinutes,t),response:n})}function re(e,t){return!e.downloadRequired||e.estimatedDownloadMinutes===0?a(t,`flow.recommend.primaryNote.ready`):e.estimatedDownloadMinutes===null?a(t,`flow.recommend.primaryNote.unknown`):a(t,`flow.recommend.primaryNote`,{time:Z(e.estimatedDownloadMinutes,t)})}function Q(e,t){return e===`faster`?a(t,`flow.recommend.comparison.faster`):e===`advanced`?a(t,`flow.recommend.comparison.advanced`):``}function ie(e,t,n){return e===`best`?a(n,`flow.recommend.rank.best`):e===`faster`?a(n,`flow.recommend.rank.faster`):e===`advanced`?a(n,`flow.recommend.rank.advanced`):a(n,`flow.recommend.rank.choice`,{index:t+1})}function ae({onComplete:e}){let t=r(e=>e.language),[n,i]=S.useState(`wake`),[o,c]=S.useState(null),[l,u]=S.useState(null),[f,p]=S.useState(0),[m,h]=S.useState(null),g=S.useMemo(()=>ee({analysis:o,endpoints:l}),[o,l]);S.useEffect(()=>{let e=!1;async function t(){let[t,n,r,i]=await Promise.all([s.setupScan(),s.modelRecommendations(`local_mlx`),s.models(),s.sysinfo()]);e||(c({setup:t.ok?t.data:null,recommendations:n.ok?n.data:null,models:r.ok?r.data:null,sysinfo:i.ok?i.data:null}),u({setup:t.ok,recommendations:n.ok,models:r.ok,sysinfo:i.ok}))}return t(),()=>{e=!0}},[f]);let _=S.useCallback(()=>{c(null),u(null),p(e=>e+1)},[]);return(0,N.jsx)(`div`,{className:`ritual-shell`,"aria-label":a(t,`flow.shell`),children:(0,N.jsxs)(`div`,{className:`ritual-container`,children:[(0,N.jsx)(G,{}),(0,N.jsxs)(`div`,{className:`ritual-brain`,children:[(0,N.jsx)(d,{state:se(n),intensity:n===`install`?.92:.7,size:`large`,showLabel:!1}),(0,N.jsx)(`div`,{className:`ritual-edition`,title:a(t,`brain.edition.tip`),children:a(t,`brain.edition`)})]}),n===`wake`&&(0,N.jsx)(oe,{onWake:()=>i(`login`),onUseExisting:()=>$(e)}),n===`login`&&(0,N.jsx)(J,{onSuccess:()=>i(`recommend`)}),n===`recommend`&&(0,N.jsx)(X,{status:g.status,reason:g.reason,recommendations:g.recommendations,analysis:o,onBack:()=>i(`login`),onRetry:_,onSkipModel:()=>$(e),onSelect:e=>{h(e),i(`install`)}}),n===`install`&&(0,N.jsx)(P,{model:m||g.recommendations[0]||w(),onBack:()=>i(`recommend`),onComplete:()=>$(e),onLater:()=>$(e)})]})})}function oe({onWake:e,onUseExisting:t}){let n=r(e=>e.language),i=[{icon:y,label:a(n,`flow.wake.value.local.k`),body:a(n,`flow.wake.value.local.v`)},{icon:x,label:a(n,`flow.wake.value.instant.k`),body:a(n,`flow.wake.value.instant.v`)},{icon:m,label:a(n,`flow.wake.value.brain.k`),body:a(n,`flow.wake.value.brain.v`)}];return(0,N.jsxs)(`section`,{className:`ritual-wake`,"aria-label":a(n,`flow.wake.aria`),children:[(0,N.jsx)(`div`,{className:`ritual-title`,children:a(n,`flow.wake.title`)}),(0,N.jsx)(`div`,{className:`ritual-subtitle`,children:a(n,`flow.wake.body`)}),(0,N.jsx)(`div`,{className:`ritual-value-grid`,"aria-label":a(n,`flow.wake.value.aria`),children:i.map(e=>{let t=e.icon;return(0,N.jsxs)(`div`,{className:`ritual-value-card`,children:[(0,N.jsxs)(`div`,{className:`ritual-value-label`,children:[(0,N.jsx)(t,{size:14}),` `,e.label]}),(0,N.jsx)(`div`,{className:`ritual-value-body`,children:e.body})]},e.label)})}),(0,N.jsxs)(`div`,{className:`ritual-wake-plan`,"aria-label":a(n,`flow.wake.plan.aria`),children:[(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`span`,{children:`1`}),(0,N.jsx)(`strong`,{children:a(n,`flow.wake.step.identity`)})]}),(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`span`,{children:`2`}),(0,N.jsx)(`strong`,{children:a(n,`flow.wake.step.check`)})]}),(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`span`,{children:`3`}),(0,N.jsx)(`strong`,{children:a(n,`flow.wake.step.voice`)})]})]}),(0,N.jsxs)(`div`,{className:`ritual-button-row ritual-button-row-primary`,children:[(0,N.jsxs)(`button`,{type:`button`,className:`ritual-full-button ritual-full-button-primary`,onClick:e,children:[a(n,`flow.wake.primary`),` `,(0,N.jsx)(l,{size:18})]}),(0,N.jsx)(`button`,{type:`button`,className:`ritual-secondary-button`,onClick:t,children:a(n,`flow.wake.existing`)})]}),(0,N.jsx)(`div`,{className:`ritual-start-note`,children:a(n,`flow.wake.startNote`)})]})}function $(e){h(),e()}function se(e){return e===`wake`?`idle`:e===`analysis`?`listening`:e===`recommend`?`recalling`:e===`install`?`thinking`:`idle`}export{ae as ProductFlow};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{_ as e,a as t,b as n,h as r,m as i,p as a,u as o,v as s}from"./utils-
|
|
1
|
+
import{_ as e,a as t,b as n,h as r,m as i,p as a,u as o,v as s}from"./utils-BqoznzGP.js";import{a as c}from"./navigation-BPQqEQwr.js";import{a as l,t as u,v as d}from"./primitives-B2f9N7Dh.js";import{t as f}from"./input-CSi6OBJ9.js";import{f as p,i as m,w as h}from"./index-CEu0Wqjl.js";var g=i(`file-exclamation-point`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),_=i(`history`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}],[`path`,{d:`M12 7v5l4 2`,key:`1fdv2h`}]]),v=i(`message-circle-question-mark`,[[`path`,{d:`M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719`,key:`1sd12s`}],[`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`}]]),y=n(s()),b=400,x=40,S=400;function C(e){return new TextEncoder().encode(e).length}async function w(e){let t=globalThis.crypto?.subtle;if(!t)return``;let n=await t.digest(`SHA-256`,new TextEncoder().encode(e));return Array.from(new Uint8Array(n)).map(e=>e.toString(16).padStart(2,`0`)).join(``)}function T(e,t,n){let r=[`--- a/${n}`,`+++ b/${n}`],i=e.length?e.split(`
|
|
2
2
|
`):[],a=t.length?t.split(`
|
|
3
3
|
`):[];if(i.length>S||a.length>S)return[...r,...i.map(e=>`-${e}`),...a.map(e=>`+${e}`)].slice(0,b);let o=i.length,s=a.length,c=Array.from({length:o+1},()=>new Uint32Array(s+1));for(let e=o-1;e>=0;--e)for(let t=s-1;t>=0;--t)c[e][t]=i[e]===a[t]?c[e+1][t+1]+1:Math.max(c[e+1][t],c[e][t+1]);let l=[],u=0,d=0;for(;u<o&&d<s;)i[u]===a[d]?(u+=1,d+=1):c[u+1][d]>=c[u][d+1]?(l.push(`-${i[u]}`),u+=1):(l.push(`+${a[d]}`),d+=1);for(;u<o;)l.push(`-${i[u++]}`);for(;d<s;)l.push(`+${a[d++]}`);return l.length?[...r,...l].slice(0,b):[]}async function E(e){let n=await o.proposalDetail(e);if(!n.ok)throw Error(n.error||`HTTP ${n.status}`);let r=n.data,i=t(r.payload)?r.payload:{},a=typeof i.path==`string`?i.path:``,s=typeof r.kind==`string`&&r.kind?r.kind:`file_update`;if(!a)throw Error(`proposal payload has no path`);let c=typeof i.new_content==`string`?i.new_content:``,l=await o.readWorkspaceFile(a);if(!l.ok&&l.status!==404)throw Error(l.error||`HTTP ${l.status}`);let u=l.ok,d=l.ok?l.data.content:``;if(s===`file_update`&&u&&d===c)return await o.rejectProposal(e,`rebase: content already applied`),`already_applied`;if(s===`file_delete`&&!u)return await o.rejectProposal(e,`rebase: file already deleted`),`already_applied`;let f=s===`file_delete`?``:c,p=T(d,f,a),m=u?await w(d):``,h=await o.createReviewItem({title:typeof r.title==`string`&&r.title?r.title:a,summary:typeof r.summary==`string`?r.summary:``,source:`change_proposal`,kind:s,payload:{path:a,diff:p,...s===`file_delete`?{}:{new_content:c},tier:s===`file_delete`?`large`:p.length<=x?`small`:`large`,before_bytes:C(d),after_bytes:C(f),...m||!u?{base_exists:u,base_sha256:m}:{}},provenance:{proposed_by:`user_rebase`,reason:`rebased_from:${e}`,source_detail:`proposal_conflict_rebase`}});if(!h.ok)throw Error(h.error||`HTTP ${h.status}`);let g=String(h.data.id||``);return await o.rejectProposal(e,g?`rebased_to:${g}`:`rebased`),`rebased`}var D=e();function O({language:e,itemId:t,onResolved:n}){let r=c(),[i,o]=y.useState(null),s=h({mutationFn:()=>E(t),onSuccess:async e=>{o(e),await Promise.all([r.invalidateQueries({queryKey:[`pendingProposals`]}),r.invalidateQueries({queryKey:[`proposalCounts`]}),r.invalidateQueries({queryKey:[`automationReviews`]}),r.invalidateQueries({queryKey:[`reviewItems`]})]),n?.(e)}});return(0,D.jsxs)(`div`,{className:`proposal-conflict-note`,role:`alert`,"data-testid":`proposal-conflict-note`,children:[(0,D.jsxs)(`div`,{className:`proposal-conflict-head`,children:[(0,D.jsx)(g,{className:`h-4 w-4`,"aria-hidden":`true`}),(0,D.jsx)(`strong`,{children:a(e,`proposals.conflict.title`)})]}),(0,D.jsx)(`p`,{children:a(e,`proposals.conflict.detail`)}),i===`rebased`?(0,D.jsx)(`p`,{className:`proposal-conflict-done`,role:`status`,children:a(e,`proposals.conflict.rebased`)}):i===`already_applied`?(0,D.jsx)(`p`,{className:`proposal-conflict-done`,role:`status`,children:a(e,`proposals.conflict.alreadyApplied`)}):(0,D.jsxs)(`button`,{type:`button`,className:`proposal-conflict-rebase`,disabled:s.isPending,onClick:()=>s.mutate(),children:[(0,D.jsx)(p,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),s.isPending?a(e,`proposals.conflict.rebasing`):a(e,`proposals.conflict.rebase`)]}),s.isError?(0,D.jsx)(`small`,{className:`proposal-conflict-error`,children:a(e,`proposals.conflict.failed`,{reason:s.error instanceof Error?s.error.message:String(s.error)})}):null]})}var k=[{id:`pending`,labelKey:`review.filter.status.pending`},{id:`snoozed`,labelKey:`review.filter.status.snoozed`},{id:`all`,labelKey:`review.filter.status.all`},{id:`approved`,labelKey:`review.filter.status.approved`},{id:`dismissed`,labelKey:`review.filter.status.dismissed`}],A=[{id:`all`,labelKey:`review.filter.source.all`},{id:`workflow_run`,labelKey:`review.filter.source.workflow_run`},{id:`trigger`,labelKey:`review.filter.source.trigger`},{id:`kg_change_digest`,labelKey:`review.filter.source.kg_change_digest`},{id:`chat_followup`,labelKey:`review.filter.source.chat_followup`},{id:`agent_followup`,labelKey:`review.filter.source.agent_followup`},{id:`change_proposal`,labelKey:`review.filter.source.change_proposal`}];function j(e){return e===`pending`?`warning`:e===`snoozed`?`muted`:e===`approved`?`success`:e===`dismissed`?`danger`:`muted`}var M={pending:`review.itemStatus.pending`,snoozed:`review.itemStatus.snoozed`,approved:`review.itemStatus.approved`,dismissed:`review.itemStatus.dismissed`};function N(e,t){let n=M[t];return n?a(e,n):t}var P={workflow_run:`review.source.workflow_run`,trigger:`review.source.trigger`,kg_change_digest:`review.source.kg_change_digest`,chat_followup:`review.source.chat_followup`,agent_followup:`review.source.agent_followup`,change_proposal:`review.source.change_proposal`};function F(e,t){let n=t?P[t]:void 0;return n?a(e,n):t||a(e,`review.source.automation`)}function I(e,t,n){let r=t.source_detail;if(r!=null&&String(r).trim())return String(r);let i=t.trigger_id;return i!=null&&String(i).trim()?String(i):F(e,n)}var L={read:`review.risk.read`,write:`review.risk.write`,write_scoped:`review.risk.write_scoped`,exec:`review.risk.exec`,destructive:`review.risk.destructive`};function R(e,t){let n=typeof t==`string`?t.trim():``;if(!n)return``;let r=L[n];return r?a(e,r):n}var z={read:`review.change.read`,additive:`review.change.additive`,mutation:`review.change.mutation`,destructive:`review.change.destructive`,exec:`review.change.exec`};function B(e,t){let n=typeof t==`string`?t.trim():``;if(!n)return``;let r=z[n];return r?a(e,r):n}function V(){let e=new Date;return e.setDate(e.getDate()+1),e.toISOString()}function H(e,t){if(!t)return a(e,`review.snoozed.badge`);let n=new Date(t);return Number.isNaN(n.getTime())?a(e,`review.snoozed.until`,{value:t}):a(e,`review.snoozed.until`,{value:new Intl.DateTimeFormat(e===`ko`?`ko-KR`:`en-US`,{dateStyle:`medium`,timeStyle:`short`}).format(n)})}function U(e){return e.effective_status===`pending`||e.effective_status===`snoozed`}function W(e){let t=e.payload||{},n=e.provenance||{};return!!(t.last_run_id||n.run_id)}var G=24;function K({language:e,diff:t,path:n,className:r=``}){if(!t.length)return null;let i=t.slice(0,G),o=t.length-i.length;return(0,D.jsxs)(`figure`,{className:`m-0 grid gap-1 ${r}`,children:[(0,D.jsxs)(`figcaption`,{className:`flex flex-wrap items-baseline gap-2 text-xs text-muted-foreground`,children:[(0,D.jsx)(`strong`,{className:`font-medium text-foreground`,children:a(e,`proposals.diff.header`)}),n?(0,D.jsx)(`code`,{className:`break-all`,children:n}):null]}),(0,D.jsx)(`pre`,{className:`pending-proposal-diff`,"aria-label":a(e,`proposals.diff`),children:i.map((e,t)=>(0,D.jsx)(`span`,{className:`block ${q(e)}`,children:e||` `},t))}),o>0?(0,D.jsx)(`small`,{className:`text-xs text-muted-foreground`,children:a(e,`proposals.diff.more`,{count:o})}):null]})}function q(e){return/^\+(?!\+\+)/.test(e)?`text-success`:/^-(?!--)/.test(e)?`text-destructive`:``}function J({item:e,feedback:t,onAction:n}){let i=r(e=>e.mode),o=r(e=>e.language),[s,c]=y.useState(``),h=e.provenance||{},g=e.payload||{},_=W(e),v=e.effective_status===`snoozed`,b=U(e),x=e.source===`change_proposal`,S=e.source!==`chat_followup`&&e.source!==`agent_followup`&&!x,C=Array.isArray(g.diff)?g.diff:[],w=String(g.tier||`small`),T=typeof g.path==`string`&&g.path.trim()?g.path:void 0,E=R(o,h.risk),k=B(o,h.change_class),A=typeof h.tool==`string`&&h.tool.trim()?h.tool:``,M=typeof h.proposed_by==`string`&&h.proposed_by.trim()?h.proposed_by:``;return(0,D.jsxs)(`div`,{className:`rounded-lg border border-border bg-background/55 p-4`,children:[(0,D.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-3`,children:[(0,D.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,D.jsx)(`div`,{className:`font-medium`,children:e.title}),e.summary?(0,D.jsx)(`p`,{className:`mt-1 text-sm leading-6 text-muted-foreground`,children:e.summary}):null]}),(0,D.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,D.jsx)(d,{variant:`muted`,children:F(o,e.source)}),x?(0,D.jsx)(d,{variant:`muted`,children:a(o,e.kind===`file_delete`?`proposals.kind.delete`:w===`large`?`proposals.tier.large`:`proposals.tier.small`)}):null,(0,D.jsx)(d,{variant:j(e.effective_status),children:N(o,e.effective_status)})]})]}),x&&C.length>0?(0,D.jsx)(K,{language:o,diff:C,path:T,className:`mt-3`}):null,v?(0,D.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center justify-between gap-3 rounded-md border border-border bg-muted/24 p-3 text-sm`,children:[(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`div`,{className:`font-medium`,children:H(o,e.snoozed_until)}),(0,D.jsx)(`p`,{className:`mt-1 text-muted-foreground`,children:a(o,`review.snoozed.detail`)})]}),(0,D.jsxs)(m,{size:`sm`,variant:`outline`,onClick:()=>n(e,`unsnooze`),disabled:!b,children:[(0,D.jsx)(p,{className:`h-3.5 w-3.5`}),` `,a(o,`review.unsnooze`)]})]}):null,E||k||A||M?(0,D.jsxs)(`div`,{className:`mt-3 grid gap-2`,children:[k||E?(0,D.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[k?(0,D.jsx)(d,{variant:`muted`,children:k}):null,E?(0,D.jsx)(d,{variant:`muted`,children:E}):null]}):null,A?(0,D.jsxs)(`p`,{className:`m-0 text-sm text-muted-foreground`,children:[(0,D.jsx)(`span`,{className:`font-medium text-foreground`,children:a(o,`review.summary.tool`)}),` · `,A]}):null,M?(0,D.jsxs)(`p`,{className:`m-0 text-sm text-muted-foreground`,children:[(0,D.jsx)(`span`,{className:`font-medium text-foreground`,children:a(o,`review.summary.proposedBy`)}),` · `,M]}):null]}):null,i===`basic`?null:(0,D.jsxs)(`details`,{className:`mt-3 rounded-md border border-border`,children:[(0,D.jsx)(`summary`,{className:`cursor-pointer select-none p-3 text-sm font-medium text-muted-foreground`,children:a(o,`review.technical.title`)}),(0,D.jsx)(`div`,{className:`p-3 pt-0`,children:(0,D.jsx)(l,{data:{workflow:h.workflow_id,trigger:h.trigger_id,run:g.last_run_id||h.run_id,...x?{path:g.path}:{},source_detail:I(o,h,e.source),snoozed_until:e.snoozed_until,created_at:e.created_at,updated_at:e.updated_at},limit:x?12:8})})]}),b?(0,D.jsxs)(`div`,{className:`mt-4 grid gap-2`,children:[(0,D.jsx)(`p`,{className:`text-xs leading-5 text-muted-foreground`,children:a(o,S?`review.runNow.detail`:x?`review.proposal.detail`:e.source===`agent_followup`?`review.agent.detail`:`review.chat.detail`)}),x?(0,D.jsx)(f,{value:s,onChange:e=>c(e.target.value),placeholder:a(o,`review.proposal.rejectReason`),"aria-label":a(o,`review.proposal.rejectReason`)}):null,(0,D.jsxs)(`div`,{className:`flex flex-wrap gap-2`,"aria-label":a(o,`review.actions.aria`),children:[S?(0,D.jsx)(u,{label:a(o,`review.runNow`),successLabel:_?a(o,`review.regenerated`):a(o,`review.executed`),action:()=>n(e,`run_now`,_),invalidate:[]}):null,(0,D.jsx)(u,{label:a(o,x?`proposals.approve`:`review.approve`),action:()=>n(e,`approve`),invalidate:[]}),v?null:(0,D.jsx)(u,{label:a(o,`review.snoozeDay`),action:()=>n(e,`snooze`),invalidate:[]}),(0,D.jsx)(u,{label:a(o,x?`proposals.reject`:`review.dismiss`),action:()=>n(e,`dismiss`,!1,x?s:void 0),invalidate:[],variant:`destructive`})]})]}):null,t?.conflict&&x?(0,D.jsx)(O,{language:o,itemId:e.id}):t?(0,D.jsxs)(`p`,{className:`mt-2 text-xs ${t.tone===`error`?`text-warning`:`text-success`}`,children:[t.message,` - `,a(o,`review.feedback.open`),t.detail&&t.detail!==t.message?(0,D.jsx)(`span`,{className:`mt-0.5 block text-[11px] opacity-75`,children:t.detail}):null]}):null]})}export{k as a,_ as c,A as i,J as n,O as o,V as r,v as s,K as t};
|