@runfusion/fusion 0.43.1 → 0.44.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/automation-store-EKXXEE2S.js +10 -0
- package/dist/automation-store-PLNG3X72.js +10 -0
- package/dist/automation-store-RDDYZFUJ.js +10 -0
- package/dist/bin.js +8097 -1796
- package/dist/chunk-2JI3F6MG.js +948 -0
- package/dist/chunk-4L6CLWJC.js +8345 -0
- package/dist/chunk-4VNS5WPM.js +42 -0
- package/dist/chunk-5RGECGQL.js +1139 -0
- package/dist/chunk-6JDLN7IL.js +409 -0
- package/dist/chunk-AICJATVW.js +948 -0
- package/dist/chunk-AWKNRUOR.js +1148 -0
- package/dist/chunk-BHM3UYWS.js +4651 -0
- package/dist/chunk-BMUXDSBF.js +4647 -0
- package/dist/chunk-GETECT6V.js +353 -0
- package/dist/chunk-GUV4QQT3.js +1143 -0
- package/dist/chunk-JKQO7YYZ.js +8369 -0
- package/dist/chunk-LYZVU6UV.js +409 -0
- package/dist/chunk-MAN4WYHO.js +353 -0
- package/dist/chunk-MCUG2Z7M.js +4651 -0
- package/dist/chunk-PSDYB45U.js +948 -0
- package/dist/chunk-RR2HM46R.js +8345 -0
- package/dist/chunk-RXMQ5OMY.js +9226 -0
- package/dist/chunk-S2EVJUY3.js +353 -0
- package/dist/chunk-UXR5XZFZ.js +409 -0
- package/dist/client/.vite/manifest.json +272 -261
- package/dist/client/assets/{AgentDetailView-BGN03dyz.css → AgentDetailView-CanIeYHg.css} +1 -1
- package/dist/client/assets/{AgentDetailView-DKMz3r04.js → AgentDetailView-DxV8pFHX.js} +3 -3
- package/dist/client/assets/{AgentPermissionPolicyEditor-BiY1a4KR.js → AgentPermissionPolicyEditor--YS4iMUY.js} +2 -2
- package/dist/client/assets/AgentsView-BVILQjdS.css +1 -0
- package/dist/client/assets/{AgentsView-Co-k4vjh.js → AgentsView-CTzbcvhK.js} +3 -3
- package/dist/client/assets/ChatView-COygcnyk.js +6 -0
- package/dist/client/assets/CommandCenter-CTaopaC0.css +1 -0
- package/dist/client/assets/CommandCenter-DoKX2HWm.js +56 -0
- package/dist/client/assets/DevServerView-Cyevyvqx.js +1 -0
- package/dist/client/assets/{DirectoryPicker-DTKtd8L2.css → DirectoryPicker-0rspvcMz.css} +1 -1
- package/dist/client/assets/{DirectoryPicker-CkcGjyv0.js → DirectoryPicker-DBdyXEhR.js} +1 -1
- package/dist/client/assets/DocumentsView-BzSMyrns.js +1 -0
- package/dist/client/assets/{EvalsView-CUfyj5GW.js → EvalsView-ikz00o9g.js} +1 -1
- package/dist/client/assets/ExperimentalAgentOnboardingModal-CZ_jbgep.css +1 -0
- package/dist/client/assets/{ExperimentalAgentOnboardingModal-Dau9RTU_.js → ExperimentalAgentOnboardingModal-D-rzCCET.js} +10 -10
- package/dist/client/assets/GoalsView-Bfu1Oy2-.js +2 -0
- package/dist/client/assets/GoalsView-rg9VSIza.css +1 -0
- package/dist/client/assets/{InsightsView-BQPxHxKI.js → InsightsView-Cgmf5nES.js} +1 -1
- package/dist/client/assets/InsightsView-LMv1M1dU.css +1 -0
- package/dist/client/assets/MemoryView-DkEuDKQs.js +2 -0
- package/dist/client/assets/{NodesView-CSMvGwDU.js → NodesView-B_KYfS4o.js} +3 -3
- package/dist/client/assets/{PiExtensionsManager-BtqXF3fl.js → PiExtensionsManager-Dz69kkKs.js} +2 -2
- package/dist/client/assets/PluginManager-DSiHizRD.css +1 -0
- package/dist/client/assets/{PluginManager-CSSDb3VO.js → PluginManager-LHCVcduP.js} +1 -1
- package/dist/client/assets/PullRequestView-3AdbS2a1.css +1 -0
- package/dist/client/assets/{PullRequestView-Bjyfffdu.js → PullRequestView-DBJutLLl.js} +2 -2
- package/dist/client/assets/{ResearchView-CRU_NPho.js → ResearchView-gpn1XcVy.js} +1 -1
- package/dist/client/assets/{SecretsView-Bs8ySyC5.js → SecretsView-B7YqIowt.js} +1 -1
- package/dist/client/assets/SessionTerminal-9l4bdKcn.js +2 -0
- package/dist/client/assets/SessionTerminal-BNgtmXb3.css +1 -0
- package/dist/client/assets/SettingsModal-BGEK9_9A.js +31 -0
- package/dist/client/assets/{SettingsModal-DpAxDq6M.css → SettingsModal-CKv0TJfM.css} +1 -1
- package/dist/client/assets/SettingsModal-CXogw-Er.css +1 -0
- package/dist/client/assets/{SettingsModal-Nw5cTKAK.js → SettingsModal-DIIoHGUH.js} +1 -1
- package/dist/client/assets/{SetupWizardModal-CE79myEy.js → SetupWizardModal-BcVeMxeX.js} +1 -1
- package/dist/client/assets/{SkillsView-Dc8YskAX.js → SkillsView-BxSJ4PHL.js} +1 -1
- package/dist/client/assets/{StashRecoveryView-CqKOFiXT.js → StashRecoveryView-BhFQ2FsP.js} +1 -1
- package/dist/client/assets/{TodoView-BqIRwcZw.js → TodoView-BZpewjy0.js} +2 -2
- package/dist/client/assets/WorkflowNodeEditor-Yn1FRF2v.css +1 -0
- package/dist/client/assets/WorkflowNodeEditor-tWsgCdVt.js +8 -0
- package/dist/client/assets/{addon-fit-B4jkcKk4.js → addon-fit-SnYDEvGm.js} +1 -1
- package/dist/client/assets/{addon-unicode11-Cdne2Sj4.js → addon-unicode11-s5GoZCpi.js} +1 -1
- package/dist/client/assets/{addon-web-links-CRNLzj7m.js → addon-web-links-jjt2f_oV.js} +1 -1
- package/dist/client/assets/{addon-webgl-CeCSULF1.js → addon-webgl-Icn-RnEx.js} +1 -1
- package/dist/client/assets/{app-sEkTyT-w.js → app-BmGA0Hiz.js} +3 -3
- package/dist/client/assets/{app-BffGU_HQ.js → app-CEVYlVuJ.js} +3 -3
- package/dist/client/assets/{app-C8AHhs5N.js → app-CbBFax2C.js} +3 -3
- package/dist/client/assets/{app-B2ZxMfJT.js → app-DORKrGAz.js} +3 -3
- package/dist/client/assets/{app-Ri9Te2Dv.js → app-DQibuQ9z.js} +3 -3
- package/dist/client/assets/app-k76GrQP0.js +13 -0
- package/dist/client/assets/{createLucideIcon-BYvOGRiO.js → createLucideIcon-DmVITl5d.js} +1 -1
- package/dist/client/assets/{dashboard-view-C3SsjXo1.js → dashboard-view-B4LXCv5H.js} +4 -4
- package/dist/client/assets/{dashboard-view-DlKsVySD.js → dashboard-view-BFoyhTYF.js} +1 -1
- package/dist/client/assets/{dashboard-view-BhbN8LPh.js → dashboard-view-Cxzm_eqc.js} +1 -1
- package/dist/client/assets/dashboard-view-_8yfNwju.css +1 -0
- package/dist/client/assets/{folder-open-Bw1mxVfa.js → folder-open-33WGVnbp.js} +1 -1
- package/dist/client/assets/index-Bglw05rM.js +791 -0
- package/dist/client/assets/index-FYgnflWD.css +1 -0
- package/dist/client/assets/shield-alert-CqeGWBUK.js +6 -0
- package/dist/client/assets/{upload-BCmd-1I0.js → upload-C11J2diI.js} +1 -1
- package/dist/client/assets/{users-DO_t3V1p.js → users-a-ELbyyZ.js} +1 -1
- package/dist/client/assets/{vendor-i18n-CV0mwX_-.js → vendor-i18n-DYlSUfot.js} +1 -1
- package/dist/client/assets/vendor-react-BTgM5bbZ.js +49 -0
- package/dist/client/assets/{vendor-reactflow-CRZcPCXF.js → vendor-reactflow-ZasuEfF9.js} +3 -3
- package/dist/client/assets/{vendor-xterm-tcedd2Jt.js → vendor-xterm-ea7-K05z.js} +1 -1
- package/dist/client/assets/{x-CqNX_9E2.js → x-PItWc-wQ.js} +1 -1
- package/dist/client/assets/{zoom-out-CSTHbJgD.js → zoom-out-CzlHv0Kj.js} +1 -1
- package/dist/client/icons/icon-192.png +0 -0
- package/dist/client/icons/icon-512.png +0 -0
- package/dist/client/index.html +6 -6
- package/dist/client/sw.js +1 -1
- package/dist/client/theme-data.css +288 -285
- package/dist/client/version.json +1 -1
- package/dist/droid-cli/package.json +1 -1
- package/dist/droid-cli/src/__tests__/execsync-guard.test.ts +17 -0
- package/dist/droid-cli/src/__tests__/process-manager.test.ts +1 -45
- package/dist/extension.js +4780 -793
- package/dist/extract-zip-WL55Z3AU.js +2497 -0
- package/dist/index.min-CHQ3ABYJ.js +2926 -0
- package/dist/memory-dreams-7USISKVE.js +32 -0
- package/dist/memory-dreams-PBPISUDD.js +32 -0
- package/dist/memory-dreams-XNO2B2QF.js +32 -0
- package/dist/migration-EH2YOCYQ.js +15 -0
- package/dist/migration-PLGTTKL5.js +15 -0
- package/dist/migration-WZEZK22R.js +15 -0
- package/dist/pi-claude-cli/index.ts +47 -8
- package/dist/pi-claude-cli/package.json +4 -1
- package/dist/pi-claude-cli/src/__tests__/acp-dispatch.test.ts +80 -0
- package/dist/pi-claude-cli/src/__tests__/acp-driver.test.ts +423 -0
- package/dist/pi-claude-cli/src/__tests__/execsync-guard.test.ts +14 -0
- package/dist/pi-claude-cli/src/__tests__/process-manager.test.ts +1 -45
- package/dist/pi-claude-cli/src/__tests__/provider.test.ts +0 -1
- package/dist/pi-claude-cli/src/acp-driver.ts +585 -0
- package/dist/pi-claude-cli/src/event-bridge.ts +7 -0
- package/dist/pi-claude-cli/src/mcp-config.ts +29 -0
- package/dist/pi-claude-cli/src/process-manager.ts +6 -38
- package/dist/plugin-sdk/index.d.ts +5179 -5144
- package/dist/plugins/fusion-plugin-acp-runtime/bundled.js +263 -19
- package/dist/plugins/fusion-plugin-acp-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-cli-printing-press/package.json +1 -1
- package/dist/plugins/fusion-plugin-compound-engineering/bundled.js +37 -7
- package/dist/plugins/fusion-plugin-compound-engineering/manifest.json +4 -4
- package/dist/plugins/fusion-plugin-compound-engineering/package.json +1 -1
- package/dist/plugins/fusion-plugin-cursor-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-dependency-graph/package.json +1 -1
- package/dist/plugins/fusion-plugin-droid-runtime/bundled.js +1 -1
- package/dist/plugins/fusion-plugin-droid-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-hermes-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-openclaw-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-paperclip-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-reports/package.json +1 -1
- package/dist/plugins/fusion-plugin-roadmap/package.json +1 -1
- package/dist/plugins/fusion-plugin-whatsapp-chat/package.json +1 -1
- package/dist/plugins/fusion-plugin-whatsapp-chat/src/__tests__/index.test.ts +5 -1
- package/dist/routine-store-GIJ6MXWY.js +10 -0
- package/dist/routine-store-HTVC2PUQ.js +10 -0
- package/dist/routine-store-KGHZBPDF.js +10 -0
- package/package.json +1 -1
- package/skill/fusion/references/engine-tools.md +6 -4
- package/dist/client/assets/AgentsView-DfznJDek.css +0 -1
- package/dist/client/assets/ChatView-BkAG99bj.js +0 -6
- package/dist/client/assets/DevServerView-C6DC0URX.js +0 -1
- package/dist/client/assets/DocumentsView-OCK1Vsw_.js +0 -1
- package/dist/client/assets/ExperimentalAgentOnboardingModal-BNpveCEk.css +0 -1
- package/dist/client/assets/GoalsView-CNLTn0rX.js +0 -2
- package/dist/client/assets/GoalsView-DI66UsjT.css +0 -1
- package/dist/client/assets/InsightsView-C9-mqVvf.css +0 -1
- package/dist/client/assets/MemoryView-D3xQIFjj.js +0 -2
- package/dist/client/assets/PluginManager-UHVLvWWl.css +0 -1
- package/dist/client/assets/PullRequestView-WQIS0zUC.css +0 -1
- package/dist/client/assets/ReliabilityView-QKMUDebT.js +0 -1
- package/dist/client/assets/ReliabilityView-eoKBhBc4.css +0 -1
- package/dist/client/assets/SessionTerminal-BiigPP2l.css +0 -1
- package/dist/client/assets/SessionTerminal-Dk1NgmN2.js +0 -2
- package/dist/client/assets/SettingsModal-JCaNvdAb.js +0 -31
- package/dist/client/assets/SettingsModal-nF_GaeeK.css +0 -1
- package/dist/client/assets/WorkflowNodeEditor-2jDuk2FR.js +0 -8
- package/dist/client/assets/WorkflowNodeEditor-BokhW3de.css +0 -1
- package/dist/client/assets/app-CUu1sm3x.js +0 -13
- package/dist/client/assets/dashboard-view-Du53JbmQ.css +0 -1
- package/dist/client/assets/index-CpTBp1RG.js +0 -793
- package/dist/client/assets/index-DqhCiU35.css +0 -1
- package/dist/client/assets/vendor-react-D37HfzIf.js +0 -49
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.insights-view{display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden}.insights-view-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-lg);border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0}.insights-view-title{display:flex;align-items:center;gap:var(--space-sm)}.insights-view-title h2{margin:0;font-size:1.125rem;font-weight:600;display:flex;align-items:center;gap:var(--space-sm)}.insights-view-count{font-size:.8125rem;color:var(--text-muted);font-weight:400}.insights-view-actions{display:flex;align-items:center;gap:var(--space-sm)}.insights-model-config{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-lg);border-bottom:1px solid var(--border);background:var(--bg-subtle, var(--bg))}.insights-model-label{font-size:.8125rem;color:var(--text-muted);white-space:nowrap;flex-shrink:0}.insights-model-config .model-combobox{max-width:320px}.insights-model-toggle{position:relative}.insights-model-indicator{position:absolute;top:2px;right:2px;width:6px;height:6px;border-radius:50%;background:var(--todo, #f59e0b)}.insights-view-close{color:var(--text-muted)}.insights-view-close:hover{color:var(--text)}.insights-status-region{padding:var(--space-md) var(--space-lg);flex-shrink:0}.insights-status-region:empty{padding:0}.insights-status-message{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);font-size:.8125rem}.insights-status-message--success{background:color-mix(in srgb,var(--color-success) 10%,transparent);color:var(--color-success)}.insights-status-message--error{background:color-mix(in srgb,var(--color-error) 10%,transparent);color:var(--color-error)}.insights-status-message--info{background:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--accent)}.insights-error-callout{display:flex;align-items:center;gap:var(--space-sm);margin:0 var(--space-lg) var(--space-md);padding:var(--space-md);background:color-mix(in srgb,var(--color-error) 10%,transparent);border:1px solid color-mix(in srgb,var(--color-error) 30%,transparent);border-radius:var(--radius-md);color:var(--color-error);font-size:.8125rem;flex-shrink:0}.insights-run-info{padding:0 var(--space-lg) var(--space-md);flex-shrink:0}.insights-run-status{font-size:.75rem;color:var(--text-muted)}.insights-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-md);padding:var(--space-2xl);color:var(--text-muted)}.insights-error{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-md);padding:var(--space-2xl);text-align:center}.insights-error p{color:var(--text-muted);margin:0}.insights-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-md);padding:var(--space-2xl);text-align:center;flex:1}.insights-empty h3{margin:0;font-size:1.125rem;color:var(--text)}.insights-empty p{color:var(--text-muted);margin:0;max-width:calc(var(--space-2xl) * 12 + var(--space-lg))}.insights-body{flex:1;min-height:0;display:flex;overflow:hidden}.insights-sidebar{width:calc(var(--space-2xl) * 7 + var(--space-lg));flex-shrink:0;border-right:1px solid var(--border);background:var(--surface);overflow-y:auto;min-height:0}.insights-category-list{list-style:none;margin:0;padding:var(--space-sm);display:flex;flex-direction:column;gap:var(--space-xs)}.insights-category-item{width:100%;display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:transparent;border:1px solid transparent;border-radius:var(--radius-md);color:var(--text);font:inherit;font-size:.8125rem;text-align:left;cursor:pointer;transition:background var(--transition-fast),border-color var(--transition-fast)}.insights-category-item:hover{background:var(--surface-elevated)}.insights-category-item--active{background:color-mix(in srgb,var(--accent) 12%,transparent);border-color:color-mix(in srgb,var(--accent) 35%,transparent);color:var(--accent)}.insights-category-icon{flex-shrink:0;color:var(--accent)}.insights-category-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.insights-category-count{flex-shrink:0;font-size:.75rem;color:var(--text-muted);background:var(--surface-elevated);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-pill);border:1px solid var(--border)}.insights-category-item--active .insights-category-count{background:var(--surface);color:var(--accent);border-color:color-mix(in srgb,var(--accent) 30%,transparent)}.insights-detail{flex:1;min-width:0;min-height:0;overflow-y:auto;padding:var(--space-lg)}.insights-section{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.insights-section-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md) var(--space-lg);background:var(--surface);border-bottom:1px solid var(--border)}.insights-section-title{display:flex;align-items:center;gap:var(--space-sm)}.insights-section-title h3{margin:0;font-size:.9375rem;font-weight:600}.insights-section-icon{color:var(--accent)}.insights-section-count{font-size:.75rem;color:var(--text-muted);background:var(--surface-elevated);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-pill);border:1px solid var(--border)}.insights-section-content{padding:var(--space-md)}.insights-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-md)}.insight-item{padding:var(--space-md);background:var(--surface);border:1px solid var(--border);border-left:var(--space-xs) solid var(--accent);border-radius:var(--radius-md);transition:border-color var(--transition-fast)}.insight-item:hover{border-color:var(--accent)}.insight-item-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-sm)}.insight-item-title{margin:0;font-size:.875rem;font-weight:600;color:var(--text);line-height:1.4}.insight-item-actions{display:flex;align-items:center;gap:var(--space-xs);flex-shrink:0}.insight-item-action-btn{display:inline-flex;align-items:center;justify-content:center;width:calc(var(--space-lg) * 2);height:calc(var(--space-lg) * 2);padding:0;background:transparent;border:none;border-radius:var(--radius-md);color:var(--text-muted);cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.insight-item-action-btn:hover:not(:disabled){background:var(--surface-elevated);color:var(--accent)}.insight-item-action-btn:focus-visible{outline:none;box-shadow:var(--focus-ring-strong)}.insight-item-action-btn:disabled{opacity:.5;cursor:not-allowed}.insight-item-content{margin:var(--space-sm) 0 0;font-size:.8125rem;color:var(--text-muted);line-height:1.5;white-space:pre-wrap;word-break:break-word}.insight-item-meta{display:flex;align-items:center;gap:var(--space-md);margin-top:var(--space-sm);font-size:.75rem;color:var(--text-muted)}.insight-item-status{padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);text-transform:capitalize;font-weight:500}.insight-item-status--generated{background:color-mix(in srgb,var(--accent) 15%,transparent);color:var(--accent)}.insight-item-status--confirmed{background:color-mix(in srgb,var(--color-success) 15%,transparent);color:var(--color-success)}.insight-item-status--stale{background:color-mix(in srgb,var(--color-warning) 15%,transparent);color:var(--color-warning)}.insight-item-status--dismissed,.insight-item-status--archived{background:color-mix(in srgb,var(--text-dim) 15%,transparent);color:var(--text-dim)}.insight-item--archived{opacity:.6;border-left-color:var(--text-dim)}.insight-item--archived .insight-item-title{text-decoration:line-through;color:var(--text-muted)}.insight-item--archived .insight-item-content{text-decoration:line-through}.insight-item-date{display:flex;align-items:center;gap:var(--space-xs)}@media(max-width:768px){.insights-view-header{flex-wrap:nowrap;gap:var(--space-sm);padding:var(--space-md)}.insights-view-title{min-width:0;flex:1 1 auto}.insights-view-title h2{font-size:1rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.insights-view-actions{flex-shrink:0;justify-content:flex-end;flex-wrap:nowrap;gap:var(--space-xs)}.insights-body{flex-direction:column}.insights-sidebar{width:100%;border-right:none;border-bottom:1px solid var(--border);overflow-x:auto;overflow-y:hidden;flex-shrink:0}.insights-category-list{flex-direction:row;flex-wrap:nowrap;padding:var(--space-sm);gap:var(--space-xs)}.insights-category-list>li{flex-shrink:0}.insights-category-item{white-space:nowrap;padding:var(--space-xs) var(--space-sm)}.insights-category-label{overflow:visible;text-overflow:clip}.insights-detail{padding:var(--space-md)}.insights-section-header{padding:var(--space-sm) var(--space-md)}.insights-section-content,.insight-item{padding:var(--space-sm)}.insight-item-title{word-break:break-word}.insight-item-header{flex-direction:column;gap:var(--space-sm)}.insight-item-meta{flex-wrap:wrap;gap:var(--space-sm)}.insight-item-actions{align-self:flex-end}.insight-item-action-btn{width:calc(var(--space-2xl) + var(--space-sm));height:calc(var(--space-2xl) + var(--space-sm))}.insights-view-actions .btn{min-height:calc(var(--space-2xl) + var(--space-xs))}.insights-show-archived-toggle{max-width:calc(var(--space-2xl) * 5 + var(--space-md));white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.insights-view-close{min-height:calc(var(--space-2xl) + var(--space-xs));min-width:calc(var(--space-2xl) + var(--space-xs))}.insights-view-count{font-size:.75rem}.insights-model-config{padding:var(--space-xs) var(--space-md)}.insights-model-config .model-combobox{max-width:200px}}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r,j as e}from"./vendor-react-D37HfzIf.js";import{u as Ie}from"./SettingsModal-Nw5cTKAK.js";import{bZ as Ee,b_ as Me,b$ as Re,y as qe,c0 as Te,c1 as Pe,c2 as We,c3 as we,c4 as Ae,c5 as He,c6 as _e,c7 as Oe,c8 as Fe,c9 as Ue,x as Qe,ca as $e,L as A,cb as De}from"./index-CpTBp1RG.js";import{u as Be}from"./vendor-i18n-CV0mwX_-.js";import"./vendor-reactflow-CRZcPCXF.js";import"./vendor-xterm-tcedd2Jt.js";import"./vendor-codemirror-jBKmHyH0.js";const Q=".fusion/memory/MEMORY.md",Ve=5e4,Ye="0 3 * * *",Ge="0 4 * * *";function ue(i){return{memoryEnabled:i.memoryEnabled!==!1,memoryAutoSummarizeEnabled:i.memoryAutoSummarizeEnabled??!1,memoryAutoSummarizeThresholdChars:i.memoryAutoSummarizeThresholdChars??Ve,memoryAutoSummarizeSchedule:i.memoryAutoSummarizeSchedule??Ye,memoryDreamsEnabled:i.memoryDreamsEnabled??!1,memoryDreamsSchedule:i.memoryDreamsSchedule??Ge}}function ze(i,t){return i.some(s=>s.path===t)?t:i.find(s=>s.path===Q)?.path??i[0]?.path??Q}function Ze(i={}){const{projectId:t}=i,[s,h]=r.useState(""),[x,F]=r.useState(!0),[M,L]=r.useState(!1),[N,p]=r.useState(!1),[g,n]=r.useState(null),[D,T]=r.useState(!0),[ge,I]=r.useState(!1),[X,f]=r.useState(()=>ue({})),[J,w]=r.useState(!0),[be,ee]=r.useState(!1),[se,d]=r.useState([]),[z,R]=r.useState(!0),[S,l]=r.useState(Q),[P,C]=r.useState(""),[W,y]=r.useState(!1),[$,k]=r.useState(!1),[te,B]=r.useState(!1),[ae,V]=r.useState(!1),[re,H]=r.useState(!1),[xe,j]=r.useState(null),[Y,me]=r.useState(!0),[_,ne]=r.useState(!1),[ie,G]=r.useState(!1),[le,Z]=r.useState(null),{status:oe,loading:ce,refresh:O}=Ie({projectId:t}),b=r.useCallback(m=>{C(m),k(!0)},[]),U=r.useCallback(async m=>{y(!0);try{const{content:o}=await Ee(m,t);l(m),C(o),k(!1)}finally{y(!1)}},[t]),v=r.useCallback(async()=>{R(!0);try{const{files:m}=await Me(t);if(d(m),m.length===0){l(Q),C(""),k(!1);return}const o=ze(m,S);o!==S&&await U(o)}finally{R(!1)}},[t,S,U]);r.useEffect(()=>{let m=!1;async function o(){try{const c=await Ue(t);m||(h(c.content),F(!1))}catch{m||(h(""),F(!1))}}return o(),()=>{m=!0}},[t]),r.useEffect(()=>{let m=!1;async function o(){try{const c=await Ae(t);m||(n(c.content),I(c.exists),T(!1))}catch{m||(n(null),I(!1),T(!1))}}return o(),()=>{m=!0}},[t]),r.useEffect(()=>{let m=!1;async function o(){w(!0);try{const c=await Qe(t);m||f(ue(c))}catch{m||f(ue({}))}finally{m||w(!1)}}return o(),()=>{m=!0}},[t]),r.useEffect(()=>{let m=!1;async function o(){R(!0);try{const{files:c}=await Me(t);if(m)return;if(d(c),c.length===0){l(Q),C(""),k(!1);return}const a=ze(c,S),{content:u}=await Ee(a,t);if(m)return;l(a),C(u),k(!1)}catch{m||(d([]),l(Q),C(""),k(!1))}finally{m||R(!1)}}return o(),()=>{m=!0}},[t,S]),r.useEffect(()=>{let m=!1;async function o(){try{const c=await we(t);m||(j(c),me(!1))}catch{m||(j(null),me(!1))}}return o(),()=>{m=!0}},[t]),r.useEffect(()=>{let m=!1;async function o(){try{const c=await $e(t);m||Z(c)}catch{m||Z(null)}}return o(),()=>{m=!0}},[t]);const pe=r.useCallback(m=>{h(m),L(!0)},[]),de=r.useCallback(async()=>{if(M){p(!0);try{await Re(s,t),L(!1)}finally{p(!1)}}},[s,M,t]),ye=r.useCallback(async m=>{ee(!0);try{const o=await qe(m,t);f(ue(o))}finally{ee(!1)}},[t]),fe=r.useCallback(async m=>{await U(m)},[U]),Se=r.useCallback(async()=>{if($){B(!0);try{await Te(S,P,t),k(!1),await v()}finally{B(!1)}}},[P,$,S,t,v]),je=r.useCallback(async()=>{G(!0);try{const m=await Pe(t);return await O(),m}finally{G(!1)}},[t,O]),ve=r.useCallback(async m=>We(m,t),[t]),K=r.useCallback(async()=>{try{const m=await we(t);j(m)}catch{j(null)}},[t]),q=r.useCallback(async()=>{try{const m=await Ae(t);n(m.content),I(m.exists)}catch{n(null),I(!1)}},[t]),Ne=r.useCallback(async m=>{await He(m,t),await q()},[t,q]),he=r.useCallback(async()=>{V(!0);try{const m=await _e(t);return await Promise.all([q(),K()]),{success:m.success,summary:m.summary}}finally{V(!1)}},[t,q,K]),Ce=r.useCallback(async()=>{H(!0);try{return await Oe(t)}finally{H(!1)}},[t]),ke=r.useCallback(async m=>{ne(!0);try{const o=m?await Fe(m,t):await Fe(t);if(m){const c=o.path??m;l(c),C(o.content),k(!1),await v();return}h(o.content),L(!0)}finally{ne(!1)}},[t,v]);return{workingMemory:s,workingMemoryLoading:x,workingMemoryDirty:M,setWorkingMemory:pe,saveWorkingMemory:de,savingWorkingMemory:N,insightsContent:g,insightsLoading:D,insightsExists:ge,refreshInsights:q,saveInsights:Ne,memorySettings:X,settingsLoading:J,savingMemorySettings:be,saveMemorySettings:ye,memoryFiles:se,memoryFilesLoading:z,selectedFilePath:S,selectedFileContent:P,selectedFileLoading:W,selectedFileDirty:$,setSelectedFileContent:b,selectFile:fe,saveSelectedFile:Se,savingSelectedFile:te,reloadMemoryFiles:v,backendStatus:oe,backendLoading:ce,extractInsights:he,extracting:ae,triggerDreamNow:Ce,dreamRunning:re,auditReport:xe,auditLoading:Y,refreshAudit:K,compactMemory:ke,compacting:_,installQmdAction:je,installingQmd:ie,testRetrieval:ve,stats:le}}const Ke={Patterns:"pattern",Principles:"principle",Conventions:"convention",Pitfalls:"pitfall",Context:"context"},Xe=72;function Je(i,t){if(i.length<=t)return i;const s=Math.max(1,t-1),h=Math.ceil(s/2),x=Math.floor(s/2);return`${i.slice(0,h)}…${i.slice(i.length-x)}`}function es(i){const t=`${i.label} — ${i.path}`;return Je(t,Xe)}function ss(i){if(!i)return[];const t=[],s=i.split(/(?=^## )/m);for(const h of s){const x=h.trim();if(!x)continue;const F=x.match(/^##\s+(.+?)(\n|$)/);if(F){const M=F[1].trim(),L=Ke[M]??M.toLowerCase(),N=x.slice(F[0].length).trim(),p=N.split(`
|
|
2
|
-
`).map(g=>g.replace(/^-\s+/,"").trim()).filter(g=>g.length>0&&(g.startsWith("- ")||g.startsWith("* ")));(p.length>0||N.length>0)&&t.push({name:M,key:L,items:p.length>0?p:N.length>0?[N]:[],expanded:!0})}}return t}function ts(i){if(!i)return null;const t=i.match(/##\s+Last\s+Updated:\s*(\d{4}-\d{2}-\d{2})/i);return t?t[1]:null}function as(i){return i.reduce((t,s)=>t+s.items.length,0)}function ds({projectId:i,addToast:t}){const{t:s}=Be("app"),[h,x]=r.useState("working"),[F,M]=r.useState(new Set),[L,N]=r.useState(!1),[p,g]=r.useState(null),[n,D]=r.useState({memoryEnabled:!0,memoryAutoSummarizeEnabled:!1,memoryAutoSummarizeThresholdChars:5e4,memoryAutoSummarizeSchedule:"0 3 * * *",memoryDreamsEnabled:!1,memoryDreamsSchedule:"0 4 * * *"}),[T,ge]=r.useState(""),[I,X]=r.useState(!1),[f,J]=r.useState(null),{insightsContent:w,insightsLoading:be,insightsExists:ee,saveInsights:se,memorySettings:d,settingsLoading:z,saveMemorySettings:R,savingMemorySettings:S,backendStatus:l,backendLoading:P,extractInsights:C,extracting:W,auditReport:y,auditLoading:$,refreshAudit:k,compactMemory:te,compacting:B,installQmdAction:ae,installingQmd:V,testRetrieval:re,memoryFiles:H,memoryFilesLoading:xe,selectedFilePath:j,selectedFileContent:Y,selectedFileLoading:me,selectedFileDirty:_,setSelectedFileContent:ne,selectFile:ie,saveSelectedFile:G,savingSelectedFile:le,reloadMemoryFiles:Z,triggerDreamNow:oe,dreamRunning:ce}=Ze({projectId:i});r.useEffect(()=>{D(d)},[d]);const O=r.useMemo(()=>n.memoryEnabled!==d.memoryEnabled||n.memoryAutoSummarizeEnabled!==d.memoryAutoSummarizeEnabled||n.memoryAutoSummarizeThresholdChars!==d.memoryAutoSummarizeThresholdChars||n.memoryAutoSummarizeSchedule!==d.memoryAutoSummarizeSchedule||n.memoryDreamsEnabled!==d.memoryDreamsEnabled||n.memoryDreamsSchedule!==d.memoryDreamsSchedule,[n,d]),b=r.useMemo(()=>H.find(a=>a.path===j),[H,j]),U=b?b.layer==="long-term"?s("memory.layerDescLongTerm","Curated durable decisions, conventions, constraints, and pitfalls promoted from dreams."):b.layer==="daily"?s("memory.layerDescDaily","Raw daily observations, open loops, and running context for dream processing."):s("memory.layerDescDreams","Synthesized patterns and open loops promoted from daily memory."):s("memory.editorDefaultDescription","Edits the selected memory file."),v=r.useMemo(()=>ss(w),[w]),pe=r.useMemo(()=>as(v),[v]),de=r.useMemo(()=>ts(w),[w]),ye=r.useCallback(a=>{M(u=>{const E=new Set(u);return E.has(a)?E.delete(a):E.add(a),E})},[]),fe=r.useCallback(async a=>{try{await ie(a)}catch{t(s("memory.loadFileFailed","Failed to load memory file"),"error")}},[ie,t]),Se=r.useCallback(async()=>{try{await G(),t(s("memory.memorySaved","Memory saved"),"success")}catch{t(s("memory.saveMemoryFailed","Failed to save memory"),"error")}},[G,t]),je=r.useCallback(async()=>{if(!O)return;const a={};n.memoryEnabled!==d.memoryEnabled&&(a.memoryEnabled=n.memoryEnabled),n.memoryAutoSummarizeEnabled!==d.memoryAutoSummarizeEnabled&&(a.memoryAutoSummarizeEnabled=n.memoryAutoSummarizeEnabled),n.memoryAutoSummarizeThresholdChars!==d.memoryAutoSummarizeThresholdChars&&(a.memoryAutoSummarizeThresholdChars=n.memoryAutoSummarizeThresholdChars),n.memoryAutoSummarizeSchedule!==d.memoryAutoSummarizeSchedule&&(a.memoryAutoSummarizeSchedule=n.memoryAutoSummarizeSchedule),n.memoryDreamsEnabled!==d.memoryDreamsEnabled&&(a.memoryDreamsEnabled=n.memoryDreamsEnabled),n.memoryDreamsSchedule!==d.memoryDreamsSchedule&&(a.memoryDreamsSchedule=n.memoryDreamsSchedule);try{await R(a),t(s("memory.settingsSaved","Memory settings saved"),"success")}catch{t(s("memory.saveSettingsFailed","Failed to save memory settings"),"error")}},[O,n,d,R,t]),ve=r.useCallback(async()=>{try{const a=await ae();t(a.qmdAvailable?s("memory.qmdInstallSuccess","qmd installed successfully"):s("memory.qmdInstallUnavailable","qmd install finished, but qmd is still unavailable"),a.qmdAvailable?"success":"info")}catch{t(s("memory.installQmdFailed","Failed to install qmd"),"error")}},[ae,t]),K=r.useCallback(async()=>{X(!0),J(null);try{const a=await re(T);J(a),t(a.qmdAvailable?s("memory.retrievalTestComplete","Memory retrieval test complete"):s("memory.retrievalTestFallback","qmd is not installed; local fallback was used"),a.qmdAvailable?"success":"info")}catch{t(s("memory.retrievalTestFailed","Failed to test memory retrieval"),"error")}finally{X(!1)}},[T,re,t]),q=r.useCallback(async()=>{try{await oe(),t(s("memory.dreamProcessingComplete","Dream processing completed"),"success"),await Z()}catch(a){t(a instanceof Error?a.message:s("memory.dreamProcessingFailed","Failed to run dream processing"),"error")}},[oe,Z,t]),Ne=r.useCallback(async()=>{try{await te(j),t(s("memory.fileCompacted","Memory file compacted"),"success")}catch{t(s("memory.compactFailed","Failed to compact memory"),"error")}},[te,j,t]),he=r.useCallback(async()=>{try{const a=await C();t(a.summary,"success")}catch(a){t(a instanceof Error?a.message:s("memory.extractInsightsFailed","Failed to extract insights"),"error")}},[C,t]),Ce=r.useCallback(async()=>{if(p!==null)try{await se(p),N(!1),g(null),t(s("memory.insightsSaved","Insights saved"),"success")}catch{t(s("memory.saveInsightsFailed","Failed to save insights"),"error")}},[p,se,t]),ke=r.useCallback(()=>{g(w??""),N(!0)},[w]),m=r.useCallback(()=>{N(!1),g(null)},[]),o=!P&&l!==null,c=l?.capabilities?.writable??!1;return e.jsxs("div",{className:"memory-view",children:[e.jsx("div",{className:"memory-view-header",children:e.jsxs("div",{children:[e.jsx("h2",{children:s("memory.title","Memory")}),e.jsx("p",{className:"memory-view-description",children:s("memory.description","Working memory, long-term insights, and engine status")})]})}),e.jsxs("div",{className:"memory-view-tabs",role:"tablist",children:[e.jsx("button",{type:"button",role:"tab","aria-selected":h==="working",className:`memory-view-tab${h==="working"?" memory-view-tab--active":""}`,onClick:()=>x("working"),"data-testid":"memory-tab-working",children:s("memory.tabWorking","Working Memory")}),e.jsx("button",{type:"button",role:"tab","aria-selected":h==="insights",className:`memory-view-tab${h==="insights"?" memory-view-tab--active":""}`,onClick:()=>x("insights"),"data-testid":"memory-tab-insights",children:s("memory.tabInsights","Insights")}),e.jsx("button",{type:"button",role:"tab","aria-selected":h==="engines",className:`memory-view-tab${h==="engines"?" memory-view-tab--active":""}`,onClick:()=>x("engines"),"data-testid":"memory-tab-engines",children:s("memory.tabEngines","Engines")})]}),e.jsxs("div",{className:"memory-view-content",children:[h==="working"&&e.jsxs("div",{className:"memory-working-tab",children:[o&&!c&&e.jsx("div",{className:"memory-readonly-banner",children:s("memory.readOnlyBanner","This memory backend is read-only. Changes cannot be saved.")}),xe||me?e.jsxs("div",{className:"memory-empty-state",children:[e.jsx(A,{size:20,className:"animate-spin"}),e.jsx("span",{children:s("memory.loadingFile","Loading memory file…")})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"memory-editor-section",children:[e.jsxs("div",{className:"form-group",children:[e.jsx("label",{htmlFor:"memoryViewFilePath",children:s("memory.fileLabel","Memory File")}),e.jsx("select",{id:"memoryViewFilePath",className:"select",value:j,onChange:a=>{fe(a.target.value)},disabled:_,children:H.map(a=>e.jsx("option",{value:a.path,title:`${a.label} — ${a.path}`,children:es(a)},a.path))}),e.jsx("small",{children:_?s("memory.fileSwitchDirtyHint","Save or discard the current edits before switching files."):s("memory.fileSwitchHint","Choose any project memory file to view or edit.")})]}),b&&e.jsxs("div",{className:"memory-file-summary",children:[e.jsx("span",{children:b.layer==="long-term"?s("memory.layerLongTerm","Long-term"):b.layer==="daily"?s("memory.layerDaily","Daily"):s("memory.layerDreams","Dreams")}),e.jsx("strong",{children:b.path}),e.jsx("small",{children:s("memory.fileSummary","{{size}} bytes · updated {{updatedAt}}",{size:b.size.toLocaleString(),updatedAt:new Date(b.updatedAt).toLocaleString()})})]}),e.jsxs("div",{className:"form-group memory-editor-form-group",children:[e.jsx("label",{children:b?.label||s("memory.editorLabel","Memory Editor")}),e.jsx("small",{children:U}),e.jsx("div",{className:"memory-editor-container",children:e.jsx(De,{content:Y,onChange:ne,readOnly:!c,filePath:j})})]})]}),e.jsxs("div",{className:"memory-action-bar",children:[e.jsx("span",{className:"memory-char-count",children:s("memory.charCount","{{count}} characters",{count:Y.length})}),e.jsx("div",{className:"memory-flex-spacer"}),c&&Y.length>0&&e.jsx("button",{type:"button",className:"btn btn-secondary btn-sm",onClick:Ne,disabled:B||_,children:B?e.jsxs(e.Fragment,{children:[e.jsx(A,{size:14,className:"animate-spin"}),s("memory.compacting","Compacting…")]}):s("memory.compactSelectedFile","Compact Selected File")}),_&&c&&e.jsx("button",{type:"button",className:"btn btn-primary btn-sm",onClick:Se,disabled:le,children:le?e.jsxs(e.Fragment,{children:[e.jsx(A,{size:14,className:"animate-spin"}),s("memory.saving","Saving…")]}):s("memory.save","Save")})]}),e.jsxs("div",{className:"memory-config-section",children:[e.jsxs("div",{className:"memory-settings-group",children:[e.jsxs("div",{className:"form-group",children:[e.jsxs("label",{htmlFor:"memoryDreamsEnabled",className:"checkbox-label",children:[e.jsx("input",{id:"memoryDreamsEnabled",type:"checkbox",checked:n.memoryDreamsEnabled,onChange:a=>{D(u=>({...u,memoryDreamsEnabled:a.target.checked}))},disabled:!n.memoryEnabled||z}),s("memory.dreamsEnabledLabel","Process dreams from daily memory")]}),e.jsx("small",{children:s("memory.dreamsEnabledHint","Turns daily notes into DREAMS.md and promotes reusable lessons into MEMORY.md.")})]}),n.memoryEnabled&&n.memoryDreamsEnabled&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"form-group",children:[e.jsx("label",{htmlFor:"memoryDreamsSchedule",children:s("memory.dreamsScheduleLabel","Dream Schedule")}),e.jsx("input",{id:"memoryDreamsSchedule",type:"text",className:"input",value:n.memoryDreamsSchedule,onChange:a=>{D(u=>({...u,memoryDreamsSchedule:a.target.value}))},placeholder:"0 4 * * *",disabled:z}),e.jsx("small",{children:s("memory.dreamsScheduleHint","Cron expression for dream processing.")})]}),e.jsxs("div",{className:"form-group",children:[e.jsx("button",{type:"button",className:"btn btn-sm",onClick:q,disabled:ce||!n.memoryDreamsEnabled,children:ce?e.jsxs(e.Fragment,{children:[e.jsx(A,{size:14,className:"animate-spin"}),s("memory.dreaming","Dreaming…")]}):s("memory.dreamNow","Dream Now")}),e.jsx("small",{children:s("memory.dreamNowHint","Manually trigger dream processing now.")})]})]})]}),e.jsxs("div",{className:"memory-settings-group",children:[e.jsxs("div",{className:"form-group",children:[e.jsxs("label",{htmlFor:"memoryAutoSummarizeEnabled",className:"checkbox-label",children:[e.jsx("input",{id:"memoryAutoSummarizeEnabled",type:"checkbox",checked:n.memoryAutoSummarizeEnabled,onChange:a=>{D(u=>({...u,memoryAutoSummarizeEnabled:a.target.checked}))},disabled:!n.memoryEnabled||z}),s("memory.autoSummarizeLabel","Auto-Summarize Memory")]}),e.jsx("small",{children:s("memory.autoSummarizeHint","Automatically compact memory when it exceeds the threshold on a schedule")})]}),n.memoryEnabled&&n.memoryAutoSummarizeEnabled&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"form-group",children:[e.jsx("label",{htmlFor:"memoryAutoSummarizeThresholdChars",children:s("memory.compactionThresholdLabel","Compaction Threshold (chars)")}),e.jsx("input",{id:"memoryAutoSummarizeThresholdChars",type:"number",className:"input",value:n.memoryAutoSummarizeThresholdChars,onChange:a=>{D(u=>({...u,memoryAutoSummarizeThresholdChars:parseInt(a.target.value,10)||5e4}))},min:1e3,disabled:z}),e.jsx("small",{children:s("memory.compactionThresholdHint","Memory will be compacted when it exceeds this character count")})]}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{htmlFor:"memoryAutoSummarizeSchedule",children:s("memory.autoSummarizeScheduleLabel","Schedule (cron)")}),e.jsx("input",{id:"memoryAutoSummarizeSchedule",type:"text",className:"input",value:n.memoryAutoSummarizeSchedule,onChange:a=>{D(u=>({...u,memoryAutoSummarizeSchedule:a.target.value}))},placeholder:"0 3 * * *",disabled:z}),e.jsx("small",{children:s("memory.autoSummarizeScheduleHint","Cron expression for auto-summarize schedule (default: daily at 3 AM)")})]})]})]}),!n.memoryEnabled&&e.jsx("div",{className:"settings-empty-state memory-status-message",children:s("memory.disabledMessage","Memory is currently disabled. Enable memory tools in Settings to edit these automations.")}),O&&e.jsx("div",{className:"memory-action-bar",children:e.jsx("button",{type:"button",className:"btn btn-primary btn-sm",onClick:je,disabled:S||z,children:S?e.jsxs(e.Fragment,{children:[e.jsx(A,{size:14,className:"animate-spin"}),s("memory.saving","Saving…")]}):s("memory.saveSettings","Save Settings")})})]})]})]}),h==="insights"&&e.jsx("div",{className:"memory-insights-tab",children:be?e.jsxs("div",{className:"memory-empty-state",children:[e.jsx(A,{size:20,className:"animate-spin"}),e.jsx("span",{children:s("memory.loadingInsights","Loading insights…")})]}):L?e.jsxs("div",{className:"memory-insights-editor-layout",children:[e.jsx("div",{className:"memory-editor-container",children:e.jsx(De,{content:p??"",onChange:g,readOnly:!1,filePath:".fusion/memory/INSIGHTS.md"})}),e.jsxs("div",{className:"memory-action-bar",children:[e.jsx("button",{type:"button",className:"btn btn-secondary btn-sm",onClick:m,children:s("memory.cancel","Cancel")}),e.jsx("button",{type:"button",className:"btn btn-primary btn-sm",onClick:Ce,children:s("memory.saveInsights","Save Insights")})]})]}):!ee||v.length===0?e.jsxs("div",{className:"memory-empty-state",children:[e.jsx("p",{children:s("memory.noInsights","No insights extracted yet.")}),e.jsx("p",{children:s("memory.noInsightsHint",'Insights are automatically extracted from working memory. Click "Extract Now" to trigger extraction manually.')}),e.jsx("button",{type:"button",className:"btn btn-primary btn-sm memory-empty-extract-button",onClick:he,disabled:W,children:W?e.jsxs(e.Fragment,{children:[e.jsx(A,{size:14,className:"animate-spin"}),s("memory.extracting","Extracting…")]}):s("memory.extractNow","Extract Now")})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"memory-stats-row",children:[e.jsxs("div",{className:"memory-stat-card",children:[e.jsx("div",{className:"memory-stat-value",children:pe}),e.jsx("div",{className:"memory-stat-label",children:s("memory.totalInsights","Total Insights")})]}),e.jsxs("div",{className:"memory-stat-card",children:[e.jsx("div",{className:"memory-stat-value",children:v.length}),e.jsx("div",{className:"memory-stat-label",children:s("memory.categories","Categories")})]}),de&&e.jsxs("div",{className:"memory-stat-card",children:[e.jsx("div",{className:"memory-stat-value memory-stat-value--updated",children:de}),e.jsx("div",{className:"memory-stat-label",children:s("memory.lastUpdated","Last Updated")})]})]}),e.jsxs("div",{className:"memory-action-bar",children:[e.jsx("button",{type:"button",className:"btn btn-primary btn-sm",onClick:he,disabled:W,children:W?e.jsxs(e.Fragment,{children:[e.jsx(A,{size:14,className:"animate-spin"}),s("memory.extracting","Extracting…")]}):s("memory.extractNow","Extract Now")}),e.jsx("button",{type:"button",className:"btn btn-secondary btn-sm",onClick:ke,children:s("memory.editRaw","Edit Raw")})]}),e.jsx("div",{className:"memory-categories-list",children:v.map(a=>{const u=!F.has(a.key);return e.jsxs("div",{className:"memory-category-section",children:[e.jsxs("div",{className:"memory-category-header",onClick:()=>ye(a.key),role:"button",tabIndex:0,onKeyDown:E=>{(E.key==="Enter"||E.key===" ")&&(E.preventDefault(),ye(a.key))},children:[e.jsx("h4",{children:a.name}),e.jsx("span",{className:"memory-category-count",children:a.items.length})]}),u&&e.jsx("div",{className:"memory-category-items",children:a.items.map((E,Le)=>e.jsx("div",{className:"memory-insight-item",children:E.replace(/^-\s+/,"").replace(/^\*\s+/,"")},Le))})]},a.key)})})]})}),h==="engines"&&e.jsx("div",{className:"memory-engines-tab",children:P||$?e.jsxs("div",{className:"memory-empty-state",children:[e.jsx(A,{size:20,className:"animate-spin"}),e.jsx("span",{children:s("memory.loadingEngineStatus","Loading engine status…")})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"memory-engine-card memory-qmd-card",children:[e.jsx("h3",{children:s("memory.qmdIntegrationTitle","QMD Integration")}),l?.qmdAvailable===!0?e.jsxs("div",{className:"memory-engine-status",children:[e.jsx("span",{className:"memory-health-badge memory-health-badge--healthy",children:s("memory.qmdInstalled","Installed")}),e.jsx("span",{className:"memory-char-count",children:s("memory.qmdAvailableOnPath","qmd is available on PATH.")})]}):l?.qmdAvailable===!1?e.jsxs("div",{className:"settings-empty-state memory-status-message",children:[e.jsxs("span",{children:[s("memory.qmdNotInstalled","qmd is not installed. Search will use local files. Install indexed retrieval:")," ",e.jsx("code",{children:l.qmdInstallCommand||"bun install -g @tobilu/qmd"})]}),e.jsx("button",{type:"button",className:"btn btn-secondary btn-sm",onClick:ve,disabled:V,children:V?s("memory.installing","Installing…"):s("memory.installQmd","Install qmd")})]}):e.jsxs("div",{className:"memory-engine-status",children:[e.jsx("span",{className:"memory-health-badge",children:s("memory.qmdChecking","Checking")}),e.jsx("span",{className:"memory-char-count",children:s("memory.qmdCheckingAvailability","Checking qmd availability…")})]}),e.jsxs("div",{className:"memory-capability-row",children:[l?.capabilities?.readable&&e.jsx("span",{className:"memory-capability-badge",children:s("memory.capReadable","Readable")}),l?.capabilities?.writable&&e.jsx("span",{className:"memory-capability-badge",children:s("memory.capWritable","Writable")}),l?.capabilities?.supportsAtomicWrite&&e.jsx("span",{className:"memory-capability-badge",children:s("memory.capAtomicWrites","Atomic Writes")}),l?.capabilities?.persistent&&e.jsx("span",{className:"memory-capability-badge",children:s("memory.capPersistent","Persistent")})]})]}),e.jsxs("div",{className:"memory-engine-card memory-retrieval-card",children:[e.jsx("h3",{children:s("memory.testMemorySearchTitle","Test Memory Search")}),e.jsxs("div",{className:"memory-retrieval-input-row",children:[e.jsx("input",{type:"text",className:"input",value:T,onChange:a=>ge(a.target.value),placeholder:s("memory.searchPlaceholder","Search memory with qmd")}),e.jsx("button",{type:"button",className:"btn btn-secondary btn-sm",onClick:K,disabled:I,children:I?s("memory.testing","Testing…"):s("memory.testRetrieval","Test Retrieval")})]}),e.jsx("small",{className:"settings-muted",children:s("memory.testSearchHint","Runs the same qmd-backed memory_search path agents use.")}),f&&e.jsxs("div",{className:"memory-test-result",children:[e.jsx("strong",{children:s("memory.testResultCount",'{{count}} result for "{{query}}"',{count:f.results.length,query:f.query,defaultValue_one:'{{count}} result for "{{query}}"',defaultValue_other:'{{count}} results for "{{query}}"'})}),e.jsx("small",{children:s("memory.testResultStatus","qmd {{qmdStatus}} · {{fallbackStatus}}",{qmdStatus:f.qmdAvailable?s("memory.qmdStatusAvailable","available"):s("memory.qmdStatusMissing","missing"),fallbackStatus:f.usedFallback?s("memory.localFallbackUsed","local fallback used"):s("memory.qmdPathUsed","qmd path used")})}),f.results.length>0?e.jsx("ul",{children:f.results.map((a,u)=>e.jsxs("li",{children:[e.jsxs("span",{children:[a.path,":",a.lineStart]}),e.jsx("p",{children:a.snippet})]},`${a.path}-${a.lineStart}-${u}`))}):e.jsx("small",{children:s("memory.noMatchingMemory","No matching memory found.")})]})]}),e.jsxs("div",{className:"memory-engine-card",children:[e.jsx("h3",{children:s("memory.currentBackendTitle","Current Backend")}),e.jsx("div",{className:"memory-engine-status",children:e.jsx("span",{className:"memory-emphasis-text",children:l?.currentBackend==="file"?s("memory.backendFile","File (.fusion/memory/, agent/<agent-name>/memory/)"):l?.currentBackend==="readonly"?s("memory.backendReadonly","Read-Only"):l?.currentBackend==="qmd"?s("memory.backendQmd","QMD (Quantized Memory Distillation)"):l?.currentBackend??"unknown"})}),e.jsxs("div",{className:"memory-capability-row",children:[l?.capabilities?.readable&&e.jsx("span",{className:"memory-capability-badge",children:s("memory.capReadable","Readable")}),l?.capabilities?.writable&&e.jsx("span",{className:"memory-capability-badge",children:s("memory.capWritable","Writable")}),l?.capabilities?.supportsAtomicWrite&&e.jsx("span",{className:"memory-capability-badge",children:s("memory.capAtomicWrites","Atomic Writes")}),l?.capabilities?.persistent&&e.jsx("span",{className:"memory-capability-badge",children:s("memory.capPersistent","Persistent")})]})]}),y&&e.jsxs("div",{className:"memory-engine-card",children:[e.jsxs("div",{className:"memory-health-header",children:[e.jsx("h3",{children:s("memory.healthStatusTitle","Health Status")}),e.jsx("span",{className:`memory-health-badge memory-health-badge--${y.health}`,children:y.health==="healthy"?s("memory.healthHealthy","Healthy"):y.health==="warning"?s("memory.healthWarning","Warning"):s("memory.healthIssues","Issues Found")})]}),e.jsxs("div",{className:"memory-health-grid",children:[e.jsxs("div",{children:[e.jsx("div",{className:"memory-health-label",children:s("memory.workingMemoryLabel","Working Memory")}),e.jsx("div",{className:"memory-emphasis-text",children:s("memory.sizeChars","{{size}} chars",{size:y.workingMemory.size})}),e.jsx("div",{className:"memory-health-detail",children:s("memory.sectionCount","{{count}} sections",{count:y.workingMemory.sectionCount})})]}),e.jsxs("div",{children:[e.jsx("div",{className:"memory-health-label",children:s("memory.insightsMemoryLabel","Insights Memory")}),e.jsx("div",{className:"memory-emphasis-text",children:s("memory.sizeChars","{{size}} chars",{size:y.insightsMemory.size})}),e.jsx("div",{className:"memory-health-detail",children:s("memory.insightCount","{{count}} insights",{count:y.insightsMemory.insightCount})})]})]}),e.jsxs("div",{className:"memory-health-section",children:[e.jsx("div",{className:"memory-health-label",children:s("memory.lastExtractionLabel","Last Extraction")}),e.jsx("div",{className:"memory-emphasis-text",children:y.extraction.success?e.jsx("span",{className:"memory-status-text memory-status-text--success",children:s("memory.extractionSuccess","Success")}):e.jsx("span",{className:"memory-status-text memory-status-text--error",children:s("memory.extractionFailed","Failed")})}),e.jsx("div",{className:"memory-health-detail",children:y.extraction.summary||s("memory.insightsExtracted","{{count}} insights extracted",{count:y.extraction.insightCount})})]}),e.jsxs("div",{className:"memory-health-section",children:[e.jsx("div",{className:"memory-health-label",children:s("memory.pruningLabel","Pruning")}),e.jsx("div",{className:"memory-emphasis-text",children:y.pruning.applied?e.jsx("span",{className:"memory-status-text memory-status-text--warning",children:s("memory.pruningApplied","Applied")}):e.jsx("span",{className:"memory-status-text memory-status-text--muted",children:s("memory.pruningNotNeeded","Not needed")})}),y.pruning.applied&&e.jsx("div",{className:"memory-health-detail",children:y.pruning.reason})]})]}),y&&y.checks.length>0&&e.jsxs("div",{className:"memory-engine-card",children:[e.jsx("h3",{children:s("memory.auditChecksTitle","Audit Checks")}),e.jsx("div",{children:y.checks.map(a=>e.jsxs("div",{className:"memory-audit-check",children:[e.jsx("span",{className:a.passed?"memory-audit-check-passed":"memory-audit-check-failed",children:a.passed?"✓":"✗"}),e.jsxs("div",{className:"memory-audit-check-content",children:[e.jsx("div",{className:"memory-emphasis-text",children:a.name}),e.jsx("div",{className:"memory-health-detail",children:a.details})]})]},a.id))})]}),e.jsx("div",{className:"memory-action-bar",children:e.jsx("button",{type:"button",className:"btn btn-secondary btn-sm",onClick:()=>k(),children:s("memory.runAudit","Run Audit")})}),e.jsxs("div",{className:"memory-settings-note",children:[e.jsx("span",{children:s("memory.settingsNote","Note: Change backend type in")}),e.jsx("button",{type:"button",className:"memory-settings-note-button",onClick:()=>{t(s("memory.settingsNoteToast","Open Settings → Memory to change backend type"),"info")},children:s("memory.settingsNoteLink","Settings → Memory")})]})]})})]})]})}export{ds as MemoryView};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.plugin-manager,.plugin-manager-detail{display:flex;flex-direction:column;gap:var(--space-lg);padding-inline:var(--space-xl);padding-block:var(--space-md)}.plugin-manager-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:var(--space-sm);border-bottom:var(--btn-border-width) solid var(--border);gap:var(--space-sm)}.plugin-manager-header-title{font-size:var(--font-size-sm, .85rem);font-weight:600;color:var(--text);flex:1}.plugin-manager-actions{display:flex;gap:var(--space-sm);align-items:center}.plugin-install-form{display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-lg);border:var(--btn-border-width) solid var(--border);border-radius:var(--radius-md);background:var(--surface)}.plugin-install-hint{margin:0;font-size:var(--font-size-sm, .85rem);color:var(--text-muted);line-height:1.45}.plugin-install-hint code{padding:var(--btn-border-width) var(--space-xs);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--text-muted) 12%,transparent);font-size:.85em}.plugin-install-actions{display:flex;gap:var(--space-sm);justify-content:flex-end}.plugin-list{display:flex;flex-direction:column;gap:var(--space-sm)}.plugin-item{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md) var(--space-lg);background:var(--surface);border:var(--btn-border-width) solid var(--border);border-radius:var(--radius-md);transition:border-color var(--transition-fast)}.plugin-item:hover{border-color:var(--text-dim)}.plugin-info{display:flex;align-items:center;gap:var(--space-sm);min-width:0;flex:1}.plugin-copy{display:flex;flex-direction:column;gap:var(--space-xs);min-width:0}.plugin-copy-header{display:flex;align-items:center;gap:var(--space-sm);min-width:0;flex-wrap:wrap}.plugin-name{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.plugin-version{font-size:var(--font-size-sm, .85rem)}.plugin-state-badge{display:inline-flex;align-items:center;padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-pill);font-size:var(--font-size-3xs, .7rem);font-weight:600;text-transform:uppercase;letter-spacing:.04em;background:color-mix(in srgb,currentColor 12%,transparent)}.plugin-actions{display:flex;align-items:center;gap:var(--space-xs);flex-shrink:0}.plugin-manager-detail-header,.plugin-detail-title{display:flex;align-items:center;gap:var(--space-md);flex-wrap:wrap}.plugin-detail-title-copy{display:flex;flex-direction:column;gap:var(--space-xs);min-width:0}.plugin-detail-name{margin:0}.plugin-error-text{margin:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--font-size-xs, .8rem);font-family:var(--font-mono);color:var(--color-error);background:color-mix(in srgb,var(--color-error) 10%,transparent);border-radius:var(--radius-sm);padding:var(--space-xs) var(--space-sm)}.plugin-error-text--detail{max-width:min(100%,32rem);overflow:visible;text-overflow:clip;white-space:normal;overflow-wrap:anywhere}.plugin-detail-content{display:flex;flex-direction:column;gap:var(--space-lg)}.plugin-detail-card{background:var(--surface);border:var(--btn-border-width) solid var(--border);border-radius:var(--radius-md);padding:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-md)}.plugin-description{font-size:var(--font-size-md, .95rem);color:var(--text-muted);line-height:1.5}.plugin-detail-meta-row{display:flex;align-items:center;gap:var(--space-xs);font-size:var(--font-size-base, .9rem);color:var(--text-muted)}.plugin-homepage{flex-wrap:wrap;align-items:flex-start}.plugin-homepage a{display:inline-flex;align-items:center;gap:var(--space-xs);color:var(--color-info);font-size:var(--font-size-sm, .85rem);flex-wrap:wrap;overflow-wrap:anywhere}.plugin-detail-section-heading{margin:0;padding:0;border:0;font-size:var(--font-size-md, .95rem)}.plugin-settings-form{display:flex;flex-direction:column;gap:var(--space-lg);margin-top:var(--space-xs)}.plugin-settings-form .form-group{padding:0;margin:0}.plugin-settings-group{display:flex;flex-direction:column;gap:var(--space-md)}.plugin-settings-group-heading{margin:0;font-size:var(--font-size-xs, .8rem);font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted)}.plugin-settings-array{display:flex;flex-direction:column;gap:var(--space-sm)}.plugin-settings-array-item{display:flex;align-items:center;gap:var(--space-sm)}.plugin-settings-array-item input{flex:1}.plugin-security-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);flex-wrap:wrap}.plugin-security-results{display:flex;flex-direction:column;gap:var(--space-sm)}.plugin-security-header{display:flex;gap:var(--space-sm);align-items:center}.plugin-security-summary{margin:0}.plugin-security-badge{font-weight:700}.plugin-security-badge--warning,.plugin-security-badge--unavailable{color:var(--color-warning)}.plugin-security-badge--blocked,.plugin-security-badge--error{color:var(--color-error)}.plugin-security-findings{margin:0;padding-inline-start:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-xs)}.plugin-detail-actions{display:flex;gap:var(--space-sm);padding-top:var(--space-md);border-top:var(--btn-border-width) solid var(--border);justify-content:flex-end}.plugin-manager .empty-state,.plugin-manager .loading-state,.plugin-manager .settings-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-2xl);text-align:center;color:var(--text-muted)}.plugin-builtins-section{display:flex;flex-direction:column;gap:var(--space-sm)}.plugin-builtins-header{display:flex;flex-direction:column;gap:var(--space-xs)}.plugin-builtins-heading{margin:0;font-size:var(--font-size-md, .95rem)}.plugin-builtins-description{margin:0;font-size:var(--font-size-sm, .85rem);color:var(--text-muted)}.plugin-builtins-list{width:100%;display:flex;flex-direction:column;gap:var(--space-sm);margin-top:var(--space-sm)}.plugin-builtins-item{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border:var(--btn-border-width) solid var(--border);border-radius:var(--radius-md);background:var(--surface)}.plugin-builtins-meta{display:flex;align-items:center;gap:var(--space-sm);row-gap:var(--space-xs);flex-wrap:wrap;min-width:0}.plugin-builtins-name{color:var(--text);font-size:var(--font-size-base, .9rem);font-weight:500}.plugin-builtins-runtime-badge{display:inline-flex;align-items:center;padding:var(--btn-border-width) var(--space-xs);border-radius:var(--radius-pill);background:var(--status-in-review-bg);color:var(--in-review);font-size:var(--font-size-2xs, .75rem);font-weight:600;text-transform:uppercase}.plugin-builtins-status{display:inline-flex;align-items:center;padding:var(--btn-border-width) var(--space-xs);border-radius:var(--radius-pill);font-size:var(--font-size-2xs, .75rem);font-weight:600;text-transform:uppercase}.plugin-builtins-status--installed{background:var(--status-done-bg);color:var(--done)}.plugin-builtins-status--available{background:var(--status-todo-bg);color:var(--todo)}.plugin-builtins-setup-status{display:inline-flex;align-items:center;padding:var(--btn-border-width) var(--space-xs);border-radius:var(--radius-pill);font-size:var(--font-size-2xs, .75rem);font-weight:600;text-transform:uppercase}.plugin-builtins-setup-status--warning{background:var(--status-in-review-bg);color:var(--color-warning)}.plugin-builtins-setup-status--ready{background:var(--status-done-bg);color:var(--color-success)}.plugin-builtins-setup-status--pending{background:var(--status-todo-bg);color:var(--color-warning)}.plugin-builtins-setup-status--deferred{background:var(--status-archived-bg);color:var(--text-muted)}.plugin-builtins-description-text{flex:1 1 100%;color:var(--text-muted);font-size:var(--font-size-sm, .85rem)}.plugin-builtins-metadata-only{color:var(--text-muted);font-size:var(--font-size-xs, .8rem);font-weight:600;text-transform:uppercase}.plugin-registry-section{display:flex;flex-direction:column;gap:var(--space-sm)}.plugin-registry-header{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-md)}.plugin-registry-heading-copy{display:flex;flex-direction:column;gap:var(--space-xs);min-width:0}.plugin-registry-heading{margin:0;font-size:var(--font-size-md, .95rem)}.plugin-registry-description{margin:0;font-size:var(--font-size-sm, .85rem);color:var(--text-muted)}.plugin-registry-controls{display:flex;gap:var(--space-sm);align-items:flex-end}.plugin-registry-category-label,.plugin-registry-search-label{display:flex}.plugin-registry-category-label{min-width:min(100%,11rem)}.plugin-registry-search-label{min-width:min(100%,18rem)}.plugin-registry-category-select,.plugin-registry-search-input{width:100%}.plugin-registry-search-input:focus-visible,.plugin-registry-action:focus-visible,.plugin-registry-retry:focus-visible{outline:none;box-shadow:var(--focus-ring-strong)}.plugin-registry-list{width:100%;display:flex;flex-direction:column;gap:var(--space-sm);margin-top:var(--space-sm);max-height:min(60vh,34rem);overflow-y:auto}.plugin-registry-item{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border:var(--btn-border-width) solid var(--border);border-radius:var(--radius-md);background:var(--surface)}.plugin-registry-meta{display:flex;flex-direction:column;gap:var(--space-xs);min-width:0}.plugin-registry-title-row{display:flex;align-items:center;gap:var(--space-sm);row-gap:var(--space-xs);flex-wrap:wrap;min-width:0}.plugin-registry-name{color:var(--text);font-size:var(--font-size-base, .9rem);font-weight:500}.plugin-registry-version,.plugin-registry-author,.plugin-registry-description-text{color:var(--text-muted);font-size:var(--font-size-sm, .85rem)}.plugin-registry-description-text{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.plugin-registry-badge,.plugin-registry-status,.plugin-registry-coming-soon{display:inline-flex;align-items:center;padding:var(--btn-border-width) var(--space-xs);border-radius:var(--radius-pill);font-size:var(--font-size-2xs, .75rem);font-weight:600;text-transform:uppercase}.plugin-registry-badge{background:var(--status-in-review-bg);color:var(--in-review)}.plugin-registry-status--installed{background:var(--status-done-bg);color:var(--done)}.plugin-registry-coming-soon{background:var(--status-todo-bg);color:var(--todo)}.plugin-registry-actions{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-xs);flex-shrink:0}.plugin-registry-state{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-lg);border:var(--btn-border-width) solid var(--border);border-radius:var(--radius-md);background:var(--surface);color:var(--text-muted);font-size:var(--font-size-sm, .85rem);text-align:center}.plugin-registry-state--error{color:var(--color-error);background:color-mix(in srgb,var(--color-error) 10%,var(--surface));border-color:color-mix(in srgb,var(--color-error) 45%,var(--border))}.plugin-bundled-runtime-list{width:100%;display:flex;flex-direction:column;gap:var(--space-sm);margin-top:var(--space-sm)}.plugin-bundled-runtime-item{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border:var(--btn-border-width) solid var(--border);border-radius:var(--radius-md);background:var(--surface)}.plugin-bundled-runtime-meta{display:flex;align-items:center;gap:var(--space-sm);row-gap:var(--space-xs);flex-wrap:wrap;min-width:0}.plugin-bundled-runtime-name{color:var(--text);font-size:var(--font-size-base, .9rem);font-weight:500}.plugin-bundled-runtime-badge{display:inline-flex;align-items:center;padding:var(--btn-border-width) var(--space-xs);border-radius:var(--radius-pill);background:var(--status-in-review-bg);color:var(--in-review);font-size:var(--font-size-2xs, .75rem);font-weight:600;text-transform:uppercase}.plugin-bundled-runtime-section{display:flex;flex-direction:column;gap:var(--space-sm)}.plugin-bundled-runtime-header{display:flex;flex-direction:column;gap:var(--space-xs)}.plugin-bundled-runtime-heading{margin:0;font-size:var(--font-size-md, .95rem)}.plugin-bundled-runtime-description{margin:0;font-size:var(--font-size-sm, .85rem);color:var(--text-muted)}.plugin-bundled-runtime-status{display:inline-flex;align-items:center;padding:var(--btn-border-width) var(--space-xs);border-radius:var(--radius-pill);font-size:var(--font-size-2xs, .75rem);font-weight:600;text-transform:uppercase}@media(min-width:769px){.plugin-builtins-status,.plugin-bundled-runtime-status{margin-left:auto}}.plugin-bundled-runtime-status--installed{background:var(--status-done-bg);color:var(--done)}.plugin-bundled-runtime-status--available{background:var(--status-todo-bg);color:var(--todo)}@media(max-width:768px){.plugin-manager,.plugin-manager-detail{padding-inline:var(--space-sm)}.plugin-manager-detail-header{gap:var(--space-sm)}.plugin-detail-title{gap:var(--space-xs)}.plugin-detail-card{padding:var(--space-md);gap:var(--space-sm)}.plugin-list{gap:var(--space-xs)}.plugin-item{padding:var(--space-md);flex-direction:column;align-items:stretch;gap:var(--space-sm)}.plugin-info{width:100%;flex-wrap:wrap;row-gap:var(--space-xs)}.plugin-name{flex:1 1 100%;white-space:normal}.plugin-actions{width:100%;justify-content:flex-end;flex-wrap:wrap;gap:var(--space-sm)}.plugin-actions .btn-icon,.plugin-actions .toggle-switch{min-width:36px;min-height:36px}.plugin-actions .toggle-switch{display:inline-flex;align-items:center;justify-content:center}.plugin-security-row{align-items:flex-start}.plugin-detail-actions{flex-wrap:wrap;justify-content:flex-start}.plugin-detail-actions button{flex:1 1 auto;min-height:36px}.plugin-builtins-item,.plugin-bundled-runtime-item,.plugin-registry-item,.plugin-registry-header{flex-direction:column;align-items:stretch}.plugin-registry-controls{flex-direction:column;align-items:stretch;width:100%}.plugin-registry-category-label,.plugin-registry-search-label{min-width:0;width:100%}.plugin-registry-list{max-height:60vh;overflow-y:auto}.plugin-registry-actions{justify-content:stretch}.plugin-registry-action,.plugin-registry-retry,.plugin-builtins-item .btn,.plugin-bundled-runtime-item .btn{min-height:36px}}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.pr-view{display:flex;flex-direction:column;gap:var(--space-md);height:100%;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:var(--space-lg);color:var(--text)}.pr-view--loading,.pr-view--error{display:flex;align-items:center;gap:var(--space-xs);color:var(--text-muted)}.pr-view--error{color:var(--danger, #e5534b)}.pr-identity{display:flex;align-items:center;gap:var(--space-sm);flex-wrap:wrap;padding-bottom:var(--space-sm);border-bottom:1px solid var(--border)}.pr-identity-repo{font-weight:600}.pr-identity-number{color:var(--accent, var(--text));text-decoration:none;display:inline-flex;align-items:center;gap:2px}.pr-identity-branch{color:var(--text-muted);font-family:var(--font-mono, monospace);font-size:.85em}.pr-identity-state{margin-left:auto;text-transform:uppercase;font-size:.7em;letter-spacing:.04em;padding:2px 6px;border-radius:4px;background:var(--surface-2, color-mix(in srgb, #7f7f7f 15%, transparent));color:var(--text-muted)}.pr-identity-state--failed{background:var(--pr-failed-bg, color-mix(in srgb, #e5534b 18%, transparent));color:var(--danger, #e5534b)}.pr-identity-state--merged{background:var(--pr-merged-bg, color-mix(in srgb, #8250df 18%, transparent))}.pr-placeholder,.pr-notice,.pr-banner,.pr-error-reason{display:flex;align-items:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);border-radius:6px;background:var(--surface-2, color-mix(in srgb, #7f7f7f 10%, transparent))}.pr-banner--responding{background:var(--pr-responding-bg, color-mix(in srgb, #3682dc 14%, transparent))}.pr-notice--unverified{background:var(--pr-unverified-bg, color-mix(in srgb, #dcaa36 14%, transparent))}.pr-error-reason{background:var(--pr-error-bg, color-mix(in srgb, #e5534b 14%, transparent));color:var(--danger, #e5534b)}.pr-action-bar{display:flex;align-items:center;gap:var(--space-sm);flex-wrap:wrap}.pr-action{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border:1px solid var(--border);border-radius:6px;background:var(--surface, transparent);color:var(--text);cursor:pointer;font-size:.85em}.pr-action:disabled{opacity:.5;cursor:not-allowed}.pr-action--merge,.pr-action--merge-confirm{border-color:var(--accent, var(--border))}.pr-action--merge-confirm{background:var(--accent, #2f81f7);color:var(--cta-text)}.pr-action--close{border-color:var(--pr-close-border, color-mix(in srgb, #e5534b 40%, transparent))}.pr-automerge-toggle{display:inline-flex;align-items:center;gap:6px;margin-left:auto;font-size:.82em;color:var(--text-muted)}.pr-automerge-gate{padding:1px 6px;border-radius:4px;background:var(--surface-2, color-mix(in srgb, #7f7f7f 15%, transparent))}.pr-conflict-link{display:inline-flex;align-items:center;gap:4px;color:var(--danger, #e5534b);text-decoration:none;font-size:.85em}.pr-summary{display:flex;gap:var(--space-md);flex-wrap:wrap;padding:var(--space-sm) 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.pr-summary-item{display:inline-flex;align-items:center;gap:4px;font-size:.85em;color:var(--text-muted)}.pr-icon-success{color:var(--success, #3fb950)}.pr-icon-failure{color:var(--danger, #e5534b)}.pr-icon-pending{color:var(--warning, #d29922)}.pr-threads{display:flex;flex-direction:column;gap:var(--space-sm)}.pr-threads-empty{color:var(--text-muted);font-size:.85em}.pr-thread{border:1px solid var(--border);border-radius:6px;padding:var(--space-sm)}.pr-thread--agent-disagreement{border-left:3px solid var(--warning, #d29922);background:var(--pr-disagreement-bg, color-mix(in srgb, #d29922 8%, transparent))}.pr-thread--pending{border-left:3px solid var(--text-muted)}.pr-thread-head{display:flex;align-items:center;gap:var(--space-sm);font-size:.82em}.pr-thread-pending,.pr-thread-disagreed,.pr-thread-fixed{display:inline-flex;align-items:center;gap:4px}.pr-thread-id{color:var(--text-muted);font-family:var(--font-mono, monospace);font-size:.85em;margin-left:auto}.pr-thread-reply{margin-top:6px;margin-left:var(--space-md);padding:var(--space-xs) var(--space-sm);border-left:2px solid var(--border);color:var(--text-muted);font-size:.82em}.pr-inline-error{color:var(--danger, #e5534b);font-size:.85em}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as s,j as e}from"./vendor-react-D37HfzIf.js";import{u as C}from"./vendor-i18n-CV0mwX_-.js";import{L as k,ay as I}from"./index-CpTBp1RG.js";import"./vendor-reactflow-CRZcPCXF.js";import"./vendor-xterm-tcedd2Jt.js";import"./vendor-codemirror-jBKmHyH0.js";function p(i){return`${(i*100).toFixed(1)}%`}function v(i){return i===null?"—":`${(i/6e4).toFixed(1)}m`}function o(i){if(!i)return"—";const t=new Date(i);return Number.isNaN(t.getTime())?i:t.toLocaleString()}function O(){const{t:i}=C("app"),[t,g]=s.useState(null),[f,u]=s.useState(!0),[h,y]=s.useState(null),[c,w]=s.useState(!1),[N,m]=s.useState(!1),[b,x]=s.useState(null),d=s.useCallback(async()=>{u(!0),y(null);try{const a=await fetch("/api/health/reliability");if(!a.ok)throw new Error(`Failed to load reliability metrics (${a.status})`);const r=await a.json();g(r)}catch(a){y(a instanceof Error?a.message:i("reliability.failedToLoad","Failed to load reliability metrics"))}finally{u(!1)}},[i]),D=s.useCallback(async()=>{x(null);const a=await fetch("/api/health/reliability/reset",{method:"POST"});if(!a.ok)throw new Error(`Failed to reset reliability metrics (${a.status})`);await d(),m(!1)},[d]);s.useEffect(()=>{d();const a=setInterval(()=>{d()},6e4);return()=>clearInterval(a)},[d]);const l=t?.headline.inReviewFailureRate7d,n=s.useMemo(()=>l==null?null:Math.max(0,Math.min(1,1-l)),[l]),R=s.useMemo(()=>n===null?"var(--text-muted)":n>=.95?"var(--color-success)":n>=.9?"var(--color-warning)":"var(--color-error)",[n]),A=s.useMemo(()=>(t?.perDay??[]).reduce((a,r)=>a+r.tasksEnteredInReview,0),[t?.perDay]),M=s.useMemo(()=>(t?.perDay??[]).reduce((a,r)=>a+r.tasksBouncedToInProgress,0),[t?.perDay]),S=s.useMemo(()=>t?.perDay?c?t.perDay:t.perDay.filter(a=>a.hasSamples!==!1):[],[t?.perDay,c]),j=s.useMemo(()=>Object.values(t?.mergeAttempts.histogram??{}).reduce((a,r)=>a+r,0),[t?.mergeAttempts.histogram]),E=t?o(t.resetAt??new Date(Date.parse(t.generatedAt)-t.windowDays*864e5).toISOString()):"—";return f&&t===null?e.jsxs("div",{className:"reliability-loading","data-testid":"reliability-loading",children:[e.jsx(k,{size:24,className:"spin"}),e.jsx("p",{children:i("reliability.loading","Loading reliability data...")})]}):h!==null&&t===null?e.jsxs("div",{className:"reliability-error","data-testid":"reliability-error",role:"alert",children:[e.jsx(I,{size:24}),e.jsx("p",{children:h})]}):e.jsxs("section",{className:"reliability-view",children:[e.jsxs("div",{className:"card reliability-card reliability-headline-card",children:[e.jsxs("div",{className:"reliability-section-header",children:[e.jsx("h2",{children:i("reliability.heading","Reliability")}),e.jsx("button",{className:"btn btn-danger btn-sm",onClick:()=>m(!0),children:i("reliability.resetStats","Reset stats")})]}),e.jsx("div",{className:"reliability-headline",style:{color:R},children:l==null?i("reliability.insufficientData","Insufficient data — {{reason}}",{reason:t?.headline.reason??"unknown"}):p(n??0)}),n!==null?e.jsx("div",{className:"reliability-muted",children:i("reliability.successRateLabel","In-review success rate (last 7d)")}):null,t?.resetAt?e.jsx("div",{className:"reliability-muted",children:i("reliability.countingSince","Counting since {{date}}",{date:o(t.resetAt)})}):null,e.jsxs("details",{className:"reliability-details",children:[e.jsx("summary",{children:i("reliability.details","Details")}),e.jsxs("div",{className:"reliability-details-content",children:[e.jsx("div",{children:i("reliability.bouncedEntered","{{bounced}} bounced / {{entered}} entered (last {{days}}d)",{bounced:M,entered:A,days:t?.windowDays??7})}),l!=null?e.jsx("div",{children:i("reliability.failureRate","Failure rate: {{rate}}",{rate:p(l)})}):null,e.jsx("div",{children:i("reliability.window","Window: {{start}} → {{end}}",{start:E,end:o(t?.generatedAt)})}),t?.resetAt?e.jsx("div",{children:i("reliability.resetBaseline","Reset baseline: {{date}}",{date:o(t.resetAt)})}):null,t?.headline.reason?e.jsx("div",{children:i("reliability.reason","Reason: {{reason}}",{reason:t.headline.reason})}):null]})]})]}),e.jsxs("div",{className:"reliability-grid",children:[e.jsxs("div",{className:"card reliability-card",children:[e.jsxs("div",{className:"reliability-section-header",children:[e.jsx("h3",{children:i("reliability.inReviewFlow","In-review flow")}),e.jsx("button",{className:"btn btn-sm",onClick:()=>w(a=>!a),children:c?i("reliability.hideEmptyDays","Hide empty days"):i("reliability.showEmptyDays","Show empty days")})]}),e.jsxs("table",{className:"reliability-table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:i("reliability.table.date","Date")}),e.jsx("th",{children:i("reliability.table.entered","Entered")}),e.jsx("th",{children:i("reliability.table.bounced","Bounced")})]})}),e.jsx("tbody",{children:S.map(a=>e.jsxs("tr",{children:[e.jsx("td",{children:a.date}),e.jsx("td",{children:a.tasksEnteredInReview}),e.jsx("td",{children:a.tasksBouncedToInProgress})]},a.date))})]})]}),e.jsxs("div",{className:"card reliability-card",children:[e.jsx("h3",{children:i("reliability.duration.heading","Duration")}),e.jsxs("div",{className:"reliability-stat-row",children:[e.jsx("span",{children:i("reliability.duration.p50","P50")}),e.jsx("strong",{children:v(t?.duration.p50Ms??null)})]}),e.jsxs("div",{className:"reliability-stat-row",children:[e.jsx("span",{children:i("reliability.duration.p95","P95")}),e.jsx("strong",{children:v(t?.duration.p95Ms??null)})]}),e.jsx("div",{className:"reliability-muted",children:i("reliability.duration.samples","Samples: {{count}}",{count:t?.duration.sampleCount??0})}),e.jsxs("details",{className:"reliability-details",children:[e.jsx("summary",{children:i("reliability.duration.moreStats","More stats")}),e.jsxs("div",{className:"reliability-details-content",children:[e.jsx("div",{children:i("reliability.duration.p50Raw","P50 raw: {{value}} ms",{value:t?.duration.p50Ms??"—"})}),e.jsx("div",{children:i("reliability.duration.p95Raw","P95 raw: {{value}} ms",{value:t?.duration.p95Ms??"—"})}),e.jsx("div",{children:i("reliability.duration.sampleCount","Sample count: {{count}}",{count:t?.duration.sampleCount??0})}),t?.duration.reason?e.jsx("div",{children:i("reliability.duration.reason","Reason: {{reason}}",{reason:t.duration.reason})}):null]})]})]}),e.jsxs("div",{className:"card reliability-card",children:[e.jsx("h3",{children:i("reliability.mergeAttempts.heading","Merge attempts")}),e.jsxs("div",{className:"reliability-stat-row",children:[e.jsx("span",{children:i("reliability.mergeAttempts.mean","Mean")}),e.jsx("strong",{children:t?.mergeAttempts.mean?.toFixed(2)??"—"})]}),e.jsxs("div",{className:"reliability-stat-row",children:[e.jsx("span",{children:i("reliability.mergeAttempts.max","Max")}),e.jsx("strong",{children:t?.mergeAttempts.max??"—"})]}),e.jsx("ul",{className:"reliability-histogram",children:Object.entries(t?.mergeAttempts.histogram??{}).map(([a,r])=>e.jsxs("li",{children:[e.jsx("span",{children:a}),e.jsx("div",{className:"reliability-histogram-bar-wrap",children:e.jsx("div",{className:"reliability-histogram-bar",style:{width:`${Math.min(r*20,100)}%`}})}),e.jsx("strong",{children:r})]},a))}),e.jsxs("details",{className:"reliability-details",children:[e.jsx("summary",{children:i("reliability.mergeAttempts.moreStats","More stats")}),e.jsxs("div",{className:"reliability-details-content",children:[e.jsx("div",{children:i("reliability.mergeAttempts.tasksCounted","Tasks counted: {{count}}",{count:j})}),e.jsx("div",{children:i("reliability.mergeAttempts.histogramTotal","Histogram total: {{count}}",{count:j})}),t?.mergeAttempts.reason?e.jsx("div",{children:i("reliability.mergeAttempts.reason","Reason: {{reason}}",{reason:t.mergeAttempts.reason})}):null]})]})]})]}),N?e.jsx("div",{className:"modal-overlay open",role:"presentation",children:e.jsxs("div",{className:"modal",role:"dialog","aria-modal":"true","aria-labelledby":"reliability-reset-title",children:[e.jsx("div",{className:"modal-header",children:e.jsx("h2",{id:"reliability-reset-title",children:i("reliability.resetModal.title","Reset reliability stats?")})}),e.jsx("p",{children:i("reliability.resetModal.description","This sets a new baseline for reliability statistics. Historical events older than the reset time are excluded from counts but are not deleted.")}),b?e.jsx("div",{className:"form-error",children:b}):null,e.jsxs("div",{className:"modal-actions",children:[e.jsx("button",{className:"btn",onClick:()=>m(!1),children:i("common.cancel","Cancel")}),e.jsx("button",{className:"btn btn-danger",onClick:()=>{D().catch(a=>{x(a instanceof Error?a.message:i("reliability.resetModal.failedError","Failed to reset reliability stats"))})},children:i("reliability.resetModal.confirm","Confirm reset")})]})]})}):null]})}export{O as ReliabilityView};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.reliability-view{display:flex;flex:1 1 auto;flex-direction:column;gap:var(--space-lg);height:100%;min-height:0;min-width:0;overflow-y:auto;-webkit-overflow-scrolling:touch}.reliability-card{padding:var(--space-lg);border:var(--border-width-thin, .0625rem) solid var(--border);border-radius:var(--radius-md);background:var(--card)}.reliability-loading{display:flex;flex:1 1 auto;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-md);height:100%;min-width:0;padding:var(--space-2xl);color:var(--text-muted)}.reliability-error{display:flex;flex:1 1 auto;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-md);height:100%;min-width:0;padding:var(--space-2xl);text-align:center}.reliability-error p{color:var(--text-muted);margin:0}.reliability-headline-card{display:flex;flex-direction:column;gap:var(--space-sm)}.reliability-headline{font-size:var(--font-size-2xl, 1.75rem);font-weight:700}.reliability-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-lg)}.reliability-section-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm)}.reliability-table{width:100%;border-collapse:collapse;margin-top:var(--space-sm)}.reliability-table th,.reliability-table td{text-align:left;padding:var(--space-xs) var(--space-sm);border-bottom:var(--border-width-thin, .0625rem) solid var(--border)}.reliability-stat-row{display:flex;justify-content:space-between;align-items:center;padding:var(--space-xs) 0}.reliability-muted{color:var(--text-muted)}.reliability-details{margin-top:var(--space-sm)}.reliability-details summary{color:var(--text-muted);cursor:pointer}.reliability-details-content{margin-top:var(--space-sm);display:flex;flex-direction:column;gap:var(--space-xs);color:var(--text-muted)}.reliability-histogram{list-style:none;margin:var(--space-sm) 0 0;padding:0;display:flex;flex-direction:column;gap:var(--space-sm)}.reliability-histogram li{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,6fr) minmax(0,1fr);align-items:center;gap:var(--space-sm)}.reliability-histogram-bar-wrap{width:100%;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--color-info) 15%,transparent);overflow:hidden}.reliability-histogram-bar{height:var(--space-md);background:var(--color-info)}@media(max-width:768px){.reliability-view,.reliability-loading,.reliability-error{padding-bottom:calc(var(--space-lg) + var(--mobile-nav-height) + env(safe-area-inset-bottom,0px) + var(--standalone-bottom-gap))}.reliability-grid{grid-template-columns:minmax(0,1fr)}.reliability-section-header{flex-direction:column;align-items:flex-start}}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.cli-session-terminal{display:flex;flex-direction:column;min-height:0;height:100%;background:var(--terminal-bg, var(--bg));border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden}.cli-session-terminal__header{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-sm);background:var(--surface);border-bottom:1px solid var(--border);flex-wrap:wrap}.cli-session-terminal__posture-wrap{position:relative}.cli-posture-chip{display:inline-flex;align-items:center;gap:var(--space-xs);padding:2px var(--space-sm);font-size:.75rem;line-height:1.4;color:var(--text);background:var(--card);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--transition-fast, .12s) ease}.cli-posture-chip:hover{background:var(--card-hover)}.cli-posture-chip--elevated{color:var(--warning, var(--color-warning));border-color:var(--warning, var(--color-warning))}.cli-posture-chip__mode{color:var(--text-muted)}.cli-posture-chip__flag{font-weight:600}.cli-posture-tooltip{position:absolute;top:calc(100% + var(--space-xs));left:0;z-index:10;min-width:220px;padding:var(--space-sm);background:var(--card);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-md)}.cli-posture-tooltip__title{margin:0 0 var(--space-xs);font-size:.75rem;font-weight:600;color:var(--text)}.cli-posture-tooltip__list{margin:0;padding-left:var(--space-md);font-size:.75rem;color:var(--text-muted)}.cli-posture-tooltip__settings{display:inline-flex;align-items:center;gap:var(--space-xs);margin-top:var(--space-sm);padding:2px var(--space-sm);font-size:.75rem;color:var(--accent, var(--color-primary));background:transparent;border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer}.cli-session-terminal__readonly-badge,.cli-session-terminal__replay-badge{display:inline-flex;align-items:center;gap:var(--space-xs);padding:2px var(--space-sm);font-size:.7rem;color:var(--text-muted);background:var(--card);border:1px solid var(--border);border-radius:var(--radius-sm)}.cli-session-terminal__replay-badge[data-replay-mode=ended]{color:var(--text-muted)}.cli-session-terminal__viewport{flex:1 1 auto;min-height:0;padding:var(--space-xs);background:var(--terminal-bg, var(--bg))}.cli-session-terminal__advance-strip{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);padding:var(--space-sm);background:var(--surface);border-top:1px solid var(--border);flex-wrap:wrap}.cli-session-terminal__advance-copy{font-size:.8125rem;color:var(--text)}.cli-session-terminal__advance-actions{display:flex;gap:var(--space-xs)}.cli-session-terminal__advance-btn{padding:4px var(--space-md);font-size:.8125rem;color:var(--button-primary-text, var(--accent-text));background:var(--button-primary-bg, var(--accent));border:1px solid transparent;border-radius:var(--radius-sm);cursor:pointer}.cli-session-terminal__advance-btn:disabled{opacity:.6;cursor:default}.cli-session-terminal__advance-btn--secondary{color:var(--text);background:var(--card);border-color:var(--border)}.cli-session-terminal__mobile-bar{position:sticky;bottom:0;z-index:5;display:flex;flex-direction:column;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm) calc(var(--space-sm) + env(safe-area-inset-bottom,0px));background:var(--surface);border-top:1px solid var(--border)}.cli-session-terminal__mobile-bar--keyboard-open{position:fixed;left:0;right:0;padding-bottom:var(--space-sm)}.cli-session-terminal__key-row{display:flex;gap:var(--space-xs);overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.cli-session-terminal__key-row::-webkit-scrollbar{display:none}.cli-terminal-key{flex:0 0 auto;min-width:40px;min-height:36px;padding:var(--space-xs) var(--space-sm);font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:.8125rem;color:var(--text);background:var(--card);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;touch-action:manipulation}.cli-terminal-key:active{background:var(--card-hover)}.cli-terminal-key--ctrl.cli-terminal-key--active{color:var(--accent-text, var(--button-primary-text));background:var(--accent, var(--color-primary));border-color:var(--accent, var(--color-primary))}.cli-terminal-key--ctrlc{color:var(--warning, var(--color-warning));border-color:var(--warning, var(--color-warning))}.cli-session-terminal__input-row{display:flex;gap:var(--space-xs)}.cli-session-terminal__mobile-input{flex:1 1 auto;min-width:0;min-height:38px;padding:var(--space-xs) var(--space-sm);font-size:16px;color:var(--text);background:var(--input-bg, var(--bg));border:1px solid var(--border);border-radius:var(--radius-sm)}.cli-session-terminal__mobile-input:focus{outline:none;border-color:var(--accent, var(--color-primary))}.cli-session-terminal__mobile-send{flex:0 0 auto;min-height:38px;padding:var(--space-xs) var(--space-md);font-size:.8125rem;color:var(--button-primary-text, var(--accent-text));background:var(--button-primary-bg, var(--accent));border:1px solid transparent;border-radius:var(--radius-sm);cursor:pointer;touch-action:manipulation}@media(max-width:768px),(max-height:480px){.cli-session-terminal__viewport{-webkit-overflow-scrolling:touch}}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-xterm-tcedd2Jt.js","assets/vendor-react-D37HfzIf.js","assets/vendor-xterm-LZoznX6r.css","assets/addon-fit-B4jkcKk4.js","assets/addon-unicode11-Cdne2Sj4.js","assets/addon-webgl-CeCSULF1.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{bF as oe,ct as le,by as re,ax as ce,af as de,cS as H,cT as ue,cH as me,a0 as D,cU as pe}from"./index-CpTBp1RG.js";import{r as i,j as e}from"./vendor-react-D37HfzIf.js";import"./vendor-xterm-tcedd2Jt.js";import{u as be}from"./vendor-i18n-CV0mwX_-.js";import"./vendor-reactflow-CRZcPCXF.js";import"./vendor-codemirror-jBKmHyH0.js";const fe=32*1024,ye=100,he="\x1B",_e=" ",we="",ke="\x1B[A",Se="\x1B[B",xe="\x1B[C",ve="\x1B[D";function Y(r){if(r.length!==1)return null;const n=r.toUpperCase().charCodeAt(0);return n>=64&&n<=95?String.fromCharCode(n&31):null}function Ce(){const[r,l]=i.useState(()=>H());return i.useEffect(()=>{if(typeof window>"u"||typeof window.matchMedia!="function")return;const n=window.matchMedia(ue),a=()=>l(H());return a(),typeof n.addEventListener=="function"?(n.addEventListener("change",a),()=>n.removeEventListener("change",a)):(n.addListener(a),()=>n.removeListener(a))},[]),r}function Te(r,l){if(typeof window>"u")return"";const a=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/api/cli-sessions/ws?sessionId=${encodeURIComponent(r)}&ticket=${encodeURIComponent(l)}`;return pe(a)}function Ne(r){if(typeof window<"u"&&typeof window.atob=="function"){const l=window.atob(r),n=new Uint8Array(l.length);for(let a=0;a<l.length;a++)n[a]=l.charCodeAt(a);return new TextDecoder("utf-8").decode(n)}return Buffer.from(r,"base64").toString("utf8")}function Pe({sessionId:r,readOnly:l=!1,posture:n,mode:a="live",projectId:M,onConfirmAdvance:w,showConfirmAdvance:A=!1,onOpenAdapterSettings:L}){const{t:s}=be("app"),v=i.useRef(null),P=i.useRef(null),I=i.useRef(null),_=i.useRef(null),[W,U]=i.useState(!1),[G,O]=i.useState(!1),[z,K]=i.useState(!1),k=Ce(),{keyboardOpen:C,keyboardOverlap:Z}=oe({enabled:k}),q=i.useRef(null),[y,$]=i.useState(""),[S,T]=i.useState(!1),b=i.useCallback(t=>{if(!t)return;const c=_.current;c?.readyState===WebSocket.OPEN&&c.send(JSON.stringify({type:"input",data:t}))},[]),x=i.useCallback(t=>{if(S){const c=Y(t);if(T(!1),c){b(c);return}}b(t)},[S,b]),o=i.useCallback(t=>{t.preventDefault()},[]),Q=i.useCallback(t=>{t?.preventDefault?.(),y&&b(y),b("\r"),$("")},[y,b]),X=i.useCallback(t=>{if(S&&t.length>y.length){const c=t.slice(y.length,y.length+1),h=Y(c);if(T(!1),h){b(h);return}}$(t)},[S,y,b]);i.useEffect(()=>{A&&O(!1)},[A,r]),i.useEffect(()=>{if(!r||typeof window>"u")return;let t=!1,c=null,h=null,g=0;const J=(d,f)=>{const E=_.current;E?.readyState===WebSocket.OPEN&&E.send(JSON.stringify({type:"resize",cols:d,rows:f}))},ne=d=>{if(g+=d,g<fe)return;const f=_.current;f?.readyState===WebSocket.OPEN&&f.send(JSON.stringify({type:"ack",bytes:g})),g=0};return(async()=>{let d;try{d=await me(`/cli-sessions/${encodeURIComponent(r)}/attach-ticket`,{method:"POST",body:JSON.stringify(M?{projectId:M}:{})})}catch{return}if(t)return;const[{Terminal:f},{FitAddon:E},{Unicode11Addon:ie}]=await Promise.all([D(()=>import("./vendor-xterm-tcedd2Jt.js").then(p=>p.x),__vite__mapDeps([0,1,2])),D(()=>import("./addon-fit-B4jkcKk4.js").then(p=>p.a),__vite__mapDeps([3,1])),D(()=>import("./addon-unicode11-Cdne2Sj4.js").then(p=>p.a),__vite__mapDeps([4,1]))]);if(t||!v.current)return;const m=new f({convertEol:!1,cursorBlink:!l&&a==="live",disableStdin:l,scrollback:1e4,fontFamily:'ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace',fontSize:13}),j=new E;m.loadAddon(j);const se=new ie;m.loadAddon(se),m.unicode.activeVersion="11",m.open(v.current),P.current=m,I.current=j;try{const{WebglAddon:p}=await D(async()=>{const{WebglAddon:u}=await import("./addon-webgl-CeCSULF1.js").then(R=>R.a);return{WebglAddon:u}},__vite__mapDeps([5,1]));if(!t){const u=new p;u.onContextLoss(()=>{try{u.dispose()}catch{}}),m.loadAddon(u)}}catch{}try{j.fit()}catch{}l||m.onData(p=>{const u=_.current;u?.readyState===WebSocket.OPEN&&u.send(JSON.stringify({type:"input",data:p}))}),c=new ResizeObserver(()=>{h&&clearTimeout(h),h=setTimeout(()=>{try{j.fit(),J(m.cols,m.rows)}catch{}},ye)}),c.observe(v.current);const B=new WebSocket(Te(r,d.ticket));_.current=B,B.onopen=()=>{J(m.cols,m.rows)},B.onmessage=p=>{let u;try{u=JSON.parse(typeof p.data=="string"?p.data:"")}catch{return}switch(u.type){case"scrollback":case"data":{if(typeof u.data!="string")return;const R=Ne(u.data),ae=R.length;m.write(R,()=>ne(ae));break}}}})(),()=>{t=!0,h&&clearTimeout(h),c&&c.disconnect();const d=_.current;if(d){d.onopen=null,d.onmessage=null,d.onclose=null,d.onerror=null;try{d.close()}catch{}_.current=null}const f=P.current;if(f){try{f.dispose()}catch{}P.current=null}I.current=null}},[r,l,a,M]);const F=i.useMemo(()=>a==="idle"?s("cliTerminal.replayIdle","Session idle"):a==="ended"?s("cliTerminal.replayEnded","Session ended"):null,[a,s]),ee=i.useCallback(async()=>{if(w){K(!0);try{await w("advance"),O(!0)}finally{K(!1)}}},[w]),te=i.useCallback(async()=>{w&&await w("not-yet"),O(!0)},[w]),N=!!n?.elevated,V=n?.elevatedFlags?.join(", ");return e.jsxs("div",{className:`cli-session-terminal${k?" cli-session-terminal--mobile":""}${k&&C?" cli-session-terminal--keyboard-open":""}`,"data-mode":a,"data-read-only":l,"data-mobile":k,"data-keyboard-open":k&&C,children:[e.jsxs("header",{className:"cli-session-terminal__header",children:[n&&e.jsxs("div",{className:"cli-session-terminal__posture-wrap",children:[e.jsxs("button",{type:"button",className:`cli-posture-chip${N?" cli-posture-chip--elevated":""}`,"data-elevated":N,"aria-expanded":W,onClick:()=>U(t=>!t),children:[N?e.jsx(le,{size:13,"aria-hidden":"true"}):e.jsx(re,{size:13,"aria-hidden":"true"}),e.jsx("span",{className:"cli-posture-chip__name",children:n.adapterName}),n.mode&&e.jsx("span",{className:"cli-posture-chip__mode",children:n.mode}),N&&V&&e.jsx("span",{className:"cli-posture-chip__flag",children:V})]}),W&&e.jsxs("div",{className:"cli-posture-tooltip",role:"tooltip",children:[e.jsx("p",{className:"cli-posture-tooltip__title",children:s("cliTerminal.postureResolved","Resolved posture")}),e.jsxs("ul",{className:"cli-posture-tooltip__list",children:[(n.resolved??[]).map((t,c)=>e.jsx("li",{children:t},c)),(n.resolved??[]).length===0&&e.jsx("li",{children:n.mode??s("cliTerminal.postureBaseline","Baseline")})]}),L&&e.jsxs("button",{type:"button",className:"cli-posture-tooltip__settings",onClick:()=>{U(!1),L()},children:[e.jsx(ce,{size:12,"aria-hidden":"true"}),s("cliTerminal.adapterSettings","Adapter settings")]})]})]}),l&&e.jsxs("span",{className:"cli-session-terminal__readonly-badge",children:[e.jsx(de,{size:12,"aria-hidden":"true"}),s("cliTerminal.readOnly","Read-only")]}),F&&e.jsx("span",{className:"cli-session-terminal__replay-badge","data-replay-mode":a,children:F})]}),e.jsx("div",{className:"cli-session-terminal__viewport",ref:v,"data-testid":"cli-terminal-viewport"}),A&&!G&&e.jsxs("div",{className:"cli-session-terminal__advance-strip",role:"region",children:[e.jsx("span",{className:"cli-session-terminal__advance-copy",children:s("cliTerminal.advancePrompt","This session looks idle — advance to review?")}),e.jsxs("div",{className:"cli-session-terminal__advance-actions",children:[e.jsx("button",{type:"button",className:"cli-session-terminal__advance-btn",disabled:z,onClick:ee,children:s("cliTerminal.advance","Advance")}),e.jsx("button",{type:"button",className:"cli-session-terminal__advance-btn cli-session-terminal__advance-btn--secondary",disabled:z,onClick:te,children:s("cliTerminal.notYet","Not yet")})]})]}),k&&!l&&e.jsxs("div",{className:`cli-session-terminal__mobile-bar${C?" cli-session-terminal__mobile-bar--keyboard-open":""}`,"data-testid":"cli-terminal-mobile-bar",style:C?{bottom:`${Z}px`}:void 0,children:[e.jsxs("div",{className:"cli-session-terminal__key-row","data-testid":"cli-terminal-key-bar",children:[e.jsx("button",{type:"button",className:`cli-terminal-key cli-terminal-key--ctrl${S?" cli-terminal-key--active":""}`,"data-testid":"cli-key-ctrl","aria-label":s("cliTerminal.mobileKeyCtrl","Sticky Ctrl modifier"),"aria-pressed":S,onPointerDown:o,onMouseDown:o,onClick:()=>T(t=>!t),children:"Ctrl"}),e.jsx("button",{type:"button",className:"cli-terminal-key","data-testid":"cli-key-esc","aria-label":s("cliTerminal.mobileKeyEsc","Send Escape"),onPointerDown:o,onMouseDown:o,onClick:()=>x(he),children:"Esc"}),e.jsx("button",{type:"button",className:"cli-terminal-key","data-testid":"cli-key-tab","aria-label":s("cliTerminal.mobileKeyTab","Send Tab"),onPointerDown:o,onMouseDown:o,onClick:()=>x(_e),children:"Tab"}),e.jsx("button",{type:"button",className:"cli-terminal-key cli-terminal-key--ctrlc","data-testid":"cli-key-ctrl-c","aria-label":s("cliTerminal.mobileKeyCtrlC","Send Ctrl-C"),onPointerDown:o,onMouseDown:o,onClick:()=>{T(!1),b(we)},children:"^C"}),e.jsx("button",{type:"button",className:"cli-terminal-key","data-testid":"cli-key-arrow-up","aria-label":s("cliTerminal.mobileKeyArrowUp","Cursor up"),onPointerDown:o,onMouseDown:o,onClick:()=>x(ke),children:"↑"}),e.jsx("button",{type:"button",className:"cli-terminal-key","data-testid":"cli-key-arrow-down","aria-label":s("cliTerminal.mobileKeyArrowDown","Cursor down"),onPointerDown:o,onMouseDown:o,onClick:()=>x(Se),children:"↓"}),e.jsx("button",{type:"button",className:"cli-terminal-key","data-testid":"cli-key-arrow-left","aria-label":s("cliTerminal.mobileKeyArrowLeft","Cursor left"),onPointerDown:o,onMouseDown:o,onClick:()=>x(ve),children:"←"}),e.jsx("button",{type:"button",className:"cli-terminal-key","data-testid":"cli-key-arrow-right","aria-label":s("cliTerminal.mobileKeyArrowRight","Cursor right"),onPointerDown:o,onMouseDown:o,onClick:()=>x(xe),children:"→"})]}),e.jsxs("form",{className:"cli-session-terminal__input-row",onSubmit:Q,children:[e.jsx("input",{ref:q,type:"text",className:"cli-session-terminal__mobile-input","data-testid":"cli-terminal-mobile-input",value:y,placeholder:s("cliTerminal.mobileInputPlaceholder","Type to send to the session…"),autoCapitalize:"off",autoCorrect:"off",autoComplete:"off",spellCheck:!1,onChange:t=>X(t.target.value)}),e.jsx("button",{type:"submit",className:"cli-session-terminal__mobile-send","data-testid":"cli-terminal-mobile-send","aria-label":s("cliTerminal.mobileSend","Send"),onPointerDown:o,onMouseDown:o,onClick:()=>Q(),children:s("cliTerminal.mobileSend","Send")})]})]})]})}export{Pe as SessionTerminal};
|