@runeya/runeya 2.0.101 → 2.0.102
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 +170 -161
- package/agent/index.js.map +1 -1
- package/{chat-RWOZHXBX.js → chat-OXRRBDB3.js} +4 -3
- package/{node-B4T3JMM3.js → chunk-B7MABGQN.js} +51 -4
- package/chunk-B7MABGQN.js.map +1 -0
- package/{chunk-SP3IC2TR.js → chunk-BDVQB5RK.js} +22 -206
- package/chunk-BDVQB5RK.js.map +1 -0
- package/{chunk-TNBMCKQX.js → chunk-PSTMO7EE.js} +211 -10
- package/chunk-PSTMO7EE.js.map +1 -0
- package/{companion-QNW7XA6X.js → companion-JQGNL4U7.js} +4 -2
- package/index.js +2 -2
- package/node-ILM6MV56.js +21 -0
- package/node-ILM6MV56.js.map +1 -0
- package/package.json +1 -1
- package/{src-PF23DMAB.js → src-HZ2XO6TV.js} +15 -9
- package/src-HZ2XO6TV.js.map +1 -0
- package/web/assets/{AgentScalarChatInterface.vue-CpCuXAXu.js → AgentScalarChatInterface.vue-CxmPaQaj.js} +1 -1
- package/web/assets/{AgentTerminalPage-D8nMHtlG.js → AgentTerminalPage-Bbx4zyQY.js} +1 -1
- package/web/assets/AiChatPage-GPPQggxZ.js +1 -0
- package/web/assets/{AppLayout-Dq-1shm9.js → AppLayout-BuwGeA1p.js} +1 -1
- package/web/assets/{AuditPage-BjeeYf1P.js → AuditPage-CDsJsoKA.js} +1 -1
- package/web/assets/{CloudAccountPage-BWcXUmZ3.js → CloudAccountPage-BCP8icYZ.js} +1 -1
- package/web/assets/CloudAccountPage-DzpS3_gc.js +1 -0
- package/web/assets/{CloudMessagingPage-CN-Hkvzf.js → CloudMessagingPage-01hLQzZ5.js} +1 -1
- package/web/assets/{DashboardPage-30yBzA9Y.js → DashboardPage-CKo-sf8A.js} +1 -1
- package/web/assets/{DirectoryPickerDialog-BsYJrTG4.js → DirectoryPickerDialog-B1tSWoOM.js} +1 -1
- package/web/assets/{EditorIcon-BXS2-yX1.js → EditorIcon-C9XKLhc7.js} +1 -1
- package/web/assets/{EnvironmentForm--y9zfCDt.js → EnvironmentForm-bS48MK8k.js} +1 -1
- package/web/assets/{EnvironmentFormPage-BETc1RGi.js → EnvironmentFormPage-9yxN-uI3.js} +1 -1
- package/web/assets/{EnvironmentListPage-CC0Sj1bx.js → EnvironmentListPage-BbfptXAU.js} +1 -1
- package/web/assets/{KanbanBoardPage-BdM0Op1M.js → KanbanBoardPage-BWkqTc1a.js} +3 -3
- package/web/assets/{KanbanListPage-DM7RJqhx.js → KanbanListPage-GxI1nlON.js} +1 -1
- package/web/assets/{LaunchProjectPage-DXqYYycZ.js → LaunchProjectPage-DKMoGXIC.js} +1 -1
- package/web/assets/{LaunchServicesPage-DCgwv5Pt.js → LaunchServicesPage-6dfxPQMB.js} +1 -1
- package/web/assets/{LogViewer-CFSU-CNC.js → LogViewer-DAzGy_T2.js} +1 -1
- package/web/assets/{OrgKeyPrompt-DQGyKSjb.js → OrgKeyPrompt-CQ087D4g.js} +1 -1
- package/web/assets/{ProcessControls-98bxX4aW.js → ProcessControls-D8uc4x7M.js} +1 -1
- package/web/assets/{ProcessDetailPage-Bb_3RScY.js → ProcessDetailPage-BPxLPGeh.js} +1 -1
- package/web/assets/{ProcessMetrics-fCxhXJgd.js → ProcessMetrics-CBPR5ozp.js} +1 -1
- package/web/assets/{ProjectDetailPage-BNmbecE0.js → ProjectDetailPage-CnZ_CpVU.js} +1 -1
- package/web/assets/{ProjectListPage-v0JqfkPz.js → ProjectListPage-D8Svc5e3.js} +1 -1
- package/web/assets/{RandomJobTestPage-D8q-EREO.js → RandomJobTestPage-BdEiEnSi.js} +1 -1
- package/web/assets/{ScenarioEditorPage-D3EuMMBn.js → ScenarioEditorPage-COrL715B.js} +1 -1
- package/web/assets/{SendToChatDialog-D-x5Pn3F.js → SendToChatDialog-D8YB5RM6.js} +1 -1
- package/web/assets/{ServiceControlsBar-7zKkkVxM.js → ServiceControlsBar-BKwvqgHw.js} +1 -1
- package/web/assets/{ServiceDetailPage-jzYoqD5E.js → ServiceDetailPage-BmPRfQN6.js} +1 -1
- package/web/assets/{ServiceFormPage-DjvOpPyE.js → ServiceFormPage-rVvnwWkb.js} +1 -1
- package/web/assets/{SettingsPage-DKCbzYvF.js → SettingsPage-DmQB6t1_.js} +4 -4
- package/web/assets/{UnlockPage-Cb43bz4p.js → UnlockPage-BgVF3XMO.js} +1 -1
- package/web/assets/{VariablesTable-C3syeLAl.js → VariablesTable-D4_sssPN.js} +1 -1
- package/web/assets/{VaultMigrationPage-Cp-au3d7.js → VaultMigrationPage-BRZJnfVg.js} +1 -1
- package/web/assets/{VersionBadge-CXX3tlKI.js → VersionBadge-Df7iJWvF.js} +1 -1
- package/web/assets/WikiPage-UkaH8BqR.js +1 -0
- package/web/assets/{WikiView-ClZwZbal.js → WikiView-BQqP4b9A.js} +1 -1
- package/web/assets/{add-scalar-classes-D3kr5_fn.js → add-scalar-classes-B9WxxjAm.js} +3 -3
- package/web/assets/{autocomplete-AALxfd-8.js → autocomplete-CtIxw1IN.js} +1 -1
- package/web/assets/{basic-shape-diamond.svg-C4c3Deqh.js → basic-shape-diamond.svg-BErisM9Y.js} +1 -1
- package/web/assets/{basic-shape-hexagon.svg-DrH21BpW.js → basic-shape-hexagon.svg-yC7RoYpa.js} +1 -1
- package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-DqIU3Cmf.js → basic-shape-primary-circle-ellipse-round.svg-DRmanUIO.js} +1 -1
- package/web/assets/{basic-shape-primary-square-rectangle.svg-B3gDug6x.js → basic-shape-primary-square-rectangle.svg-DxuoouSj.js} +1 -1
- package/web/assets/{basic-shape-shield.svg-DdNJhKim.js → basic-shape-shield.svg-Cy_Frn-W.js} +1 -1
- package/web/assets/{browser-IqQiUipW.js → browser-Dj3qxJqB.js} +1 -1
- package/web/assets/{browser-DlwaOVwW.js → browser-h0mxWbci.js} +1 -1
- package/web/assets/{card-q6s0jc6V.js → card-nJdNoKgd.js} +1 -1
- package/web/assets/{checkbox-BP6nucdt.js → checkbox-CTw-YDe_.js} +1 -1
- package/web/assets/{chip-zQCMXVbm.js → chip-DwSSTlaC.js} +1 -1
- package/web/assets/{client-BC-o8Mr9.js → client-DYNnTrNm.js} +1 -1
- package/web/assets/{cloud-chat.store-387arRb5.js → cloud-chat.store-_qILavCL.js} +1 -1
- package/web/assets/{cloud-session-yejC3TfS.js → cloud-session-Ml5g5J1-.js} +1 -1
- package/web/assets/{column-ClizzdF5.js → column-Bc4-F_tF.js} +1 -1
- package/web/assets/{computer-device-desktop-monitor.svg-D28gfKH3.js → computer-device-desktop-monitor.svg-TLZAKrIM.js} +1 -1
- package/web/assets/{computer-device-desktop.svg-BierhytR.js → computer-device-desktop.svg-YRcL_Qxn.js} +1 -1
- package/web/assets/{computer-device-laptop.svg-Buh46ofO.js → computer-device-laptop.svg-CZUEbqra.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-DWgP259U.js → computer-device-mobile-phone-android-samsung-back.svg-CcsmeFGb.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-android-samsung.svg-BlulLqG-.js → computer-device-mobile-phone-android-samsung.svg-CXjVvTBT.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-CwAgL_XU.js → computer-device-mobile-phone-iphone-x-back.svg-BQQXUoZZ.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-iphone-x.svg-CGZk25hI.js → computer-device-mobile-phone-iphone-x.svg-CG8VbAP-.js} +1 -1
- package/web/assets/{computer-device-mobile-tablet-touch.svg-BW41ZuCA.js → computer-device-mobile-tablet-touch.svg-DDMUt0S4.js} +1 -1
- package/web/assets/{computer-device-mobile-tablet.svg-BXG04cxV.js → computer-device-mobile-tablet.svg-CBXtF47n.js} +1 -1
- package/web/assets/{computer-device-network-ethernet-cat6.svg-BKUwbZI3.js → computer-device-network-ethernet-cat6.svg-ObjUhwds.js} +1 -1
- package/web/assets/{computer-device-network-lan-www.svg-o3B9PLqQ.js → computer-device-network-lan-www.svg-NGYEGuba.js} +1 -1
- package/web/assets/{computer-device-network-wifi-connection.svg-CWz616VA.js → computer-device-network-wifi-connection.svg-CSnNdKGm.js} +1 -1
- package/web/assets/{computer-device-network-wifi-router.svg-C_Uxv8x_.js → computer-device-network-wifi-router.svg-CG7iHt_n.js} +1 -1
- package/web/assets/{cssMode-trDHQWjr.js → cssMode-Bclh_xI1.js} +1 -1
- package/web/assets/{divider-ER7evOrG.js → divider-Bb31-CFf.js} +1 -1
- package/web/assets/{docx-preview-DaBMrB0t.js → docx-preview-seOy1U3d.js} +1 -1
- package/web/assets/{ecology-science-erlenmeyer-flask.svg-TilKtHh2.js → ecology-science-erlenmeyer-flask.svg-B8emvJ_p.js} +1 -1
- package/web/assets/{fieldset-BK4Kpi7y.js → fieldset-Czp1Leik.js} +1 -1
- package/web/assets/{freemarker2-CPBy2gHY.js → freemarker2-D87vjb6-.js} +1 -1
- package/web/assets/{handlebars-sFv_MRko.js → handlebars-CjY4u0vA.js} +1 -1
- package/web/assets/{html-CvDf5B_n.js → html-C5pOjLe-.js} +1 -1
- package/web/assets/{htmlMode-CKhs4g6W.js → htmlMode-CunB4Bjm.js} +1 -1
- package/web/assets/{image-flash-lightning.svg-CkgasY6E.js → image-flash-lightning.svg-7dRFt_k5.js} +1 -1
- package/web/assets/{image-picture-flower.svg-Csk-7jkE.js → image-picture-flower.svg-ATG6mf9B.js} +1 -1
- package/web/assets/{index-CdghDQiK.js → index-BMuqGGPP.js} +35 -35
- package/web/assets/{index-BmdsyJ54.css → index-DWQLzWm4.css} +1 -1
- package/web/assets/{interface-alert-exclamation-diamond.svg-rH1JAriw.js → interface-alert-exclamation-diamond.svg-DuAtIVtT.js} +1 -1
- package/web/assets/{interface-alert-exclamation-triangle-warning.svg-BuZLBc2z.js → interface-alert-exclamation-triangle-warning.svg-Bg9-FBLP.js} +1 -1
- package/web/assets/{interface-alert-information-circle.svg-D6i0hGVN.js → interface-alert-information-circle.svg-C5etvhA3.js} +1 -1
- package/web/assets/{interface-award-crown.svg-7Wu9-VKO.js → interface-award-crown.svg-zuAFLs7y.js} +1 -1
- package/web/assets/{interface-bookmark.svg-CkLVcfT6.js → interface-bookmark-tag.svg-C3EKMHOq.js} +1 -1
- package/web/assets/{interface-bookmark-tag.svg-CPiMqQ77.js → interface-bookmark.svg-CfBz0NE3.js} +1 -1
- package/web/assets/{interface-calendar-date-one.svg-CFSXAk1b.js → interface-calendar-date-one.svg-DGYz2Prk.js} +1 -1
- package/web/assets/{interface-content-book-open-pages.svg-CC4c9Opt.js → interface-content-book-open-pages.svg-DGiJpxy1.js} +1 -1
- package/web/assets/{interface-content-book-page.svg-DxpVNOOq.js → interface-content-book-page.svg-DydK46P0.js} +1 -1
- package/web/assets/{interface-content-file.svg-CTaWk4im.js → interface-content-file.svg-D0pUOvAN.js} +1 -1
- package/web/assets/{interface-content-folder.svg-uVUoz9w-.js → interface-content-folder.svg-DiJ3Pfaa.js} +1 -1
- package/web/assets/interface-content-folder.svg-bb6GV0G0.js +1 -0
- package/web/assets/{interface-copy-clipboard.svg-BZIxAN3r.js → interface-copy-clipboard.svg-Dl3aROYy.js} +1 -1
- package/web/assets/{interface-edit-attachment.svg-DDzPxeNm.js → interface-edit-attachment.svg-UmDFMIt5.js} +1 -1
- package/web/assets/{interface-edit-binocular.svg-CZsgbA--.js → interface-edit-binocular.svg-Bp_8Pfer.js} +1 -1
- package/web/assets/{interface-edit-magic-wand.svg-qmz7k4l6.js → interface-edit-magic-wand.svg-B2A8V7mt.js} +1 -1
- package/web/assets/{interface-edit-tool-paint-roller.svg-DWE25KT2.js → interface-edit-tool-paint-roller.svg-DKjdsVsS.js} +1 -1
- package/web/assets/{interface-edit-tool-pencil.svg-DpK1C2tO.js → interface-edit-tool-pencil.svg-DuUybI4h.js} +1 -1
- package/web/assets/{interface-favorite-award.svg-CLHMWnh1.js → interface-favorite-award.svg-DHeTFQv8.js} +1 -1
- package/web/assets/{interface-favorite-flag.svg-CHGIAa-e.js → interface-favorite-flag.svg-kKzUSQkq.js} +1 -1
- package/web/assets/{interface-favorite-heart.svg-ymL9Qidy.js → interface-favorite-heart.svg-CqMgA2mm.js} +1 -1
- package/web/assets/{interface-favorite-star.svg-C4JDKdUr.js → interface-favorite-star.svg-CuLj8HV6.js} +1 -1
- package/web/assets/{interface-favorite-stars-sparkles.svg-DRixMNWJ.js → interface-favorite-stars-sparkles.svg-lFQTnGOR.js} +1 -1
- package/web/assets/{interface-hierarchy-flowchart.svg-DozpERYh.js → interface-hierarchy-flowchart.svg-CBbliSZq.js} +1 -1
- package/web/assets/{interface-home-house.svg-DpUEVY7I.js → interface-home-house.svg-BoFlxzre.js} +1 -1
- package/web/assets/{interface-hyperlink.svg-BI9P67ny.js → interface-hyperlink.svg-DcKs1Vcm.js} +1 -1
- package/web/assets/{interface-lighting-brightness.svg-B6WWS4kG.js → interface-lighting-brightness.svg-BSNKEyEg.js} +1 -1
- package/web/assets/{interface-lock-closed.svg-BBQ9XM_j.js → interface-lock-closed.svg-DSP-B9Ze.js} +1 -1
- package/web/assets/{interface-lock-open-unlock.svg-GkTO8GmV.js → interface-lock-open-unlock.svg-Bzg-oBHY.js} +1 -1
- package/web/assets/{interface-login-key.svg--v2ZJH3Q.js → interface-login-key.svg-DG61Q1lR.js} +1 -1
- package/web/assets/{interface-search.svg-CidqkApV.js → interface-search.svg-CODjdPxd.js} +1 -1
- package/web/assets/{interface-setting-cog.svg-DVZePAV3.js → interface-setting-cog.svg-CgiaBO1E.js} +1 -1
- package/web/assets/{interface-share-megaphone-bullhorn.svg-BFn_RMqc.js → interface-share-megaphone-bullhorn.svg-DM0PsgtH.js} +1 -1
- package/web/assets/{interface-share-rocket.svg-BvWSz0s2.js → interface-share-rocket.svg-B0geTs35.js} +1 -1
- package/web/assets/{interface-share-satellite.svg-tqNCB74Z.js → interface-share-satellite.svg-v9Q6QwAp.js} +1 -1
- package/web/assets/{interface-share-space-ship.svg-BmB824fS.js → interface-share-space-ship.svg-CLdqgzgZ.js} +1 -1
- package/web/assets/{interface-share.svg-CBZLrrF9.js → interface-share.svg-Cx3VhLuj.js} +1 -1
- package/web/assets/{interface-signal-square.svg-C088p9NZ.js → interface-signal-square.svg-By_pQLw8.js} +1 -1
- package/web/assets/{interface-time-clock-circle.svg-DubKvXWQ.js → interface-time-clock-circle.svg-Co3P-TM3.js} +1 -1
- package/web/assets/{interface-time-hour-glass.svg-6GComyAL.js → interface-time-hour-glass.svg-BYSOzVeD.js} +1 -1
- package/web/assets/{interface-users-multiple.svg-ja6OEhK_.js → interface-users-multiple.svg-moFZaev3.js} +1 -1
- package/web/assets/{interface-weather-moon.svg-BnfLL03K.js → interface-weather-moon.svg-DhyTNivv.js} +1 -1
- package/web/assets/{javascript-DMRS72rt.js → javascript-B1fZNcy6.js} +1 -1
- package/web/assets/{jsonMode--8QdTWx_.js → jsonMode-BxZ6OjkS.js} +1 -1
- package/web/assets/{liquid-OaGt-c-G.js → liquid-B58z0z3s.js} +1 -1
- package/web/assets/{lspLanguageFeatures-B6AaNVcR.js → lspLanguageFeatures-VksJLqpV.js} +1 -1
- package/web/assets/{mail-chat-bubble-square.svg-D0WUmEWq.js → mail-chat-bubble-square.svg-DU4TDENX.js} +1 -1
- package/web/assets/{mail-send-email-paper-airplane.svg--9oR8FgG.js → mail-send-email-paper-airplane.svg-jk90Puk3.js} +1 -1
- package/web/assets/{mail-send-envelope.svg-D7zYusS0.js → mail-send-envelope.svg-CrEPc3pm.js} +1 -1
- package/web/assets/{mdx-ChDcRRYd.js → mdx-l-DSKi30.js} +1 -1
- package/web/assets/{minus-lcNwQ3xr.js → minus-CjETE6Jb.js} +1 -1
- package/web/assets/{modal-TVJrDDCj.js → modal-D2-cZ2mf.js} +1 -1
- package/web/assets/modal-DmgVDXcS.js +1 -0
- package/web/assets/{money-cashier-receipt.svg-DzX-iwUT.js → money-cashier-receipt.svg-veUsiwvj.js} +1 -1
- package/web/assets/{money-currency-dollar-pay.svg-BFX_YTDc.js → money-currency-dollar-pay.svg-C5PNkn4j.js} +1 -1
- package/web/assets/{money-graph-arrow-increase.svg-C16MfYnR.js → money-graph-arrow-increase.svg-BkCcnTWU.js} +1 -1
- package/web/assets/{money-graph-bar-chart-increase.svg-BGG0yv-f.js → money-graph-bar-chart-increase.svg-BDiFSuKt.js} +1 -1
- package/web/assets/{multiselect-DcAoSG6S.js → multiselect-CDBfo7-0.js} +1 -1
- package/web/assets/{nature-ecology-leaf.svg-DiIaC6NX.js → nature-ecology-leaf.svg-CHyv9oDB.js} +1 -1
- package/web/assets/{password-BZlCIV8S.js → password-BYosjMhB.js} +1 -1
- package/web/assets/{phone-telephone.svg-udmmRh0q.js → phone-telephone.svg-Ce1dgyK9.js} +1 -1
- package/web/assets/{plus-CwmVHUki.js → plus-CVoE_j-e.js} +1 -1
- package/web/assets/process.store-BsCJ-VuI.js +1 -0
- package/web/assets/{programming-bug.svg-xc1RtL3c.js → programming-bug.svg-D87My2Ok.js} +1 -1
- package/web/assets/{programming-cloud.svg-axQALbJB.js → programming-cloud.svg-jUe8apKw.js} +1 -1
- package/web/assets/{programming-computer-database-server.svg-BVTqxH42.js → programming-computer-database-server.svg-D4etrIBX.js} +1 -1
- package/web/assets/{programming-computer-database.svg-B-CECn7V.js → programming-computer-database.svg-BtfkmLTx.js} +1 -1
- package/web/assets/{programming-module-four-layout.svg-icO9mDmE.js → programming-module-four-layout.svg-BkzsDKDq.js} +1 -1
- package/web/assets/{programming-module-three.svg-D2zllUcw.js → programming-module-three.svg-CpzTvjGS.js} +1 -1
- package/web/assets/{programming-module.svg-gs4eO8gC.js → programming-module.svg-wyvB3tSR.js} +1 -1
- package/web/assets/{programming-script-code.svg-BGMrS9je.js → programming-script-code.svg-Dek4khNq.js} +1 -1
- package/web/assets/{python-C1ZGhTnT.js → python-IeHrvMxp.js} +1 -1
- package/web/assets/{razor-Dxwwpjwp.js → razor-CMgDmoNn.js} +1 -1
- package/web/assets/router-KIdzwvCZ.js +1 -0
- package/web/assets/settings-scope-D8l1sq9K.js +1 -0
- package/web/assets/{settings.store-Da4jL17l.js → settings.store-VVqF8QkO.js} +1 -1
- package/web/assets/{shopping-cart.svg-DajW_J8z.js → shopping-cart.svg-DeBhxyDX.js} +1 -1
- package/web/assets/{shopping-gift-present.svg-yAHWXZYl.js → shopping-gift-present.svg-Bt0oKBk9.js} +1 -1
- package/web/assets/{shopping-shipping-box-parcel-package.svg-BmpCCkbe.js → shopping-shipping-box-parcel-package.svg-BEQNmjMi.js} +1 -1
- package/web/assets/{src-CabNenEM.js → src-C3dPv05m.js} +1 -1
- package/web/assets/{src-C-5koINO.js → src-CJFQ3yWc.js} +1 -1
- package/web/assets/{src-LFVDgykP.js → src-Cgn_TWXn.js} +3 -3
- package/web/assets/{tabpanel-D8XwziwN.js → tabpanel-B8oBjoSG.js} +1 -1
- package/web/assets/{tag-new-circle.svg-BHHc5iei.js → tag-new-circle.svg-B1i0Y1yt.js} +1 -1
- package/web/assets/{toggleswitch-CJCNFliH.js → toggleswitch-CcQEgLiT.js} +1 -1
- package/web/assets/{travel-map-earth-globe.svg-CHj70cli.js → travel-map-earth-globe.svg-CB5sqhKh.js} +1 -1
- package/web/assets/trpc-B1bTQz_t.js +1 -0
- package/web/assets/{tsMode-DHXchBsw.js → tsMode-DoUs-yH0.js} +1 -1
- package/web/assets/{typescript-BVTudzDT.js → typescript-fw9OMJ0N.js} +1 -1
- package/web/assets/useAiChatDrawer-BpR9XWop.js +1 -0
- package/web/assets/{useCloudOrg-BN-OgVim.js → useCloudOrg-CRpEZ-iE.js} +1 -1
- package/web/assets/{useProjectCatalog-sUfCxDEh.js → useProjectCatalog-mk8A95KQ.js} +1 -1
- package/web/assets/{useProjectCloudOrg-D1GcLai_.js → useProjectCloudOrg-CKgvcUWI.js} +1 -1
- package/web/assets/{xml-5T1ybYUZ.js → xml-Df6_yGan.js} +1 -1
- package/web/assets/{yaml-w_H4D4RN.js → yaml-LMvM57fn.js} +1 -1
- package/web/index.html +2 -2
- package/chunk-SP3IC2TR.js.map +0 -1
- package/chunk-TNBMCKQX.js.map +0 -1
- package/node-B4T3JMM3.js.map +0 -1
- package/src-PF23DMAB.js.map +0 -1
- package/web/assets/AiChatPage-C1FbL-Tb.js +0 -1
- package/web/assets/CloudAccountPage-CsNnjZQN.js +0 -1
- package/web/assets/WikiPage-D1at3ltm.js +0 -1
- package/web/assets/interface-content-folder.svg-BYgaYshM.js +0 -1
- package/web/assets/modal-4qFfZ_TY.js +0 -1
- package/web/assets/process.store-C8qfdRYx.js +0 -1
- package/web/assets/router-HZS_HREn.js +0 -1
- package/web/assets/settings-scope-DUmfNusx.js +0 -1
- package/web/assets/trpc-BeVJWlZK.js +0 -1
- package/web/assets/useAiChatDrawer-CFqm3BZi.js +0 -1
- /package/{chat-RWOZHXBX.js.map → chat-OXRRBDB3.js.map} +0 -0
- /package/{companion-QNW7XA6X.js.map → companion-JQGNL4U7.js.map} +0 -0
|
@@ -3,9 +3,10 @@ import {
|
|
|
3
3
|
startClaudeCodeSession,
|
|
4
4
|
startCliSession,
|
|
5
5
|
startCodexSession
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-BDVQB5RK.js";
|
|
7
|
+
import "./chunk-PSTMO7EE.js";
|
|
8
8
|
import "./chunk-MD3VW4HQ.js";
|
|
9
|
+
import "./chunk-B7MABGQN.js";
|
|
9
10
|
import "./chunk-BHLCBARP.js";
|
|
10
11
|
import "./chunk-F3HKV5AU.js";
|
|
11
12
|
import "./chunk-NDO5VFZY.js";
|
|
@@ -15,4 +16,4 @@ export {
|
|
|
15
16
|
startCliSession,
|
|
16
17
|
startCodexSession
|
|
17
18
|
};
|
|
18
|
-
//# sourceMappingURL=chat-
|
|
19
|
+
//# sourceMappingURL=chat-OXRRBDB3.js.map
|
|
@@ -98,11 +98,58 @@ function stampConsole(startedAt = Date.now()) {
|
|
|
98
98
|
target.__runeyaStamped = false;
|
|
99
99
|
};
|
|
100
100
|
}
|
|
101
|
+
|
|
102
|
+
// ../../packages/shared/src/node/cli-invocation.ts
|
|
103
|
+
import { execFile as execFile2, execFileSync } from "child_process";
|
|
104
|
+
import { existsSync as existsSync2, readFileSync } from "fs";
|
|
105
|
+
import { dirname as dirname2, resolve as resolvePath } from "path";
|
|
106
|
+
function resolveCliInvocation(cli, args = []) {
|
|
107
|
+
if (process.platform !== "win32") return { command: cli, args };
|
|
108
|
+
if (/\.exe$/i.test(cli)) return { command: cli, args };
|
|
109
|
+
let shim = cli;
|
|
110
|
+
if (!cli.includes("\\") && !cli.includes("/")) {
|
|
111
|
+
let found = [];
|
|
112
|
+
try {
|
|
113
|
+
found = execFileSync("where", [cli], { encoding: "utf-8", timeout: 5e3, windowsHide: true }).split(/\r?\n/).map((l) => l.trim()).filter(Boolean);
|
|
114
|
+
} catch {
|
|
115
|
+
}
|
|
116
|
+
const exe = found.find((f) => /\.exe$/i.test(f));
|
|
117
|
+
if (exe) return { command: exe, args };
|
|
118
|
+
shim = found.find((f) => /\.cmd$/i.test(f)) ?? found[0] ?? cli;
|
|
119
|
+
}
|
|
120
|
+
if (/\.exe$/i.test(shim)) return { command: shim, args };
|
|
121
|
+
if (/\.cmd$/i.test(shim) && existsSync2(shim)) {
|
|
122
|
+
try {
|
|
123
|
+
const content = readFileSync(shim, "utf-8");
|
|
124
|
+
const m = content.match(/%~?dp0%?\\?([^"\s]+\.js)/i);
|
|
125
|
+
if (m?.[1]) {
|
|
126
|
+
const entry = resolvePath(dirname2(shim), m[1].replace(/^\\+/, ""));
|
|
127
|
+
if (existsSync2(entry)) return { command: process.execPath, args: [entry, ...args] };
|
|
128
|
+
}
|
|
129
|
+
} catch {
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
const comspec = process.env["ComSpec"] || process.env["COMSPEC"] || "cmd.exe";
|
|
133
|
+
return { command: comspec, args: ["/d", "/s", "/c", shim, ...args] };
|
|
134
|
+
}
|
|
135
|
+
function whichCommand() {
|
|
136
|
+
return process.platform === "win32" ? "where" : "which";
|
|
137
|
+
}
|
|
138
|
+
async function isCliAvailable(cli, timeoutMs = 5e3) {
|
|
139
|
+
const { command, args } = resolveCliInvocation(cli, ["--version"]);
|
|
140
|
+
return new Promise((resolve) => {
|
|
141
|
+
execFile2(command, args, { timeout: timeoutMs, windowsHide: true }, (err) => resolve(!err));
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
|
|
101
145
|
export {
|
|
102
|
-
appendToPath,
|
|
103
146
|
ensureNodeBinOnPath,
|
|
104
|
-
|
|
147
|
+
appendToPath,
|
|
105
148
|
readLoginShellPath,
|
|
106
|
-
|
|
149
|
+
ensureUserBinsOnPath,
|
|
150
|
+
stampConsole,
|
|
151
|
+
resolveCliInvocation,
|
|
152
|
+
whichCommand,
|
|
153
|
+
isCliAvailable
|
|
107
154
|
};
|
|
108
|
-
//# sourceMappingURL=
|
|
155
|
+
//# sourceMappingURL=chunk-B7MABGQN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../packages/shared/src/node/node-path.ts","../../../packages/shared/src/node/user-path.ts","../../../packages/shared/src/node/log-timestamps.ts","../../../packages/shared/src/node/cli-invocation.ts"],"sourcesContent":["import { dirname, delimiter } from 'node:path';\n\n/**\n * Garantit que le répertoire du binaire Node est dans le `PATH` des services.\n *\n * Un raccourci de bureau n'hérite pas du `PATH` d'un shell de connexion : il\n * reçoit celui de la session graphique, où les gestionnaires de version (n, nvm,\n * fnm, volta, brew) ne figurent pas. Node, lui, est lancé par chemin absolu et\n * démarre très bien — mais `npm`, `npx`, `yarn` et `corepack`, qui vivent à côté\n * de lui, deviennent introuvables. Un service échoue alors sur un message qui ne\n * dit rien de sa cause : « cannot find package manager binary ».\n *\n * Le répertoire est ajouté en QUEUE : ce que la machine a déjà choisi de mettre\n * devant garde la main, et un `PATH` déjà complet ne change pas.\n */\nexport function ensureNodeBinOnPath(environment: NodeJS.ProcessEnv = process.env): void {\n appendToPath(dirname(process.execPath), environment);\n}\n\n/**\n * Ajoute un répertoire en queue du `PATH`, sans doublon ni séparateur vide.\n */\nexport function appendToPath(dir: string, environment: NodeJS.ProcessEnv = process.env): void {\n if (!dir) return;\n const current = environment['PATH'] ?? '';\n const entries = current.split(delimiter).filter(Boolean);\n if (entries.includes(dir)) return;\n environment['PATH'] = entries.length > 0 ? `${current}${delimiter}${dir}` : dir;\n}\n","import { execFile } from 'node:child_process';\nimport { promisify } from 'node:util';\nimport { homedir } from 'node:os';\nimport { existsSync, statSync } from 'node:fs';\nimport { join, delimiter } from 'node:path';\nimport { appendToPath } from './node-path.js';\n\nconst execFileAsync = promisify(execFile);\n\n/**\n * Marqueur : un `.zshrc` interactif écrit volontiers sur stdout (bannières,\n * gestionnaires de version, `motd`). Sans balise, on ne sait pas quelle ligne\n * est le `PATH`.\n */\nconst MARKER = '__RUNEYA_PATH__';\n\n/** Le profil de l'utilisateur peut être long à charger — mais pas éternel. */\nconst SHELL_TIMEOUT_MS = 3000;\n\n/**\n * Emplacements où un CLI utilisateur s'installe sans passer par le système.\n * Filet de sécurité quand le shell de connexion n'a rien donné : on ne devine\n * pas les gestionnaires de version (chemins versionnés), seulement le banal.\n */\nfunction commonUserBins(home: string): string[] {\n return [\n join(home, '.local', 'bin'),\n join(home, 'bin'),\n join(home, '.npm-global', 'bin'),\n join(home, '.bun', 'bin'),\n join(home, '.cargo', 'bin'),\n '/opt/homebrew/bin',\n '/usr/local/bin',\n ];\n}\n\n/**\n * Demande son `PATH` au shell de connexion de l'utilisateur.\n *\n * Un raccourci de bureau reçoit le `PATH` de la session graphique, pas celui du\n * shell : `~/.local/bin`, nvm, fnm, volta, mise, asdf… n'y figurent pas. Le CLI\n * installé par l'utilisateur devient alors introuvable, et l'agent le déclare\n * simplement « non disponible ».\n *\n * Renvoie `null` en cas d'échec (Windows, pas de `SHELL`, timeout, profil qui\n * plante) : l'absence de réponse ne doit jamais empêcher l'agent de démarrer.\n */\nexport async function readLoginShellPath(): Promise<string | null> {\n if (process.platform === 'win32') return null;\n\n const shell = process.env['SHELL'];\n if (!shell || !existsSync(shell)) return null;\n\n try {\n // `-l -i` : le `PATH` d'un utilisateur vit aussi bien dans le profil de\n // connexion que dans le fichier interactif (`.zshrc`, `.bashrc`).\n // `shell: false` : le shell EST le programme lancé, pas l'interpréteur.\n const { stdout } = await execFileAsync(shell, ['-l', '-i', '-c', `echo \"${MARKER}$PATH\"`], {\n timeout: SHELL_TIMEOUT_MS,\n shell: false,\n encoding: 'utf8',\n maxBuffer: 1024 * 1024,\n env: { ...process.env, TERM: 'dumb' },\n });\n\n const line = stdout.split('\\n').find(l => l.includes(MARKER));\n if (!line) return null;\n\n const value = line.slice(line.indexOf(MARKER) + MARKER.length).trim();\n return value.length > 0 ? value : null;\n } catch {\n return null;\n }\n}\n\n/**\n * Complète le `PATH` de l'agent avec ce que le shell de connexion connaît, puis\n * avec les emplacements utilisateur usuels qui existent réellement sur disque.\n *\n * Tout est ajouté EN QUEUE, comme pour Node : ce que la machine a déjà mis\n * devant garde la main, et un `PATH` déjà complet ne change pas.\n */\nexport async function ensureUserBinsOnPath(\n environment: NodeJS.ProcessEnv = process.env,\n home: string = homedir(),\n): Promise<void> {\n const shellPath = await readLoginShellPath();\n if (shellPath) {\n for (const entry of shellPath.split(delimiter).filter(Boolean)) {\n appendToPath(entry, environment);\n }\n }\n\n for (const dir of commonUserBins(home)) {\n if (isDirectory(dir)) appendToPath(dir, environment);\n }\n}\n\nfunction isDirectory(path: string): boolean {\n try {\n return statSync(path).isDirectory();\n } catch {\n return false;\n }\n}\n","/**\n * Horodate ce que le process écrit sur la console, en temps écoulé depuis son\n * démarrage.\n *\n * Les 300 et quelques appels à `console.log` du serveur, de l'agent et du CLI\n * n'ont pas à être réécrits : on enveloppe `console` une fois, au démarrage, et\n * tout ce qui passe par lui est daté — jusqu'aux bibliothèques tierces.\n *\n * Le delta plutôt que l'heure : ces journaux servent surtout à comprendre ce qui\n * prend du temps au sein d'un même lancement, et « +1.204s » se lit sans\n * soustraction mentale. L'heure absolue reste disponible dans le journal\n * d'audit, qui, lui, sert à recouper avec le cloud.\n */\n\n/**\n * Une ligne qui ne dit rien à dater : une ligne vide, ou un morceau d'encadré.\n *\n * La bannière de démarrage est dessinée ligne à ligne ; un horodatage devant\n * chacune casse l'alignement des colonnes et n'apprend rien — elles sont toutes\n * écrites dans la même milliseconde.\n */\nfunction isDecorative(args: unknown[]): boolean {\n if (args.length === 0) return true;\n const first = args[0];\n if (typeof first !== 'string') return false;\n const trimmed = first.trim();\n return trimmed === '' || /^[┌│└├┬┴┼─┐┘┤]/.test(trimmed);\n}\n\nconst LEVELS = ['log', 'info', 'warn', 'error', 'debug'] as const;\n\n/** Le temps écoulé, cadré pour que les lignes s'alignent en colonne. */\nfunction formatElapsed(startedAt: number, now: number): string {\n const seconds = (now - startedAt) / 1000;\n return `+${seconds.toFixed(3)}s`.padStart(10);\n}\n\n/**\n * Enveloppe `console`. Rend une fonction qui remet l'original en place — les\n * tests en ont besoin, et un mode dont la sortie est lue par un script aussi.\n *\n * Appelé deux fois, le second appel ne fait rien : sans cette garde, deux\n * horodatages se cumuleraient sur chaque ligne.\n */\nexport function stampConsole(startedAt: number = Date.now()): () => void {\n const target = console as unknown as Record<string, unknown> & { __runeyaStamped?: boolean };\n if (target.__runeyaStamped) return () => {};\n target.__runeyaStamped = true;\n\n const originals = LEVELS.map((level) => {\n const original = console[level].bind(console);\n console[level] = (...args: unknown[]) => (\n isDecorative(args)\n ? original(...args)\n : original(formatElapsed(startedAt, Date.now()), ...args)\n );\n return [level, original] as const;\n });\n\n return () => {\n for (const [level, original] of originals) console[level] = original;\n target.__runeyaStamped = false;\n };\n}\n","import { execFile, execFileSync } from 'node:child_process';\nimport { existsSync, readFileSync } from 'node:fs';\nimport { dirname, resolve as resolvePath } from 'node:path';\n\nexport interface CliInvocation {\n command: string;\n args: string[];\n}\n\n/**\n * Comment lancer un CLI global (`claude`, `codex`) sur la plateforme courante.\n *\n * Windows : un CLI installé globalement par npm n'est pas un `.exe` mais un\n * shim `claude.cmd`. Ni `child_process.spawn(..., { shell: false })` ni\n * `pty.spawn()` ne savent le lancer — node-pty échoue sur « File not found:\n * claude ». Passer par `cmd.exe /c` fonctionnerait mais abîme les arguments\n * (le prompt système contient guillemets, retours à la ligne et `%`), donc on\n * résout le point d'entrée JS visé par le shim et on le lance avec le `node`\n * courant.\n *\n * Sur POSIX la commande est rendue telle quelle : rien ne change pour Linux\n * ni macOS.\n */\nexport function resolveCliInvocation(cli: string, args: string[] = []): CliInvocation {\n if (process.platform !== 'win32') return { command: cli, args };\n if (/\\.exe$/i.test(cli)) return { command: cli, args };\n\n // 1. Localiser le shim sur le PATH (sauf si un chemin explicite est donné).\n let shim = cli;\n if (!cli.includes('\\\\') && !cli.includes('/')) {\n let found: string[] = [];\n try {\n // Borné : un `where` qui ne rend pas la main figerait le process appelant,\n // puisque la résolution est synchrone.\n found = execFileSync('where', [cli], { encoding: 'utf-8', timeout: 5_000, windowsHide: true })\n .split(/\\r?\\n/).map((l) => l.trim()).filter(Boolean);\n } catch { /* absent du PATH — laisser le spawn échouer avec son propre message */ }\n const exe = found.find((f) => /\\.exe$/i.test(f));\n if (exe) return { command: exe, args };\n shim = found.find((f) => /\\.cmd$/i.test(f)) ?? found[0] ?? cli;\n }\n if (/\\.exe$/i.test(shim)) return { command: shim, args };\n\n // 2. Extraire le point d'entrée `.js` du shim npm et le lancer avec node.\n if (/\\.cmd$/i.test(shim) && existsSync(shim)) {\n try {\n const content = readFileSync(shim, 'utf-8');\n // Les shims npm écrivent « %~dp0\\...\\cli.js » ; certains outils écrivent\n // « %~dp0%\\...\\cli.js ». Les deux formes mènent au même point d'entrée.\n const m = content.match(/%~?dp0%?\\\\?([^\"\\s]+\\.js)/i);\n if (m?.[1]) {\n const entry = resolvePath(dirname(shim), m[1].replace(/^\\\\+/, ''));\n if (existsSync(entry)) return { command: process.execPath, args: [entry, ...args] };\n }\n } catch { /* on retombe sur l'interpréteur de commandes */ }\n }\n\n // 3. Dernier recours : confier à l'interpréteur de commandes.\n const comspec = process.env['ComSpec'] || process.env['COMSPEC'] || 'cmd.exe';\n return { command: comspec, args: ['/d', '/s', '/c', shim, ...args] };\n}\n\n/**\n * La commande qui dit où vit un exécutable, selon la plateforme.\n *\n * `which` n'existe pas sur Windows ; une détection qui l'appelle y répond\n * toujours « absent », quel que soit l'outil installé.\n */\nexport function whichCommand(): string {\n return process.platform === 'win32' ? 'where' : 'which';\n}\n\n/**\n * `<cli> --version` répond-il ?\n *\n * Le même contrôle vivait côté serveur et côté agent, et les deux lançaient\n * `execFile('claude', …, { shell: false })` : sur Windows, un shim `.cmd` n'est\n * pas lançable ainsi, et la détection répondait « absent » pour un CLI\n * parfaitement installé — l'interface désactivait alors le runner.\n */\nexport async function isCliAvailable(cli: string, timeoutMs = 5_000): Promise<boolean> {\n const { command, args } = resolveCliInvocation(cli, ['--version']);\n return new Promise((resolve) => {\n execFile(command, args, { timeout: timeoutMs, windowsHide: true }, (err) => resolve(!err));\n });\n}\n"],"mappings":"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","names":["delimiter","delimiter","execFile","existsSync","dirname"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
COMPANION_SIGNATURE,
|
|
3
|
+
activeSessionRegistry,
|
|
3
4
|
claudeSessionExists,
|
|
4
5
|
companionSystemNote,
|
|
5
6
|
companionThinkingIds,
|
|
6
7
|
conversationStore,
|
|
7
8
|
deliverToMainConversation,
|
|
8
|
-
emitTurnFinished,
|
|
9
9
|
findClaudeSessionFile,
|
|
10
10
|
forgetAnnouncedTurns,
|
|
11
11
|
forgetCodexTurns,
|
|
@@ -24,7 +24,11 @@ import {
|
|
|
24
24
|
resetRelaunches,
|
|
25
25
|
syncConversationFromClaudeTranscript,
|
|
26
26
|
verifyJwt
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-PSTMO7EE.js";
|
|
28
|
+
import {
|
|
29
|
+
isCliAvailable,
|
|
30
|
+
resolveCliInvocation
|
|
31
|
+
} from "./chunk-B7MABGQN.js";
|
|
28
32
|
import {
|
|
29
33
|
agentManager,
|
|
30
34
|
agentStore,
|
|
@@ -83,8 +87,6 @@ import {
|
|
|
83
87
|
import { z as z5 } from "zod";
|
|
84
88
|
import Anthropic2 from "@anthropic-ai/sdk";
|
|
85
89
|
import OpenAI2 from "openai";
|
|
86
|
-
import { execFile } from "child_process";
|
|
87
|
-
import { promisify } from "util";
|
|
88
90
|
import { fileURLToPath as fileURLToPath2 } from "url";
|
|
89
91
|
|
|
90
92
|
// ../../packages/mcp-server/src/launch.ts
|
|
@@ -2684,14 +2686,16 @@ function getClaudeUsage() {
|
|
|
2684
2686
|
const env2 = { ...process.env };
|
|
2685
2687
|
delete env2["CLAUDECODE"];
|
|
2686
2688
|
let claudeBin = "claude";
|
|
2687
|
-
|
|
2688
|
-
|
|
2689
|
-
|
|
2690
|
-
|
|
2689
|
+
if (process.platform !== "win32") {
|
|
2690
|
+
try {
|
|
2691
|
+
claudeBin = execSync("which claude", { encoding: "utf8" }).trim().split("\n")[0].trim() || "claude";
|
|
2692
|
+
} catch {
|
|
2693
|
+
}
|
|
2691
2694
|
}
|
|
2695
|
+
const invocation = resolveCliInvocation(claudeBin, ["/usage"]);
|
|
2692
2696
|
let term = null;
|
|
2693
2697
|
try {
|
|
2694
|
-
term = pty.spawn(
|
|
2698
|
+
term = pty.spawn(invocation.command, invocation.args, {
|
|
2695
2699
|
name: "xterm-256color",
|
|
2696
2700
|
cols: 200,
|
|
2697
2701
|
rows: 40,
|
|
@@ -2848,7 +2852,8 @@ function getCodexUsageEntries() {
|
|
|
2848
2852
|
return new Promise((resolve3, reject) => {
|
|
2849
2853
|
let term = null;
|
|
2850
2854
|
try {
|
|
2851
|
-
|
|
2855
|
+
const invocation = resolveCliInvocation("codex", []);
|
|
2856
|
+
term = pty2.spawn(invocation.command, invocation.args, {
|
|
2852
2857
|
name: "xterm-256color",
|
|
2853
2858
|
cols: 220,
|
|
2854
2859
|
rows: 40,
|
|
@@ -2917,195 +2922,6 @@ function getCodexUsageEntries() {
|
|
|
2917
2922
|
});
|
|
2918
2923
|
}
|
|
2919
2924
|
|
|
2920
|
-
// ../server/src/services/active-session-registry.ts
|
|
2921
|
-
var MAX_BUFFER = 5e3;
|
|
2922
|
-
var PERSIST_DEBOUNCE_MS = 100;
|
|
2923
|
-
var ActiveSessionRegistry = class {
|
|
2924
|
-
sessions = /* @__PURE__ */ new Map();
|
|
2925
|
-
registerClaudeCodeSession(conversationId, proc) {
|
|
2926
|
-
this.assertNoActiveSession(conversationId);
|
|
2927
|
-
const session = {
|
|
2928
|
-
proc,
|
|
2929
|
-
abortController: null,
|
|
2930
|
-
sessionType: "claude-code",
|
|
2931
|
-
conversationId,
|
|
2932
|
-
buffer: [],
|
|
2933
|
-
totalProduced: 0,
|
|
2934
|
-
fullContent: "",
|
|
2935
|
-
parts: [],
|
|
2936
|
-
lastStatus: "",
|
|
2937
|
-
status: "running",
|
|
2938
|
-
persistTimer: null,
|
|
2939
|
-
cleanupTimer: null,
|
|
2940
|
-
notify: /* @__PURE__ */ new Set()
|
|
2941
|
-
};
|
|
2942
|
-
this.sessions.set(conversationId, session);
|
|
2943
|
-
return session;
|
|
2944
|
-
}
|
|
2945
|
-
registerProviderApiSession(conversationId, ac) {
|
|
2946
|
-
this.assertNoActiveSession(conversationId);
|
|
2947
|
-
const session = {
|
|
2948
|
-
proc: null,
|
|
2949
|
-
abortController: ac,
|
|
2950
|
-
sessionType: "provider-api",
|
|
2951
|
-
conversationId,
|
|
2952
|
-
buffer: [],
|
|
2953
|
-
totalProduced: 0,
|
|
2954
|
-
fullContent: "",
|
|
2955
|
-
parts: [],
|
|
2956
|
-
lastStatus: "",
|
|
2957
|
-
status: "running",
|
|
2958
|
-
persistTimer: null,
|
|
2959
|
-
cleanupTimer: null,
|
|
2960
|
-
notify: /* @__PURE__ */ new Set()
|
|
2961
|
-
};
|
|
2962
|
-
this.sessions.set(conversationId, session);
|
|
2963
|
-
return session;
|
|
2964
|
-
}
|
|
2965
|
-
registerDirectProviderApiSession(conversationId) {
|
|
2966
|
-
this.assertNoActiveSession(conversationId);
|
|
2967
|
-
const session = {
|
|
2968
|
-
proc: null,
|
|
2969
|
-
abortController: new AbortController(),
|
|
2970
|
-
sessionType: "provider-api",
|
|
2971
|
-
conversationId,
|
|
2972
|
-
buffer: [],
|
|
2973
|
-
totalProduced: 0,
|
|
2974
|
-
fullContent: "",
|
|
2975
|
-
parts: [],
|
|
2976
|
-
lastStatus: "",
|
|
2977
|
-
status: "running",
|
|
2978
|
-
persistTimer: null,
|
|
2979
|
-
cleanupTimer: null,
|
|
2980
|
-
notify: /* @__PURE__ */ new Set()
|
|
2981
|
-
};
|
|
2982
|
-
this.sessions.set(conversationId, session);
|
|
2983
|
-
return session;
|
|
2984
|
-
}
|
|
2985
|
-
assertNoActiveSession(conversationId) {
|
|
2986
|
-
const existing = this.sessions.get(conversationId);
|
|
2987
|
-
if (existing && existing.status === "running") {
|
|
2988
|
-
throw new Error(`A session is already running for conversation ${conversationId}. Stop it first.`);
|
|
2989
|
-
}
|
|
2990
|
-
}
|
|
2991
|
-
pushEvent(conversationId, event) {
|
|
2992
|
-
if (process.env.RUNEYA_DEBUG) console.log("[chat]: event - ", event.type);
|
|
2993
|
-
const session = this.sessions.get(conversationId);
|
|
2994
|
-
if (!session) return;
|
|
2995
|
-
if (process.env.RUNEYA_DEBUG) console.log("[chat]: event - ", event.type, "session", session.conversationId);
|
|
2996
|
-
if (event.type === "delta") {
|
|
2997
|
-
session.fullContent += event.text;
|
|
2998
|
-
const last = session.parts[session.parts.length - 1];
|
|
2999
|
-
if (last?.type === "text") last.text += event.text;
|
|
3000
|
-
else session.parts.push({ type: "text", text: event.text });
|
|
3001
|
-
this.schedulePersist(session);
|
|
3002
|
-
}
|
|
3003
|
-
if (event.type === "tool_call") {
|
|
3004
|
-
const existing = session.parts.find((p) => p.type === "tool" && p.id === event.id);
|
|
3005
|
-
if (existing) {
|
|
3006
|
-
existing.name = event.name;
|
|
3007
|
-
existing.input = event.input;
|
|
3008
|
-
} else session.parts.push({ type: "tool", id: event.id, name: event.name, input: event.input, rawInput: event.rawInput, pending: true });
|
|
3009
|
-
this.schedulePersist(session);
|
|
3010
|
-
}
|
|
3011
|
-
if (event.type === "tool_result") {
|
|
3012
|
-
const te = session.parts.find((p) => p.type === "tool" && p.id === event.id);
|
|
3013
|
-
if (te) {
|
|
3014
|
-
te.result = event.result;
|
|
3015
|
-
te.isError = event.isError;
|
|
3016
|
-
te.pending = false;
|
|
3017
|
-
} else {
|
|
3018
|
-
session.parts.push({ type: "tool", id: event.id, name: event.name, result: event.result, isError: event.isError, pending: false });
|
|
3019
|
-
}
|
|
3020
|
-
this.schedulePersist(session);
|
|
3021
|
-
}
|
|
3022
|
-
if (event.type === "thinking") {
|
|
3023
|
-
const last = session.parts[session.parts.length - 1];
|
|
3024
|
-
if (last?.type === "thinking") last.text += event.text;
|
|
3025
|
-
else session.parts.push({ type: "thinking", text: event.text });
|
|
3026
|
-
}
|
|
3027
|
-
if (event.type === "status") {
|
|
3028
|
-
session.lastStatus = event.text;
|
|
3029
|
-
}
|
|
3030
|
-
if (session.buffer.length >= MAX_BUFFER) {
|
|
3031
|
-
session.buffer.shift();
|
|
3032
|
-
}
|
|
3033
|
-
if (process.env.RUNEYA_DEBUG) console.log("[chat]: event - ", event.type, "push buffer");
|
|
3034
|
-
session.buffer.push(event);
|
|
3035
|
-
session.totalProduced++;
|
|
3036
|
-
if (process.env.RUNEYA_DEBUG) console.log("[chat]: event - ", event.type, "notify", session.notify.size);
|
|
3037
|
-
for (const cb of session.notify) cb();
|
|
3038
|
-
session.notify.clear();
|
|
3039
|
-
}
|
|
3040
|
-
markDone(conversationId) {
|
|
3041
|
-
if (process.env.RUNEYA_DEBUG) console.log("[chat]: markdone....", conversationId);
|
|
3042
|
-
const session = this.sessions.get(conversationId);
|
|
3043
|
-
if (!session) return;
|
|
3044
|
-
const wasRunning = session.status === "running";
|
|
3045
|
-
session.status = "done";
|
|
3046
|
-
this.persistNow(session);
|
|
3047
|
-
if (wasRunning) emitTurnFinished(conversationId);
|
|
3048
|
-
}
|
|
3049
|
-
get(conversationId) {
|
|
3050
|
-
return this.sessions.get(conversationId);
|
|
3051
|
-
}
|
|
3052
|
-
listActive() {
|
|
3053
|
-
const result = [];
|
|
3054
|
-
for (const session of this.sessions.values()) {
|
|
3055
|
-
result.push({ conversationId: session.conversationId, status: session.status, sessionType: session.sessionType });
|
|
3056
|
-
}
|
|
3057
|
-
return result;
|
|
3058
|
-
}
|
|
3059
|
-
kill(conversationId) {
|
|
3060
|
-
const session = this.sessions.get(conversationId);
|
|
3061
|
-
if (!session) return false;
|
|
3062
|
-
if (session.status === "running") {
|
|
3063
|
-
if (session.agentId && session.agentSpawnId) {
|
|
3064
|
-
agentManager.agentMutation(session.agentId, "ai.kill", { spawnId: session.agentSpawnId }).catch(() => {
|
|
3065
|
-
});
|
|
3066
|
-
}
|
|
3067
|
-
if (session.proc) {
|
|
3068
|
-
try {
|
|
3069
|
-
session.proc.kill();
|
|
3070
|
-
} catch {
|
|
3071
|
-
}
|
|
3072
|
-
}
|
|
3073
|
-
if (session.abortController) {
|
|
3074
|
-
session.abortController.abort();
|
|
3075
|
-
}
|
|
3076
|
-
}
|
|
3077
|
-
return true;
|
|
3078
|
-
}
|
|
3079
|
-
// ── Internal helpers ────────────────────────────────────────────────────
|
|
3080
|
-
schedulePersist(session) {
|
|
3081
|
-
if (session.persistTimer) return;
|
|
3082
|
-
session.persistTimer = setTimeout(() => {
|
|
3083
|
-
session.persistTimer = null;
|
|
3084
|
-
this.persistNow(session);
|
|
3085
|
-
}, PERSIST_DEBOUNCE_MS);
|
|
3086
|
-
}
|
|
3087
|
-
persistNow(session) {
|
|
3088
|
-
if (session.persistTimer) {
|
|
3089
|
-
clearTimeout(session.persistTimer);
|
|
3090
|
-
session.persistTimer = null;
|
|
3091
|
-
}
|
|
3092
|
-
const fullContent = session.fullContent;
|
|
3093
|
-
const parts = session.parts.length > 0 ? [...session.parts] : void 0;
|
|
3094
|
-
conversationStore.updateLastAssistantContent(session.conversationId, fullContent, parts);
|
|
3095
|
-
}
|
|
3096
|
-
cleanupTimers(session) {
|
|
3097
|
-
if (session.persistTimer) {
|
|
3098
|
-
clearTimeout(session.persistTimer);
|
|
3099
|
-
session.persistTimer = null;
|
|
3100
|
-
}
|
|
3101
|
-
if (session.cleanupTimer) {
|
|
3102
|
-
clearTimeout(session.cleanupTimer);
|
|
3103
|
-
session.cleanupTimer = null;
|
|
3104
|
-
}
|
|
3105
|
-
}
|
|
3106
|
-
};
|
|
3107
|
-
var activeSessionRegistry = new ActiveSessionRegistry();
|
|
3108
|
-
|
|
3109
2925
|
// ../server/src/services/scenario-store.ts
|
|
3110
2926
|
function normalizeNode(raw) {
|
|
3111
2927
|
const aiCli = raw.aiCli ?? "claude-code";
|
|
@@ -5257,7 +5073,8 @@ var ClaudeCodeRunner = class {
|
|
|
5257
5073
|
return a;
|
|
5258
5074
|
});
|
|
5259
5075
|
params.onCommand?.(`claude ${displayArgs.join(" ")}`);
|
|
5260
|
-
const
|
|
5076
|
+
const invocation = resolveCliInvocation("claude", args);
|
|
5077
|
+
const proc = spawn(invocation.command, invocation.args, {
|
|
5261
5078
|
windowsHide: true,
|
|
5262
5079
|
stdio: ["pipe", "pipe", "pipe"],
|
|
5263
5080
|
shell: false,
|
|
@@ -5356,7 +5173,8 @@ var CodexAppServerClient = class extends EventEmitter {
|
|
|
5356
5173
|
*/
|
|
5357
5174
|
async connect(runeyaEnv) {
|
|
5358
5175
|
const env2 = { ...process.env, ...runeyaEnv };
|
|
5359
|
-
|
|
5176
|
+
const invocation = resolveCliInvocation("codex", [...resolveMcpArgs(env2), "app-server"]);
|
|
5177
|
+
this.proc = spawn2(invocation.command, invocation.args, {
|
|
5360
5178
|
windowsHide: true,
|
|
5361
5179
|
stdio: ["pipe", "pipe", "pipe"],
|
|
5362
5180
|
env: env2
|
|
@@ -5954,7 +5772,6 @@ ${prompt}`;
|
|
|
5954
5772
|
};
|
|
5955
5773
|
|
|
5956
5774
|
// ../server/src/trpc/routers/chat.ts
|
|
5957
|
-
var execFileAsync = promisify(execFile);
|
|
5958
5775
|
var MessageSchema = z5.object({
|
|
5959
5776
|
role: z5.enum(["user", "assistant"]),
|
|
5960
5777
|
content: z5.string().max(1e5)
|
|
@@ -6662,8 +6479,8 @@ var chatRouter = router({
|
|
|
6662
6479
|
}
|
|
6663
6480
|
}
|
|
6664
6481
|
const [claudeOk, codexOk] = await Promise.all([
|
|
6665
|
-
|
|
6666
|
-
|
|
6482
|
+
isCliAvailable("claude"),
|
|
6483
|
+
isCliAvailable("codex")
|
|
6667
6484
|
]);
|
|
6668
6485
|
return { available: claudeOk, codexAvailable: codexOk };
|
|
6669
6486
|
}),
|
|
@@ -7487,7 +7304,6 @@ export {
|
|
|
7487
7304
|
DescriptionSchema,
|
|
7488
7305
|
OptionalProviderIdSchema,
|
|
7489
7306
|
generateLlmsTxt,
|
|
7490
|
-
activeSessionRegistry,
|
|
7491
7307
|
scenarioStore,
|
|
7492
7308
|
resolveConversationRunDir,
|
|
7493
7309
|
atomicWriteSecure,
|
|
@@ -7512,4 +7328,4 @@ export {
|
|
|
7512
7328
|
startCliSession,
|
|
7513
7329
|
chatRouter
|
|
7514
7330
|
};
|
|
7515
|
-
//# sourceMappingURL=chunk-
|
|
7331
|
+
//# sourceMappingURL=chunk-BDVQB5RK.js.map
|