@runeya/runeya 2.0.146 → 2.0.148
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/agent/index.js +10 -4
- package/agent/index.js.map +1 -1
- package/{agent-manager-R7BPQO6D.js → agent-manager-46C4NIQ2.js} +4 -2
- package/{chat-LPML22J5.js → chat-CMNDMXIP.js} +9 -5
- package/{chunk-SEPAURTQ.js → chunk-2NE52CL5.js} +156 -923
- package/chunk-2NE52CL5.js.map +1 -0
- package/chunk-4D3GCBPO.js +462 -0
- package/chunk-4D3GCBPO.js.map +1 -0
- package/{chunk-KV4GJKXU.js → chunk-5XG3X2TM.js} +27 -1479
- package/chunk-5XG3X2TM.js.map +1 -0
- package/chunk-7QXP4FXD.js +969 -0
- package/chunk-7QXP4FXD.js.map +1 -0
- package/chunk-DA2DZBTL.js +43 -0
- package/chunk-DA2DZBTL.js.map +1 -0
- package/chunk-DFPZ4MTI.js +1041 -0
- package/chunk-DFPZ4MTI.js.map +1 -0
- package/{chunk-UD42LACH.js → chunk-JNK6H5KH.js} +164 -1007
- package/chunk-JNK6H5KH.js.map +1 -0
- package/chunk-WDHLEO5S.js +809 -0
- package/chunk-WDHLEO5S.js.map +1 -0
- package/{companion-W3UMZWGH.js → companion-XKMNRIJB.js} +8 -3
- package/environment-resolver-ZDTF3MHI.js +18 -0
- package/environment-resolver-ZDTF3MHI.js.map +1 -0
- package/index.js +7 -7
- package/{install-gate-PVMGJDWE.js → install-gate-PWPGC63Z.js} +2 -2
- package/mcp-ready-TAPBAOZY.js +9 -0
- package/mcp-ready-TAPBAOZY.js.map +1 -0
- package/mcp-server/index.js +24 -0
- package/mcp-server/index.js.map +1 -1
- package/mcp-server/launch.d.ts +6 -0
- package/mcp-server/launch.js +2 -1
- package/mcp-server/launch.js.map +1 -1
- package/package.json +1 -1
- package/project-store-FLXTAD3J.js +23 -0
- package/project-store-FLXTAD3J.js.map +1 -0
- package/{src-LEDGW5KP.js → src-I5TPC6GW.js} +155 -63
- package/src-I5TPC6GW.js.map +1 -0
- package/web/assets/{AgentScalarChatInterface.vue-BYszptaB.js → AgentScalarChatInterface.vue-DKBinB_l.js} +2 -2
- package/web/assets/AgentTerminalPage-CixU7x6O.js +1 -0
- package/web/assets/AiChatModals-BvGUd-QD.css +1 -0
- package/web/assets/AiChatModals-C-hXImkO.js +4 -0
- package/web/assets/AppLayout-At9wk0sx.js +1 -0
- package/web/assets/{AppLayout-tsw5Ow0w.css → AppLayout-BlhwflMq.css} +1 -1
- package/web/assets/AuditPage-BkqbHxjY.js +1 -0
- package/web/assets/CloudAccountPage-D5C2SCS9.js +1 -0
- package/web/assets/CloudMessagingPage-Bi57GGHO.js +2 -0
- package/web/assets/DashboardPage-dEQop9ql.js +1 -0
- package/web/assets/DirectoryPickerDialog-DIMSeDhw.js +1 -0
- package/web/assets/{EditorIcon-CypGLV6w.js → EditorIcon-W3Szca4J.js} +1 -1
- package/web/assets/EnvironmentForm-C5emavNh.js +1 -0
- package/web/assets/EnvironmentFormPage-BIoy8fsW.js +1 -0
- package/web/assets/EnvironmentListPage-BDYeh7XF.js +1 -0
- package/web/assets/{FlagChip-R_T5qYpL.js → FlagChip-DPtIBCjQ.js} +1 -1
- package/web/assets/KanbanBoardPage-BlCcjBwV.js +4 -0
- package/web/assets/KanbanListPage-DbXONxfC.js +1 -0
- package/web/assets/LaunchProjectPage-Cg92hHwQ.js +1 -0
- package/web/assets/LaunchServicesPage-CO8gOB9D.js +1 -0
- package/web/assets/LaunchServicesPage-h5o3zLcy.css +1 -0
- package/web/assets/{LaunchShell-DUrSunB4.js → LaunchShell-CDb21ihZ.js} +1 -1
- package/web/assets/LogViewer-DsusKk2b.js +3 -0
- package/web/assets/OrgKeyPrompt-CX9K7r9I.js +1 -0
- package/web/assets/ProcessControls-B7hWVqiR.css +1 -0
- package/web/assets/ProcessControls-TEZutuxq.js +1 -0
- package/web/assets/ProcessDetailPage-Cj23FECq.js +1 -0
- package/web/assets/ProcessMetrics-1P6iE2Il.js +1 -0
- package/web/assets/ProjectCreateDialog-D3aMWKfw.js +1 -0
- package/web/assets/{ProjectLocationGate-DhMVdIjN.js → ProjectLocationGate-DU0Jj8Nw.js} +1 -1
- package/web/assets/ProjectPublishDialog-D7sNKei3.js +1 -0
- package/web/assets/{RandomJobTestPage-BUS2Ty6-.js → RandomJobTestPage-DQUMRHyf.js} +1 -1
- package/web/assets/{ScenarioEditorPage-vMoRt0Qn.css → ScenarioEditorPage-BSjSX4bw.css} +1 -1
- package/web/assets/ScenarioEditorPage-DvCdcY9m.js +14 -0
- package/web/assets/SendToChatDialog-BdWKjYmv.js +1 -0
- package/web/assets/ServiceControlsBar-B_J5m-Kc.js +1 -0
- package/web/assets/ServiceDetailPage-DhJcjFfY.js +2 -0
- package/web/assets/{ServiceDetailPage-COdaCZ6r.css → ServiceDetailPage-DnSf5cm9.css} +1 -1
- package/web/assets/ServiceFormPage-fp8NCHSv.js +1 -0
- package/web/assets/{SettingsPage-4pKUgKPm.css → SettingsPage-NH2fQap4.css} +1 -1
- package/web/assets/SettingsPage-s28BodWe.js +2086 -0
- package/web/assets/UnlockPage-BXXIPHW_.js +1 -0
- package/web/assets/VaultMigrationPage-BfNuKtkJ.js +1 -0
- package/web/assets/{VersionBadge-BmArk24p.js → VersionBadge-CW7czacg.js} +1 -1
- package/web/assets/{WikiPage-DADu8WUA.js → WikiPage-BiwpCM3E.js} +1 -1
- package/web/assets/WikiView-CMch_06Z.js +1 -0
- package/web/assets/{add-scalar-classes-dWEWPlFD.js → add-scalar-classes-Ckanjq1h.js} +14 -14
- package/web/assets/{agent.store-CKLAkF9a.js → agent.store-piokQ9Dt.js} +1 -1
- package/web/assets/{auth-Cg9BWTfK.js → auth-BT_jf-5e.js} +2 -2
- package/web/assets/cloud-chat.store-CDKh4tIy.js +1 -0
- package/web/assets/{cloud-client-D_zCiW0s.js → cloud-client-CzPdZLDq.js} +2 -2
- package/web/assets/{cloud-session-DOaDpZTy.js → cloud-session-BYfn6YM4.js} +2 -2
- package/web/assets/floating-ui.dom-DF3oyfHd.js +1 -0
- package/web/assets/i18n-D0FT7rCj.js +1 -0
- package/web/assets/index-3LTzgeU-.css +1 -0
- package/web/assets/index-Ci2CNnit.js +309 -0
- package/web/assets/modal-iRaP1izE.js +5 -0
- package/web/assets/notification.store-CvvuTBVz.js +1 -0
- package/web/assets/{project-launch.store-y7JBMNiE.js → project-launch.store-CTmbl8UY.js} +1 -1
- package/web/assets/{project.store-DGJr0Qr9.js → project.store-CNC6_4r4.js} +1 -1
- package/web/assets/runtime-dom.esm-bundler-CyEVRK6B.js +1 -0
- package/web/assets/scenario.store-BIFQPXgl.js +7 -0
- package/web/assets/{service.store-5jWsJxPx.js → service.store-B40U4QzI.js} +1 -1
- package/web/assets/settings-scope-CyWMCjRY.js +1 -0
- package/web/assets/settings.store-Dw6bAoWE.js +1 -0
- package/web/assets/{src-Dnwk6NpV.js → src-CrNi4Pjg.js} +3 -3
- package/web/assets/src-DIBHat7I.js +3 -0
- package/web/assets/src-DtCW_XCh.js +1 -0
- package/web/assets/{trpc-Drabzwpd.js → trpc-BAZGRZBD.js} +3 -3
- package/web/assets/{useCloudOrg-BAQEtFPl.js → useCloudOrg-EnXFBwt1.js} +1 -1
- package/web/assets/useEnvVarAutocomplete-BxJh2Lw0.js +1 -0
- package/web/assets/useProjectCatalog-BrvUGv9A.js +1 -0
- package/web/assets/{useProjectCloudOrg-CEN9-_OA.js → useProjectCloudOrg-Czxlg00k.js} +1 -1
- package/web/assets/{useServiceUrlHost-BuoPEXZX.js → useServiceUrlHost-Szz9y3rh.js} +1 -1
- package/web/assets/vue-i18n-o7yraQpR.js +3 -0
- package/web/index.html +21 -21
- package/chunk-KV4GJKXU.js.map +0 -1
- package/chunk-SEPAURTQ.js.map +0 -1
- package/chunk-UD42LACH.js.map +0 -1
- package/src-LEDGW5KP.js.map +0 -1
- package/web/assets/AgentTerminalPage-C3TJ1NL9.js +0 -1
- package/web/assets/AiChatModals-D3scRE3S.js +0 -4
- package/web/assets/AiChatModals-EfRuvId7.css +0 -1
- package/web/assets/AppLayout-BMQUjPKe.js +0 -1
- package/web/assets/AuditPage-CKcExBws.js +0 -1
- package/web/assets/CloudAccountPage-B6oPg0BZ.js +0 -1
- package/web/assets/CloudMessagingPage-C5fwVe-F.js +0 -2
- package/web/assets/DashboardPage-9RV7sx3e.js +0 -1
- package/web/assets/DirectoryPickerDialog-C06BXyfJ.js +0 -1
- package/web/assets/EnvironmentForm-CAvDoira.js +0 -1
- package/web/assets/EnvironmentFormPage-BmAxhN-m.js +0 -1
- package/web/assets/EnvironmentListPage-B8uATPBI.js +0 -1
- package/web/assets/KanbanBoardPage-CQsOkRUf.js +0 -4
- package/web/assets/KanbanListPage-CWZqkjD6.js +0 -1
- package/web/assets/LaunchProjectPage-saSmC7Pr.js +0 -1
- package/web/assets/LaunchServicesPage-BkKyLMEz.js +0 -1
- package/web/assets/LaunchServicesPage-DoLDPqQq.css +0 -1
- package/web/assets/LogViewer-CZBYkH9J.js +0 -3
- package/web/assets/OrgKeyPrompt-DzQ7pwbs.js +0 -1
- package/web/assets/ProcessControls-BEeoNlNV.js +0 -1
- package/web/assets/ProcessControls-BlpnVylq.css +0 -1
- package/web/assets/ProcessDetailPage-CQgu5uKm.js +0 -1
- package/web/assets/ProcessMetrics-Crlfkelj.js +0 -1
- package/web/assets/ProjectCreateDialog-BolrhRD-.js +0 -1
- package/web/assets/ProjectPublishDialog-DsZNWrfz.js +0 -1
- package/web/assets/ScenarioEditorPage-MIAGh2us.js +0 -14
- package/web/assets/SendToChatDialog-BxWsyv29.js +0 -1
- package/web/assets/ServiceControlsBar-DqDPAZt7.js +0 -1
- package/web/assets/ServiceDetailPage-hkSAzZ-l.js +0 -2
- package/web/assets/ServiceFormPage-DXqhqXg8.js +0 -1
- package/web/assets/SettingsPage-DS2YhMIM.js +0 -2086
- package/web/assets/UnlockPage-s8SgVcKk.js +0 -1
- package/web/assets/VaultMigrationPage-s0b44MDM.js +0 -1
- package/web/assets/WikiView-DtGwIt_Q.js +0 -1
- package/web/assets/cloud-chat.store-b-BHGz7I.js +0 -1
- package/web/assets/editor.store-DCAZSeVG.js +0 -1
- package/web/assets/floating-ui.dom-DWhsZyqT.js +0 -1
- package/web/assets/i18n-D0afQEGs.js +0 -1
- package/web/assets/index-D8VRbyoP.js +0 -309
- package/web/assets/index-DsezNbSM.css +0 -1
- package/web/assets/modal-qYgTMkYb.js +0 -5
- package/web/assets/scenario.store-YWHL2_wu.js +0 -7
- package/web/assets/settings-scope-Bv7QGPrt.js +0 -1
- package/web/assets/settings.store-bEsB7oKb.js +0 -1
- package/web/assets/src--GO-VSJ0.js +0 -5
- package/web/assets/src-C-D_y7ou.js +0 -1
- package/web/assets/useEnvVarAutocomplete-BqGTODUv.js +0 -1
- package/web/assets/useProjectCatalog-yocjIKt6.js +0 -1
- package/web/assets/vue-draggable-plus-BHsveB8w.css +0 -1
- package/web/assets/vue-draggable-plus-DX4rTBiu.js +0 -1
- /package/{agent-manager-R7BPQO6D.js.map → agent-manager-46C4NIQ2.js.map} +0 -0
- /package/{chat-LPML22J5.js.map → chat-CMNDMXIP.js.map} +0 -0
- /package/{companion-W3UMZWGH.js.map → companion-XKMNRIJB.js.map} +0 -0
- /package/{install-gate-PVMGJDWE.js.map → install-gate-PWPGC63Z.js.map} +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import{B as e,C as t,O as n}from"./reactivity.esm-bundler-BQ9SB2vv.js";import{$ as r,Ft as i,Ht as a,ct as o,g as s,k as c,mt as l,v as u,y as d}from"./runtime-core.esm-bundler-DujKY9QV.js";import{n as f}from"./vue-i18n-o7yraQpR.js";import{i as p,n as m}from"./project-launch.store-CTmbl8UY.js";import{r as h}from"./i18n-D0FT7rCj.js";import{P as g,S as _,ft as v}from"./src-DIBHat7I.js";import{n as y,r as b}from"./trpc-BAZGRZBD.js";import{n as ee}from"./project.store-CNC6_4r4.js";import{t as x}from"./use-polling-CEkhIY_9.js";import{t as S}from"./useAiChatDrawer-D_ofn8Eo.js";import{t as C}from"./settings-scope-CyWMCjRY.js";import{c as w}from"./dist-N4nrnbnA.js";import{t as T}from"./service.store-B40U4QzI.js";import{t as E}from"./notification.store-CvvuTBVz.js";var D={"align-left":`align-left`,"angle-double-down":`chevrons-down`,"angle-double-left":`chevrons-left`,"angle-double-right":`chevrons-right`,"angle-down":`chevron-down`,"angle-left":`chevron-left`,"angle-right":`chevron-right`,"angle-up":`chevron-up`,"arrow-circle-up":`circle-arrow-up`,"arrow-down":`arrow-down`,"arrow-down-left":`arrow-down-left`,"arrow-left":`arrow-left`,"arrow-right":`arrow-right`,"arrow-right-arrow-left":`arrows-exchange`,"arrow-up":`arrow-up`,"arrow-up-right":`arrow-up-right`,"arrows-alt":`arrows-move`,asterisk:`asterisk`,ban:`ban`,bars:`menu-2`,bell:`bell`,"bell-slash":`bell-off`,bolt:`bolt`,book:`book`,bookmark:`bookmark`,box:`box`,building:`building`,calendar:`calendar`,"calendar-plus":`calendar-plus`,"chart-line":`chart-line`,check:`check`,"check-circle":`circle-check`,"check-square":`square-check`,"chevron-down":`chevron-down`,"chevron-left":`chevron-left`,"chevron-right":`chevron-right`,"chevron-up":`chevron-up`,circle:`circle`,"circle-fill":`circle-filled`,clock:`clock`,clone:`copy`,cloud:`cloud`,"cloud-off":`cloud-off`,"cloud-slash":`cloud-off`,"cloud-upload":`cloud-upload`,code:`code`,cog:`settings`,comment:`message`,comments:`messages`,copy:`copy`,crown:`crown`,database:`database`,desktop:`device-desktop`,directions:`directions`,download:`download`,"ellipsis-v":`dots-vertical`,envelope:`mail`,eraser:`eraser`,"exclamation-circle":`alert-circle`,"exclamation-triangle":`alert-triangle`,"external-link":`external-link`,eye:`eye`,"eye-slash":`eye-off`,file:`file`,"file-check":`file-check`,"file-edit":`file-pencil`,"file-plus":`file-plus`,filter:`filter`,"filter-slash":`filter-off`,folder:`folder`,"folder-open":`folder-open`,"folder-plus":`folder-plus`,github:`brand-github`,globe:`world`,hashtag:`hash`,heart:`heart`,"heart-fill":`heart-filled`,history:`history`,home:`home`,hourglass:`hourglass`,image:`photo`,inbox:`inbox`,"info-circle":`info-circle`,key:`key`,language:`language`,link:`link`,list:`list`,"list-check":`list-check`,lock:`lock`,"map-marker":`map-pin`,microchip:`cpu`,"microchip-ai":`brain`,minus:`minus`,moon:`moon`,palette:`palette`,paperclip:`paperclip`,pause:`player-pause`,"pause-circle":`player-pause`,pencil:`pencil`,play:`player-play`,"play-circle":`player-play`,plus:`plus`,"plus-circle":`circle-plus`,"power-off":`power`,"question-circle":`help-circle`,refresh:`refresh`,replay:`rotate`,save:`device-floppy`,search:`search`,send:`send`,server:`server`,shield:`shield`,"sign-in":`login`,"sign-out":`logout`,sitemap:`sitemap`,"sliders-h":`adjustments-horizontal`,"sort-alt":`arrows-sort`,sparkles:`sparkles`,spinner:`loader-2`,star:`star`,"star-fill":`star-filled`,stop:`player-stop`,"stop-circle":`player-stop`,stopwatch:`stopwatch`,sun:`sun`,sync:`refresh`,table:`table`,tag:`tag`,terminal:`terminal-2`,"th-large":`layout-grid`,thumbtack:`pin`,times:`x`,"times-circle":`circle-x`,trash:`trash`,undo:`arrow-back-up`,upload:`upload`,user:`user`,"user-plus":`user-plus`,users:`users`,"volume-off":`volume-off`,"volume-up":`volume`,"wave-pulse":`activity`,"window-maximize":`maximize`,"window-minimize":`minimize`};function O(e,t=`circle`){let n=(e??``).trim().split(/\s+/).pop()??``,r=n.replace(/^(ti|pi)-/,``);return n.startsWith(`pi-`)&&(r=D[r]??t),`ti ti-${r||t}`}var k=`runeya:ai-chat-debug`;function A(){try{return localStorage.getItem(k)===`1`}catch{return!1}}var j=v(c({__name:`AiProviderSelector`,props:r({storageKey:{},hideWhenSingle:{type:Boolean,default:!0},size:{default:`small`},placeholder:{},disabled:{type:Boolean},inputId:{}},{modelValue:{required:!0},modelModifiers:{},model:{default:null},modelModifiers:{}}),emits:r([`loaded`],[`update:modelValue`,`update:model`]),setup(n,{emit:r}){let a=n,c=i(n,`modelValue`),p=i(n,`model`),m=r,{t:h}=f(),g=t([]),v=t(!0),y=s(()=>g.value.reduce((e,t)=>e+t.items.length,0)),ee=s(()=>v.value?!0:a.hideWhenSingle?y.value>1:y.value>0);function x(e,t){return`${e}::${t??``}`}let S=s(()=>c.value?x(c.value,p.value):null);function w(e){let[t,n]=e?e.split(`::`):[null,``];c.value=t||null,p.value=n||null,a.storageKey&&(e?localStorage.setItem(a.storageKey,e):localStorage.removeItem(a.storageKey))}function T(e){return{label:e.model||h(`aiProviderSelector.defaultModel`),value:x(e.id,e.model??null),providerId:e.id,model:e.model??null}}return o(async()=>{let e=[];try{e=await b.settings.listAIProviders.query(C())}catch{e=[]}g.value=e.map(e=>({label:`${e.name} (${e.provider})`,providerId:e.id,items:[T(e)]}));let t=a.storageKey?localStorage.getItem(a.storageKey):null,n=S.value??t,r=(e.find(e=>e.active)??e[0])?.id??null,i=g.value.find(e=>e.providerId===r)?.items[0]?.value??null;w(n??i),m(`loaded`,e.length),await Promise.all(e.map(async e=>{let t=[];try{t=await b.chat.listModels.query({providerId:e.id,...C()})}catch{return}if(t.length===0)return;let n=g.value.find(t=>t.providerId===e.id);n&&(n.items=t.map(t=>({label:t,value:x(e.id,t),providerId:e.id,model:t})))})),S.value&&!g.value.some(e=>e.items.some(e=>e.value===S.value))&&w(g.value.find(e=>e.providerId===c.value)?.items[0]?.value??g.value[0]?.items[0]?.value??null),v.value=!1}),(t,r)=>ee.value?(l(),u(e(_),{key:0,"model-value":S.value,options:g.value,"option-group-label":`label`,"option-group-children":`items`,"option-label":`label`,"option-value":`value`,size:n.size,"input-id":n.inputId,disabled:n.disabled,loading:v.value,filter:y.value>8,placeholder:v.value?e(h)(`aiProviderSelector.loading`):n.placeholder??e(h)(`aiProviderSelector.placeholder`),title:e(h)(`aiProviderSelector.title`),class:`ai-provider-selector`,"onUpdate:modelValue":w},null,8,[`model-value`,`options`,`size`,`input-id`,`disabled`,`loading`,`filter`,`placeholder`,`title`])):d(``,!0)}}),[[`__scopeId`,`data-v-ea66f89f`]]);function M(e,t){let n=new Set(t),r=new Set(e),i=t.filter(e=>!r.has(e)),a=e.filter(e=>!n.has(e)),o=e.length===t.length&&e.every((e,n)=>e===t[n]);return{added:i,removed:a,unchanged:i.length===0&&a.length===0&&o}}function te(e,t){let n=M(e.pinned,t.pinned),r=new Set(t.pinned);for(let e of Object.values(t.sections))for(let t of e)r.add(t);let i=[],a=[],o=new Set([...Object.keys(e.sections),...Object.keys(t.sections)]);for(let n of o){let o=M(e.sections[n]??[],t.sections[n]??[]);o.unchanged||(i.push(n),a.push(...o.removed.filter(e=>!r.has(e))))}let s=n.removed.filter(e=>!r.has(e));return{unchanged:n.unchanged&&i.length===0,pinAdded:n.added,pinnedChanged:!n.unchanged,unpinnedToList:s,changedSections:i,sectionToList:a,removed:[...s,...a]}}function ne(e,t,n){let r=new Map(t.pinned.map((e,t)=>[e,t])),i=new Map;for(let[e,n]of Object.entries(t.sections))n.forEach((t,n)=>i.set(t,{sectionId:e,rank:n}));let a=new Set(n);return e.map(e=>{let{pinOrder:t,sectionId:n,sectionOrder:o,...s}=e,c=r.get(e.id);if(c!==void 0)return{...s,pinOrder:c};let l=i.get(e.id);return l?{...s,sectionId:l.sectionId,sectionOrder:l.rank}:a.has(e.id)?s:e})}function N(e){return e.runner===`claude-code`||e.runner===`codex`||!!e.isCli&&!e.providerId}var re=`runeya:ai-chat-model`,P=`runeya:ai-chat-effort`,F=`runeya:ai-chat-active-id`,ie=`runeya:ai-chat-active-id-by-project`,I=`runeya:ai-chat-unread`,L=`runeya:ai-chat-provider-id`,ae=`runeya:ai-chat-provider-model`;function R(e){return`/ai-chat?conversation=${encodeURIComponent(e)}`}function z(e){return e?.title?.trim()||h.global.t(`aiChat.newConversation`)}function B(e,t){let{t:n}=h.global;E().add({type:`warn`,category:`scenario_waiting_input`,title:n(`notifications.scenarioWaitingInputTitle`,{name:z(e)}),message:t,link:R(e.id),linkLabel:n(`notifications.openConversation`)})}function V(e,t){let{t:n}=h.global,r=z(e);E().add({type:`success`,category:`ai_conversation_complete`,title:n(`notifications.aiConversationCompleteTitle`),message:r,link:R(t),linkLabel:n(`notifications.openConversation`)})}function oe(e,t,n){let{t:r}=h.global,i=z(e);E().add({type:`error`,category:`ai_conversation_error`,title:r(`notifications.aiConversationErrorTitle`,{name:i}),message:n||r(`aiChat.unknownError`),link:R(t),linkLabel:r(`notifications.openConversation`)})}var H=()=>new Date().toISOString();function U(e,n,r,i,a,o,s,c,l,u,d,f,p,m,_){let v=g(),y=null;function x(e){y=e}let C=t([]),w=t(!1),E=[`image/png`,`image/jpeg`,`image/webp`,`image/gif`];async function D(e){for(let t of e)await k(t)}async function O(e){await k(e)}async function k(e){let{t}=h.global;if(!E.includes(e.type)){v.add({severity:`error`,summary:t(`imageUpload.errorUnsupportedType`,{name:e.name}),life:5e3});return}if(e.size>0&&e.size>5242880){v.add({severity:`error`,summary:t(`imageUpload.errorTooLarge`,{name:e.name}),life:5e3});return}if(C.value.length>=5){v.add({severity:`error`,summary:t(`imageUpload.errorTooMany`),life:5e3});return}let n=r.value?.id;if(!n){v.add({severity:`error`,summary:t(`imageUpload.errorNetwork`,{name:e.name}),life:5e3});return}let i=URL.createObjectURL(e);w.value=!0;try{let r=new FormData;r.append(`image`,e);let a=await fetch(`/api/images/upload?conversationId=${encodeURIComponent(n)}`,{method:`POST`,body:r});if(!a.ok){URL.revokeObjectURL(i),v.add({severity:`error`,summary:t(`imageUpload.errorNetwork`,{name:e.name}),life:5e3});return}let o=await a.json();C.value.push({imageId:o.imageId,url:o.url,mimeType:o.mimeType,localPreviewUrl:i,fileName:e.name})}catch{URL.revokeObjectURL(i),v.add({severity:`error`,summary:t(`imageUpload.errorNetwork`,{name:e.name}),life:5e3})}finally{w.value=!1}}function j(e){let t=C.value.findIndex(t=>t.imageId===e);t!==-1&&(URL.revokeObjectURL(C.value[t].localPreviewUrl),C.value.splice(t,1))}function M(){for(let e of C.value)URL.revokeObjectURL(e.localPreviewUrl);C.value=[]}function te(){let e=n.value;e&&f(e)&&(a.get(e)?.unsubscribe(),d(e),e&&b.chat.stopSession.mutate({conversationId:e}).catch(()=>{}))}function ne(e){return e.slice(0,50).trim()+(e.length>50?`…`:``)}async function N(t,n){let{pendingContext:o,pendingPopulateContext:m}=S();if(!t.trim()&&C.value.length===0&&!o.value&&!m.value)return;!t.trim()&&o.value&&(t=`Voici le contexte ci-joint, aide-moi à avancer.`),!t.trim()&&m.value&&(t=m.value),r.value||await p();let g=r.value.id;await _(g);let v=e.value.find(e=>e.id===g);if(!v||r.value?.id!==g)return;if(v.messagesOmitted)throw Error(h.global.t(`aiChat.historyLoadFailed`));if(f(v.id))return;let{pendingContext:y,pendingDiffContext:x,pendingPopulateContext:w}=S(),E=y.value?.text??null,D=x.value,O=[D,E].filter(Boolean).join(`
|
|
2
|
+
|
|
3
|
+
`)||void 0;y.value=null,w.value=null;let k=[...C.value],A=k.map(e=>({type:`image`,imageId:e.imageId,url:e.url,mimeType:e.mimeType,altText:e.fileName})),j=A.length>0?[...t.trim()?[{type:`text`,text:t.trim()}]:[],...A]:void 0,{contextServiceId:te}=S(),N=te.value?T().getById(te.value):null,re=[N?`[Contexte: l'utilisateur consulte actuellement le service "${N.name}" (id: ${N.id})]`:null,O].filter(Boolean).join(`
|
|
4
|
+
|
|
5
|
+
`)||void 0;v.messages.push({role:`user`,content:t.trim(),parts:j,contextNote:re}),M(),v.messages.length===1&&!v.kanbanCardId&&!v.kanbanBoardId&&(v.title=ne(t.trim()),b.chat.conversations.update.mutate({id:v.id,title:v.title}).catch(()=>{})),e.value=[...e.value];let P=new Set(i.value);P.add(v.id),i.value=P;let F={role:`assistant`,content:``};v.messages.push(F),n(!0);let ie=!1,I=()=>{let t=e.value.findIndex(e=>e.id===v.id);if(t>=0){let n=[...e.value];n[t]={...n[t],messages:[...n[t].messages]},e.value=n}},L=e=>{F.parts||=[];let t=F.parts;if(e.type===`thinking`){let r=t[t.length-1];r?.type===`thinking`?r.text+=e.text??``:t.push({type:`thinking`,text:e.text??``}),I(),n()}else if(e.type===`status`)F.status=e.text??``,I(),n();else if(e.type===`delta`){if(e.ts){let t=Date.now()-e.ts;t>100?console.warn(`[perf] delta latency: ${t}ms`):console.debug(`[perf] delta latency: ${t}ms`)}F.status=``,F.content+=e.text??``;let r=t[t.length-1];r?.type===`text`?r.text+=e.text??``:t.push({type:`text`,text:e.text??``}),I(),n()}else if(e.type===`tool_call`){let r=t.find(t=>t.type===`tool`&&t.id===e.id);r?(r.name=e.name,r.input=e.input,r.rawInput=e.rawInput):t.push({type:`tool`,id:e.id,name:e.name,input:e.input,rawInput:e.rawInput,pending:!0}),I(),n()}else if(e.type===`tool_result`){let r=t.find(t=>t.type===`tool`&&t.id===e.id);r&&(r.result=e.result,r.isError=e.isError,r.pending=!1,r.rawInput=void 0),I(),n()}else if(e.type===`context_usage`){if(typeof e.inputTokens==`number`){let t=typeof e.contextWindow==`number`?e.contextWindow:2e5;u(v.id,e.inputTokens,t),b.chat.conversations.update.mutate({id:v.id,contextUsage:{inputTokens:e.inputTokens,contextWindow:t}}).catch(()=>{})}}else e.type===`done`&&(ie=!0,d(v.id),V(v,v.id))},ae=t=>{F.content=F.content||h.global.t(`aiChat.errorMessage`,{message:t?.message??h.global.t(`aiChat.unknownError`)}),e.value=[...e.value],d(v.id),oe(v,v.id,t?.message)},R=()=>{if(!ie){a.get(v.id)?.unsubscribe(),a.delete(v.id);let e=new Set(i.value);e.delete(v.id),i.value=e}};D&&(x.value=null);let{contextServiceId:z}=S(),B=T(),H=z.value?B.getById(z.value):null,U=[];H&&U.push(`[Contexte: l'utilisateur consulte actuellement le service "${H.name}" (id: ${H.id})]`),D&&U.push(`[Contexte: diff du fichier en cours de consultation]\n${D}`),E&&U.push(`[Contexte attaché]\n${E}`);let W=U.length>0?U.join(`
|
|
6
|
+
|
|
7
|
+
`):null,G=v.agentId??H?.effectiveAgentId??void 0,se=ee().currentProject?.activeEnvironmentId??void 0;try{if(v.runner===`claude-code`||v.runner===`codex`||v.isCli&&!v.providerId){let e=k.map(e=>({type:`image`,imageId:e.imageId,url:e.url,mimeType:e.mimeType,altText:e.fileName}));v.runner===`codex`?a.set(v.id,b.chat.streamViaCodex.subscribe({conversationId:v.id,prompt:t.trim(),contextNote:W??void 0,model:void 0,agentId:G,environmentId:se,imageParts:e},{onData:L,onError:ae,onComplete:R})):a.set(v.id,b.chat.streamViaClaudeCode.subscribe({conversationId:v.id,prompt:t.trim(),contextNote:W??void 0,model:s.value??void 0,effort:c.value??void 0,agentId:G,environmentId:se,imageIds:k.map(e=>e.imageId),imageParts:e},{onData:L,onError:ae,onComplete:R}))}else{let e=v.messages.slice(0,-1).map(e=>({role:e.role,content:e.content})),t=W?[{role:`user`,content:W},{role:`assistant`,content:`Compris, je tiendrai compte de ce contexte.`},...e]:e,n=k.map(e=>({type:`image`,imageId:e.imageId,url:e.url,mimeType:e.mimeType,altText:e.fileName}));a.set(v.id,b.chat.send.subscribe({conversationId:v.id,messages:t,model:l.value||void 0,contextNote:O,imageIds:k.map(e=>e.imageId),imageParts:n},{onData:L,onError:ae,onComplete:R}))}}catch(t){F.content=h.global.t(`aiChat.connectionError`,{message:t.message}),e.value=[...e.value],d(v.id)}}function re(t,n){if(f(t.id))return;let r=new Set(i.value);r.add(t.id),i.value=r;let o=t.messages[t.messages.length-1],s;o?.role===`assistant`?s=o:(s={role:`assistant`,content:``},t.messages.push(s)),e.value=[...e.value];let c=!1,l=!1,p=()=>{let n=e.value.findIndex(e=>e.id===t.id);if(n>=0){let t=[...e.value];t[n]={...t[n],messages:[...t[n].messages]},e.value=t}},m=e=>{s.parts||(s.parts=[]);let n=s.parts;if(e.type===`status`)s.status=e.text??``,p(),y?.();else if(e.type===`delta`){if(e.ts){let t=Date.now()-e.ts;t>100?console.warn(`[perf][reconnect] delta latency: ${t}ms`):console.debug(`[perf][reconnect] delta latency: ${t}ms`)}if(s.status=``,!c)c=!0,s.content=e.text??``,s.parts=[{type:`text`,text:e.text??``}];else{s.content+=e.text??``;let t=n[n.length-1];t?.type===`text`?t.text+=e.text??``:n.push({type:`text`,text:e.text??``})}p(),y?.()}else if(e.type===`tool_call`){let t=n.find(t=>t.type===`tool`&&t.id===e.id);t?(t.name=e.name,t.input=e.input,t.rawInput=e.rawInput):n.push({type:`tool`,id:e.id,name:e.name,input:e.input,rawInput:e.rawInput,pending:!0}),p(),y?.()}else if(e.type===`tool_result`){let t=n.find(t=>t.type===`tool`&&t.id===e.id);t&&(t.result=e.result,t.isError=e.isError,t.pending=!1,t.rawInput=void 0),p(),y?.()}else if(e.type===`thinking`){let t=n[n.length-1];t?.type===`thinking`?t.text+=e.text??``:n.push({type:`thinking`,text:e.text??``}),p(),y?.()}else if(e.type===`context_usage`){if(typeof e.inputTokens==`number`){let n=typeof e.contextWindow==`number`?e.contextWindow:2e5;u(t.id,e.inputTokens,n)}}else e.type===`done`&&(l=!0,d(t.id),V(t,t.id))},g=e=>{s.content=s.content||h.global.t(`aiChat.errorMessage`,{message:e?.message??h.global.t(`aiChat.unknownError`)}),p(),d(t.id),oe(t,t.id,e?.message)},_=()=>{l||(a.get(t.id)?.unsubscribe(),a.delete(t.id))};n.sessionType===`claude-code`?a.set(t.id,b.chat.streamViaClaudeCode.subscribe({conversationId:t.id,prompt:``,reconnect:!0},{onData:m,onError:g,onComplete:_})):a.set(t.id,b.chat.send.subscribe({conversationId:t.id,messages:[],reconnect:!0},{onData:m,onError:g,onComplete:_}))}async function P(t){if(f(t))return!1;let n=(await b.chat.getStreamingStatus.query()).find(e=>e.conversationId===t&&e.status===`running`);if(!n||(await _(t),f(t)))return!1;let r=e.value.find(e=>e.id===t);return r?(A()&&console.log(`[ai-chat][reconnect]`,H(),`single-conversation`,{id:t.slice(0,8),type:n.sessionType}),re(r,n),!0):!1}let F=new Map;function ie(e,t=8){if(f(e)||F.has(e))return;let n=0,r=async()=>{if(f(e)){F.delete(e);return}if(await P(e)||n>=t){F.delete(e);return}n+=1;let i=Math.min(100*2**n,1500),a=setTimeout(()=>{r()},i);F.set(e,a)};r()}async function I(){try{let t=await b.chat.getStreamingStatus.query();if(!t.length)return;let r=t.filter(e=>e.status===`running`),i=r;if(A()&&console.log(`[ai-chat][reconnect]`,H(),`sessions`,{total:t.length,running:r.length,order:i.map(e=>({id:e.conversationId.slice(0,8),status:e.status,type:e.sessionType}))}),!i.length)return;let a=i.find(t=>{let n=e.value.find(e=>e.id===t.conversationId);return!n||!n.isCompanion});!n.value&&!m.value&&a&&(n.value=a.conversationId);for(let t of i){await _(t.conversationId);let n=e.value.find(e=>e.id===t.conversationId);n&&re(n,t)}}catch{}}return{pendingImages:C,isUploadingImage:w,uploadImages:D,addPendingImage:O,removePendingImage:j,clearPendingImages:M,sendMessage:N,stopStreaming:te,reconnectActiveStreams:I,reconnectConversationIfRunning:P,scheduleReconnectConversationIfRunning:ie,setScrollCallback:x}}function W(e,t,n){let r=new Map,i=new Map,a=new Set,o=null;function s(e,t=3e4){return Math.min(1e3*2**e,t)}function c(t){e.value=e.value.map(e=>e.id===t?{...e}:e)}function l(t){t.size!==0&&(e.value=e.value.map(e=>t.has(e.id)?{...e}:e))}async function u(t){let n=e.value.find(e=>e.id===t);if(n?.workflowType===`scenario`)try{let e=await b.scenario.getSnapshot.query({conversationId:t});e&&(n.scenarioSnapshot=e)}catch{}}function d(t,o,l,f,p,m=0){r.get(t)?.unsubscribe(),r.delete(t),a.delete(t);let h=`[scenario:`+t.slice(0,8)+`]`;A()&&console.log(h,`subscribing to run bus`,{retryCount:m});let _=b.scenario.run.subscribe({conversationId:t,scenarioId:o,userRequest:l,...f?.runnerOverride?{runnerOverride:f.runnerOverride}:{},...f?.modelOverride?.trim()?{modelOverride:f.modelOverride.trim()}:{},...f?.agentId?{agentId:f.agentId}:{},...f?.projectId?{projectId:f.projectId}:{},...f?.resume?{resume:!0}:{}},{onData(o){let s=e.value.find(e=>e.id===t);if(s){if(o.type===`node_started`){let e=o.nodeId.endsWith(`:synthesis`),n=e?o.nodeId.replace(`:synthesis`,``):o.nodeId;if(A()&&console.log(h,`node_started`,o.nodeId),(!e||s.scenarioNodeStates?.[n]!==`done`)&&(s.scenarioNodeStates={...s.scenarioNodeStates,[n]:`running`}),s.scenarioWaitingInputs?.[n]){let{[n]:e,...t}=s.scenarioWaitingInputs;s.scenarioWaitingInputs=t}if(e&&(s.scenarioSynthesisRunning=!0),e&&!a.has(t)){let e=s.scenarioSnapshot?.nodes?.find(e=>e.id===n),r=e?e.label||e.id:`Leader`;s.scenarioReadme=`${s.scenarioReadme??``}\n### [Live] ${r} synthesis in progress\n\n`,a.add(t)}let r=s.scenarioSnapshot?.nodes?.some(e=>e.id===n)??!1;n&&!e&&!r&&u(t).then(()=>{c(t)})}else if(o.type===`node_delta`){let e=o.nodeId.replace(`:synthesis`,``),n=o.nodeId.endsWith(`:synthesis`),r=n?`${e}:synthesis`:e;if(s.scenarioNodeOutputs||={},s.scenarioNodeOutputs[r]=(s.scenarioNodeOutputs[r]??``)+o.text,n){if(!a.has(t)){let n=s.scenarioSnapshot?.nodes?.find(t=>t.id===e),r=n?n.label||n.id:`Leader`;s.scenarioReadme=`${s.scenarioReadme??``}\n### [Live] ${r} synthesis in progress\n\n`,a.add(t)}s.scenarioReadme=`${s.scenarioReadme??``}${o.text}`,p?.()}}else if(o.type===`node_status`)s.scenarioNodeStatuses||={},s.scenarioNodeStatuses[o.nodeId]=o.text;else if(o.type===`node_tool_call`){let e=[...s.scenarioNodeToolEvents?.[o.nodeId]??[]],t=e.findIndex(e=>e.id===o.id),n=o.rawInput;t>=0?e[t]={...e[t],input:o.input,rawInput:n}:e.push({id:o.id,name:o.name,input:o.input,rawInput:n,pending:!0}),s.scenarioNodeToolEvents={...s.scenarioNodeToolEvents,[o.nodeId]:e}}else if(o.type===`node_tool_result`){let e=[...s.scenarioNodeToolEvents?.[o.nodeId]??[]],t=e.findIndex(e=>e.id===o.id);t>=0&&(e[t]={...e[t],result:o.result,isError:o.isError,pending:!1,rawInput:void 0},s.scenarioNodeToolEvents={...s.scenarioNodeToolEvents,[o.nodeId]:e})}else if(o.type===`node_thinking`)s.scenarioNodeThinking||={},s.scenarioNodeThinking[o.nodeId]||(s.scenarioNodeThinking[o.nodeId]=[]),s.scenarioNodeThinking[o.nodeId].push(o.text);else if(o.type===`node_duration`)s.scenarioNodeDurations={...s.scenarioNodeDurations,[o.nodeId]:o.durationMs};else if(o.type===`node_prompt`){let e=s.scenarioNodePrompts?.[o.nodeId]??[];s.scenarioNodePrompts={...s.scenarioNodePrompts,[o.nodeId]:[...e,{label:o.label,systemContext:o.systemContext,userMessage:o.userMessage}]}}else if(o.type===`node_command`){let e=s.scenarioNodeCommands?.[o.nodeId]??[];s.scenarioNodeCommands={...s.scenarioNodeCommands,[o.nodeId]:[...e,o.command]}}else if(o.type===`node_done`){let e=o.nodeId.endsWith(`:synthesis`),t=e?o.nodeId.replace(`:synthesis`,``):o.nodeId,n=e?`${t}:synthesis`:t,r=e?`synthesized`:o.state??`done`;if(A()&&console.log(h,`node_done`,o.nodeId,`→`,r),s.scenarioNodeStates={...s.scenarioNodeStates,[t]:r},s.scenarioNodeOutputs={...s.scenarioNodeOutputs,[n]:o.output},s.scenarioWaitingInputs?.[t]){let{[t]:e,...n}=s.scenarioWaitingInputs;s.scenarioWaitingInputs=n}e&&(s.scenarioSynthesisRunning=!1,s.scenarioReadme=`${s.scenarioReadme??``}\n\n`)}else if(o.type===`node_state_change`)A()&&console.log(h,`node_state_change`,o.nodeId,`→`,o.state),s.scenarioNodeStates={...s.scenarioNodeStates,[o.nodeId]:o.state};else if(o.type===`node_waiting_input`){A()&&console.log(h,`node_waiting_input`,o.nodeId,o.question);let e=s.scenarioWaitingInputs?.[o.nodeId]===o.question;s.scenarioNodeStates={...s.scenarioNodeStates,[o.nodeId]:`waiting_input`},s.scenarioWaitingInputs={...s.scenarioWaitingInputs,[o.nodeId]:o.question},e||B(s,o.question)}else if(o.type===`node_error`){if(A()&&console.log(h,`node_error`,o.nodeId,o.error),s.scenarioNodeStates={...s.scenarioNodeStates,[o.nodeId]:`error`},s.scenarioWaitingInputs?.[o.nodeId]){let{[o.nodeId]:e,...t}=s.scenarioWaitingInputs;s.scenarioWaitingInputs=t}}else o.type===`readme_append`?s.scenarioReadme=(s.scenarioReadme??``)+o.text:o.type===`scenario_complete`?(A()&&console.log(h,`scenario_complete`),s.scenarioRunning=!1,s.scenarioSynthesisRunning=!1,r.delete(t),i.delete(t),a.delete(t),n(t,o.summary),V(s,t),u(t).then(()=>{c(t)}),p?.()):o.type===`scenario_error`&&(A()&&console.log(h,`scenario_error`,o.error),s.scenarioRunning=!1,s.scenarioSynthesisRunning=!1,r.delete(t),i.delete(t),a.delete(t),u(t).then(()=>{c(t)}),g().add({severity:`error`,summary:`Scenario run failed`,detail:o.error,life:5e3}),oe(s,t,o.error));c(t)}},onError(n){A()&&console.warn(h,`subscription error (WS drop?)`,n,{retryCount:m}),r.delete(t);let i=e.value.find(e=>e.id===t);if(!i?.scenarioRunning)return;if(m>=5){A()&&console.warn(h,`max retries reached — marking run as stopped`),i.scenarioRunning=!1,i.scenarioSynthesisRunning=!1,c(t);return}let a=s(m);A()&&console.log(h,`retrying in`,a+`ms`,`(attempt`,m+1+`/5)`),setTimeout(()=>{let n=e.value.find(e=>e.id===t);n?.scenarioRunning&&(n.scenarioReadme=``,c(t),d(t,o,l,void 0,p,m+1))},a)},onComplete(){A()&&console.log(h,`subscription complete`),r.delete(t);let n=e.value.find(e=>e.id===t);n?.scenarioRunning&&(A()&&console.warn(h,`onComplete fired without scenario_complete — marking stopped`),n.scenarioRunning=!1,n.scenarioSynthesisRunning=!1,c(t))}});r.set(t,_)}function f(n,r,a,o,s){let l=e.value.find(e=>e.id===n);if(!l)return;A()&&console.log(`[scenario] startScenarioRun`,n.slice(0,8)),i.set(n,a),l.scenarioRunning=!0,l.scenarioSynthesisRunning=!1;let u={...s,...l.projectId?{projectId:l.projectId}:{}};Object.keys(u).length&&(l.scenarioRunOverrides=u),l.scenarioNodeStates={},l.scenarioNodeOutputs={},l.scenarioNodeStatuses={},l.scenarioNodeThinking={},l.scenarioNodeToolEvents={},l.scenarioNodeDurations={},l.scenarioNodePrompts={},l.scenarioNodeCommands={},l.scenarioWaitingInputs={},l.scenarioReadme=``,c(n),t(n,a),d(n,r,a,u,o,0)}async function p(t,n,r){let i=e.value.find(e=>e.id===t);i&&i.workflowType===`scenario`&&!i.scenarioRunning&&(i.scenarioRunning=!0,i.scenarioSynthesisRunning=!1,c(t),d(t,i.workflowId,``,{resume:!0,...r,...i.projectId?{projectId:i.projectId}:{}},n,0))}async function m(t){await b.scenario.stop.mutate({conversationId:t}),r.get(t)?.unsubscribe(),r.delete(t);let n=e.value.find(e=>e.id===t);n&&(n.scenarioRunning=!1,n.scenarioSynthesisRunning=!1,c(t))}async function h(){let t=e.value.filter(e=>e.workflowType===`scenario`);A()&&console.log(`[scenario] reconnectScenarioRuns — checking`,t.length,`scenario conversations`);let n=new Set,i=[];await Promise.all(t.map(async e=>{try{if(r.has(e.id)){A()&&console.log(`[scenario] conv`,e.id.slice(0,8),`already subscribed — skip reconnect`);return}let{running:t}=await b.scenario.isRunning.query({conversationId:e.id});if(A()&&console.log(`[scenario] conv`,e.id.slice(0,8),`isRunning:`,t),!t){(e.scenarioRunning||e.scenarioSynthesisRunning)&&(e.scenarioRunning=!1,e.scenarioSynthesisRunning=!1,n.add(e.id));return}!e.scenarioRunning||e.scenarioSynthesisRunning||e.scenarioReadme?(e.scenarioRunning=!0,e.scenarioSynthesisRunning=!1,e.scenarioReadme=``,n.add(e.id)):(e.scenarioRunning=!0,e.scenarioSynthesisRunning=!1),i.push({conversationId:e.id,scenarioId:e.workflowId})}catch(t){console.error(`[scenario] reconnect check failed for`,e.id.slice(0,8),t)}})),l(n);for(let e of i)d(e.conversationId,e.scenarioId,``,void 0,void 0,0)}function _(){o||=y(()=>{let t=e.value.filter(e=>e.workflowType===`scenario`&&e.scenarioRunning);A()&&console.log(`[scenario] WS reopened — resubscribing`,t.length,`active runs`);let n=new Set;for(let e of t)e.scenarioReadme&&(e.scenarioReadme=``,n.add(e.id));l(n);for(let e of t){let t=i.get(e.id)??``;d(e.id,e.workflowId,t,void 0,void 0,0)}})}function v(e){r.get(e)?.unsubscribe(),r.delete(e)}return{startScenarioRun:f,resumeScenario:p,stopScenario:m,reconnectScenarioRuns:h,_subscribeToScenarioRun:d,initWsReopenHandler:_,cleanupForConversation:v}}var G=()=>new Date().toISOString(),se=p(`ai-chat`,()=>{let e=g(),r=S(),i=m();async function o(e){let[t,n,r]=await Promise.all([b.scenario.getPersistedRunState.query({conversationId:e}),b.scenario.getReadme.query({conversationId:e}).catch(()=>null),b.scenario.getSnapshot.query({conversationId:e}).catch(()=>null)]);return{persisted:t??null,readme:n,snapshot:r??null}}function c(e,t){if(t.persisted&&(e.scenarioNodeStates=t.persisted.nodeStates,e.scenarioNodeOutputs=t.persisted.nodeOutputs,t.persisted.waitingInputs&&Object.keys(t.persisted.waitingInputs).length>0&&(e.scenarioWaitingInputs=t.persisted.waitingInputs)),typeof t.readme==`string`&&(e.scenarioReadme=t.readme),t.snapshot){let n=w.safeParse(t.snapshot);n.success&&(e.scenarioSnapshot=n.data)}}let l=n([]),u=t(localStorage.getItem(F)),d=t(!1),f=new Map,p=t(new Set),_=t(new Set),v=t({}),ee=s(()=>{let e=u.value;return!!(e&&p.value.has(e))});function T(){return`${i.activeOrgId??``}/${i.activeProjectId??``}`}function E(){try{let e=JSON.parse(localStorage.getItem(`runeya:ai-chat-active-id-by-project`)??`{}`);return e&&typeof e==`object`?e:{}}catch{return{}}}function D(e){localStorage.setItem(ie,JSON.stringify({...E(),[T()]:e}))}a(u,e=>{e?(localStorage.setItem(F,e),D(e)):localStorage.removeItem(F)});let O=s(()=>l.value.find(e=>e.id===u.value)??null);function k(e,t){let n=e.updatedAt??e.createdAt??0;return(t.updatedAt??t.createdAt??0)-n}let j=s(()=>l.value.filter(e=>!e.archived&&!e.isCompanion&&e.pinOrder!==void 0).slice().sort((e,t)=>e.pinOrder-t.pinOrder)),M=t([]),R=s(()=>new Set(M.value.map(e=>e.id)));function z(e){return e.sectionId!==void 0&&R.value.has(e.sectionId)}let B=s(()=>{let e={};for(let t of M.value)e[t.id]=[];for(let t of l.value)t.archived||t.isCompanion||t.pinOrder!==void 0||!z(t)||e[t.sectionId].push(t);for(let t of Object.values(e))t.sort((e,t)=>(e.sectionOrder??0)-(t.sectionOrder??0));return e}),V=s(()=>l.value.filter(e=>!e.archived&&!e.isCompanion&&e.pinOrder===void 0&&!z(e)).slice().sort(k)),oe=s(()=>l.value.filter(e=>e.archived&&!e.isCompanion).slice().sort(k)),H=s(()=>{let e=u.value;return e&&p.value.has(e)?e:null}),se=(()=>{try{let e=localStorage.getItem(I);return e?new Set(JSON.parse(e)):new Set}catch{return new Set}})(),K=t(se);a(K,e=>{let t=[...e];t.length?localStorage.setItem(I,JSON.stringify(t)):localStorage.removeItem(I)});let ce=t(!1);function le(e){let t=ce.value||r.isOpen.value;if(!e||e===u.value&&t||K.value.has(e))return;let n=new Set(K.value);n.add(e),K.value=n}function ue(e,t=!0){if(p.value.has(e)){let t=new Set(p.value);t.delete(e),p.value=t}f.delete(e),t&&le(e)}function q(e){return p.value.has(e)}function de(e){let t=new Set(K.value);t.delete(e),K.value=t}let fe=t(!1),pe=t(!1),me=t(localStorage.getItem(`runeya:ai-chat-model`)??`haiku`),he=t(localStorage.getItem(`runeya:ai-chat-effort`)??`low`);a(me,e=>{e?localStorage.setItem(re,e):localStorage.removeItem(re)}),a(he,e=>{e?localStorage.setItem(P,e):localStorage.removeItem(P)});async function ge(e){try{let t=await b.chat.checkCliAvailability.query(e?{agentId:e}:void 0);fe.value=t.available,pe.value=t.codexAvailable}catch{fe.value=!1,pe.value=!1}}let _e=t({"claude-code":[],codex:[]}),ve=new Map;function ye(e){if(_e.value[e].length>0)return Promise.resolve();let t=ve.get(e);if(t)return t;let n=b.chat.listCliModels.query({runner:e}).then(t=>{_e.value={..._e.value,[e]:t.models}}).catch(()=>{}).finally(()=>{ve.delete(e)});return ve.set(e,n),n}let J=t(new Map),be=s(()=>{let e=O.value?.id;return e?J.value.get(e)??null:null}),xe=s(()=>{let e=be.value;return e?Math.min(100,Math.round(e.inputTokens/e.contextWindow*100)):null});function Se(e,t,n){let r=new Map(J.value);r.set(e,{inputTokens:t,contextWindow:n}),J.value=r}let Ce=t([]),Y=t(localStorage.getItem(L)),X=t(localStorage.getItem(`runeya:ai-chat-provider-model`)??``),we=t([]),Te=t(!1);a(Y,e=>{e?localStorage.setItem(L,e):localStorage.removeItem(L)}),a(X,e=>{e?localStorage.setItem(ae,e):localStorage.removeItem(ae)});async function Ee(e){Te.value=!0;try{we.value=await b.chat.listModels.query({providerId:e??Y.value??void 0,...C()})}catch{we.value=[]}finally{Te.value=!1}}async function De(){let e=await b.settings.listAIProviders.query(C());Ce.value=e.map(e=>({id:e.id,label:`${e.name} (${e.provider})`,provider:e.provider,model:e.model??``}));let t=Y.value;if(t&&e.some(e=>e.id===t)){let n=e.find(e=>e.id===t),r=X.value;X.value=r||(n.model??``)}else e.length>0&&(Y.value=e[0].id,X.value=e[0].model??``);setTimeout(()=>Ee(),50)}async function Oe(e){if(!e)return;let t=Ce.value.find(t=>t.id===e);t&&(X.value=t.model??``),await Ee(e??void 0)}function ke(e){e&&(Y.value=e,Oe(e))}a(O,e=>{let t=e?.providerId??null;t&&t!==Y.value?(Y.value=t,Oe(t)):!t&&!e?.runner&&Y.value&&Ee()});let Z=null,Ae=null,je=null,Me=null;function Ne(e,t){return!t||!e.messagesOmitted||t.messagesOmitted?e:{...e,messages:t.messages,messagesOmitted:void 0,messageCount:void 0}}function Pe(e,t){if(!t)return e;let n=Ne(e,t),r=n===e?e.messages.map((e,n)=>{let r=t.messages[n]?.parts;return r?{...e,parts:r}:e}):n.messages;return{...n,messages:r,scenarioRunning:t.scenarioRunning,scenarioSynthesisRunning:t.scenarioSynthesisRunning,scenarioSnapshot:t.scenarioSnapshot,scenarioNodeStates:t.scenarioNodeStates,scenarioNodeOutputs:t.scenarioNodeOutputs,scenarioReadme:t.scenarioReadme,activeScenarioNodeId:t.activeScenarioNodeId}}function Fe(e){let t=ce.value||r.isOpen.value;if(q(e.id)){let t=l.value.findIndex(t=>t.id===e.id);if(t<0)return;let n=l.value[t],r=[...l.value];r[t]={...n,companionEnabled:e.companionEnabled,companionRunner:e.companionRunner,companionModel:e.companionModel,companionEffort:e.companionEffort,companionConversationId:e.companionConversationId},l.value=r;return}let n=l.value.findIndex(t=>t.id===e.id);if(n>=0){let r=l.value[n],i=e.messages.length>r.messages.length,a=e.messages[e.messages.length-1],o=r.messages[r.messages.length-1],s=a?.role===`assistant`&&(o?.role!==`assistant`||a.content!==o.content),c=Pe(e,r),u=[...l.value];u[n]=c,l.value=u,(i||s)&&(le(e.id),t&&$.scheduleReconnectConversationIfRunning(e.id));return}l.value=[e,...l.value],le(e.id),t&&$.scheduleReconnectConversationIfRunning(e.id)}let Ie=new Map;function Le(e){if(!l.value.find(t=>t.id===e)?.messagesOmitted)return Promise.resolve();let t=Ie.get(e);if(t)return t;let n=(async()=>{try{let t=await b.chat.conversations.get.query({id:e}),n=l.value.findIndex(t=>t.id===e),r=l.value[n];if(!r?.messagesOmitted||q(e))return;let i=[...l.value];i[n]={...r,messages:t.messages,messagesOmitted:void 0,messageCount:void 0},l.value=i}catch{}finally{Ie.delete(e)}})();return Ie.set(e,n),n}a(()=>O.value?.messagesOmitted?O.value.id:null,e=>{e&&Le(e)},{immediate:!0});function Re(e){l.value=l.value.filter(t=>t.id!==e),u.value===e&&(u.value=V.value[0]?.id??null),f.get(e)?.unsubscribe(),ue(e,!1),Q.cleanupForConversation(e)}function ze(){Ae||=b.chat.conversations.onCompanionThinking.subscribe(void 0,{onData:e=>{_.value=new Set(e.thinking),v.value=e.skipped??{}}})}function Be(e){return!!e&&_.value.has(e)}function Ve(e){return e&&v.value[e]||null}function He(){Z||=b.chat.conversations.onChanged.subscribe({projectId:i.activeProjectId??void 0,orgId:i.activeOrgId},{onData:e=>{if(e.type===`initial`){let t=e.conversations,n=new Map(l.value.map(e=>[e.id,e])),r=new Set,i=t.map(e=>{r.add(e.id);let t=n.get(e.id);return t&&q(e.id)?t:Pe(e,t)});for(let e of l.value)!r.has(e.id)&&q(e.id)&&i.push(e);l.value=i;return}if(e.type===`deleted`){Re(e.id);return}Fe(e.conversation)},onError:()=>{Z=null,je&&clearTimeout(je),je=setTimeout(()=>{je=null,He()},1e3)},onComplete:()=>{Z=null}})}let Ue=0,We=0;async function Ge(){let e=++Ue;We++;let t=await b.chat.conversations.list.query({projectId:i.activeProjectId??void 0,orgId:i.activeOrgId}),n=t;if(await $e(),await Promise.all(n.map(async e=>{if(e.workflowType===`scenario`)try{c(e,await o(e.id))}catch{}})),e!==Ue)return;let r=new Map(l.value.map(e=>[e.id,e]));l.value=n.map(e=>Ne(e,r.get(e.id)));let a=new Map(J.value);for(let e of t){let t=e;t.contextUsage&&a.set(t.id,t.contextUsage)}if(J.value=a,u.value&&!n.some(e=>e.id===u.value)&&(u.value=null),!u.value){let e=n.find(e=>e.id===E()[T()]&&!e.archived&&!e.isCompanion);u.value=e?.id??[...j.value,...M.value.flatMap(e=>B.value[e.id]??[]),...V.value.filter(N),...V.value.filter(e=>!N(e))][0]?.id??null}u.value&&D(u.value)}async function Ke(e){let t=await b.chat.conversations.create.mutate({title:e?.title??h.global.t(`aiChat.newConversation`),runner:e?.runner,providerId:e?.providerId,scenarioId:e?.scenarioId,scenarioInput:e?.scenarioInput,kanbanBoardId:e?.kanbanBoardId,kanbanCardId:e?.kanbanCardId,agentId:e?.agentId,projectId:i.activeProjectId??void 0,orgId:i.activeOrgId}),n=t;return e?.scenarioRunOverrides&&(n.scenarioRunOverrides=e.scenarioRunOverrides),l.value=[n,...l.value.filter(e=>e.id!==n.id)],u.value=t.id,n}function qe(e){u.value=e,de(e)}async function Je(e){l.value=l.value.filter(t=>t.id!==e),u.value===e&&(u.value=V.value[0]?.id??null),f.get(e)?.unsubscribe(),ue(e,!1);try{await b.chat.conversations.delete.mutate({id:e})}catch{}}async function Ye(t,n){let r=l.value.find(e=>e.id===t);if(!r)return;let i=r.archived,a=Date.now();l.value=l.value.map(e=>e.id===t?{...e,archived:n,updatedAt:a}:e),n&&u.value===t&&(u.value=V.value[0]?.id??null);try{await b.chat.conversations.archive.mutate({id:t,archived:n})}catch{l.value=l.value.map(e=>e.id===t?{...e,archived:i}:e),e.add({severity:`error`,summary:h.global.t(`common.error`),detail:h.global.t(`aiChat.archiveError`),life:3e3})}}function Xe(){let e={pinned:j.value.map(e=>e.id),sections:{}};for(let[t,n]of Object.entries(B.value))e.sections[t]=n.map(e=>e.id);return e}async function Ze(t){let n=te(Xe(),t);if(n.unchanged)return;let r=l.value;l.value=ne(l.value,t,n.removed);let a=i.activeProjectId;try{for(let e of n.pinAdded)await b.chat.conversations.pin.mutate({id:e,pinned:!0});for(let e of n.unpinnedToList)await b.chat.conversations.pin.mutate({id:e,pinned:!1});if(n.pinnedChanged&&t.pinned.length>0&&await b.chat.conversations.reorderPinned.mutate({ids:t.pinned}),a){for(let e of n.changedSections){let n=t.sections[e]??[];n.length>0&&await b.chat.conversations.setSection.mutate({projectId:a,sectionId:e,ids:n})}n.sectionToList.length>0&&await b.chat.conversations.setSection.mutate({projectId:a,sectionId:null,ids:n.sectionToList})}}catch{l.value=r,e.add({severity:`error`,summary:h.global.t(`common.error`),detail:h.global.t(`aiChat.layoutError`),life:3e3})}}async function Qe(e,t){let n=Xe();for(let[t,r]of Object.entries(n.sections))n.sections[t]=r.filter(t=>t!==e);n.pinned=t?[...n.pinned.filter(t=>t!==e),e]:n.pinned.filter(t=>t!==e),await Ze(n)}async function $e(){let e=i.activeProjectId,t=++We,n;try{n=e?await b.chat.sections.list.query({projectId:e}):[]}catch{n=[]}t===We&&(M.value=n)}function et(){e.add({severity:`error`,summary:h.global.t(`common.error`),detail:h.global.t(`aiChat.sectionError`),life:3e3})}async function tt(e){let t=i.activeProjectId;if(!t)return null;try{let n=await b.chat.sections.create.mutate({projectId:t,name:e});return M.value=[...M.value,n],n}catch{return et(),null}}async function nt(e,t){let n=i.activeProjectId;if(!n)return;let r=M.value;M.value=M.value.map(n=>n.id===e?{...n,name:t}:n);try{await b.chat.sections.rename.mutate({projectId:n,id:e,name:t})}catch{M.value=r,et()}}async function rt(e){let t=i.activeProjectId;if(!t)return;let n={sections:M.value,conversations:l.value},r=(B.value[e]??[]).map(e=>e.id);M.value=M.value.filter(t=>t.id!==e),l.value=ne(l.value,{pinned:[],sections:{}},r);try{await b.chat.sections.delete.mutate({projectId:t,id:e})}catch{M.value=n.sections,l.value=n.conversations,et()}}async function it(e){let t=i.activeProjectId;if(!t)return;let n=M.value.map(e=>e.id);if(n.length===e.length&&n.every((t,n)=>t===e[n]))return;let r=M.value,a=new Map(e.map((e,t)=>[e,t]));M.value=M.value.map(e=>({...e,order:a.get(e.id)??e.order})).sort((e,t)=>e.order-t.order);try{await b.chat.sections.reorder.mutate({projectId:t,ids:e})}catch{M.value=r,et()}}async function at(t,n,r={}){let{runner:i,model:a,effort:o}=r,s=l.value.find(e=>e.id===t);if(!s)return;let c=s.companionEnabled,u=s.companionRunner,d=s.companionModel,f=s.companionEffort;l.value=l.value.map(e=>e.id===t?{...e,companionEnabled:n,...i?{companionRunner:i}:{},...a===void 0?{}:{companionModel:a||void 0},...o===void 0?{}:{companionEffort:o||void 0}}:e);try{let e=await b.chat.conversations.setCompanion.mutate({id:t,enabled:n,runner:i,model:a,effort:o});l.value=l.value.map(n=>n.id===t?{...n,companionConversationId:e.companionConversationId}:n)}catch(n){l.value=l.value.map(e=>e.id===t?{...e,companionEnabled:c,companionRunner:u,companionModel:d,companionEffort:f}:e),e.add({severity:`error`,summary:h.global.t(`aiChat.companionToggleFailed`),detail:n.message,life:4e3})}}async function ot(e,t){let n=t.trim();if(l.value.find(t=>t.id===e)&&n){let t=Date.now();l.value=l.value.map(r=>r.id===e?{...r,title:n,updatedAt:t}:r);try{await b.chat.conversations.update.mutate({id:e,title:n})}catch{}}}function st(e,t){let n=l.value.find(t=>t.id===e);n&&(n.messages=[...n.messages??[],{role:`user`,content:t}])}function ct(e,t){let n=l.value.find(t=>t.id===e);n&&(n.messages=[...n.messages??[],{role:`assistant`,content:t}])}async function lt(e,t,n){let r=l.value.find(t=>t.id===e);if(r?.scenarioWaitingInputs?.[t]){let{[t]:n,...i}=r.scenarioWaitingInputs;r.scenarioWaitingInputs=i,l.value=l.value.map(t=>t.id===e?{...t}:t)}await b.scenario.sendNodeInput.mutate({conversationId:e,nodeId:t,text:n})}let Q=W(l,st,ct),$=U(l,u,O,p,f,fe,me,he,X,Se,ue,q,()=>Ke(),d,Le);function ut(e){return(e.runner??(e.isCli&&!e.providerId?`claude-code`:null))===`claude-code`}async function dt(){let e=l.value.filter(e=>!e.archived&&!e.isCompanion&&ut(e));if(e.length===0)return;let t=await Promise.allSettled(e.map(e=>b.chat.pty.activity.query({sessionId:e.id,agentId:e.agentId}).then(t=>({id:e.id,r:t})))),n=new Set(p.value),r=!1;for(let e of t){if(e.status!==`fulfilled`)continue;let{id:t,r:i}=e.value;if(f.has(t))continue;let a=i.running&&i.idleMs!==null&&i.idleMs<1500;a&&!n.has(t)?(n.add(t),r=!0):!a&&n.has(t)&&(n.delete(t),r=!0)}r&&(p.value=n)}let ft=x(dt,1e3,`ai-chat:pty-activity`);function pt(){ft.start(),ft.trigger()}let mt=!1;async function ht(){A()&&console.log(`[ai-chat][store]`,G(),`init:start`,{initialized:mt,conversations:l.value.length,activeId:u.value,streaming:p.value.size,drawerOpen:r.isOpen.value}),mt||(mt=!0,await Ge(),A()&&console.log(`[ai-chat][store]`,G(),`init:after-loadConversations`,{conversations:l.value.length,activeId:u.value}),He(),ze(),await ge(),A()&&console.log(`[ai-chat][store]`,G(),`init:after-checkCliAvailability`,{claudeCodeAvailable:fe.value,codexAvailable:pe.value}),De()),p.value.size===0&&(await $.reconnectActiveStreams(),A()&&console.log(`[ai-chat][store]`,G(),`init:after-reconnectActiveStreams`,{streaming:p.value.size})),Q.reconnectScenarioRuns(),Q.initWsReopenHandler(),pt(),Me||=y(()=>{Z||He(),Ae||ze(),$.reconnectActiveStreams()}),A()&&console.log(`[ai-chat][store]`,G(),`init:end`,{initialized:mt,conversations:l.value.length,activeId:u.value,streaming:p.value.size})}return a(()=>[i.activeProjectId,i.activeOrgId],()=>{mt&&(Z?.unsubscribe(),Z=null,l.value=[],u.value=null,Ge().then(()=>He()))}),{isCompanionThinkingFor:Be,ensureConversationLoaded:Le,companionSkipFor:Ve,conversations:l,activeId:u,activeConversation:O,filteredConversations:V,pinnedConversations:j,archivedConversations:oe,applyLayout:Ze,sections:M,sectionConversations:B,createSection:tt,renameSection:nt,deleteSection:rt,reorderSections:it,pinConversation:Qe,setCompanion:at,isStreaming:ee,pendingNewConversation:d,streamingConvId:H,streamingConvIds:p,unreadConvIds:K,isChatPageVisible:ce,claudeCodeAvailable:fe,codexAvailable:pe,claudeCodeModel:me,claudeCodeEffort:he,contextUsageMap:J,activeContextUsage:be,contextPercent:xe,providers:Ce,selectedProviderId:Y,selectedModel:X,availableModels:we,loadingModels:Te,fetchProviders:De,onProviderChange:ke,checkCliAvailability:ge,cliModels:_e,loadCliModels:ye,refreshStreamingSessions:$.reconnectActiveStreams,pendingImages:$.pendingImages,isUploadingImage:$.isUploadingImage,uploadImage:$.addPendingImage,removePendingImage:$.removePendingImage,clearPendingImages:$.clearPendingImages,init:ht,loadConversations:Ge,createConversation:Ke,selectConversation:qe,deleteConversation:Je,archiveConversation:Ye,renameConversation:ot,send:$.sendMessage,stopStreaming:$.stopStreaming,isConversationStreaming:q,markRead:de,setScrollCallback:$.setScrollCallback,appendUserMessage:st,appendAssistantMessage:ct,startScenarioRun:Q.startScenarioRun,resumeScenario:Q.resumeScenario,stopScenario:Q.stopScenario,reconnectScenarioRuns:Q.reconnectScenarioRuns,sendNodeInput:lt}}),K=p(`scenario`,()=>{let e=t([]),n=t(!1);async function r(){n.value=!0;try{e.value=await b.scenario.list.query(C())}catch{e.value=[]}finally{n.value=!1}}async function i(t){let n=await b.scenario.create.mutate({...t,...C()});return e.value=[...e.value,n],n}async function a(t){let n=e.value.find(e=>e.id===t);if(!n)throw Error(`Scenario not found`);return i({name:`${n.name} (copie)`,description:n.description,leaderId:n.leaderId,groups:n.groups,nodes:n.nodes,traversalMode:n.traversalMode})}async function o(t,n){let r=await b.scenario.update.mutate({id:t,...n,...C()});return e.value=e.value.map(e=>e.id===t?r:e),r}async function s(t){await b.scenario.delete.mutate({id:t,...C()}),e.value=e.value.filter(e=>e.id!==t)}return{scenarios:e,loading:n,fetchScenarios:r,createScenario:i,duplicateScenario:a,updateScenario:o,deleteScenario:s}});export{A as a,j as i,se as n,O as o,N as r,K as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{C as e}from"./reactivity.esm-bundler-BQ9SB2vv.js";import{Ht as t,g as n}from"./runtime-core.esm-bundler-DujKY9QV.js";import{i as r,n as i}from"./project-launch.store-
|
|
1
|
+
import{C as e}from"./reactivity.esm-bundler-BQ9SB2vv.js";import{Ht as t,g as n}from"./runtime-core.esm-bundler-DujKY9QV.js";import{i as r,n as i}from"./project-launch.store-CTmbl8UY.js";import{r as a}from"./trpc-BAZGRZBD.js";import{r as o}from"./project.store-CNC6_4r4.js";import{n as s}from"./error-DpF7X5iu.js";var c=r(`service`,()=>{let r=e([]),c=e(!1),l=e(null),u=n(()=>r.value.length),d=n(()=>e=>r.value.find(t=>t.id===e)??null),f=n(()=>e=>r.value.filter(t=>e.includes(t.id))),p=e(void 0);t(()=>{let e=i();return`${e.activeOrgId??`local`}::${e.activeProjectId??``}`},()=>{p.value!==void 0&&m()});async function m(e){let t=i().activeRef(),n=e??(t?{projectId:t.id,orgId:t.orgId}:null);p.value=n,c.value=!0,l.value=null;try{r.value=await a.service.list.query(n??void 0)}catch(e){l.value=s(e)??`Failed to fetch services`}finally{c.value=!1}}async function h(e){l.value=null;try{let t=await a.service.get.query({id:e}),n=r.value.findIndex(t=>t.id===e);if(n>=0){let e=[...r.value];e[n]=t,r.value=e}return t}catch(e){return l.value=s(e)??`Failed to fetch service`,null}}async function g(e){l.value=null;try{let t=await a.service.create.mutate(e);return r.value=[...r.value,t],t}catch(e){return l.value=s(e)??`Failed to create service`,null}}async function _(e,t){l.value=null;try{let n=r.value.find(t=>t.id===e),i=await a.service.update.mutate({id:e,...t}),s=r.value.findIndex(t=>t.id===e);if(s>=0){let e=[...r.value];e[s]=i,r.value=e}if(t.name&&n&&t.name!==n.name){let e=o();e.currentProjectId&&await e.fetchAll(e.currentProjectId,!0)}return i}catch(e){return l.value=s(e)??`Failed to update service`,null}}async function v(e){l.value=null;try{return await a.service.delete.mutate({id:e}),r.value=r.value.filter(t=>t.id!==e),!0}catch(e){return l.value=s(e)??`Failed to delete service`,!1}}return{services:r,loading:c,error:l,serviceCount:u,getById:d,getByIds:f,fetchAll:m,fetchOne:h,create:g,update:_,remove:v}});export{c as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{Ht as t}from"./runtime-core.esm-bundler-DujKY9QV.js";import{n}from"./project.store-CNC6_4r4.js";var r=e({settingsScope:()=>i,watchSettingsScope:()=>a});function i(){let e=n().currentProject;return e?{projectId:e.id,orgId:e.orgId??null}:{}}function a(e){let r=n();t(()=>[r.currentProject?.id,r.currentProject?.orgId],()=>{e()},{immediate:!0})}export{r as n,a as r,i as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{C as e}from"./reactivity.esm-bundler-BQ9SB2vv.js";import{Ht as t,g as n}from"./runtime-core.esm-bundler-DujKY9QV.js";import{i as r}from"./project-launch.store-CTmbl8UY.js";import{P as i}from"./src-DIBHat7I.js";import{r as a}from"./trpc-BAZGRZBD.js";import{n as o}from"./project.store-CNC6_4r4.js";import{t as s}from"./settings-scope-CyWMCjRY.js";var c=r(`settings`,()=>{let r=i(),c=e([]),l=e(!1),u=e(!1),d=e(null),f=n(()=>[...c.value].sort((e,t)=>e.name.localeCompare(t.name))),p=n(()=>f.value.filter(e=>!e.builtin)),m=null,h,g=0;function _(){g+=1,v()}function v(){let e=s(),t=e.orgId??void 0;m&&h===t||(b(),h=t,m=a.settings.onParsersChanged.subscribe(e,{onData(e){c.value=e},onError(){m=null}}))}function y(){g=Math.max(0,g-1),g===0&&b()}function b(){m?.unsubscribe(),m=null,h=void 0}t(()=>o().currentProject?.orgId??null,()=>{g!==0&&(x(),v())});async function x(){l.value=!0;try{let e=await a.settings.listParsers.query(s());c.value=e}catch(e){let t=e instanceof Error?e.message:`Failed to fetch parsers`;r.add({severity:`error`,summary:`Error`,detail:t,life:3e3})}finally{l.value=!1}}async function S(e){l.value=!0;try{let t=await a.settings.createParser.mutate({name:e.name,description:e.description,code:e.code,enabled:e.enabled??!0,version:2,...s()});return c.value=[...c.value,t],u.value=!1,r.add({severity:`success`,summary:`Success`,detail:`Parser "${t.name}" created`,life:3e3}),t}catch(e){let t=e instanceof Error?e.message:`Failed to create parser`;throw r.add({severity:`error`,summary:`Error`,detail:t,life:3e3}),e}finally{l.value=!1}}async function C(e){l.value=!0;try{let t=await a.settings.updateParser.mutate({...e,...s()});return c.value=c.value.map(n=>n.id===e.id?t:n),d.value=null,r.add({severity:`success`,summary:`Success`,detail:`Parser "${t.name}" updated`,life:3e3}),t}catch(e){let t=e instanceof Error?e.message:`Failed to update parser`;throw r.add({severity:`error`,summary:`Error`,detail:t,life:3e3}),e}finally{l.value=!1}}async function w(e){l.value=!0;try{await a.settings.deleteParser.mutate({id:e,...s()}),c.value=c.value.filter(t=>t.id!==e),r.add({severity:`success`,summary:`Success`,detail:`Parser deleted`,life:3e3})}catch(e){let t=e instanceof Error?e.message:`Failed to delete parser`;throw r.add({severity:`error`,summary:`Error`,detail:t,life:3e3}),e}finally{l.value=!1}}async function T(e,t){l.value=!0;try{let n=await a.settings.testParser.mutate({code:e,sampleLogs:t});return r.add({severity:`info`,summary:`Validation`,detail:`Validated ${n.results.length} log(s)`,life:3e3}),n}catch(e){let t=e instanceof Error?e.message:`Validation failed`;throw r.add({severity:`error`,summary:`Validation Error`,detail:t,life:3e3}),e}finally{l.value=!1}}function E(){d.value=null,u.value=!0}function D(e){d.value={...e},u.value=!0}function O(){u.value=!1,d.value=null}return{parsers:c,sortedParsers:f,userParsers:p,loading:l,createDialogOpen:u,editingParser:d,fetchParsers:x,subscribeParsers:_,unsubscribeParsers:y,createParser:S,updateParser:C,deleteParser:w,testParser:T,openCreateDialog:E,openEditDialog:D,closeDialog:O}});export{c as t};
|