wednesdayai 0.6.1-dev.47 → 0.6.1-dev.50
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/{acp-cli-DwgE-JaK.js → acp-cli-COVr7c9K.js} +12 -12
- package/dist/{agent-DOJWHSTp.js → agent-BgBSmNaI.js} +11 -11
- package/dist/{agent-BzS-Bw92.js → agent-XU4Yrfkg.js} +19 -19
- package/dist/{agent-turn-enqueue-DNz67IZC.js → agent-turn-enqueue-C65boHpU.js} +6 -6
- package/dist/{agent-turn-execute-CVq_M1H9.js → agent-turn-execute-CijEn5uU.js} +81 -81
- package/dist/{agent-turn-recovery-adapter-CVhr928E.js → agent-turn-recovery-adapter-xa1CJlHy.js} +4 -4
- package/dist/{agent-turn-runner-MK7RWfZB.js → agent-turn-runner-ns-G6-qQ.js} +4 -4
- package/dist/{agent-turn-runner-BnpbHkgj.js → agent-turn-runner-zXi4ADUq.js} +6 -6
- package/dist/{agents-iPiwcs70.js → agents-DdxbZ1yR.js} +15 -15
- package/dist/{agents.config-Dh-NFmf1.js → agents.config-Du-EvARZ.js} +2 -2
- package/dist/{audit-D4zYMRNh.js → audit-0XGsgYln.js} +21 -21
- package/dist/{auth-BLSoSze_.js → auth-a3TKKlev.js} +4 -4
- package/dist/{auth-choice-2S2Bu397.js → auth-choice-6lPmGWX_.js} +13 -13
- package/dist/{auth-choice-CAlWQnS0.js → auth-choice-BlU5Jwiy.js} +16 -16
- package/dist/{auth-choice.apply-helpers-DXEH3kKc.js → auth-choice.apply-helpers-BT5h7Kd2.js} +1 -1
- package/dist/{auth-token-RZVdRVFL.js → auth-token-BJlagO1q.js} +2 -2
- package/dist/{banner-DPhzJGvu.js → banner-DTi0GYhj.js} +4 -4
- package/dist/{bonjour-discovery-BP2NnLb7.js → bonjour-discovery-BaPEhz6-.js} +3 -3
- package/dist/{browser-cli-DqPOdkfi.js → browser-cli-cJbbNuC-.js} +20 -20
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +32 -32
- package/dist/bundled/bootstrap-extra-files/handler.js +5 -5
- package/dist/bundled/command-logger/handler.js +2 -2
- package/dist/bundled/session-journal/handler.js +31 -31
- package/dist/bundled/session-memory/handler.js +32 -32
- package/dist/{call-DzGlAM6A.js → call-DC_l0C6c.js} +5 -5
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{catalog-feed-DAWwBcpU.js → catalog-feed-BPQiz-j4.js} +2 -2
- package/dist/{channel-account-context-DHCvTbB_.js → channel-account-context-BR30O-XA.js} +2 -2
- package/dist/{channel-options-C-m0chcy.js → channel-options-pWJ9tPoi.js} +3 -3
- package/dist/{channel-selection-o_GXmd3S.js → channel-selection-SzzxWFqF.js} +1 -1
- package/dist/{channels-cli-DDV8DQJF.js → channels-cli-DCPDMwOi.js} +102 -102
- package/dist/{channels-status-issues-CDGOGIDW.js → channels-status-issues-D7YJcPZY.js} +1 -1
- package/dist/{chrome-BblDtIhl.js → chrome-DaxSYq9x.js} +6 -6
- package/dist/{chrome-C1IRBXCq.js → chrome-cV7G42a8.js} +32 -32
- package/dist/{clack-prompter-X5gjXw2v.js → clack-prompter-CSTfawN7.js} +5 -5
- package/dist/clawbot-cli-N0qA9LCg.js +32 -0
- package/dist/cli-BS1xXWfW.js +147 -0
- package/dist/{client-RYxRFbaf.js → client-CXlXbWxa.js} +4 -4
- package/dist/{client-profiles-DJoOHmYb.js → client-profiles-BPSW-Pej.js} +2 -2
- package/dist/{clipboard-DqxGZScZ.js → clipboard-C0KqeNJz.js} +1 -1
- package/dist/{command-queue-CZNc1Y5b.js → command-queue-CypbHAAc.js} +1 -1
- package/dist/{command-queue-CgNl6dbc.js → command-queue-DCuGQ6oE.js} +1 -1
- package/dist/{command-registry-nGIVkV6u.js → command-registry-Dn80fYRF.js} +13 -13
- package/dist/{command-secret-targets-BwUg9MG7.js → command-secret-targets-DJebWnC0.js} +4 -4
- package/dist/{commands-P3aAWSG_.js → commands-C4yR5Eki.js} +1 -1
- package/dist/{commands-registry-jq_YarKY.js → commands-registry-DagIzqO7.js} +4 -4
- package/dist/{completion-cli-CdEHcp3V.js → completion-cli-CFOXdHq-.js} +5 -5
- package/dist/{config-cli-BDy6tJDD.js → config-cli-DtQjTEf3.js} +14 -14
- package/dist/{config-guard-I6AtTyZv.js → config-guard-J_hz16uv.js} +4 -4
- package/dist/{config-validation-otVjLKQn.js → config-validation-Db_ZJIqZ.js} +4 -4
- package/dist/{configure-u-u8aXM_.js → configure-DbO7EHyB.js} +22 -22
- package/dist/{console-CdR5lE0A.js → console-eDkX4znK.js} +1 -1
- package/dist/control-ui-v2/assets/{AgentsView-BtvwUvjT.js → AgentsView-K8DEVXxj.js} +1 -1
- package/dist/control-ui-v2/assets/{AutomationsView-Bm551KRf.js → AutomationsView-DO0ssbS6.js} +1 -1
- package/dist/control-ui-v2/assets/Badge-me4YM1lq.js +1 -0
- package/dist/control-ui-v2/assets/{Button-D5rMawzJ.js → Button-ralPMMNs.js} +1 -1
- package/dist/control-ui-v2/assets/{ChannelsView-Bmcrzyc8.js → ChannelsView-8vJB0hXL.js} +1 -1
- package/dist/control-ui-v2/assets/{ConfigForm-tS4Ekkuj.js → ConfigForm-IOs1Exic.js} +1 -1
- package/dist/control-ui-v2/assets/{ConfirmDialog-B-AAbwH-.js → ConfirmDialog-9ode6FP3.js} +1 -1
- package/dist/control-ui-v2/assets/{DataTable-BqqaNmU8.js → DataTable-BbRrWxor.js} +1 -1
- package/dist/control-ui-v2/assets/{DebugView-w3AcoKSJ.js → DebugView-hDoK-Miv.js} +1 -1
- package/dist/control-ui-v2/assets/{Dialog-Che1C2PS.js → Dialog-oJKnAIqZ.js} +1 -1
- package/dist/control-ui-v2/assets/{DreamsView-CRVOkZ0y.js → DreamsView-QBWBlJnW.js} +1 -1
- package/dist/control-ui-v2/assets/{EntityLink-D6UsLKQR.js → EntityLink-CMtTP9Dk.js} +1 -1
- package/dist/control-ui-v2/assets/{FilterPills-CA2lRy0A.js → FilterPills-C_zBIqFP.js} +1 -1
- package/dist/control-ui-v2/assets/{InstancesView-D1s_2Z-j.js → InstancesView-BlXUEHAU.js} +1 -1
- package/dist/control-ui-v2/assets/{LearningView-BOxsGx8P.js → LearningView-De4YeA4M.js} +1 -1
- package/dist/control-ui-v2/assets/{LogsView-DU03hzlQ.js → LogsView-CbllorCk.js} +1 -1
- package/dist/control-ui-v2/assets/{NodesView-DH8y_KeJ.js → NodesView-DD4GYH-6.js} +1 -1
- package/dist/control-ui-v2/assets/{OverviewView-DHPrvXcn.js → OverviewView-7YdkWdG1.js} +1 -1
- package/dist/control-ui-v2/assets/{Panel-DM0JsHgz.js → Panel-CqcbBXzJ.js} +1 -1
- package/dist/control-ui-v2/assets/{PluginMount-DfCGGLsN.js → PluginMount-CIP5T99f.js} +1 -1
- package/dist/control-ui-v2/assets/{PluginPageView-7zgkiz9P.js → PluginPageView-D-WSAQoY.js} +1 -1
- package/dist/control-ui-v2/assets/{PluginPanels-BfBbsH_Z.js → PluginPanels-AFbR8qyk.js} +1 -1
- package/dist/control-ui-v2/assets/{RecoveryView-CrGTo_hu.js → RecoveryView-wCA7Nq9J.js} +1 -1
- package/dist/control-ui-v2/assets/{RunsView-Dp6Mtciq.js → RunsView-DucoEAaM.js} +1 -1
- package/dist/control-ui-v2/assets/{SessionsView-DbjlMwqU.js → SessionsView-0DgZ_-MW.js} +1 -1
- package/dist/control-ui-v2/assets/{SettingsView-Ci22dw48.js → SettingsView-CfTJTK06.js} +1 -1
- package/dist/control-ui-v2/assets/{SkillsView-7BGQcoCn.js → SkillsView-C_sMCqlY.js} +1 -1
- package/dist/control-ui-v2/assets/{Stat-DQyb-fKe.js → Stat-BRQhQ01w.js} +1 -1
- package/dist/control-ui-v2/assets/{StatusDot-CRJsKnJw.js → StatusDot-CjtPcYD9.js} +1 -1
- package/dist/control-ui-v2/assets/{StorageView-5BqFOHli.js → StorageView-B3vVHqxH.js} +1 -1
- package/dist/control-ui-v2/assets/{UpdatedAgo-D_q8xIeZ.js → UpdatedAgo-CJqGVu6_.js} +1 -1
- package/dist/control-ui-v2/assets/{UsageView-Bm9sF-Wt.js → UsageView-BUZtG2MG.js} +1 -1
- package/dist/control-ui-v2/assets/{config-store-zXNM_umy.js → config-store-DiHUH-77.js} +1 -1
- package/dist/control-ui-v2/assets/{format-DpM2rlEo.js → format-BPrfsCHW.js} +1 -1
- package/dist/control-ui-v2/assets/{gateway-features-C0JaT4JI.js → gateway-features-SDBnjY95.js} +1 -1
- package/dist/control-ui-v2/assets/{index-CGoFdGyu.js → index-ChHyE-y3.js} +1 -1
- package/dist/control-ui-v2/assets/{links-Bcw24zqI.js → links-vgPLVF05.js} +2 -2
- package/dist/control-ui-v2/assets/{run-rows-DVijLB79.js → run-rows-1MUje5J6.js} +1 -1
- package/dist/control-ui-v2/assets/{runs-store-Cxbnn8K8.js → runs-store-BZTDbQro.js} +1 -1
- package/dist/control-ui-v2/assets/{use-gateway-query-xtY3vmte.js → use-gateway-query-7iLwemQz.js} +1 -1
- package/dist/control-ui-v2/index.html +7 -7
- package/dist/{controller-ClPKFt9H.js → controller-Bibu9RBu.js} +1 -1
- package/dist/{credentials-D8xf4kQ3.js → credentials-BzwRYS__.js} +1 -1
- package/dist/{cron-cli-BcTM_Nir.js → cron-cli-C3uwnjAJ.js} +16 -16
- package/dist/{daemon-cli-mpcai9ZB.js → daemon-cli-DhSeyb4s.js} +18 -18
- package/dist/{daemon-install-Mm9lvcvD.js → daemon-install-DCXozUs7.js} +11 -11
- package/dist/{daemon-install-helpers-D74OoyoM.js → daemon-install-helpers-CU4mnKsx.js} +2 -2
- package/dist/{delete-agent-sessions-Drf95Usu.js → delete-agent-sessions-BNaCeFyf.js} +1 -1
- package/dist/{deliver-Di5lG5OI.js → deliver-DTy7SNq9.js} +11 -11
- package/dist/{deliver-BukUfhSv.js → deliver-XZwPv99X.js} +28 -28
- package/dist/{devices-cli-DfnrI4Q4.js → devices-cli-BZzq7Fou.js} +14 -14
- package/dist/{diagnostic-B4mnFYUK.js → diagnostic-5TT45xHw.js} +4 -4
- package/dist/{diagnostic-C8nY3mdC.js → diagnostic-CeSjaots.js} +3 -3
- package/dist/{diagnostics-BzqDQMJ0.js → diagnostics-aJloMvRL.js} +1 -1
- package/dist/{directory-cli-tEju7zyL.js → directory-cli-BdfsQsAd.js} +12 -12
- package/dist/{dm-policy-shared-DuFgR_0W.js → dm-policy-shared-BZGS_0kS.js} +5 -5
- package/dist/{dns-cli-1Fm79fkk.js → dns-cli-BXbIk9ti.js} +11 -11
- package/dist/{docs-cli-PbTOsDX0.js → docs-cli-DpSAY3cX.js} +12 -12
- package/dist/{doctor-4PvP20jU.js → doctor-8FDQmndb.js} +1 -1
- package/dist/{doctor-completion-D_hqUq1a.js → doctor-completion-D3c2yROu.js} +3 -3
- package/dist/{doctor-config-flow-Cn3VGUWv.js → doctor-config-flow-DsjAW_i3.js} +12 -12
- package/dist/{enable-CoZmUN1F.js → enable-BD-5STUq.js} +2 -2
- package/dist/entry.js +2 -2
- package/dist/{errors-C-0CPtkE.js → errors-BaBvv30m.js} +1 -1
- package/dist/{exec-CP66JVDC.js → exec-DiLAfuLr.js} +3 -3
- package/dist/{exec-approvals-DEidE9cu.js → exec-approvals-BwBMqZpq.js} +2 -2
- package/dist/{exec-approvals-allowlist-D3VLWMn3.js → exec-approvals-allowlist-DeajDmQz.js} +1 -1
- package/dist/{exec-approvals-cli-CD0A7x-1.js → exec-approvals-cli-D0vutwdC.js} +23 -23
- package/dist/{exec-safe-bin-runtime-policy-DgsZVxiX.js → exec-safe-bin-runtime-policy-GyiNcLWt.js} +2 -2
- package/dist/{extension-relay-auth-C4DY3BoO.js → extension-relay-auth-Vn4eJEcQ.js} +3 -3
- package/dist/{fences-D0-yWVSH.js → fences-CISax-La.js} +16 -16
- package/dist/{fetch-guard-DVeFm4CZ.js → fetch-guard-Bnzd4qWS.js} +2 -2
- package/dist/{fetch-guard-Bx35q9u4.js → fetch-guard-CDkEddFV.js} +2 -2
- package/dist/{frontmatter-QVz_zD_W.js → frontmatter-BtfJx9Sg.js} +3 -3
- package/dist/{frontmatter-BUaSX8Fz.js → frontmatter-Bzvwr1W7.js} +3 -3
- package/dist/{fs-safe-DA9gVh9s.js → fs-safe-D8HkhuMZ.js} +3 -3
- package/dist/{fs-safe-BV3IWmYM.js → fs-safe-jXfn3Elb.js} +26 -26
- package/dist/{gateway-cli-BGDf_UXv.js → gateway-cli-lPADWps2.js} +152 -152
- package/dist/{gateway-rpc-DpYzInuu.js → gateway-rpc-DQG3hBI5.js} +3 -3
- package/dist/{globals-BVh-VW1y.js → globals-BOYJmqPO.js} +4 -4
- package/dist/{gmail-setup-utils-BUD74IWH.js → gmail-setup-utils-Db0ZWkas.js} +3 -3
- package/dist/{health-DoUNuepo.js → health-CqBDDLKJ.js} +12 -12
- package/dist/{health-format-D_7YEfOK.js → health-format-B3wM0UeC.js} +1 -1
- package/dist/{heartbeat-tick-BRGg7O46.js → heartbeat-tick-DWTPRSj2.js} +1 -1
- package/dist/{help-format-B9fBC7YQ.js → help-format-3m9GNcQp.js} +1 -1
- package/dist/{helpers-BMCu08tD.js → helpers-ByEDcAjf.js} +1 -1
- package/dist/{hooks-cli-D6KMUi8J.js → hooks-cli-CuvmA2a8.js} +90 -90
- package/dist/{hooks-status-DsJcrJdW.js → hooks-status-D42ilCFd.js} +3 -3
- package/dist/{identity-cli-hw9RP7bb.js → identity-cli-eGQmm7Uf.js} +20 -20
- package/dist/{identity-links-DGrSQOyI.js → identity-links-CMiIcgvn.js} +4 -4
- package/dist/{image-ops-oycM9vAs.js → image-ops-BT8bD5QW.js} +2 -2
- package/dist/{inspect-y-Rf7C9M.js → inspect-DHJbh1BK.js} +1 -1
- package/dist/{install-package-dir-cFGJwdjt.js → install-package-dir-atID3P53.js} +4 -4
- package/dist/{install-safe-path-BKMVgfRM.js → install-safe-path-5pN67hCN.js} +3 -3
- package/dist/{installs-BpMec9Cz.js → installs-C8HDE8ek.js} +10 -10
- package/dist/{ipv4-_5izhCOd.js → ipv4-D-LmFWW3.js} +2 -2
- package/dist/{issue-format-BcCT1LCp.js → issue-format-3AjTJZ-g.js} +1 -1
- package/dist/{jobs-BADjbSd0.js → jobs-BGleUcI-.js} +3 -3
- package/dist/{legacy-names-DpNvKeY4.js → legacy-names-BncMDG8I.js} +26 -26
- package/dist/{legacy-names-D-gFhJkB.js → legacy-names-m85yQK-H.js} +4 -4
- package/dist/{lifecycle-core-BDcQzbfM.js → lifecycle-core-lEWBgzfk.js} +8 -8
- package/dist/{links-CNDAkRQK.js → links-C3uVLgry.js} +1 -1
- package/dist/llm-slug-generator.js +31 -31
- package/dist/{log-tail-P2iIBET-.js → log-tail-BVn--aNY.js} +1 -1
- package/dist/{logging-BrtVmOug.js → logging-CasLPWvm.js} +1 -1
- package/dist/{logs-cli-DNJpQfm5.js → logs-cli-C8g9JGRK.js} +15 -15
- package/dist/{manager-qTIsRkIR.js → manager-COuC5aCY.js} +16 -16
- package/dist/{manager-ANr3eRjC.js → manager-DO4sftxl.js} +6 -6
- package/dist/{manager-Byt2W-zl.js → manager-zauhsMSz.js} +7 -7
- package/dist/{memory-cli-C-kkAcSv.js → memory-cli-C6ChdKAF.js} +15 -15
- package/dist/{model-C0zdj1IG.js → model-CY6irdbq.js} +2 -2
- package/dist/{model-catalog-D2OnT5G5.js → model-catalog-PS0jzDnI.js} +4 -4
- package/dist/{model-picker-DqmubfPT.js → model-picker-CTFCXSBm.js} +4 -4
- package/dist/{model-selection-BFwMLFJs.js → model-selection-LDnLrnn_.js} +78 -78
- package/dist/{models-CpRbKJuJ.js → models-C3BadlQJ.js} +20 -20
- package/dist/{models-cli-DZkw5Jdo.js → models-cli-nmVozi2V.js} +92 -92
- package/dist/{models-config-C3Tq7XpJ.js → models-config-QyFOywkg.js} +2 -2
- package/dist/{net-CsWibfvZ.js → net-D11xIRO3.js} +2 -2
- package/dist/{net-ZNMDyvE6.js → net-DqV0ZX0o.js} +1 -1
- package/dist/{node-cli-Cnez-SsZ.js → node-cli-S-iiWwOu.js} +37 -37
- package/dist/{node-command-policy-07YXEli2.js → node-command-policy-CgAWdzL5.js} +1 -1
- package/dist/{node-service-CAIBDHUL.js → node-service-DZ8fTOrl.js} +1 -1
- package/dist/{nodes-cli-tf4VB1mc.js → nodes-cli-BsGZc9ap.js} +22 -22
- package/dist/{nodes-screen-BeGrUDun.js → nodes-screen-CE5ExO2h.js} +4 -4
- package/dist/{note-DU3J-cLi.js → note-3jvXiQ6d.js} +2 -2
- package/dist/{npm-pack-install-LDEh8ibx.js → npm-pack-install-hlogNf3I.js} +2 -2
- package/dist/{npm-resolution-hwnRhJMY.js → npm-resolution-HrhqxZv1.js} +5 -5
- package/dist/{nudge-DO_XorIH.js → nudge-E00XAyaB.js} +9 -9
- package/dist/{nudge-BwlwOlHp.js → nudge-dYyHjBXU.js} +32 -32
- package/dist/{oauth-tls-preflight-Dml1qLXe.js → oauth-tls-preflight-JLBGc5N0.js} +1 -1
- package/dist/{onboard-Ca24xZMF.js → onboard-DlZ1BOYr.js} +11 -11
- package/dist/{onboard-channels-D9_949pz.js → onboard-channels-CgNpTkpG.js} +16 -16
- package/dist/{onboard-custom-B-Mkie4R.js → onboard-custom-DCm_Y_rq.js} +4 -4
- package/dist/{onboard-helpers-ByWR3CzW.js → onboard-helpers-DM-4vR0k.js} +8 -8
- package/dist/{onboard-hooks-BeOBPHVT.js → onboard-hooks-8Pr9LF3E.js} +8 -8
- package/dist/{onboard-remote-Bcj3rkca.js → onboard-remote-DmGboWPK.js} +5 -5
- package/dist/{onboard-skills-naWc0YmQ.js → onboard-skills-CWqQ6_nv.js} +4 -4
- package/dist/{onboarding-BGv0OTQ7.js → onboarding-DP9CpRIE.js} +18 -18
- package/dist/{onboarding.finalize-DXb_92Cl.js → onboarding.finalize-BopskbFm.js} +98 -98
- package/dist/{onboarding.gateway-config-CWPurA78.js → onboarding.gateway-config-F79AgW-W.js} +21 -21
- package/dist/{onboarding.secret-input-CWSgVFz4.js → onboarding.secret-input-Dg2d19bw.js} +1 -1
- package/dist/{openai-model-default-DqvDB0tE.js → openai-model-default-DZdYjkgw.js} +2 -2
- package/dist/{operator-commands-DucDPVYt.js → operator-commands-73Jy7Whh.js} +6 -6
- package/dist/{outbound-attachment-9K5W_qRv.js → outbound-attachment-BJKAbId_.js} +8 -8
- package/dist/{outbound-attachment-TmKpX3fK.js → outbound-attachment-BWJTBdLV.js} +9 -9
- package/dist/{outbound-send-deps-CZSYC14H.js → outbound-send-deps-DhCughCA.js} +4 -4
- package/dist/{pairing-cli-Cu9D7InY.js → pairing-cli-B_Py5VFV.js} +19 -19
- package/dist/{pairing-labels-ByiR4xag.js → pairing-labels-g02uyuXJ.js} +1 -1
- package/dist/{pairing-store-BwhC2WSm.js → pairing-store-C6blSyqu.js} +3 -3
- package/dist/{path-alias-guards-1poj6WAF.js → path-alias-guards-BQTkQXB8.js} +1 -1
- package/dist/{path-safety-DVOKipvs.js → path-safety-DiKe4sLz.js} +1 -1
- package/dist/{pi-embedded-CSaAlmuo.js → pi-embedded-BIha9wV3.js} +227 -227
- package/dist/{pi-embedded-helpers-D-rwFjbw.js → pi-embedded-helpers-D9jcApuf.js} +5 -5
- package/dist/{pi-embedded-recovery-adapter-gFm3nWut.js → pi-embedded-recovery-adapter-BwHVGYu3.js} +37 -37
- package/dist/{pi-model-discovery-BO1rPzPp.js → pi-model-discovery-Wg17i5yr.js} +7 -7
- package/dist/{pi-model-discovery-B7YaarSR.js → pi-model-discovery-qfeaBTmR.js} +1 -1
- package/dist/{pid-alive-Dp9yiDJm.js → pid-alive-CVi1kpc0.js} +1 -1
- package/dist/{plugin-auto-enable-vtMrJ3Bo.js → plugin-auto-enable-BndBdzvN.js} +4 -4
- package/dist/{plugin-owned-work-recovery-adapter-khLJn2o6.js → plugin-owned-work-recovery-adapter-CU0jgkGU.js} +9 -9
- package/dist/{plugin-registry-Bdf1V0v4.js → plugin-registry-j-zdK9Aj.js} +4 -4
- package/dist/plugin-sdk/{agent-Dpwqmur5.js → agent-BGApB_hH.js} +33 -33
- package/dist/plugin-sdk/{agent-turn-execute-B4f6kU8t.js → agent-turn-execute-CovKPB71.js} +47 -47
- package/dist/plugin-sdk/{agent-turn-runner-8-elIcKG.js → agent-turn-runner-x5EwBtiy.js} +6 -6
- package/dist/plugin-sdk/{chrome-DmrLIg1A.js → chrome-CWrDqDvu.js} +6 -6
- package/dist/plugin-sdk/{command-queue-DbyHTkqC.js → command-queue-BjQhBzl0.js} +1 -1
- package/dist/plugin-sdk/{deliver-DRb5wg9T.js → deliver-Bufpy1Nj.js} +10 -10
- package/dist/plugin-sdk/{diagnostic-BaEfjzoG.js → diagnostic-DWsfRRMb.js} +3 -3
- package/dist/plugin-sdk/{errors-Di-1W5oL.js → errors-CU4XzshA.js} +1 -1
- package/dist/plugin-sdk/{fetch-guard-D593bO1R.js → fetch-guard-Bkz_LvY1.js} +2 -2
- package/dist/plugin-sdk/{fs-safe-B9qlEOPl.js → fs-safe-mU6OF_le.js} +2 -2
- package/dist/plugin-sdk/{image-ops-ByQhA5AW.js → image-ops-BN9LfKcr.js} +2 -2
- package/dist/plugin-sdk/{manager-BlVhEJyV.js → manager-CHVkW_mo.js} +5 -5
- package/dist/plugin-sdk/{model-auth-BYzo7BMW.js → model-auth-A8ol0IK6.js} +6 -6
- package/dist/plugin-sdk/{models-config-Df7qxXDT.js → models-config-DwWNe4wJ.js} +2 -2
- package/dist/plugin-sdk/{nudge-8hrtI-uQ.js → nudge-DKWORgbV.js} +6 -6
- package/dist/plugin-sdk/{openai-compatible-video-CC8O8EEM.js → openai-compatible-video-zjvEDFQp.js} +6 -6
- package/dist/plugin-sdk/{outbound-attachment-D5Du9kSm.js → outbound-attachment-DDNTRL0U.js} +7 -7
- package/dist/plugin-sdk/{pi-embedded-helpers-DDrF73tt.js → pi-embedded-helpers-Pj_rV8qf.js} +13 -13
- package/dist/plugin-sdk/{pi-embedded-utils-DLlaty3W.js → pi-embedded-utils-D6jztEWf.js} +3 -3
- package/dist/plugin-sdk/{pi-model-discovery-Cgvb050_.js → pi-model-discovery-D_iAcUa4.js} +1 -1
- package/dist/plugin-sdk/provider-media-understanding.js +16 -16
- package/dist/plugin-sdk/{pw-ai-BEcGp8XY.js → pw-ai-BwgzJYjo.js} +8 -8
- package/dist/plugin-sdk/{qmd-manager-DXpe_ju8.js → qmd-manager-DAFEkAMD.js} +6 -6
- package/dist/plugin-sdk/{qmd-scope-DVIoXpLl.js → qmd-scope-DJLcA3NX.js} +1 -1
- package/dist/plugin-sdk/{query-expansion-D0qReab0.js → query-expansion-CkRCFmXy.js} +2 -2
- package/dist/plugin-sdk/{recorder-S1aQdgl5.js → recorder-Brvd3BNt.js} +2 -2
- package/dist/plugin-sdk/{redact-CcJnxu3z.js → redact-B42Dpjen.js} +1 -1
- package/dist/plugin-sdk/{reply-directives-CEvR8_X7.js → reply-directives-twMFpY3R.js} +2 -2
- package/dist/plugin-sdk/{runs-D6b6GEuq.js → runs-w3MS_VZ4.js} +7 -7
- package/dist/plugin-sdk/{send-_X4VJ-16.js → send-7QsCXN2z.js} +5 -5
- package/dist/plugin-sdk/{send-DC_wB-oy.js → send-7cDA7nYq.js} +4 -4
- package/dist/plugin-sdk/{sessions-V6UyW1ee.js → sessions-BkkGJf0L.js} +3 -3
- package/dist/plugin-sdk/{ssrf-BD-w1_r0.js → ssrf-Bul6kRmN.js} +1 -1
- package/dist/{subsystem-D1n05zOF.js → plugin-sdk/subsystem-ChbeeOSk.js} +5 -5
- package/dist/plugin-sdk/{tool-loop-detection-JyupU8MW.js → tool-loop-detection-CJDaraAN.js} +1 -1
- package/dist/plugin-sdk/{user-run-recording-BHAgBh4G.js → user-run-recording-BK8sYUEb.js} +2 -2
- package/dist/plugin-sdk/{ws-Cd1gQ37X.js → ws-zY8UZwJ_.js} +1 -1
- package/dist/{plugins-Do2VO-bb.js → plugins-50bsyRF5.js} +12 -12
- package/dist/{plugins-cli-ClCHi--i.js → plugins-cli-B7i09-Yu.js} +94 -94
- package/dist/{ports-wpTsMPMQ.js → ports-Cx-3VoKB.js} +1 -1
- package/dist/{ports-CkB6zd6B.js → ports-qsGNGnWb.js} +2 -2
- package/dist/{program-BNEbV10c.js → program-DVVCdH_Q.js} +91 -91
- package/dist/{progress-DRmPtDtg.js → progress-DLl5RtiT.js} +2 -2
- package/dist/{prompt-select-styled-CNJtUcHo.js → prompt-select-styled-kC6tnFRy.js} +39 -39
- package/dist/{prompt-style-DpZu7Rv0.js → prompt-style-C-jp54Ww.js} +1 -1
- package/dist/{provider-auth-helpers-BmlLx1lK.js → provider-auth-helpers-CoSW0VEc.js} +5 -5
- package/dist/{proxy-env-D2TojSO4.js → proxy-env-B8ko7FIe.js} +1 -1
- package/dist/{proxy-env-ieess7Mx.js → proxy-env-Cbti8B-h.js} +1 -1
- package/dist/{push-apns-B35KAhUm.js → push-apns-ouI2t6wj.js} +7 -7
- package/dist/{pw-ai-BP_oDyML.js → pw-ai-BHdnQCVz.js} +11 -11
- package/dist/{pw-ai-DBQU70P9.js → pw-ai-CXYAo13E.js} +15 -15
- package/dist/{qmd-manager-CHnF92RD.js → qmd-manager-BbwLXjLX.js} +9 -9
- package/dist/{qmd-manager-Cc8Yjnkj.js → qmd-manager-D53dwf0o.js} +11 -11
- package/dist/{qmd-scope-Bf9ewzqs.js → qmd-scope-BGPSkaGT.js} +1 -1
- package/dist/{qmd-scope-CS0DtNYO.js → qmd-scope-ZqGqqT7I.js} +1 -1
- package/dist/{qr-cli-BR65O0r3.js → qr-cli-C03g-Jln.js} +10 -10
- package/dist/{query-expansion-Bv4KqsqP.js → query-expansion-CfOEMDQH.js} +1 -1
- package/dist/{query-expansion-CRbSQ6uw.js → query-expansion-D6kYMMSG.js} +13 -13
- package/dist/{reconcile-bundled-DkR2LG6R.js → reconcile-bundled-BHSH7QIf.js} +3 -3
- package/dist/{recorder-Ln2SDZKW.js → recorder-B4tsZmjb.js} +2 -2
- package/dist/{recorder-DII7nv4x.js → recorder-CPMScZJa.js} +2 -2
- package/dist/{recovery-adapter-CyyO_Ekl.js → recovery-adapter-BJRNT8FV.js} +9 -9
- package/dist/{recovery-adapter-DOleMTp_.js → recovery-adapter-CZoZy-m9.js} +2 -2
- package/dist/{recovery-adapter-But7eE6o.js → recovery-adapter-CxLHOdbs.js} +3 -3
- package/dist/{recovery-prompt-BPdq27Tq.js → recovery-prompt-DjQfAUy6.js} +1 -1
- package/dist/{redact-CS0CgCEL.js → redact-DkgvOdb-.js} +1 -1
- package/dist/{redact-snapshot-CZVXlnxH.js → redact-snapshot-B0Hmde1v.js} +5 -5
- package/dist/{register.agent-BcT7F79Y.js → register.agent-CH14a6J3.js} +109 -109
- package/dist/register.configure-BXpFEa7d.js +152 -0
- package/dist/{register.maintenance-rxIW-tKO.js → register.maintenance-2jJXwpET.js} +111 -111
- package/dist/{register.message-BLuymT-f.js → register.message-o6R49haY.js} +86 -86
- package/dist/{register.onboard-PGgg72Sx.js → register.onboard-CYG4aJ_S.js} +26 -26
- package/dist/{register.setup-Fnakw3cB.js → register.setup-B9Mx2Csz.js} +28 -28
- package/dist/{register.status-health-sessions--aE04YLN.js → register.status-health-sessions-BdYJh1dD.js} +105 -105
- package/dist/{register.subclis-gCMZ4Bku.js → register.subclis-B8qYBt57.js} +34 -34
- package/dist/{reply-directives-DGXfbm15.js → reply-directives-C3TQE9y0.js} +49 -49
- package/dist/{reply-directives-Bzeg3um3.js → reply-directives-DL_tpnAW.js} +2 -2
- package/dist/{reset-B2CTuAPC.js → reset-CoOQ6-8Y.js} +1 -1
- package/dist/{rpc-C-oFxe45.js → rpc-gJ5XJBJ1.js} +3 -3
- package/dist/{run-main-B4g_4pz1.js → run-main-CtkFW7nv.js} +104 -104
- package/dist/{runs-KGTnMvSd.js → runs-CNSar-WP.js} +8 -8
- package/dist/{runs-HDGXsBua.js → runs-DLcRidXE.js} +6 -6
- package/dist/{runtime-CM06Vsh4.js → runtime-DQiHcfpT.js} +4 -4
- package/dist/{runtime-config-collectors-owiepuTT.js → runtime-config-collectors-CokvgXBK.js} +1 -1
- package/dist/{runtime-guard-BAkI3Ri4.js → runtime-guard-D4N1U69H.js} +1 -1
- package/dist/{sandbox-I0OArJYc.js → sandbox-CqhMEP_P.js} +15 -15
- package/dist/{sandbox-cli-Byd1iHHL.js → sandbox-cli-CJWXKmae.js} +35 -35
- package/dist/{secrets-cli-cvWxtbRr.js → secrets-cli-DEllaqgI.js} +17 -17
- package/dist/{security-cli-Dlr0WB3R.js → security-cli-CsBRazBA.js} +42 -42
- package/dist/{send-Bkdo82oz.js → send-41XrPhaV.js} +4 -4
- package/dist/{send-DVTBurfS.js → send-B3iJ8ToE.js} +5 -5
- package/dist/{send-CmECiyUu.js → send-Ch-mNnij.js} +4 -4
- package/dist/{send-C-k3_j2u.js → send-RssGHDsu.js} +4 -4
- package/dist/{server-CtKA1Cp0.js → server-BuyEF_-i.js} +23 -23
- package/dist/{server-context-Ca5AiDBb.js → server-context-Cm7u69Q7.js} +9 -9
- package/dist/{server-lifecycle-DTtM3Lhl.js → server-lifecycle-BG-u8nMU.js} +3 -3
- package/dist/{server-middleware-DDvaga1l.js → server-middleware-BizsA-re.js} +2 -2
- package/dist/{server-node-events-s5GkBDRY.js → server-node-events-C-Sm1NJJ.js} +87 -87
- package/dist/{service-BnFOyfze.js → service-Ox4QjIIv.js} +1 -1
- package/dist/{session-consumer-agents-FpCrtynZ.js → session-consumer-agents-Bjo2Pybw.js} +1 -1
- package/dist/{session-consumer-claim-sweep-Ccri2PgZ.js → session-consumer-claim-sweep-DcyQR1lf.js} +10 -10
- package/dist/{session-key-D38Dat68.js → session-key-DOpjqY4f.js} +1 -1
- package/dist/{session-storage-owner-B8-IRBP7.js → session-storage-owner-DSJotdF9.js} +8 -8
- package/dist/{session-storage-CAf99J7I.js → session-storage-sH-8KuPm.js} +7 -7
- package/dist/{session-store-targets-9oN46FBf.js → session-store-targets-BtKZ6O9-.js} +3 -3
- package/dist/{session-utils-CPdS25Fh.js → session-utils-acVEcYBx.js} +9 -9
- package/dist/{sessions-DjSoGXsL.js → sessions-B3-eoZNa.js} +6 -6
- package/dist/{sessions-CH1h_nhO.js → sessions-BoUKHlfq.js} +5 -5
- package/dist/{sessions-DoqXSqab.js → sessions-CkJwIbnD.js} +17 -17
- package/dist/{sessions-DyhCT0pp.js → sessions-WyhyMdoW.js} +5 -5
- package/dist/{sessions-claims-status-BzDkLrz5.js → sessions-claims-status-yyKjvPdI.js} +12 -12
- package/dist/{sessions-maintenance-core-Cnhlr59R.js → sessions-maintenance-core-DJHvi0-G.js} +5 -5
- package/dist/{setup-helpers-DtszvYvl.js → setup-helpers-BQv9HNqM.js} +1 -1
- package/dist/{shared-DneLSdUs.js → shared-BhyLuWyq.js} +4 -4
- package/dist/{shared-CgJjqVc_.js → shared-WARMxoiR.js} +2 -2
- package/dist/{skill-scanner-C2qUvy1A.js → skill-scanner-Dl8opLZe.js} +1 -1
- package/dist/{skills-CKjNigud.js → skills-BAtMgBiD.js} +4 -4
- package/dist/{skills-cli-DrWE30sF.js → skills-cli-BriosLsG.js} +19 -19
- package/dist/{skills-install-DYOyXyhf.js → skills-install-dlhAdjwE.js} +11 -11
- package/dist/{skills-status-CUqccvmE.js → skills-status-2pBbVUCf.js} +4 -4
- package/dist/{status-DJX7Nh9n.js → status-DWY8cs3q.js} +45 -45
- package/dist/{status.update-BjTs0tMA.js → status.update-C37l-lB3.js} +1 -1
- package/dist/{storage-config-MiCWhQ75.js → storage-config-CsGADkaH.js} +4 -4
- package/dist/{subsystem-BQlVwUGh.js → subsystem-C7-3a5Zr.js} +2 -2
- package/dist/{plugin-sdk/subsystem-BdiA7Q_t.js → subsystem-WQ4uaYQN.js} +74 -74
- package/dist/{supervisor-Tib9c0Rw.js → supervisor-CmU501hP.js} +2 -2
- package/dist/{system-cli-CE9TlrCx.js → system-cli-C5GELIKy.js} +14 -14
- package/dist/{system-run-command-CAIpFmMh.js → system-run-command-DU36hElD.js} +2 -2
- package/dist/{systemd-2lEi1s2h.js → systemd-BjNzb_4K.js} +2 -2
- package/dist/{systemd-hints-DQKdqw9A.js → systemd-hints-Ccpg4IDq.js} +3 -3
- package/dist/{systemd-linger-DUCPAGl8.js → systemd-linger-Om0p6z20.js} +2 -2
- package/dist/{table-BgEYg0Fr.js → table-aewm6YXw.js} +2 -2
- package/dist/{tailnet-Cf-zH8LX.js → tailnet-DFd-E-hz.js} +1 -1
- package/dist/{tailscale-CPYYbNsJ.js → tailscale-DAOiwlpJ.js} +2 -2
- package/dist/{task-pipeline-boot-MRo6ngzY.js → task-pipeline-boot-BYsUt1aD.js} +85 -85
- package/dist/{tasks-DlanUcxq.js → tasks-BH9BLMW5.js} +5 -5
- package/dist/{tasks-CEiohszX.js → tasks-zUDZ9WDS.js} +12 -12
- package/dist/{tool-display-BW2pVtBe.js → tool-display-gmmRfkw3.js} +1 -1
- package/dist/{tool-loop-detection-CEOjW4Zj.js → tool-loop-detection-CUWKSyGf.js} +2 -2
- package/dist/{tool-loop-detection-C0wLAXu8.js → tool-loop-detection-D_3ML-aV.js} +3 -3
- package/dist/{trash-DNn54Qs6.js → trash-ByCJFFqw.js} +3 -3
- package/dist/{tui-Df1UoEuB.js → tui-D3L5epd6.js} +9 -9
- package/dist/{tui-cli-Y-2Y0TeW.js → tui-cli-B9yGq3iI.js} +37 -37
- package/dist/{update-CmNsRKyB.js → update-BOw7sc5p.js} +3 -3
- package/dist/{update-cli-DSKMdoM3.js → update-cli-DMbakbAW.js} +120 -120
- package/dist/{update-runner-BiHwGWqV.js → update-runner-xWEkzp2Q.js} +5 -5
- package/dist/{user-run-recording-BijpJcES.js → user-run-recording-BxTnAUuI.js} +2 -2
- package/dist/{user-run-recording-DkuT1rGt.js → user-run-recording-CYg9LLHh.js} +2 -2
- package/dist/{validation-cli-exRDYYEc.js → validation-cli-CHqmdg5w.js} +84 -84
- package/dist/{web-cli-BX1XaHNZ.js → web-cli-DuQt0_V0.js} +3 -3
- package/dist/web-client/assets/{index-Cpg6_3Hi.js → index-CbKkwaEi.js} +1 -1
- package/dist/web-client/index.html +1 -1
- package/dist/{webhooks-cli-CkpR8Fzk.js → webhooks-cli-BmIhFbc4.js} +13 -13
- package/dist/{widearea-dns-DFhroEuN.js → widearea-dns-Dg8lFYi7.js} +1 -1
- package/dist/{with-timeout-DNQj_Xiv.js → with-timeout-maI6Hxh1.js} +6 -6
- package/dist/{workspace-Cl3X-aax.js → workspace-Bv2hEGNJ.js} +6 -6
- package/dist/{workspace-BmXTOUee.js → workspace-CNoka32n.js} +4 -4
- package/extensions/a2a/package.json +1 -1
- package/extensions/acpx/package.json +1 -1
- package/extensions/anthropic/package.json +1 -1
- package/extensions/bifrost/package.json +1 -1
- package/extensions/bluebubbles/package.json +1 -1
- package/extensions/copilot-proxy/package.json +1 -1
- package/extensions/deepgram/package.json +1 -1
- package/extensions/deepinfra/package.json +1 -1
- package/extensions/diagnostics-otel/package.json +1 -1
- package/extensions/diffs/package.json +1 -1
- package/extensions/discord/package.json +1 -1
- package/extensions/dream-cycle/package.json +1 -1
- package/extensions/elevenlabs/package.json +1 -1
- package/extensions/feishu/package.json +1 -1
- package/extensions/gemini-search/package.json +1 -1
- package/extensions/google/package.json +1 -1
- package/extensions/google-gemini-cli-auth/package.json +1 -1
- package/extensions/googlechat/package.json +1 -1
- package/extensions/grok-search/package.json +1 -1
- package/extensions/groq/package.json +1 -1
- package/extensions/identity-oidc/package.json +1 -1
- package/extensions/imessage/package.json +1 -1
- package/extensions/irc/package.json +1 -1
- package/extensions/kimi-search/package.json +1 -1
- package/extensions/kokoro/package.json +1 -1
- package/extensions/learning-core/package.json +1 -1
- package/extensions/line/package.json +1 -1
- package/extensions/llm-task/package.json +1 -1
- package/extensions/lobster/package.json +1 -1
- package/extensions/matrix/CHANGELOG.md +1 -1
- package/extensions/matrix/package.json +1 -1
- package/extensions/mattermost/package.json +1 -1
- package/extensions/memory-core/package.json +1 -1
- package/extensions/memory-lancedb/package.json +1 -1
- package/extensions/minimax/package.json +1 -1
- package/extensions/minimax-portal-auth/package.json +1 -1
- package/extensions/mistral/package.json +1 -1
- package/extensions/moonshot/package.json +1 -1
- package/extensions/msteams/CHANGELOG.md +1 -1
- package/extensions/msteams/package.json +1 -1
- package/extensions/nextcloud-talk/package.json +1 -1
- package/extensions/nostr/CHANGELOG.md +1 -1
- package/extensions/nostr/package.json +1 -1
- package/extensions/open-prose/package.json +1 -1
- package/extensions/openai/package.json +1 -1
- package/extensions/openai-realtime/package.json +1 -1
- package/extensions/openrouter/package.json +1 -1
- package/extensions/perplexity-search/package.json +1 -1
- package/extensions/searxng-search/package.json +1 -1
- package/extensions/signal/package.json +1 -1
- package/extensions/slack/package.json +1 -1
- package/extensions/synology-chat/package.json +1 -1
- package/extensions/telegram/package.json +1 -1
- package/extensions/tlon/package.json +1 -1
- package/extensions/twitch/CHANGELOG.md +1 -1
- package/extensions/twitch/package.json +1 -1
- package/extensions/ui-surfaces/package.json +1 -1
- package/extensions/voice-call/CHANGELOG.md +1 -1
- package/extensions/voice-call/package.json +1 -1
- package/extensions/whatsapp/package.json +1 -1
- package/extensions/zai/package.json +1 -1
- package/extensions/zalo/CHANGELOG.md +1 -1
- package/extensions/zalo/package.json +1 -1
- package/extensions/zalouser/CHANGELOG.md +1 -1
- package/extensions/zalouser/package.json +1 -1
- package/package.json +1 -1
- package/dist/clawbot-cli-sRVUxd_s.js +0 -32
- package/dist/cli-ax3_7oZf.js +0 -147
- package/dist/control-ui-v2/assets/Badge-sUgH4suZ.js +0 -1
- package/dist/github-copilot-token-Bm6yG6tw.js +0 -106
- package/dist/paths-BIDPYPVC.js +0 -233
- package/dist/register.configure-C_6WuEbz.js +0 -152
- /package/dist/{config-1om7Pwz0.js → config-CM9p9U7m.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,c as t,h as n}from"./format-DpM2rlEo.js";import{c as r,d as i,f as a,l as o,o as s,s as c,u as l}from"./form-utils-BkwTm73v.js";var u=e(n(),1),d={title:!0,description:!0,default:!0,nullable:!0};function f(e){return Object.keys(e??{}).every(e=>d[e])}function p(e){let t=e.filter(e=>e!=null),n=t.length!==e.length,r=[];for(let e of t)r.some(t=>Object.is(t,e))||r.push(e);return{enumValues:r,nullable:n}}function m(e){return o(e)?h(e,[]):{schema:null,unsupportedPaths:[`<root>`]}}function h(e,t){let n=new Set,r={...e},i=l(t)||`<root>`;if(e.anyOf||e.oneOf||e.allOf)return y(e,t)||{schema:e,unsupportedPaths:[i]};let s=Array.isArray(e.type)&&e.type.includes(`null`),c=a(e)??(e.properties||e.additionalProperties?`object`:void 0);if(r.type=c??e.type,r.nullable=s||e.nullable,r.enum){let{enumValues:e,nullable:t}=p(r.enum);r.enum=e,t&&(r.nullable=!0),e.length===0&&n.add(i)}if(c===`object`){let a=e.properties??{},s={};for(let[e,r]of Object.entries(a)){let i=h(r,[...t,e]);i.schema&&(s[e]=i.schema);for(let e of i.unsupportedPaths)n.add(e)}if(r.properties=s,e.additionalProperties===!0)n.add(i);else if(e.additionalProperties===!1)r.additionalProperties=!1;else if(o(e.additionalProperties)&&!f(e.additionalProperties)){let a=h(e.additionalProperties,[...t,`*`]);r.additionalProperties=a.schema??e.additionalProperties,a.unsupportedPaths.length>0&&n.add(i)}}else if(c===`array`){let a=Array.isArray(e.items)?e.items[0]:e.items;if(!a)n.add(i);else{let e=h(a,[...t,`*`]);r.items=e.schema??a,e.unsupportedPaths.length>0&&n.add(i)}}else c!==`string`&&c!==`number`&&c!==`integer`&&c!==`boolean`&&!r.enum&&n.add(i);return{schema:r,unsupportedPaths:Array.from(n)}}function g(e){if(a(e)!==`object`)return!1;let t=e.properties?.source,n=e.properties?.provider,r=e.properties?.id;return!t||!n||!r?!1:typeof t.const==`string`&&a(n)===`string`&&a(r)===`string`}function _(e){let t=e.oneOf??e.anyOf;return!t||t.length===0?!1:t.every(e=>g(e))}function v(e,t,n,r){let i=n.findIndex(e=>a(e)===`string`);if(i<0)return null;let o=n.filter((e,t)=>t!==i);return o.length!==1||!_(o[0])?null:h({...e,...n[i],nullable:r,anyOf:void 0,oneOf:void 0,allOf:void 0},t)}function y(e,t){if(e.allOf)return null;let n=e.anyOf??e.oneOf;if(!n)return null;let r=[],i=[],o=!1;for(let e of n){if(!e||typeof e!=`object`)return null;if(Array.isArray(e.enum)){let{enumValues:t,nullable:n}=p(e.enum);r.push(...t),n&&(o=!0);continue}if(`const`in e){if(e.const==null){o=!0;continue}r.push(e.const);continue}if(a(e)===`null`){o=!0;continue}i.push(e)}let s=v(e,t,i,o);if(s)return s;if(r.length>0&&i.length===0){let t=[];for(let e of r)t.some(t=>Object.is(t,e))||t.push(e);return{schema:{...e,enum:t,nullable:o,anyOf:void 0,oneOf:void 0,allOf:void 0},unsupportedPaths:[]}}if(i.length===1){let e=h(i[0],t);return e.schema&&(e.schema.nullable=o||e.schema.nullable),e}let c={string:!0,number:!0,integer:!0,boolean:!0};return i.length>0&&r.length===0&&i.every(e=>e.type&&c[String(e.type)])?{schema:{...e,nullable:o,anyOf:void 0,oneOf:void 0,allOf:void 0},unsupportedPaths:[]}:null}var b=t();function x({tags:e}){return e.length===0?null:(0,b.jsx)(`div`,{className:`cfg-tags`,children:e.map(e=>(0,b.jsx)(`span`,{className:`cfg-tag`,children:e},e))})}function S({meta:e,showLabel:t=!0,htmlFor:n}){let r=!!e.help||e.tags.length>0;return!t&&!r?null:(0,b.jsxs)(b.Fragment,{children:[t?(0,b.jsx)(`label`,{className:`cfg-field__label`,htmlFor:n,children:e.label}):null,e.help?(0,b.jsx)(`div`,{className:`cfg-field__help`,children:e.help}):null,(0,b.jsx)(x,{tags:e.tags})]})}function C(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function w(e){return e.trim().toLowerCase()}function T(e,t){let n=w(t);return n?RegExp(`(^|\\s)tag:${C(n)}(?=\\s|$)`,`i`).test(e.trim()):!1}function E(e,t){let n=w(t),r=e.trim();return n?r?T(r,n)?r:`${r} tag:${n}`:`tag:${n}`:r}function D(e,t){let n=w(t),r=e.trim();if(!n||!r)return r;let i=RegExp(`(^|\\s)tag:${C(n)}(?=\\s|$)`,`ig`);return r.replace(i,` `).replace(/\s+/g,` `).trim()}function O(e,t){return T(e,t)?D(e,t):E(e,t)}function k(e){let t=[],n=new Set;return{text:e.trim().replace(/(^|\s)tag:([^\s]+)/gi,(e,r,i)=>{let a=i.trim().toLowerCase();return a&&!n.has(a)&&(n.add(a),t.push(a)),r}).trim().toLowerCase(),tags:t}}function A(e){return!!(e&&(e.text.length>0||e.tags.length>0))}function j(e,t){if(!e)return!0;for(let n of t)if(n&&n.toLowerCase().includes(e))return!0;return!1}function M(e,t){if(e.length===0)return!0;let n=new Set(t.map(e=>e.toLowerCase()));return e.every(e=>n.has(e))}function N(e){let{schema:t,path:n,hints:r,criteria:a}=e;if(!A(a))return!0;let{label:o,help:s,tags:c}=i(n,t,r);if(!M(a.tags,c))return!1;if(!a.text)return!0;let l=n.filter(e=>typeof e==`string`).join(`.`),u=t.enum&&t.enum.length>0?t.enum.map(e=>String(e)).join(` `):``;return j(a.text,[o,s,t.title,t.description,l,u])}function P(e){let{schema:t,value:n,path:r,hints:i,criteria:s}=e;if(!A(s)||N({schema:t,path:r,hints:i,criteria:s}))return!0;let c=a(t);if(c===`object`){let e=n??t.default,a=o(e)?e:{},c=t.properties??{};for(let[e,t]of Object.entries(c))if(P({schema:t,value:a[e],path:[...r,e],hints:i,criteria:s}))return!0;let l=t.additionalProperties;if(l&&typeof l==`object`){let e=new Set(Object.keys(c));for(let[t,n]of Object.entries(a))if(!e.has(t)&&P({schema:l,value:n,path:[...r,t],hints:i,criteria:s}))return!0}return!1}if(c===`array`){let e=Array.isArray(t.items)?t.items[0]:t.items;if(!e)return!1;let a=Array.isArray(n)?n:Array.isArray(t.default)?t.default:[];if(a.length===0)return!1;for(let t=0;t<a.length;t+=1)if(P({schema:e,value:a[t],path:[...r,t],hints:i,criteria:s}))return!0}return!1}function F(e){let{schema:t,value:n,path:r,hints:a,disabled:o}=e,c=e.showLabel??!0,l=i(r,t,a),u=e.searchCriteria,d=u&&A(u)&&N({schema:t,path:r,hints:a,criteria:u})?void 0:u,f=Array.isArray(t.items)?t.items[0]:t.items;if(!f)return(0,b.jsxs)(`div`,{className:`cfg-field cfg-field--error`,children:[(0,b.jsx)(`div`,{className:`cfg-field__label`,children:l.label}),(0,b.jsx)(`div`,{className:`cfg-field__error`,children:`Unsupported array schema. Edit in raw mode.`})]});let p=Array.isArray(n)?n:Array.isArray(t.default)?t.default:[];return(0,b.jsxs)(`div`,{className:`cfg-array`,children:[(0,b.jsxs)(`div`,{className:`cfg-array__header`,children:[(0,b.jsxs)(`div`,{className:`cfg-array__title`,children:[c?(0,b.jsx)(`span`,{className:`cfg-array__label`,children:l.label}):null,l.tags.length>0?(0,b.jsx)(`span`,{className:`cfg-tag`,children:l.tags.join(` `)}):null]}),(0,b.jsxs)(`span`,{className:`cfg-array__count`,children:[p.length,` item`,p.length===1?``:`s`]}),(0,b.jsx)(`button`,{type:`button`,className:`cfg-array__add`,"aria-label":`Add`,disabled:o,onClick:()=>{e.onPatch(r,[...p,s(f)])},children:`+ Add`})]}),l.help?(0,b.jsx)(`div`,{className:`cfg-array__help`,children:l.help}):null,p.length===0?(0,b.jsx)(`div`,{className:`cfg-array__empty`,children:`No items yet. Use “Add” to create one.`}):(0,b.jsx)(`div`,{className:`cfg-array__items`,children:p.map((t,n)=>(0,b.jsxs)(`div`,{className:`cfg-array__item`,children:[(0,b.jsxs)(`div`,{className:`cfg-array__item-header`,children:[(0,b.jsxs)(`span`,{className:`cfg-array__item-index`,children:[`#`,n+1]}),(0,b.jsx)(`button`,{type:`button`,className:`cfg-array__item-remove`,"aria-label":`Remove item ${n+1}`,title:`Remove item`,disabled:o,onClick:()=>{let t=[...p];t.splice(n,1),e.onPatch(r,t)},children:`✕`})]}),(0,b.jsx)(`div`,{className:`cfg-array__item-content`,children:(0,b.jsx)(Y,{schema:f,value:t,path:[...r,n],hints:a,unsupported:e.unsupported,disabled:o,searchCriteria:d,showLabel:!1,ariaLabel:`${l.label} item ${n+1}`,onPatch:e.onPatch})})]},n))})]})}function I(e){if(e===void 0)return``;try{return JSON.stringify(e,null,2)??``}catch{return``}}function L({entryKey:e,disabled:t,onRename:n}){let[r,i]=(0,u.useState)(e);return(0,u.useEffect)(()=>{i(e)},[e]),(0,b.jsx)(`input`,{type:`text`,className:`cfg-input cfg-input--sm`,placeholder:`Key`,"aria-label":`Key for ${e}`,value:r,disabled:t,onChange:e=>i(e.target.value),onBlur:()=>{let t=r.trim();if(!t||t===e){i(e);return}n(t),i(e)}})}function R({entryKey:e,text:t,disabled:n,onCommit:r}){let[i,a]=(0,u.useState)(t);return(0,u.useEffect)(()=>{a(t)},[t]),(0,b.jsx)(`textarea`,{className:`cfg-textarea cfg-textarea--sm`,placeholder:`JSON value`,rows:2,"aria-label":`JSON value for ${e}`,value:i,disabled:n,onChange:e=>a(e.target.value),onBlur:()=>{let e=i.trim();if(!e){r(void 0);return}try{r(JSON.parse(e))}catch{a(t)}}})}function z({schema:e,value:t,path:n,hints:a,unsupported:o,disabled:c,reservedKeys:l,searchCriteria:u,onPatch:d}){let f=r(e),p=Object.entries(t).filter(([e])=>!l.has(e)),m=u&&A(u)?p.filter(([t,r])=>P({schema:e,value:r,path:[...n,t],hints:a,criteria:u})):p;return(0,b.jsxs)(`div`,{className:`cfg-map`,children:[(0,b.jsxs)(`div`,{className:`cfg-map__header`,children:[(0,b.jsx)(`span`,{className:`cfg-map__label`,children:`Custom entries`}),(0,b.jsx)(`button`,{type:`button`,className:`cfg-map__add`,"aria-label":`Add Entry`,disabled:c,onClick:()=>{let r={...t},i=1,a=`custom-${i}`;for(;a in r;)i+=1,a=`custom-${i}`;r[a]=f?{}:s(e),d(n,r)},children:`+ Add Entry`})]}),m.length===0?(0,b.jsx)(`div`,{className:`cfg-map__empty`,children:`No custom entries.`}):(0,b.jsx)(`div`,{className:`cfg-map__items`,children:m.map(([r,s])=>{let l=[...n,r],p=i(l,e,a);return(0,b.jsxs)(`div`,{className:`cfg-map__item`,children:[(0,b.jsxs)(`div`,{className:`cfg-map__item-header`,children:[(0,b.jsx)(L,{entryKey:r,disabled:c,onRename:e=>{let i={...t};e in i||(i[e]=i[r],delete i[r],d(n,i))}}),(0,b.jsx)(`button`,{type:`button`,className:`cfg-map__item-remove`,"aria-label":`Remove entry ${r}`,title:`Remove entry`,disabled:c,onClick:()=>{let e={...t};delete e[r],d(n,e)},children:`✕`})]}),(0,b.jsx)(`div`,{className:`cfg-map__item-value`,children:f?(0,b.jsx)(R,{entryKey:r,text:I(s),disabled:c,onCommit:e=>d(l,e)}):(0,b.jsx)(Y,{schema:e,value:s,path:l,hints:a,unsupported:o,disabled:c,searchCriteria:u,showLabel:!1,ariaLabel:p.label,onPatch:d})})]},r)})})]})}function B(e){let{schema:t,value:n,path:r,hints:a,disabled:s}=e,l=e.showLabel??!0,u=i(r,t,a),d=e.searchCriteria,f=d&&A(d)&&N({schema:t,path:r,hints:a,criteria:d})?void 0:d,p=n??t.default,m=o(p)?p:{},h=t.properties??{},g=Object.entries(h).toSorted((e,t)=>{let n=c([...r,e[0]],a)?.order??0,i=c([...r,t[0]],a)?.order??0;return n===i?e[0].localeCompare(t[0]):n-i}),_=t.additionalProperties,v=o(_),y=new Set(Object.keys(h)),S=(0,b.jsxs)(b.Fragment,{children:[g.map(([t,n])=>(0,b.jsx)(Y,{schema:n,value:m[t],path:[...r,t],hints:a,unsupported:e.unsupported,disabled:s,searchCriteria:f,onPatch:e.onPatch},t)),v?(0,b.jsx)(z,{schema:_,value:m,path:r,hints:a,unsupported:e.unsupported,disabled:s,reservedKeys:y,searchCriteria:f,onPatch:e.onPatch}):null]});return r.length<=1||!l?(0,b.jsx)(`div`,{className:r.length<=1?`cfg-fields`:`cfg-fields cfg-fields--inline`,children:S}):(0,b.jsxs)(`details`,{className:`cfg-object`,open:r.length<=2,children:[(0,b.jsxs)(`summary`,{className:`cfg-object__header`,children:[(0,b.jsxs)(`span`,{className:`cfg-object__title-wrap`,children:[(0,b.jsx)(`span`,{className:`cfg-object__title`,children:u.label}),(0,b.jsx)(x,{tags:u.tags})]}),(0,b.jsx)(`span`,{className:`cfg-object__chevron`,"aria-hidden":`true`,children:`▾`})]}),u.help?(0,b.jsx)(`div`,{className:`cfg-object__help`,children:u.help}):null,(0,b.jsx)(`div`,{className:`cfg-object__content`,children:S})]})}function V(e){if(e==null)return``;if(typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return String(e);try{return JSON.stringify(e)??``}catch{return``}}function H({label:e}){return(0,b.jsxs)(`div`,{className:`cfg-field cfg-field--error`,children:[(0,b.jsx)(`div`,{className:`cfg-field__label`,children:e}),(0,b.jsx)(`div`,{className:`cfg-field__error`,children:`Edit in raw mode`})]})}function U(e){if(e.const!==void 0)return e.const;if(e.enum&&e.enum.length===1)return e.enum[0]}function W({params:e,meta:t,ariaLabel:n,options:r,resolved:i}){return(0,b.jsxs)(`div`,{className:`cfg-field`,children:[(0,b.jsx)(S,{meta:t,showLabel:e.showLabel??!0}),(0,b.jsx)(`div`,{className:`cfg-segmented`,role:`group`,"aria-label":n,children:r.map(t=>{let n=t===i||String(t)===String(i);return(0,b.jsx)(`button`,{type:`button`,className:n?`cfg-segmented__btn cfg-segmented__btn--active`:`cfg-segmented__btn`,"aria-pressed":n,disabled:e.disabled,onClick:()=>e.onPatch(e.path,t),children:String(t)},String(t))})})]})}function G({params:e,meta:t,ariaLabel:n,options:r,resolved:i}){let a=(0,u.useId)(),o=r.findIndex(e=>e===i||String(e)===String(i)),s=`__unset__`;return(0,b.jsxs)(`div`,{className:`cfg-field`,children:[(0,b.jsx)(S,{meta:t,showLabel:e.showLabel??!0,htmlFor:a}),(0,b.jsxs)(`select`,{id:a,className:`cfg-select`,"aria-label":n,disabled:e.disabled,value:o>=0?String(o):s,onChange:t=>{let n=t.target.value;e.onPatch(e.path,n===s?void 0:r[Number(n)])},children:[(0,b.jsx)(`option`,{value:s,children:`Select...`}),r.map((e,t)=>(0,b.jsx)(`option`,{value:String(t),children:String(e)},String(t)))]})]})}function K(e){let{schema:t,value:n,path:r,hints:a,disabled:o,onPatch:s,inputType:l}=e,d=(0,u.useId)(),f=i(r,t,a),p=e.ariaLabel??f.label,m=c(r,a),h=(m?.sensitive??!1)&&!/^\$\{[^}]*\}$/.test(V(n).trim()),g=t.default===void 0?``:V(t.default),_=m?.placeholder??(h?`••••`:g&&`Default: ${g}`);return(0,b.jsxs)(`div`,{className:`cfg-field`,children:[(0,b.jsx)(S,{meta:f,showLabel:e.showLabel??!0,htmlFor:d}),(0,b.jsxs)(`div`,{className:`cfg-input-wrap`,children:[(0,b.jsx)(`input`,{id:d,type:h?`password`:l,className:`cfg-input`,"aria-label":p,placeholder:_,value:V(n),disabled:o,onChange:e=>{let t=e.target.value;if(l===`number`){if(t.trim()===``){s(r,void 0);return}let e=Number(t);s(r,Number.isNaN(e)?t:e);return}s(r,t)}}),t.default===void 0?null:(0,b.jsx)(`button`,{type:`button`,className:`cfg-input__reset`,title:`Reset to default`,"aria-label":`Reset ${p} to default`,disabled:o,onClick:()=>s(r,t.default),children:`↺`})]})]})}function q(e){let{schema:t,value:n,path:r,disabled:a}=e,o=(0,u.useId)(),s=i(r,t,e.hints),c=e.ariaLabel??s.label,l=n??t.default??``,d=typeof l==`number`?l:0;return(0,b.jsxs)(`div`,{className:`cfg-field`,children:[(0,b.jsx)(S,{meta:s,showLabel:e.showLabel??!0,htmlFor:o}),(0,b.jsxs)(`div`,{className:`cfg-number`,children:[(0,b.jsx)(`button`,{type:`button`,className:`cfg-number__btn`,"aria-label":`Decrease ${c}`,disabled:a,onClick:()=>e.onPatch(r,d-1),children:`−`}),(0,b.jsx)(`input`,{id:o,type:`number`,className:`cfg-number__input`,"aria-label":c,value:V(l),disabled:a,onChange:t=>{let n=t.target.value;e.onPatch(r,n===``?void 0:Number(n))}}),(0,b.jsx)(`button`,{type:`button`,className:`cfg-number__btn`,"aria-label":`Increase ${c}`,disabled:a,onClick:()=>e.onPatch(r,d+1),children:`+`})]})]})}function J(e){let{schema:t,value:n,path:r,disabled:a}=e,o=(0,u.useId)(),s=i(r,t,e.hints),c=e.ariaLabel??s.label,l=typeof n==`boolean`?n:typeof t.default==`boolean`&&t.default;return(0,b.jsxs)(`label`,{className:a?`cfg-toggle-row cfg-toggle-row--disabled`:`cfg-toggle-row`,children:[(0,b.jsxs)(`span`,{className:`cfg-toggle-row__content`,children:[(e.showLabel??!0)||!e.ariaLabel?(0,b.jsx)(`span`,{className:`cfg-toggle-row__label`,children:s.label}):null,s.help?(0,b.jsx)(`span`,{className:`cfg-toggle-row__help`,children:s.help}):null,(0,b.jsx)(x,{tags:s.tags})]}),(0,b.jsx)(`input`,{id:o,type:`checkbox`,className:`cfg-toggle`,"aria-label":c,checked:l,disabled:a,onChange:t=>e.onPatch(r,t.target.checked)})]})}function Y(e){let{schema:t,value:n,path:r,hints:o,unsupported:s}=e,c=i(r,t,o),u=e.ariaLabel??c.label,d=e.searchCriteria;if(s.has(l(r)))return(0,b.jsx)(H,{label:c.label});if(d&&A(d)&&!P({schema:t,value:n,path:r,hints:o,criteria:d}))return null;if(t.anyOf||t.oneOf){let r=(t.anyOf??t.oneOf??[]).filter(e=>!(e.type===`null`||Array.isArray(e.type)&&e.type.includes(`null`)));if(r.length===1)return(0,b.jsx)(Y,{...e,schema:r[0]});let i=r.map(U);if(i.length>0&&i.every(e=>e!==void 0)){let r=n??t.default;return i.length<=5?(0,b.jsx)(W,{params:e,meta:c,ariaLabel:u,options:i,resolved:r}):(0,b.jsx)(G,{params:e,meta:c,ariaLabel:u,options:i,resolved:r})}let o={string:!0,number:!0,boolean:!0},s=new Set(r.map(e=>a(e)).filter(e=>!!e).map(e=>e===`integer`?`number`:e));if(s.size>0&&[...s].every(e=>o[e])){let n=s.has(`boolean`),r=s.has(`string`),i=s.has(`number`);if(n&&s.size===1)return(0,b.jsx)(Y,{...e,schema:{...t,type:`boolean`,anyOf:void 0,oneOf:void 0}});if(r||i)return(0,b.jsx)(K,{...e,inputType:i&&!r?`number`:`text`})}}if(t.enum){let r=n??t.default;return t.enum.length<=5?(0,b.jsx)(W,{params:e,meta:c,ariaLabel:u,options:t.enum,resolved:r}):(0,b.jsx)(G,{params:e,meta:c,ariaLabel:u,options:t.enum,resolved:r})}let f=a(t);return f===`object`?(0,b.jsx)(B,{...e}):f===`array`?(0,b.jsx)(F,{...e}):f===`boolean`?(0,b.jsx)(J,{...e}):f===`number`||f===`integer`?(0,b.jsx)(q,{...e}):f===`string`?(0,b.jsx)(K,{...e,inputType:`text`}):(0,b.jsxs)(`div`,{className:`cfg-field cfg-field--error`,children:[(0,b.jsx)(`div`,{className:`cfg-field__label`,children:c.label}),(0,b.jsxs)(`div`,{className:`cfg-field__error`,children:[`Unsupported type: `,f??`unknown`,`. Edit in raw mode.`]})]})}var X={env:{label:`Environment Variables`,description:`Environment variables passed to the gateway process`},update:{label:`Updates`,description:`Auto-update settings and release channel`},agents:{label:`Agents`,description:`Agent configurations, models, and identities`},auth:{label:`Authentication`,description:`API keys and authentication profiles`},channels:{label:`Channels`,description:`Messaging channels (Telegram, Discord, Slack, etc.)`},messages:{label:`Messages`,description:`Message handling and routing settings`},commands:{label:`Commands`,description:`Custom slash commands`},hooks:{label:`Hooks`,description:`Webhooks and event hooks`},skills:{label:`Skills`,description:`Skill packs and capabilities`},tools:{label:`Tools`,description:`Tool configurations (browser, search, etc.)`},gateway:{label:`Gateway`,description:`Gateway server settings (port, auth, binding)`},wizard:{label:`Setup Wizard`,description:`Setup wizard state and history`},meta:{label:`Metadata`,description:`Gateway metadata and version information`},logging:{label:`Logging`,description:`Log levels and output configuration`},browser:{label:`Browser`,description:`Browser automation settings`},ui:{label:`UI`,description:`User interface preferences`},models:{label:`Models`,description:`AI model configurations and providers`},bindings:{label:`Bindings`,description:`Key bindings and shortcuts`},broadcast:{label:`Broadcast`,description:`Broadcast and notification settings`},audio:{label:`Audio`,description:`Audio input/output settings`},session:{label:`Session`,description:`Session management and persistence`},cron:{label:`Cron`,description:`Scheduled tasks and automation`},web:{label:`Web`,description:`Web server and API settings`},discovery:{label:`Discovery`,description:`Service discovery and networking`},canvasHost:{label:`Canvas Host`,description:`Canvas rendering and display`},talk:{label:`Talk`,description:`Voice and speech settings`},plugins:{label:`Plugins`,description:`Plugin management and extensions`}};function Z(e){return X[e]?.label??e.charAt(0).toUpperCase()+e.slice(1)}function Q(e,t){return X[e]?.description??t.description??``}function $(e){if(!e.query)return!0;let t=k(e.query),n=t.text,r=X[e.key];return t.tags.length===0&&(n&&e.key.toLowerCase().includes(n)||n&&r&&(r.label.toLowerCase().includes(n)||r.description.toLowerCase().includes(n)))?!0:P({schema:e.schema,value:e.sectionValue,path:[e.key],hints:e.uiHints,criteria:t})}function ee(e,t){let n=e;for(let e of t){if(!n)return;if(typeof e==`number`){n=Array.isArray(n.items)?n.items[0]:n.items;continue}let t=n.properties;if(t&&t[e]){n=t[e];continue}let r=n.additionalProperties;n=o(r)?r:void 0}return n}function te(e,t){let n=e;for(let e of t)if(o(n))n=n[e];else if(Array.isArray(n)&&typeof e==`number`)n=n[e];else return;return n}function ne(e){let t=ee(e.schema,e.rootPath);return t?(0,b.jsx)(Y,{schema:t,value:te(e.value??{},e.rootPath),path:e.rootPath,hints:e.uiHints,unsupported:e.unsupported,disabled:e.disabled,searchCriteria:e.search?k(e.search):void 0,showLabel:!1,onPatch:e.onPatch}):(0,b.jsx)(`div`,{className:`cfg-empty-note`,children:`No settings match this selection`})}function re(e){let t=(0,u.useMemo)(()=>e.unsupportedPaths?new Set(e.unsupportedPaths):new Set(e.schema?m(e.schema).unsupportedPaths:[]),[e.schema,e.unsupportedPaths]);if(!e.schema)return(0,b.jsx)(`div`,{className:`cfg-schema-empty`,children:`Schema unavailable.`});if(a(e.schema)!==`object`||!e.schema.properties)return(0,b.jsx)(`div`,{className:`cfg-callout cfg-callout--danger`,children:`Unsupported schema. Use Raw.`});let n=e.search??``,r=n?k(n):void 0;if(e.rootPath)return(0,b.jsx)(`div`,{className:`cfg-form`,children:(0,b.jsx)(ne,{schema:e.schema,rootPath:e.rootPath,value:e.value,uiHints:e.uiHints,disabled:e.disabled??!1,unsupported:t,search:n||void 0,onPatch:e.onPatch})});let i=e.value??{},o=Object.entries(e.schema.properties).toSorted((t,n)=>{let r=c([t[0]],e.uiHints)?.order??50,i=c([n[0]],e.uiHints)?.order??50;return r===i?t[0].localeCompare(n[0]):r-i}).filter(([t,r])=>$({key:t,schema:r,sectionValue:i[t],uiHints:e.uiHints,query:n}));return o.length===0?(0,b.jsx)(`div`,{className:`cfg-form`,children:(0,b.jsx)(`div`,{className:`cfg-empty-note`,children:n?`No settings match "${n}"`:`No settings in this section`})}):(0,b.jsx)(`div`,{className:`cfg-form`,children:o.map(([n,a])=>(0,b.jsxs)(`section`,{className:`cfg-section`,id:`cfg-section-${n}`,children:[(0,b.jsx)(`header`,{className:`cfg-section__header`,children:(0,b.jsxs)(`div`,{className:`cfg-section__titles`,children:[(0,b.jsx)(`h3`,{className:`cfg-section__title`,children:Z(n)}),Q(n,a)?(0,b.jsx)(`p`,{className:`cfg-section__desc`,children:Q(n,a)}):null]})}),(0,b.jsx)(`div`,{className:`cfg-section__content`,children:(0,b.jsx)(Y,{schema:a,value:i[n],path:[n],hints:e.uiHints,unsupported:t,disabled:e.disabled??!1,searchCriteria:r,showLabel:!1,onPatch:e.onPatch})})]},n))})}export{O as i,Z as n,T as r,re as t};
|
|
1
|
+
import{_ as e,c as t,h as n}from"./format-BPrfsCHW.js";import{c as r,d as i,f as a,l as o,o as s,s as c,u as l}from"./form-utils-BkwTm73v.js";var u=e(n(),1),d={title:!0,description:!0,default:!0,nullable:!0};function f(e){return Object.keys(e??{}).every(e=>d[e])}function p(e){let t=e.filter(e=>e!=null),n=t.length!==e.length,r=[];for(let e of t)r.some(t=>Object.is(t,e))||r.push(e);return{enumValues:r,nullable:n}}function m(e){return o(e)?h(e,[]):{schema:null,unsupportedPaths:[`<root>`]}}function h(e,t){let n=new Set,r={...e},i=l(t)||`<root>`;if(e.anyOf||e.oneOf||e.allOf)return y(e,t)||{schema:e,unsupportedPaths:[i]};let s=Array.isArray(e.type)&&e.type.includes(`null`),c=a(e)??(e.properties||e.additionalProperties?`object`:void 0);if(r.type=c??e.type,r.nullable=s||e.nullable,r.enum){let{enumValues:e,nullable:t}=p(r.enum);r.enum=e,t&&(r.nullable=!0),e.length===0&&n.add(i)}if(c===`object`){let a=e.properties??{},s={};for(let[e,r]of Object.entries(a)){let i=h(r,[...t,e]);i.schema&&(s[e]=i.schema);for(let e of i.unsupportedPaths)n.add(e)}if(r.properties=s,e.additionalProperties===!0)n.add(i);else if(e.additionalProperties===!1)r.additionalProperties=!1;else if(o(e.additionalProperties)&&!f(e.additionalProperties)){let a=h(e.additionalProperties,[...t,`*`]);r.additionalProperties=a.schema??e.additionalProperties,a.unsupportedPaths.length>0&&n.add(i)}}else if(c===`array`){let a=Array.isArray(e.items)?e.items[0]:e.items;if(!a)n.add(i);else{let e=h(a,[...t,`*`]);r.items=e.schema??a,e.unsupportedPaths.length>0&&n.add(i)}}else c!==`string`&&c!==`number`&&c!==`integer`&&c!==`boolean`&&!r.enum&&n.add(i);return{schema:r,unsupportedPaths:Array.from(n)}}function g(e){if(a(e)!==`object`)return!1;let t=e.properties?.source,n=e.properties?.provider,r=e.properties?.id;return!t||!n||!r?!1:typeof t.const==`string`&&a(n)===`string`&&a(r)===`string`}function _(e){let t=e.oneOf??e.anyOf;return!t||t.length===0?!1:t.every(e=>g(e))}function v(e,t,n,r){let i=n.findIndex(e=>a(e)===`string`);if(i<0)return null;let o=n.filter((e,t)=>t!==i);return o.length!==1||!_(o[0])?null:h({...e,...n[i],nullable:r,anyOf:void 0,oneOf:void 0,allOf:void 0},t)}function y(e,t){if(e.allOf)return null;let n=e.anyOf??e.oneOf;if(!n)return null;let r=[],i=[],o=!1;for(let e of n){if(!e||typeof e!=`object`)return null;if(Array.isArray(e.enum)){let{enumValues:t,nullable:n}=p(e.enum);r.push(...t),n&&(o=!0);continue}if(`const`in e){if(e.const==null){o=!0;continue}r.push(e.const);continue}if(a(e)===`null`){o=!0;continue}i.push(e)}let s=v(e,t,i,o);if(s)return s;if(r.length>0&&i.length===0){let t=[];for(let e of r)t.some(t=>Object.is(t,e))||t.push(e);return{schema:{...e,enum:t,nullable:o,anyOf:void 0,oneOf:void 0,allOf:void 0},unsupportedPaths:[]}}if(i.length===1){let e=h(i[0],t);return e.schema&&(e.schema.nullable=o||e.schema.nullable),e}let c={string:!0,number:!0,integer:!0,boolean:!0};return i.length>0&&r.length===0&&i.every(e=>e.type&&c[String(e.type)])?{schema:{...e,nullable:o,anyOf:void 0,oneOf:void 0,allOf:void 0},unsupportedPaths:[]}:null}var b=t();function x({tags:e}){return e.length===0?null:(0,b.jsx)(`div`,{className:`cfg-tags`,children:e.map(e=>(0,b.jsx)(`span`,{className:`cfg-tag`,children:e},e))})}function S({meta:e,showLabel:t=!0,htmlFor:n}){let r=!!e.help||e.tags.length>0;return!t&&!r?null:(0,b.jsxs)(b.Fragment,{children:[t?(0,b.jsx)(`label`,{className:`cfg-field__label`,htmlFor:n,children:e.label}):null,e.help?(0,b.jsx)(`div`,{className:`cfg-field__help`,children:e.help}):null,(0,b.jsx)(x,{tags:e.tags})]})}function C(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function w(e){return e.trim().toLowerCase()}function T(e,t){let n=w(t);return n?RegExp(`(^|\\s)tag:${C(n)}(?=\\s|$)`,`i`).test(e.trim()):!1}function E(e,t){let n=w(t),r=e.trim();return n?r?T(r,n)?r:`${r} tag:${n}`:`tag:${n}`:r}function D(e,t){let n=w(t),r=e.trim();if(!n||!r)return r;let i=RegExp(`(^|\\s)tag:${C(n)}(?=\\s|$)`,`ig`);return r.replace(i,` `).replace(/\s+/g,` `).trim()}function O(e,t){return T(e,t)?D(e,t):E(e,t)}function k(e){let t=[],n=new Set;return{text:e.trim().replace(/(^|\s)tag:([^\s]+)/gi,(e,r,i)=>{let a=i.trim().toLowerCase();return a&&!n.has(a)&&(n.add(a),t.push(a)),r}).trim().toLowerCase(),tags:t}}function A(e){return!!(e&&(e.text.length>0||e.tags.length>0))}function j(e,t){if(!e)return!0;for(let n of t)if(n&&n.toLowerCase().includes(e))return!0;return!1}function M(e,t){if(e.length===0)return!0;let n=new Set(t.map(e=>e.toLowerCase()));return e.every(e=>n.has(e))}function N(e){let{schema:t,path:n,hints:r,criteria:a}=e;if(!A(a))return!0;let{label:o,help:s,tags:c}=i(n,t,r);if(!M(a.tags,c))return!1;if(!a.text)return!0;let l=n.filter(e=>typeof e==`string`).join(`.`),u=t.enum&&t.enum.length>0?t.enum.map(e=>String(e)).join(` `):``;return j(a.text,[o,s,t.title,t.description,l,u])}function P(e){let{schema:t,value:n,path:r,hints:i,criteria:s}=e;if(!A(s)||N({schema:t,path:r,hints:i,criteria:s}))return!0;let c=a(t);if(c===`object`){let e=n??t.default,a=o(e)?e:{},c=t.properties??{};for(let[e,t]of Object.entries(c))if(P({schema:t,value:a[e],path:[...r,e],hints:i,criteria:s}))return!0;let l=t.additionalProperties;if(l&&typeof l==`object`){let e=new Set(Object.keys(c));for(let[t,n]of Object.entries(a))if(!e.has(t)&&P({schema:l,value:n,path:[...r,t],hints:i,criteria:s}))return!0}return!1}if(c===`array`){let e=Array.isArray(t.items)?t.items[0]:t.items;if(!e)return!1;let a=Array.isArray(n)?n:Array.isArray(t.default)?t.default:[];if(a.length===0)return!1;for(let t=0;t<a.length;t+=1)if(P({schema:e,value:a[t],path:[...r,t],hints:i,criteria:s}))return!0}return!1}function F(e){let{schema:t,value:n,path:r,hints:a,disabled:o}=e,c=e.showLabel??!0,l=i(r,t,a),u=e.searchCriteria,d=u&&A(u)&&N({schema:t,path:r,hints:a,criteria:u})?void 0:u,f=Array.isArray(t.items)?t.items[0]:t.items;if(!f)return(0,b.jsxs)(`div`,{className:`cfg-field cfg-field--error`,children:[(0,b.jsx)(`div`,{className:`cfg-field__label`,children:l.label}),(0,b.jsx)(`div`,{className:`cfg-field__error`,children:`Unsupported array schema. Edit in raw mode.`})]});let p=Array.isArray(n)?n:Array.isArray(t.default)?t.default:[];return(0,b.jsxs)(`div`,{className:`cfg-array`,children:[(0,b.jsxs)(`div`,{className:`cfg-array__header`,children:[(0,b.jsxs)(`div`,{className:`cfg-array__title`,children:[c?(0,b.jsx)(`span`,{className:`cfg-array__label`,children:l.label}):null,l.tags.length>0?(0,b.jsx)(`span`,{className:`cfg-tag`,children:l.tags.join(` `)}):null]}),(0,b.jsxs)(`span`,{className:`cfg-array__count`,children:[p.length,` item`,p.length===1?``:`s`]}),(0,b.jsx)(`button`,{type:`button`,className:`cfg-array__add`,"aria-label":`Add`,disabled:o,onClick:()=>{e.onPatch(r,[...p,s(f)])},children:`+ Add`})]}),l.help?(0,b.jsx)(`div`,{className:`cfg-array__help`,children:l.help}):null,p.length===0?(0,b.jsx)(`div`,{className:`cfg-array__empty`,children:`No items yet. Use “Add” to create one.`}):(0,b.jsx)(`div`,{className:`cfg-array__items`,children:p.map((t,n)=>(0,b.jsxs)(`div`,{className:`cfg-array__item`,children:[(0,b.jsxs)(`div`,{className:`cfg-array__item-header`,children:[(0,b.jsxs)(`span`,{className:`cfg-array__item-index`,children:[`#`,n+1]}),(0,b.jsx)(`button`,{type:`button`,className:`cfg-array__item-remove`,"aria-label":`Remove item ${n+1}`,title:`Remove item`,disabled:o,onClick:()=>{let t=[...p];t.splice(n,1),e.onPatch(r,t)},children:`✕`})]}),(0,b.jsx)(`div`,{className:`cfg-array__item-content`,children:(0,b.jsx)(Y,{schema:f,value:t,path:[...r,n],hints:a,unsupported:e.unsupported,disabled:o,searchCriteria:d,showLabel:!1,ariaLabel:`${l.label} item ${n+1}`,onPatch:e.onPatch})})]},n))})]})}function I(e){if(e===void 0)return``;try{return JSON.stringify(e,null,2)??``}catch{return``}}function L({entryKey:e,disabled:t,onRename:n}){let[r,i]=(0,u.useState)(e);return(0,u.useEffect)(()=>{i(e)},[e]),(0,b.jsx)(`input`,{type:`text`,className:`cfg-input cfg-input--sm`,placeholder:`Key`,"aria-label":`Key for ${e}`,value:r,disabled:t,onChange:e=>i(e.target.value),onBlur:()=>{let t=r.trim();if(!t||t===e){i(e);return}n(t),i(e)}})}function R({entryKey:e,text:t,disabled:n,onCommit:r}){let[i,a]=(0,u.useState)(t);return(0,u.useEffect)(()=>{a(t)},[t]),(0,b.jsx)(`textarea`,{className:`cfg-textarea cfg-textarea--sm`,placeholder:`JSON value`,rows:2,"aria-label":`JSON value for ${e}`,value:i,disabled:n,onChange:e=>a(e.target.value),onBlur:()=>{let e=i.trim();if(!e){r(void 0);return}try{r(JSON.parse(e))}catch{a(t)}}})}function z({schema:e,value:t,path:n,hints:a,unsupported:o,disabled:c,reservedKeys:l,searchCriteria:u,onPatch:d}){let f=r(e),p=Object.entries(t).filter(([e])=>!l.has(e)),m=u&&A(u)?p.filter(([t,r])=>P({schema:e,value:r,path:[...n,t],hints:a,criteria:u})):p;return(0,b.jsxs)(`div`,{className:`cfg-map`,children:[(0,b.jsxs)(`div`,{className:`cfg-map__header`,children:[(0,b.jsx)(`span`,{className:`cfg-map__label`,children:`Custom entries`}),(0,b.jsx)(`button`,{type:`button`,className:`cfg-map__add`,"aria-label":`Add Entry`,disabled:c,onClick:()=>{let r={...t},i=1,a=`custom-${i}`;for(;a in r;)i+=1,a=`custom-${i}`;r[a]=f?{}:s(e),d(n,r)},children:`+ Add Entry`})]}),m.length===0?(0,b.jsx)(`div`,{className:`cfg-map__empty`,children:`No custom entries.`}):(0,b.jsx)(`div`,{className:`cfg-map__items`,children:m.map(([r,s])=>{let l=[...n,r],p=i(l,e,a);return(0,b.jsxs)(`div`,{className:`cfg-map__item`,children:[(0,b.jsxs)(`div`,{className:`cfg-map__item-header`,children:[(0,b.jsx)(L,{entryKey:r,disabled:c,onRename:e=>{let i={...t};e in i||(i[e]=i[r],delete i[r],d(n,i))}}),(0,b.jsx)(`button`,{type:`button`,className:`cfg-map__item-remove`,"aria-label":`Remove entry ${r}`,title:`Remove entry`,disabled:c,onClick:()=>{let e={...t};delete e[r],d(n,e)},children:`✕`})]}),(0,b.jsx)(`div`,{className:`cfg-map__item-value`,children:f?(0,b.jsx)(R,{entryKey:r,text:I(s),disabled:c,onCommit:e=>d(l,e)}):(0,b.jsx)(Y,{schema:e,value:s,path:l,hints:a,unsupported:o,disabled:c,searchCriteria:u,showLabel:!1,ariaLabel:p.label,onPatch:d})})]},r)})})]})}function B(e){let{schema:t,value:n,path:r,hints:a,disabled:s}=e,l=e.showLabel??!0,u=i(r,t,a),d=e.searchCriteria,f=d&&A(d)&&N({schema:t,path:r,hints:a,criteria:d})?void 0:d,p=n??t.default,m=o(p)?p:{},h=t.properties??{},g=Object.entries(h).toSorted((e,t)=>{let n=c([...r,e[0]],a)?.order??0,i=c([...r,t[0]],a)?.order??0;return n===i?e[0].localeCompare(t[0]):n-i}),_=t.additionalProperties,v=o(_),y=new Set(Object.keys(h)),S=(0,b.jsxs)(b.Fragment,{children:[g.map(([t,n])=>(0,b.jsx)(Y,{schema:n,value:m[t],path:[...r,t],hints:a,unsupported:e.unsupported,disabled:s,searchCriteria:f,onPatch:e.onPatch},t)),v?(0,b.jsx)(z,{schema:_,value:m,path:r,hints:a,unsupported:e.unsupported,disabled:s,reservedKeys:y,searchCriteria:f,onPatch:e.onPatch}):null]});return r.length<=1||!l?(0,b.jsx)(`div`,{className:r.length<=1?`cfg-fields`:`cfg-fields cfg-fields--inline`,children:S}):(0,b.jsxs)(`details`,{className:`cfg-object`,open:r.length<=2,children:[(0,b.jsxs)(`summary`,{className:`cfg-object__header`,children:[(0,b.jsxs)(`span`,{className:`cfg-object__title-wrap`,children:[(0,b.jsx)(`span`,{className:`cfg-object__title`,children:u.label}),(0,b.jsx)(x,{tags:u.tags})]}),(0,b.jsx)(`span`,{className:`cfg-object__chevron`,"aria-hidden":`true`,children:`▾`})]}),u.help?(0,b.jsx)(`div`,{className:`cfg-object__help`,children:u.help}):null,(0,b.jsx)(`div`,{className:`cfg-object__content`,children:S})]})}function V(e){if(e==null)return``;if(typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return String(e);try{return JSON.stringify(e)??``}catch{return``}}function H({label:e}){return(0,b.jsxs)(`div`,{className:`cfg-field cfg-field--error`,children:[(0,b.jsx)(`div`,{className:`cfg-field__label`,children:e}),(0,b.jsx)(`div`,{className:`cfg-field__error`,children:`Edit in raw mode`})]})}function U(e){if(e.const!==void 0)return e.const;if(e.enum&&e.enum.length===1)return e.enum[0]}function W({params:e,meta:t,ariaLabel:n,options:r,resolved:i}){return(0,b.jsxs)(`div`,{className:`cfg-field`,children:[(0,b.jsx)(S,{meta:t,showLabel:e.showLabel??!0}),(0,b.jsx)(`div`,{className:`cfg-segmented`,role:`group`,"aria-label":n,children:r.map(t=>{let n=t===i||String(t)===String(i);return(0,b.jsx)(`button`,{type:`button`,className:n?`cfg-segmented__btn cfg-segmented__btn--active`:`cfg-segmented__btn`,"aria-pressed":n,disabled:e.disabled,onClick:()=>e.onPatch(e.path,t),children:String(t)},String(t))})})]})}function G({params:e,meta:t,ariaLabel:n,options:r,resolved:i}){let a=(0,u.useId)(),o=r.findIndex(e=>e===i||String(e)===String(i)),s=`__unset__`;return(0,b.jsxs)(`div`,{className:`cfg-field`,children:[(0,b.jsx)(S,{meta:t,showLabel:e.showLabel??!0,htmlFor:a}),(0,b.jsxs)(`select`,{id:a,className:`cfg-select`,"aria-label":n,disabled:e.disabled,value:o>=0?String(o):s,onChange:t=>{let n=t.target.value;e.onPatch(e.path,n===s?void 0:r[Number(n)])},children:[(0,b.jsx)(`option`,{value:s,children:`Select...`}),r.map((e,t)=>(0,b.jsx)(`option`,{value:String(t),children:String(e)},String(t)))]})]})}function K(e){let{schema:t,value:n,path:r,hints:a,disabled:o,onPatch:s,inputType:l}=e,d=(0,u.useId)(),f=i(r,t,a),p=e.ariaLabel??f.label,m=c(r,a),h=(m?.sensitive??!1)&&!/^\$\{[^}]*\}$/.test(V(n).trim()),g=t.default===void 0?``:V(t.default),_=m?.placeholder??(h?`••••`:g&&`Default: ${g}`);return(0,b.jsxs)(`div`,{className:`cfg-field`,children:[(0,b.jsx)(S,{meta:f,showLabel:e.showLabel??!0,htmlFor:d}),(0,b.jsxs)(`div`,{className:`cfg-input-wrap`,children:[(0,b.jsx)(`input`,{id:d,type:h?`password`:l,className:`cfg-input`,"aria-label":p,placeholder:_,value:V(n),disabled:o,onChange:e=>{let t=e.target.value;if(l===`number`){if(t.trim()===``){s(r,void 0);return}let e=Number(t);s(r,Number.isNaN(e)?t:e);return}s(r,t)}}),t.default===void 0?null:(0,b.jsx)(`button`,{type:`button`,className:`cfg-input__reset`,title:`Reset to default`,"aria-label":`Reset ${p} to default`,disabled:o,onClick:()=>s(r,t.default),children:`↺`})]})]})}function q(e){let{schema:t,value:n,path:r,disabled:a}=e,o=(0,u.useId)(),s=i(r,t,e.hints),c=e.ariaLabel??s.label,l=n??t.default??``,d=typeof l==`number`?l:0;return(0,b.jsxs)(`div`,{className:`cfg-field`,children:[(0,b.jsx)(S,{meta:s,showLabel:e.showLabel??!0,htmlFor:o}),(0,b.jsxs)(`div`,{className:`cfg-number`,children:[(0,b.jsx)(`button`,{type:`button`,className:`cfg-number__btn`,"aria-label":`Decrease ${c}`,disabled:a,onClick:()=>e.onPatch(r,d-1),children:`−`}),(0,b.jsx)(`input`,{id:o,type:`number`,className:`cfg-number__input`,"aria-label":c,value:V(l),disabled:a,onChange:t=>{let n=t.target.value;e.onPatch(r,n===``?void 0:Number(n))}}),(0,b.jsx)(`button`,{type:`button`,className:`cfg-number__btn`,"aria-label":`Increase ${c}`,disabled:a,onClick:()=>e.onPatch(r,d+1),children:`+`})]})]})}function J(e){let{schema:t,value:n,path:r,disabled:a}=e,o=(0,u.useId)(),s=i(r,t,e.hints),c=e.ariaLabel??s.label,l=typeof n==`boolean`?n:typeof t.default==`boolean`&&t.default;return(0,b.jsxs)(`label`,{className:a?`cfg-toggle-row cfg-toggle-row--disabled`:`cfg-toggle-row`,children:[(0,b.jsxs)(`span`,{className:`cfg-toggle-row__content`,children:[(e.showLabel??!0)||!e.ariaLabel?(0,b.jsx)(`span`,{className:`cfg-toggle-row__label`,children:s.label}):null,s.help?(0,b.jsx)(`span`,{className:`cfg-toggle-row__help`,children:s.help}):null,(0,b.jsx)(x,{tags:s.tags})]}),(0,b.jsx)(`input`,{id:o,type:`checkbox`,className:`cfg-toggle`,"aria-label":c,checked:l,disabled:a,onChange:t=>e.onPatch(r,t.target.checked)})]})}function Y(e){let{schema:t,value:n,path:r,hints:o,unsupported:s}=e,c=i(r,t,o),u=e.ariaLabel??c.label,d=e.searchCriteria;if(s.has(l(r)))return(0,b.jsx)(H,{label:c.label});if(d&&A(d)&&!P({schema:t,value:n,path:r,hints:o,criteria:d}))return null;if(t.anyOf||t.oneOf){let r=(t.anyOf??t.oneOf??[]).filter(e=>!(e.type===`null`||Array.isArray(e.type)&&e.type.includes(`null`)));if(r.length===1)return(0,b.jsx)(Y,{...e,schema:r[0]});let i=r.map(U);if(i.length>0&&i.every(e=>e!==void 0)){let r=n??t.default;return i.length<=5?(0,b.jsx)(W,{params:e,meta:c,ariaLabel:u,options:i,resolved:r}):(0,b.jsx)(G,{params:e,meta:c,ariaLabel:u,options:i,resolved:r})}let o={string:!0,number:!0,boolean:!0},s=new Set(r.map(e=>a(e)).filter(e=>!!e).map(e=>e===`integer`?`number`:e));if(s.size>0&&[...s].every(e=>o[e])){let n=s.has(`boolean`),r=s.has(`string`),i=s.has(`number`);if(n&&s.size===1)return(0,b.jsx)(Y,{...e,schema:{...t,type:`boolean`,anyOf:void 0,oneOf:void 0}});if(r||i)return(0,b.jsx)(K,{...e,inputType:i&&!r?`number`:`text`})}}if(t.enum){let r=n??t.default;return t.enum.length<=5?(0,b.jsx)(W,{params:e,meta:c,ariaLabel:u,options:t.enum,resolved:r}):(0,b.jsx)(G,{params:e,meta:c,ariaLabel:u,options:t.enum,resolved:r})}let f=a(t);return f===`object`?(0,b.jsx)(B,{...e}):f===`array`?(0,b.jsx)(F,{...e}):f===`boolean`?(0,b.jsx)(J,{...e}):f===`number`||f===`integer`?(0,b.jsx)(q,{...e}):f===`string`?(0,b.jsx)(K,{...e,inputType:`text`}):(0,b.jsxs)(`div`,{className:`cfg-field cfg-field--error`,children:[(0,b.jsx)(`div`,{className:`cfg-field__label`,children:c.label}),(0,b.jsxs)(`div`,{className:`cfg-field__error`,children:[`Unsupported type: `,f??`unknown`,`. Edit in raw mode.`]})]})}var X={env:{label:`Environment Variables`,description:`Environment variables passed to the gateway process`},update:{label:`Updates`,description:`Auto-update settings and release channel`},agents:{label:`Agents`,description:`Agent configurations, models, and identities`},auth:{label:`Authentication`,description:`API keys and authentication profiles`},channels:{label:`Channels`,description:`Messaging channels (Telegram, Discord, Slack, etc.)`},messages:{label:`Messages`,description:`Message handling and routing settings`},commands:{label:`Commands`,description:`Custom slash commands`},hooks:{label:`Hooks`,description:`Webhooks and event hooks`},skills:{label:`Skills`,description:`Skill packs and capabilities`},tools:{label:`Tools`,description:`Tool configurations (browser, search, etc.)`},gateway:{label:`Gateway`,description:`Gateway server settings (port, auth, binding)`},wizard:{label:`Setup Wizard`,description:`Setup wizard state and history`},meta:{label:`Metadata`,description:`Gateway metadata and version information`},logging:{label:`Logging`,description:`Log levels and output configuration`},browser:{label:`Browser`,description:`Browser automation settings`},ui:{label:`UI`,description:`User interface preferences`},models:{label:`Models`,description:`AI model configurations and providers`},bindings:{label:`Bindings`,description:`Key bindings and shortcuts`},broadcast:{label:`Broadcast`,description:`Broadcast and notification settings`},audio:{label:`Audio`,description:`Audio input/output settings`},session:{label:`Session`,description:`Session management and persistence`},cron:{label:`Cron`,description:`Scheduled tasks and automation`},web:{label:`Web`,description:`Web server and API settings`},discovery:{label:`Discovery`,description:`Service discovery and networking`},canvasHost:{label:`Canvas Host`,description:`Canvas rendering and display`},talk:{label:`Talk`,description:`Voice and speech settings`},plugins:{label:`Plugins`,description:`Plugin management and extensions`}};function Z(e){return X[e]?.label??e.charAt(0).toUpperCase()+e.slice(1)}function Q(e,t){return X[e]?.description??t.description??``}function $(e){if(!e.query)return!0;let t=k(e.query),n=t.text,r=X[e.key];return t.tags.length===0&&(n&&e.key.toLowerCase().includes(n)||n&&r&&(r.label.toLowerCase().includes(n)||r.description.toLowerCase().includes(n)))?!0:P({schema:e.schema,value:e.sectionValue,path:[e.key],hints:e.uiHints,criteria:t})}function ee(e,t){let n=e;for(let e of t){if(!n)return;if(typeof e==`number`){n=Array.isArray(n.items)?n.items[0]:n.items;continue}let t=n.properties;if(t&&t[e]){n=t[e];continue}let r=n.additionalProperties;n=o(r)?r:void 0}return n}function te(e,t){let n=e;for(let e of t)if(o(n))n=n[e];else if(Array.isArray(n)&&typeof e==`number`)n=n[e];else return;return n}function ne(e){let t=ee(e.schema,e.rootPath);return t?(0,b.jsx)(Y,{schema:t,value:te(e.value??{},e.rootPath),path:e.rootPath,hints:e.uiHints,unsupported:e.unsupported,disabled:e.disabled,searchCriteria:e.search?k(e.search):void 0,showLabel:!1,onPatch:e.onPatch}):(0,b.jsx)(`div`,{className:`cfg-empty-note`,children:`No settings match this selection`})}function re(e){let t=(0,u.useMemo)(()=>e.unsupportedPaths?new Set(e.unsupportedPaths):new Set(e.schema?m(e.schema).unsupportedPaths:[]),[e.schema,e.unsupportedPaths]);if(!e.schema)return(0,b.jsx)(`div`,{className:`cfg-schema-empty`,children:`Schema unavailable.`});if(a(e.schema)!==`object`||!e.schema.properties)return(0,b.jsx)(`div`,{className:`cfg-callout cfg-callout--danger`,children:`Unsupported schema. Use Raw.`});let n=e.search??``,r=n?k(n):void 0;if(e.rootPath)return(0,b.jsx)(`div`,{className:`cfg-form`,children:(0,b.jsx)(ne,{schema:e.schema,rootPath:e.rootPath,value:e.value,uiHints:e.uiHints,disabled:e.disabled??!1,unsupported:t,search:n||void 0,onPatch:e.onPatch})});let i=e.value??{},o=Object.entries(e.schema.properties).toSorted((t,n)=>{let r=c([t[0]],e.uiHints)?.order??50,i=c([n[0]],e.uiHints)?.order??50;return r===i?t[0].localeCompare(n[0]):r-i}).filter(([t,r])=>$({key:t,schema:r,sectionValue:i[t],uiHints:e.uiHints,query:n}));return o.length===0?(0,b.jsx)(`div`,{className:`cfg-form`,children:(0,b.jsx)(`div`,{className:`cfg-empty-note`,children:n?`No settings match "${n}"`:`No settings in this section`})}):(0,b.jsx)(`div`,{className:`cfg-form`,children:o.map(([n,a])=>(0,b.jsxs)(`section`,{className:`cfg-section`,id:`cfg-section-${n}`,children:[(0,b.jsx)(`header`,{className:`cfg-section__header`,children:(0,b.jsxs)(`div`,{className:`cfg-section__titles`,children:[(0,b.jsx)(`h3`,{className:`cfg-section__title`,children:Z(n)}),Q(n,a)?(0,b.jsx)(`p`,{className:`cfg-section__desc`,children:Q(n,a)}):null]})}),(0,b.jsx)(`div`,{className:`cfg-section__content`,children:(0,b.jsx)(Y,{schema:a,value:i[n],path:[n],hints:e.uiHints,unsupported:t,disabled:e.disabled??!1,searchCriteria:r,showLabel:!1,onPatch:e.onPatch})})]},n))})}export{O as i,Z as n,T as r,re as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as e}from"./format-
|
|
1
|
+
import{c as e}from"./format-BPrfsCHW.js";import{t}from"./Button-ralPMMNs.js";import{t as n}from"./Dialog-oJKnAIqZ.js";var r=e();function i({open:e,title:i,body:a,confirmLabel:o,danger:s=!1,busy:c=!1,testId:l,bodyClassName:u,onConfirm:d,onCancel:f}){return(0,r.jsx)(n,{open:e,title:i,onClose:c?()=>{}:f,width:`sm`,footer:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t,{onClick:f,disabled:c,children:`Cancel`}),(0,r.jsx)(t,{variant:s?`danger`:`primary`,onClick:d,disabled:c,"data-testid":l,children:c?`Working…`:o})]}),children:(0,r.jsx)(`p`,{className:u,children:a})})}export{i as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as e}from"./format-
|
|
1
|
+
import{c as e}from"./format-BPrfsCHW.js";var t=e();function n({columns:e,rows:n,rowKey:r,empty:i,onRowClick:a,selectedKey:o,label:s}){return n.length===0&&i!==void 0?(0,t.jsx)(`div`,{className:`ct-table__empty`,children:i}):(0,t.jsx)(`div`,{className:`ct-table__scroll`,children:(0,t.jsxs)(`table`,{className:`ct-table`,"aria-label":s,children:[(0,t.jsx)(`thead`,{children:(0,t.jsx)(`tr`,{children:e.map(e=>(0,t.jsx)(`th`,{scope:`col`,className:e.align===`end`?`ct-table__end`:void 0,children:e.label},e.key))})}),(0,t.jsx)(`tbody`,{children:n.map(n=>{let i=r(n),s=o===i;return(0,t.jsx)(`tr`,{className:[a?`ct-table__row--clickable`:null,s?`ct-table__row--selected`:null].filter(Boolean).join(` `),"aria-selected":a?s:void 0,tabIndex:a?0:void 0,onClick:a?()=>a(n):void 0,onKeyDown:a?e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),a(n))}:void 0,children:e.map(e=>(0,t.jsx)(`td`,{className:[e.mono?`ct-mono`:null,e.align===`end`?`ct-table__end`:null].filter(Boolean).join(` `)||void 0,children:e.render(n)},e.key))},i)})})]})})}export{n as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,c as t,h as n,l as r,s as i,t as a,u as o}from"./format-
|
|
1
|
+
import{_ as e,c as t,h as n,l as r,s as i,t as a,u as o}from"./format-BPrfsCHW.js";import{t as s}from"./Button-ralPMMNs.js";import{o as c,s as l}from"./index-ChHyE-y3.js";import{n as u,t as d}from"./use-gateway-query-7iLwemQz.js";import{t as f}from"./Panel-CqcbBXzJ.js";var p=e(n(),1),m=t();function h(){let e=l(e=>e.status),t=l(e=>e.plugins),n=l(e=>e.failures),r=l(e=>e.gatewayUrl);if(e===`unavailable`||(e===`ready`||e===`cross-origin`)&&t.length===0&&n.length===0)return null;let a=c(r??``),o=n.filter(e=>e.pluginId===`*`);return(0,m.jsxs)(f,{title:`Plugin UI`,sub:`Console modules from allowed plugins.`,testId:`plugin-ui-status`,children:[e===`cross-origin`?(0,m.jsxs)(`p`,{className:`ct-debug__callout`,"data-testid":`plugin-ui-cross-origin`,children:[`Plugin views load only in the console served by the gateway at`,` `,a??`the gateway origin`,`.`]}):null,e===`idle`?(0,m.jsx)(i,{message:`Plugin UI has not loaded yet.`}):null,e===`loading`?(0,m.jsx)(i,{tone:`loading`,message:`Loading plugin UI…`}):null,t.map(t=>{let r=n.find(e=>e.pluginId===t.id);return(0,m.jsxs)(`div`,{className:`ct-plugin-status__row`,"data-testid":`plugin-ui-row`,children:[(0,m.jsx)(`span`,{className:`ct-plugin-status__name`,children:t.name}),t.version===null?null:(0,m.jsx)(`span`,{className:`ct-plugin-status__version ct-mono`,children:t.version}),r?(0,m.jsx)(`span`,{className:`ct-plugin-status__state ct-plugin-status__state--error`,children:r.message}):(0,m.jsx)(`span`,{className:`ct-plugin-status__state`,children:e===`ready`?`Loaded`:e===`loading`?`Loading…`:`Not loaded`})]},t.id)}),o.map((e,t)=>(0,m.jsx)(`p`,{className:`ct-debug__callout`,role:`alert`,"data-testid":`plugin-ui-list-error`,children:e.message},`${e.message}:${t}`))]})}function g(e){let t=e.trim();if(t.length===0)return{ok:!0,params:{}};let n;try{n=JSON.parse(t)}catch(e){return{ok:!1,error:`Params are not valid JSON: ${a(e)}`}}return typeof n!=`object`||!n||Array.isArray(n)?{ok:!1,error:`Params must be a JSON object.`}:{ok:!0,params:n}}function _(e){return JSON.stringify(e,null,2)}function v(e){let t=e?.securityAudit?.summary??null;if(!t)return null;let n=t.critical??0,r=t.warn??0,i=t.info??0;return{tone:n>0?`danger`:r>0?`warn`:`success`,label:n>0?`${n} critical`:r>0?`${r} warnings`:`No critical issues`,info:i}}function y(e){if(e==null)return``;try{return JSON.stringify(e,null,2)}catch{return`<unserialisable payload>`}}function b({label:e,title:t,sub:n,data:r,loading:a,error:o,callout:s}){return(0,m.jsxs)(f,{title:t,sub:n,children:[s,o?(0,m.jsx)(i,{tone:`error`,message:o}):null,a&&!r?(0,m.jsx)(i,{tone:`loading`,message:`Loading…`}):null,!o&&r===null&&!a?(0,m.jsx)(i,{message:`No data.`}):null,r===null?null:(0,m.jsx)(`pre`,{className:`ct-debug__code`,"aria-label":e,children:_(r)})]})}function x(){let e=r(e=>e.request),t=u(`status`,{},{refreshMs:d}),n=u(`health`,{},{refreshMs:d}),c=u(`last-heartbeat`,{},{refreshMs:d}),l=u(`models.list`,{},{refreshMs:d}),x=o(e=>e.entries),[S,C]=(0,p.useState)(``),[w,T]=(0,p.useState)(``),[E,D]=(0,p.useState)(null),[O,k]=(0,p.useState)(null),[A,j]=(0,p.useState)(!1),M=async()=>{let t=S.trim();if(t.length===0){D(`Method is required.`),k(null);return}let n=g(w);if(!n.ok){D(n.error),k(null);return}j(!0),D(null),k(null);try{let r=await e(t,n.params);k(_(r))}catch(e){D(a(e))}finally{j(!1)}},N=v(t.data);return(0,m.jsxs)(`div`,{className:`ct-page`,"data-testid":`debug-view`,children:[(0,m.jsxs)(`header`,{className:`ct-page__head`,children:[(0,m.jsxs)(`div`,{className:`ct-page__head-text`,children:[(0,m.jsx)(`h1`,{className:`ct-page__title`,children:`Debug`}),(0,m.jsx)(`p`,{className:`ct-page__sub`,children:`Gateway snapshots and a raw RPC console.`})]}),(0,m.jsx)(s,{onClick:()=>{t.reload(),n.reload(),c.reload(),l.reload()},disabled:t.loading||n.loading||c.loading||l.loading,children:`Refresh`})]}),(0,m.jsxs)(`div`,{className:`ct-debug__grid`,children:[(0,m.jsx)(b,{label:`Status snapshot`,title:`Status`,sub:`Summary from the gateway status call.`,data:t.data,loading:t.loading,error:t.error,callout:N?(0,m.jsxs)(`p`,{className:`ct-debug__audit ct-debug__audit--${N.tone}`,"data-testid":`security-callout`,children:[`Security audit: `,N.label,N.info>0?` · ${N.info} info`:``,`. Run`,` `,(0,m.jsx)(`span`,{className:`ct-mono`,children:`openclaw security audit --deep`}),` for details.`]}):null}),(0,m.jsx)(b,{label:`Health snapshot`,title:`Health`,sub:`Health snapshot.`,data:n.data,loading:n.loading,error:n.error}),(0,m.jsx)(b,{label:`Last heartbeat snapshot`,title:`Last heartbeat`,sub:`The most recent heartbeat record.`,data:c.data,loading:c.loading,error:c.error})]}),(0,m.jsx)(h,{}),(0,m.jsxs)(f,{title:`Manual RPC`,sub:`Send a raw gateway method with JSON params.`,children:[(0,m.jsx)(`p`,{className:`ct-debug__note`,children:`Calls run with this console's operator scopes.`}),(0,m.jsxs)(`div`,{className:`ct-debug__form`,children:[(0,m.jsxs)(`label`,{className:`ct-debug__field`,children:[(0,m.jsx)(`span`,{children:`Method`}),(0,m.jsx)(`input`,{type:`text`,value:S,placeholder:`system-presence`,onChange:e=>C(e.target.value)})]}),(0,m.jsxs)(`label`,{className:`ct-debug__field`,children:[(0,m.jsx)(`span`,{children:`Params (JSON)`}),(0,m.jsx)(`textarea`,{rows:6,value:w,onChange:e=>T(e.target.value)})]})]}),(0,m.jsx)(s,{variant:`primary`,onClick:()=>void M(),disabled:A,children:A?`Calling…`:`Call`}),E?(0,m.jsx)(`p`,{className:`ct-debug__callout`,role:`alert`,children:E}):null,O===null?null:(0,m.jsx)(`pre`,{className:`ct-debug__code ct-debug__result`,"data-testid":`rpc-result`,children:O})]}),(0,m.jsx)(b,{label:`Models snapshot`,title:`Models`,sub:`Catalog from models.list.`,data:l.data,loading:l.loading,error:l.error}),(0,m.jsx)(f,{title:`Event Log`,sub:`Latest gateway events, newest first.`,className:`ct-debug__events`,children:x.length===0?(0,m.jsx)(i,{message:`No events yet.`}):(0,m.jsx)(`div`,{className:`ct-debug__event-list`,"data-testid":`event-log`,role:`list`,children:x.map(e=>(0,m.jsxs)(`div`,{className:`ct-debug__event`,role:`listitem`,"data-testid":`event-log-row`,children:[(0,m.jsxs)(`div`,{className:`ct-debug__event-main`,children:[(0,m.jsx)(`div`,{className:`ct-debug__event-name`,children:e.event}),(0,m.jsx)(`div`,{className:`ct-debug__event-time`,children:new Date(e.ts).toLocaleTimeString()})]}),(0,m.jsx)(`pre`,{className:`ct-debug__code ct-debug__event-payload`,children:y(e.payload)})]},e.id))})})]})}export{x as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,c as t,h as n}from"./format-
|
|
1
|
+
import{_ as e,c as t,h as n}from"./format-BPrfsCHW.js";var r=e(n(),1),i=[`a[href]`,`button:not([disabled])`,`input:not([disabled])`,`select:not([disabled])`,`textarea:not([disabled])`,`[tabindex]:not([tabindex='-1'])`].join(`,`);function a(e,t){if(t.key!==`Tab`)return;let n=[...e.querySelectorAll(i)],r=document.activeElement,a=r instanceof HTMLElement?n.indexOf(r):-1;if(a===-1){t.preventDefault(),(t.shiftKey?n[n.length-1]:n[0])?.focus();return}t.shiftKey&&a===0?(t.preventDefault(),n[n.length-1]?.focus()):!t.shiftKey&&a===n.length-1&&(t.preventDefault(),n[0]?.focus())}var o=t();function s({open:e,title:t,onClose:n,children:i,footer:s,width:c=`md`}){let l=(0,r.useId)(),u=(0,r.useRef)(null),d=(0,r.useRef)(n);return d.current=n,(0,r.useEffect)(()=>{if(!e)return;let t=document.activeElement instanceof HTMLElement?document.activeElement:null;u.current?.focus();let n=e=>{e.key===`Escape`?(e.preventDefault(),d.current()):e.key===`Tab`&&u.current&&a(u.current,e)};return window.addEventListener(`keydown`,n),()=>{window.removeEventListener(`keydown`,n),t?.focus()}},[e]),e?(0,o.jsx)(`div`,{className:`ct-dialog__backdrop`,onClick:e=>{e.target===e.currentTarget&&n()},children:(0,o.jsxs)(`div`,{ref:u,className:`ct-dialog ct-dialog--${c}`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":l,tabIndex:-1,children:[(0,o.jsx)(`header`,{className:`ct-dialog__head`,children:(0,o.jsx)(`h2`,{id:l,className:`ct-dialog__title`,children:t})}),(0,o.jsx)(`div`,{className:`ct-dialog__body`,children:i}),s?(0,o.jsx)(`footer`,{className:`ct-dialog__foot`,children:s}):null]})}):null}export{a as n,s as t};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{_ as e,c as t,h as n,i as r,l as i,s as a,t as o}from"./format-
|
|
1
|
+
import{_ as e,c as t,h as n,i as r,l as i,s as a,t as o}from"./format-BPrfsCHW.js";import{r as s}from"./gateway-features-SDBnjY95.js";import{n as c}from"./use-gateway-query-7iLwemQz.js";import{t as l}from"./Badge-me4YM1lq.js";import{t as u}from"./Panel-CqcbBXzJ.js";import{t as d}from"./DataTable-BbRrWxor.js";var f=3e4,p=`learning-core.produce`,m=`learning-core.consolidation`,h=`learning-core.distill`,g={completed:!0,failed:!0,dlq:!0,preempted:!0,preempted_ceiling:!0,rolled_back:!0,cancelled:!0};function _(e){let t=null;for(let n of e??[])n.kind===`metrics`&&(t=n);return t}function v(e){return(e??[]).filter(e=>e.kind===`outcome`)}function y(e){return e.startedAt??e.completedAt??e.updatedAt}function b(e,t,n,r=Date.now(),i=!1){if(t===void 0)return`not_loaded`;let a=_(t);if(a)return a.measurementState===`unavailable`?`unavailable`:`complete`;if(t.length===0&&n!==null){let t=Date.parse(e.completedAt??e.updatedAt);if(Number.isFinite(t)&&r-t>n*864e5)return`pruned`}return v(t).some(e=>e.denial)?`denied`:!g[e.status]&&e.status!==`deferred`?`in_progress`:i?`truncated`:`missing`}function x(e,t){return e.mode===`dry_run`||_(t)?.mode===`dry_run`}function S(e){let t=null;for(let n of v(e))n.preemption?.reason&&(t=n.preemption.reason);return t}function C(e,t,n){let r=[...e,...t].toSorted((e,t)=>y(t).localeCompare(y(e))),i=[],a=0;for(let e of r){let t=n[e.taskRunId];if(x(e,t))continue;if(e.taskId===`learning-core.consolidation`){i.push({run:e,events:t});continue}let r=_(t);if(!r){g[e.status]&&(a+=1);continue}r.items?.producer===`consolidation`&&i.push({run:e,events:t})}return{runs:i,unclassifiedRecovered:a}}function w(e){let t=[];for(let{run:n,events:r}of e){let e=_(r)?.qualityScore;typeof e==`number`&&Number.isFinite(e)&&t.push({taskRunId:n.taskRunId,taskId:n.taskId,at:y(n),qualityScore:e})}return t.toSorted((e,t)=>e.at.localeCompare(t.at))}function T(e){let t=0,n=0;for(let{run:r,events:i}of e){if(r.status===`preempted_ceiling`){t+=1;continue}if(r.status===`preempted`){if(S(i)===`shutdown`){n+=1;continue}t+=1}}return{preempted:t,total:e.length,shutdownExcluded:n}}function E(e,t,n){return b(e,t,n)===`pruned`}function D(e,t,n){let r=e.toSorted((e,t)=>y(t).localeCompare(y(e)));for(let e of r){let r=t[e.taskRunId];if(x(e,r)||e.status===`deferred`||E(e,r,n)||v(r).some(e=>e.denial))continue;let i=_(r)?.authoring;if(i)return{taskRunId:e.taskRunId,at:y(e),authoring:i}}return null}async function O(e,t){let n=[...new Set(t)],r=[];for(let e=0;e<n.length;e+=50)r.push(n.slice(e,e+50));let i=await Promise.all(r.map(t=>e(`tasks.runEvents`,{taskRunIds:t}))),a=Object.create(null),o=Object.create(null),s=null;for(let e of i){s??=typeof e.retentionDays==`number`?e.retentionDays:null;for(let t of Object.keys(e.events??{}))a[t]=e.events[t]??[];for(let t of Object.keys(e.truncated??{})){let n=e.truncated?.[t];n&&(o[t]=n)}}return{events:a,truncated:o,retentionDays:s}}var k=e(n(),1),A={events:{},truncated:{},retentionDays:null,error:null};function j(e,t){let n=i(e=>e.request),r=i(e=>e.status===`connected`),[a,s]=(0,k.useState)(A),c=t.map(e=>`${e.taskRunId}\t${e.status}\t${e.updatedAt}`).join(`
|
|
2
2
|
`);return(0,k.useEffect)(()=>{if(!e||!r)return;let t=c.length>0?c.split(`
|
|
3
3
|
`).map(e=>e.split(` `)[0]):[];if(t.length===0){s(A);return}let i=!0;return O(n,t).then(e=>{i&&s({...e,error:null})}).catch(e=>{i&&s({...A,error:o(e)})}),()=>{i=!1}},[e,r,c,n]),a}var M=t();function N(){let e=c(`learning.overview`,{},{refreshMs:f,invalidateOn:[`dreams.update`]});if(e.error&&!e.data)return(0,M.jsx)(a,{message:e.error,tone:`error`,testId:`dreams-overview-error`});if(e.loading&&!e.data)return null;let t=e.data;return t?(0,M.jsxs)(`div`,{className:`ct-dreams__health-item`,"data-testid":`dreams-learning-overview`,children:[(0,M.jsx)(`h3`,{className:`ct-dreams__health-title`,children:`Learning`}),(0,M.jsxs)(`p`,{children:[t.lessons,` lessons · `,t.proposals.pending,` pending proposals`,t.truncated?` (truncated)`:``]})]}):null}function P({hasRunEvents:e,hasLearningOverview:t}){let n=c(`tasks.status`,{taskId:p,limit:50},{refreshMs:f,invalidateOn:[`dreams.update`]}),i=c(`tasks.status`,{taskId:m,limit:50},{refreshMs:f,invalidateOn:[`dreams.update`]}),o=c(`tasks.status`,{taskId:h,status:`completed`,limit:20},{refreshMs:f,invalidateOn:[`dreams.update`]}),s=[...n.data?.runs??[],...i.data?.runs??[]],d=j(e,s),g=o.data?.runs??[],_=j(e,g),v=n.loading&&!n.data||i.loading&&!i.data||o.loading&&!o.data,y=n.error??i.error??o.error,b=n.data?.runsAvailable===!1||i.data?.runsAvailable===!1||o.data?.runsAvailable===!1,x=n.data?.runsError??i.data?.runsError??o.data?.runsError??null,S=[n.error,i.error,o.error].filter(e=>e!==null),E;if(y&&!n.data&&!i.data&&!o.data)E=(0,M.jsx)(a,{message:y,tone:`error`,testId:`dreams-health-error`});else if(v)E=(0,M.jsx)(a,{message:`Loading consolidation health…`,tone:`loading`});else if(b)E=(0,M.jsx)(a,{message:x??`runs store unavailable`,tone:`error`,testId:`dreams-health-unavailable`});else{let o=C(n.data?.runs??[],i.data?.runs??[],d.events),c=w(o.runs),u=T(o.runs),f=D(g,_.events,_.retentionDays);E=(0,M.jsxs)(`div`,{className:`ct-dreams__health`,children:[S.map((e,t)=>(0,M.jsx)(a,{message:e,tone:`error`,testId:`dreams-health-read-error`},`${t}-${e}`)),t?(0,M.jsx)(N,{}):(0,M.jsx)(a,{message:`learning.overview is not enabled on this gateway.`,testId:`dreams-overview-disabled`}),s.length>0&&!e?(0,M.jsx)(a,{message:`tasks.runEvents is not enabled on this gateway.`,testId:`dreams-health-events-degraded`}):null,d.error?(0,M.jsx)(a,{message:d.error,tone:`error`,testId:`dreams-classify-error`}):null,(0,M.jsxs)(`div`,{className:`ct-dreams__health-grid`,children:[(0,M.jsxs)(`div`,{className:`ct-dreams__health-item`,"data-testid":`dreams-quality`,children:[(0,M.jsx)(`h3`,{className:`ct-dreams__health-title`,children:`Quality trend`}),c.length===0?(0,M.jsx)(`p`,{className:`ct-dreams__muted`,children:`No scored consolidation runs in view.`}):(0,M.jsx)(`p`,{className:`ct-dreams__trend`,children:c.map(e=>e.qualityScore.toFixed(2)).join(` → `)}),o.unclassifiedRecovered>0?(0,M.jsxs)(`p`,{className:`ct-dreams__muted`,children:[o.unclassifiedRecovered,` recovered runs without metrics could not be classified.`]}):null]}),(0,M.jsxs)(`div`,{className:`ct-dreams__health-item`,"data-testid":`dreams-preemption`,children:[(0,M.jsx)(`h3`,{className:`ct-dreams__health-title`,children:`Preemptions`}),(0,M.jsxs)(`p`,{children:[u.preempted,` of `,u.total,` runs preempted`,u.shutdownExcluded>0?` (${u.shutdownExcluded} shutdown excluded)`:``]})]}),(0,M.jsxs)(`div`,{className:`ct-dreams__health-item`,"data-testid":`dreams-authoring`,children:[(0,M.jsx)(`h3`,{className:`ct-dreams__health-title`,children:`Distill authoring`}),f?(0,M.jsxs)(`p`,{children:[(0,M.jsx)(l,{tone:`accent`,children:f.authoring}),` `,(0,M.jsx)(`span`,{className:`ct-dreams__muted`,children:r(f.at)})]}):(0,M.jsx)(`p`,{className:`ct-dreams__muted`,children:`No authored distill run in view.`})]})]})]})}return(0,M.jsx)(u,{title:`Consolidation health`,testId:`dreams-health`,children:E})}var F={complete:`ok`,unavailable:`warn`,truncated:`warn`,pruned:`neutral`,denied:`warn`,missing:`neutral`,in_progress:`accent`,not_loaded:`neutral`},I=`tasks.runEvents is not enabled on this gateway.`;function L({budget:e}){return e?e.available?(0,M.jsxs)(`p`,{className:`ct-dreams__budget`,"data-testid":`dreams-budget`,children:[(0,M.jsxs)(`span`,{children:[e.windowUsageUnits,` of `,e.cap,` units`]}),` `,`· `,e.windowHours??`?`,`h window · `,e.scopeKind,` · `,e.totalDenied,` denied`]}):(0,M.jsxs)(`p`,{className:`ct-dreams__budget`,"data-testid":`dreams-budget`,children:[`Budget unavailable: `,e.error??`unknown`]}):(0,M.jsx)(`p`,{className:`ct-dreams__budget`,children:`No budget window reported.`})}function R({hasRunEvents:e}){let t=c(`tasks.status`,{limit:50},{refreshMs:f,invalidateOn:[`dreams.update`]}),n=t.data?.runs??[],i=j(e,n),o=t.error&&!t.data?(0,M.jsx)(a,{message:t.error,tone:`error`,testId:`dreams-runs-error`}):t.loading&&!t.data?(0,M.jsx)(a,{message:`Loading runs…`,tone:`loading`}):t.data?.runsAvailable===!1?(0,M.jsx)(a,{message:t.data.runsError??`Task run store is not available.`,tone:`error`,testId:`dreams-runs-unavailable`}):(0,M.jsxs)(M.Fragment,{children:[t.data?.runsError?(0,M.jsx)(`p`,{className:`ct-dreams__callout`,role:`alert`,children:t.data.runsError}):null,n.length>0&&!e?(0,M.jsx)(a,{message:I,testId:`dreams-events-degraded`}):null,i.error?(0,M.jsx)(a,{message:i.error,tone:`error`,testId:`dreams-events-error`}):null,(0,M.jsx)(d,{columns:[{key:`id`,label:`Run`,mono:!0,render:e=>e.taskRunId},{key:`task`,label:`Task`,render:e=>e.taskId},{key:`status`,label:`Status`,render:e=>(0,M.jsx)(l,{children:e.status})},{key:`mode`,label:`Mode`,render:e=>x(e,i.events[e.taskRunId])?(0,M.jsx)(l,{tone:`accent`,children:`dry-run`}):`normal`},{key:`measurement`,label:`Measurement`,render:t=>{let n=b(t,e?i.events[t.taskRunId]:void 0,i.retentionDays,Date.now(),i.truncated[t.taskRunId]!==void 0);return(0,M.jsx)(l,{tone:F[n],children:n})}},{key:`started`,label:`Started`,render:e=>r(y(e))}],rows:n,rowKey:e=>e.taskRunId,label:`Dream runs`,empty:(0,M.jsx)(a,{message:`No recent runs.`,testId:`dreams-runs-empty`})})]});return(0,M.jsxs)(u,{title:`Runs`,testId:`dreams-runs`,children:[(0,M.jsx)(L,{budget:t.data?.budgetWindow}),o]})}function z({method:e,testId:t}){return(0,M.jsx)(a,{message:`${e} is not enabled on this gateway.`,testId:t})}function B(){let e=c(`dream.status`,{},{refreshMs:f,invalidateOn:[`dreams.update`]});if(e.error&&!e.data)return(0,M.jsx)(a,{message:e.error,tone:`error`,testId:`dream-status-error`});if(e.loading&&!e.data)return(0,M.jsx)(a,{message:`Loading dream state…`,tone:`loading`});let t=e.data;return t?(0,M.jsxs)(`div`,{className:`ct-dreams__card`,"data-testid":`dream-status-card`,children:[(0,M.jsxs)(`div`,{className:`ct-dreams__card-head`,children:[(0,M.jsx)(l,{tone:t.enabled?`ok`:`warn`,children:t.enabled?`cycle enabled`:`cycle paused`}),(0,M.jsxs)(`span`,{className:`ct-dreams__muted`,children:[t.questionCount,t.questionCountTruncated?`+`:``,` questions`]}),(0,M.jsxs)(`span`,{className:`ct-dreams__muted`,children:[t.candidateCount,t.candidateCountTruncated?`+`:``,` candidates`]})]}),(0,M.jsx)(`ul`,{className:`ct-dreams__stages`,children:t.stages.map(e=>(0,M.jsxs)(`li`,{children:[(0,M.jsx)(`span`,{children:e.name}),(0,M.jsx)(`span`,{className:`ct-dreams__muted`,children:e.lastCompleted?r(e.lastCompleted):`not yet run`})]},e.name))}),(t.activeCycles?.length??0)>0?(0,M.jsx)(`ul`,{className:`ct-dreams__cycles`,children:(t.activeCycles??[]).map(e=>(0,M.jsxs)(`li`,{children:[(0,M.jsx)(`span`,{className:`ct-mono`,children:e.cycleKey}),` at `,e.currentStage,`,`,` `,e.pendingPassCount,` pass(es) pending`,e.failedStages.length>0?`, failed: ${e.failedStages.join(`, `)}`:``]},e.cycleKey))}):null]}):null}function V(){let e=c(`dream.weights`,{},{refreshMs:f,invalidateOn:[`dreams.update`]});return e.error&&!e.data?(0,M.jsx)(a,{message:e.error,tone:`error`,testId:`dream-weights-error`}):e.loading&&!e.data?(0,M.jsx)(a,{message:`Loading weights…`,tone:`loading`}):(0,M.jsxs)(`div`,{className:`ct-dreams__card`,"data-testid":`dream-weights-card`,children:[(0,M.jsx)(d,{columns:[{key:`agent`,label:`Agent`,render:e=>e.agentId},{key:`rate`,label:`Success rate`,render:e=>`${Math.round(e.successRate*100)}%`},{key:`totals`,label:`Runs`,render:e=>`${e.totals.completed} completed, ${e.totals.failed} failed`},{key:`updated`,label:`Updated`,render:e=>r(e.updatedAt)}],rows:e.data?.weights??[],rowKey:e=>e.agentId,label:`Dream weights`,empty:(0,M.jsx)(a,{message:`No weights recorded yet.`,testId:`dream-weights-empty`})}),e.data?.truncated?(0,M.jsx)(`p`,{className:`ct-dreams__muted`,children:`Weights list truncated; showing the newest agents.`}):null]})}function H(){let e=c(`dream.candidates`,{limit:50},{refreshMs:f,invalidateOn:[`dreams.update`]});if(e.error&&!e.data)return(0,M.jsx)(a,{message:e.error,tone:`error`,testId:`dream-candidates-error`});if(e.loading&&!e.data)return(0,M.jsx)(a,{message:`Loading candidates…`,tone:`loading`});let t=e.data?.candidates??[];return(0,M.jsxs)(`div`,{className:`ct-dreams__card`,"data-testid":`dream-candidates-card`,children:[(0,M.jsx)(d,{columns:[{key:`signature`,label:`Signature`,mono:!0,render:e=>e.signature??`—`},{key:`task`,label:`Task`,render:e=>e.taskId??`—`},{key:`seen`,label:`First seen`,render:e=>e.firstSeenAt?r(e.firstSeenAt):`—`}],rows:t,rowKey:e=>JSON.stringify([e.signature,e.taskId,e.firstSeenAt]),label:`Dream candidates`,empty:(0,M.jsx)(a,{message:`No candidate questions.`,testId:`dream-candidates-empty`})}),e.data?.truncated?(0,M.jsxs)(`p`,{className:`ct-dreams__muted`,children:[`Showing the `,t.length,` newest of more candidates.`]}):null]})}function U(){let e=s(`tasks.status`),t=s(`tasks.runEvents`),n=s(`dream.status`),r=s(`dream.weights`),i=s(`dream.candidates`),a=s(`learning.overview`);return(0,M.jsxs)(`div`,{className:`ct-page`,"data-testid":`dreams-view`,children:[(0,M.jsx)(`header`,{className:`ct-page__head`,children:(0,M.jsxs)(`div`,{className:`ct-page__head-text`,children:[(0,M.jsx)(`h1`,{className:`ct-page__title`,children:`Dreams`}),(0,M.jsx)(`p`,{className:`ct-page__sub`,children:`Consolidation cycles, weights and run health.`})]})}),(0,M.jsxs)(u,{title:`Dream state`,testId:`dream-state-panel`,children:[n?(0,M.jsx)(B,{}):(0,M.jsx)(z,{method:`dream.status`,testId:`dream-status-disabled`}),r?(0,M.jsx)(V,{}):(0,M.jsx)(z,{method:`dream.weights`,testId:`dream-weights-disabled`}),i?(0,M.jsx)(H,{}):(0,M.jsx)(z,{method:`dream.candidates`,testId:`dream-candidates-disabled`})]}),e?(0,M.jsx)(R,{hasRunEvents:t}):(0,M.jsx)(u,{title:`Runs`,testId:`dreams-runs`,children:(0,M.jsx)(z,{method:`tasks.status`,testId:`dreams-runs-disabled`})}),e?(0,M.jsx)(P,{hasRunEvents:t,hasLearningOverview:a}):(0,M.jsx)(u,{title:`Consolidation health`,testId:`dreams-health`,children:(0,M.jsx)(z,{method:`tasks.status`,testId:`dreams-health-disabled`})})]})}export{U as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as e}from"./format-
|
|
1
|
+
import{c as e}from"./format-BPrfsCHW.js";import{i as t,t as n}from"./links-vgPLVF05.js";var r=e();function i({to:e,children:i,className:a,testId:o}){return(0,r.jsx)(`a`,{className:a?`ct-link ${a}`:`ct-link`,href:t(e.view,e.params),"data-testid":o,onClick:t=>{t.defaultPrevented||t.button!==0||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||(t.preventDefault(),n(e))},children:i})}export{i as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as e}from"./format-
|
|
1
|
+
import{c as e}from"./format-BPrfsCHW.js";var t=e();function n({value:e,options:n,onChange:r,label:i}){return(0,t.jsx)(`div`,{className:`ct-pills`,role:`group`,"aria-label":i,children:n.map(n=>{let i=n.value===e;return(0,t.jsxs)(`button`,{type:`button`,className:i?`ct-pill ct-pill--active`:`ct-pill`,"aria-pressed":i,"aria-label":n.label,disabled:n.disabled,onClick:()=>r(n.value),children:[n.label,n.count===void 0?null:(0,t.jsx)(`span`,{className:`ct-pill__count`,"aria-hidden":`true`,children:n.count})]},n.value)})})}export{n as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,c as t,h as n,i as r,l as i,s as a}from"./format-
|
|
1
|
+
import{_ as e,c as t,h as n,i as r,l as i,s as a}from"./format-BPrfsCHW.js";import{t as o}from"./Button-ralPMMNs.js";import{n as s,t as c}from"./use-gateway-query-7iLwemQz.js";import{t as l}from"./Panel-CqcbBXzJ.js";var u=e(n(),1);function d(e,t){return t?.presence&&Array.isArray(t.presence)?t.presence:e}function f(e){return`${e.host??`unknown`} ${e.ip?`(${e.ip})`:``} ${e.mode??``} ${e.version??``}`.trim()}function p(e){let t=[e.mode??`unknown`],n=Array.isArray(e.roles)?e.roles.filter(Boolean):[];t.push(...n);let r=Array.isArray(e.scopes)?e.scopes.filter(Boolean):[];return r.length>0&&t.push(r.length>3?`${r.length} scopes`:`scopes: ${r.join(`, `)}`),e.platform&&t.push(e.platform),e.deviceFamily&&t.push(e.deviceFamily),e.modelIdentifier&&t.push(e.modelIdentifier),e.version&&t.push(e.version),t}var m=t();function h(){let e=s(`system-presence`,{},{refreshMs:c}),t=(0,u.useRef)(null);t.current=e.data??null;let[n,r]=(0,u.useState)(null);(0,u.useEffect)(()=>i.getState().subscribe(`presence`,e=>{r(n=>d(n??t.current??[],e))}),[]),(0,u.useEffect)(()=>{r(null)},[e.data]);let f=n??e.data??[];return(0,m.jsxs)(`div`,{className:`ct-page`,"data-testid":`instances-view`,children:[(0,m.jsxs)(`header`,{className:`ct-page__head`,children:[(0,m.jsxs)(`div`,{className:`ct-page__head-text`,children:[(0,m.jsx)(`h1`,{className:`ct-page__title`,children:`Instances`}),(0,m.jsx)(`p`,{className:`ct-page__sub`,children:`Presence beacons from the gateway and clients.`})]}),(0,m.jsx)(o,{onClick:()=>{r(null),e.reload()},disabled:e.loading,children:`Refresh`})]}),(0,m.jsxs)(l,{title:`Connected Instances`,sub:`Updated live from gateway presence events.`,children:[e.error?(0,m.jsx)(a,{tone:`error`,message:e.error}):null,e.loading&&!e.data?(0,m.jsx)(a,{tone:`loading`,message:`Loading…`}):null,!e.error&&f.length===0&&!(e.loading&&!e.data)?(0,m.jsx)(a,{message:`No instances reported yet.`}):null,(0,m.jsx)(`div`,{className:`ct-instances__list`,role:`list`,"aria-label":`Connected instances`,children:f.map((e,t)=>(0,m.jsx)(g,{entry:e},`${e.host??`unknown`}-${e.instanceId??t}`))})]})]})}function g({entry:e}){let t=e.lastInputSeconds==null?`n/a`:`${e.lastInputSeconds}s ago`;return(0,m.jsxs)(`div`,{className:`ct-instances__item`,role:`listitem`,"data-testid":`instances-row`,children:[(0,m.jsxs)(`div`,{className:`ct-instances__main`,children:[(0,m.jsx)(`div`,{className:`ct-instances__host`,"data-testid":`instances-host`,children:e.host??`unknown host`}),(0,m.jsx)(`div`,{className:`ct-instances__sub`,children:f(e)}),(0,m.jsx)(`div`,{className:`ct-instances__chips`,children:p(e).map((e,t)=>(0,m.jsx)(`span`,{className:`ct-instances__chip`,children:e},`${e}-${t}`))})]}),(0,m.jsxs)(`div`,{className:`ct-instances__meta`,children:[(0,m.jsx)(`div`,{children:r(e.ts)}),(0,m.jsxs)(`div`,{className:`ct-instances__muted`,children:[`Last input `,t]}),(0,m.jsxs)(`div`,{className:`ct-instances__muted`,children:[`Reason `,e.reason??``]})]})]})}export{h as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,c as t,h as n,l as r,s as i,t as a}from"./format-DpM2rlEo.js";import{n as o,t as s}from"./links-Bcw24zqI.js";import{t as c}from"./Button-D5rMawzJ.js";import{n as l,t as u}from"./use-gateway-query-xtY3vmte.js";import{t as d}from"./Badge-sUgH4suZ.js";import{t as f}from"./Panel-DM0JsHgz.js";import{t as p}from"./EntityLink-D6UsLKQR.js";import{t as m}from"./Stat-DQyb-fKe.js";import{t as h}from"./DataTable-BqqaNmU8.js";import{t as g}from"./FilterPills-CA2lRy0A.js";import{t as _}from"./ConfirmDialog-B-AAbwH-.js";var v=e(n(),1);function y(e,t){return e.validFrom&&e.validFrom>t?!1:!e.invalidAt||e.invalidAt>t}function b(e){return e.map(e=>({...e.lesson,sessionId:e.sessionId??e.lesson.sessionId}))}var x=t(),S=[`procedure`,`failure`,`preference`,`correction`],C=`No rationale recorded (created before provenance tracking)`;function w({title:e,testId:t,children:n}){return(0,x.jsxs)(`section`,{className:`ct-learning__section`,"data-testid":t,children:[(0,x.jsx)(`h3`,{className:`ct-learning__section-title`,children:e}),n]})}function T({quote:e}){return(0,x.jsxs)(`blockquote`,{className:`ct-learning__quote`,children:[(0,x.jsx)(`span`,{className:`ct-learning__quote-role`,children:e.role}),e.text]})}function E({evidence:e}){let{sessionKey:t}=e,n=(e.quotes??[]).find(e=>e.entryId!==void 0)?.entryId;return(0,x.jsxs)(`div`,{className:`ct-learning__evidence`,children:[(0,x.jsxs)(`div`,{className:`ct-learning__evidence-meta`,children:[(0,x.jsx)(`span`,{children:e.observedAt}),(0,x.jsxs)(`span`,{children:[`Sender: `,e.senderDisplay??e.userId??`unknown sender`]}),e.agentId===void 0?(0,x.jsx)(`span`,{children:`Agent: —`}):(0,x.jsxs)(`span`,{children:[`Agent: `,(0,x.jsx)(p,{to:o.agent(e.agentId),children:e.agentId})]})]}),(e.quotes??[]).length>0?(e.quotes??[]).map((e,t)=>(0,x.jsx)(T,{quote:e},t)):(0,x.jsx)(`p`,{className:`ct-learning__evidence-summary`,children:e.summary}),t?(0,x.jsx)(`div`,{children:(0,x.jsx)(c,{size:`sm`,onClick:()=>s(o.session(t,n?{entry:n}:{})),children:`Open session`})}):null]})}function D({lessonId:e,agentId:t,onClose:n,onChanged:o}){let s=r(e=>e.request),u=l(`learning.inspectLesson`,{lessonId:e,...t?{agentId:t}:{}}),[p,m]=(0,v.useState)(!1),[h,g]=(0,v.useState)(``),[b,T]=(0,v.useState)(`correction`),[D,O]=(0,v.useState)(``),[k,A]=(0,v.useState)(!1),[j,M]=(0,v.useState)(!1),[N,P]=(0,v.useState)(``),[F,I]=(0,v.useState)(!1),[L,R]=(0,v.useState)(null),z=u.data?.lesson,B=async(e,t)=>{I(!0),R(null);try{t(await e())}catch(e){R(a(e))}finally{I(!1)}},V=e=>{g(e.text),T(e.kind),O(``),m(!0)},H=e=>{let n=D.trim();B(()=>s(`learning.reviseLesson`,{lessonId:e.id,...t?{agentId:t}:{},text:h,kind:b,...n?{note:n}:{}}),e=>{m(!1),o({id:e.lesson.id,agentId:t})})},U=e=>{B(()=>s(`learning.rateLesson`,{lessonId:e.id,...t?{agentId:t}:{},score:1}),()=>{u.reload(),o({id:e.id,agentId:t})})},W=e=>{let n=N.trim();M(!1),A(!1),B(()=>s(`learning.rateLesson`,{lessonId:e.id,...t?{agentId:t}:{},score:-1,...n?{note:n}:{}}),()=>{P(``),u.reload(),o({id:e.id,agentId:t})})},G=()=>{A(!1),M(!1),P(``)},K=new Date().toISOString(),q=z!==void 0&&y(z,K),J=z?.origin;return(0,x.jsx)(f,{title:`Lesson`,testId:`lesson-detail`,actions:(0,x.jsx)(c,{onClick:n,size:`sm`,children:`Close`}),children:u.error?(0,x.jsx)(i,{message:u.error,tone:`error`,testId:`lesson-detail-error`}):u.loading&&!u.data?(0,x.jsx)(i,{message:`Loading lesson…`,tone:`loading`}):z?(0,x.jsxs)(`div`,{className:`ct-learning__detail`,children:[L?(0,x.jsx)(`p`,{className:`ct-learning__callout ct-learning__callout--error`,role:`alert`,children:L}):null,(0,x.jsxs)(w,{title:`Lesson`,testId:`lesson-lesson`,children:[(0,x.jsx)(`p`,{className:`ct-learning__lesson-text`,children:z.text}),(0,x.jsxs)(`div`,{className:`ct-learning__badges`,children:[(0,x.jsx)(d,{tone:`accent`,children:z.kind}),(0,x.jsx)(d,{tone:q?`ok`:`warn`,children:q?`active`:`retired`}),z.rating===1?(0,x.jsx)(d,{tone:`ok`,children:`Endorsed`}):null,z.producer===`operator`?(0,x.jsx)(d,{tone:`accent`,children:`Edited by operator`}):null]}),(0,x.jsxs)(`p`,{className:`ct-learning__meta-line`,children:[`Confidence `,Math.round(z.confidence*100),`%`]})]}),(0,x.jsx)(w,{title:`Why`,testId:`lesson-why`,children:(0,x.jsx)(`p`,{className:`ct-learning__rationale`,children:J?.rationale??C})}),(0,x.jsx)(w,{title:`Produced by`,testId:`lesson-produced-by`,children:(0,x.jsxs)(`dl`,{className:`ct-learning__kv`,children:[(0,x.jsx)(`dt`,{children:`Producer`}),(0,x.jsx)(`dd`,{children:z.producer??`—`}),(0,x.jsx)(`dt`,{children:`Model`}),(0,x.jsx)(`dd`,{children:J?.model??`—`}),(0,x.jsx)(`dt`,{children:`Prompt`}),(0,x.jsx)(`dd`,{children:J?.promptVersion??`—`}),(0,x.jsx)(`dt`,{children:`At`}),(0,x.jsx)(`dd`,{children:J?.at??`—`}),J?.actor?(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(`dt`,{children:`Actor`}),(0,x.jsx)(`dd`,{children:J.actor})]}):null]})}),(0,x.jsx)(w,{title:`Evidence`,testId:`lesson-evidence`,children:z.evidence.length===0?(0,x.jsx)(`p`,{className:`ct-learning__meta-line`,children:`No evidence recorded.`}):z.evidence.map((e,t)=>(0,x.jsx)(E,{evidence:e},t))}),(0,x.jsx)(w,{title:`History`,testId:`lesson-history`,children:(u.data?.chain??[]).length===0?(0,x.jsx)(`p`,{className:`ct-learning__meta-line`,children:`No history.`}):(u.data?.chain??[]).map(e=>(0,x.jsxs)(`div`,{className:`ct-learning__chain-row`,children:[(0,x.jsx)(`p`,{className:`ct-learning__lesson-text`,children:e.text}),(0,x.jsxs)(`p`,{className:`ct-learning__meta-line`,children:[e.validFrom,e.invalidAt?` → ${e.invalidAt}`:``,e.origin?.producer?` · ${e.origin.producer}`:``,e.origin?.actor?` · ${e.origin.actor}`:``]})]},e.id))}),(0,x.jsx)(w,{title:`Skill proposals`,testId:`lesson-proposals`,children:(u.data?.proposals??[]).length===0?(0,x.jsx)(`p`,{className:`ct-learning__meta-line`,children:`No linked proposals.`}):(u.data?.proposals??[]).map(e=>(0,x.jsxs)(`div`,{className:`ct-learning__chain-row`,children:[(0,x.jsx)(`p`,{className:`ct-learning__lesson-text`,children:e.title}),(0,x.jsxs)(`p`,{className:`ct-learning__meta-line`,children:[e.id,` · `,e.status]})]},e.id))}),q?(0,x.jsx)(w,{title:`Actions`,testId:`lesson-actions`,children:p?(0,x.jsxs)(`div`,{className:`ct-learning__edit-form`,children:[(0,x.jsxs)(`label`,{className:`ct-learning__field`,children:[(0,x.jsx)(`span`,{children:`Lesson text`}),(0,x.jsx)(`textarea`,{maxLength:400,rows:3,value:h,onChange:e=>g(e.target.value)})]}),(0,x.jsxs)(`label`,{className:`ct-learning__field`,children:[(0,x.jsx)(`span`,{children:`Kind`}),(0,x.jsx)(`select`,{value:b,onChange:e=>T(e.target.value),children:S.map(e=>(0,x.jsx)(`option`,{value:e,children:e},e))})]}),(0,x.jsxs)(`label`,{className:`ct-learning__field`,children:[(0,x.jsx)(`span`,{children:`Revision note`}),(0,x.jsx)(`input`,{value:D,onChange:e=>O(e.target.value)})]}),(0,x.jsxs)(`div`,{className:`ct-learning__actions`,children:[(0,x.jsx)(c,{variant:`primary`,disabled:F||h.trim().length===0,onClick:()=>H(z),children:`Save`}),(0,x.jsx)(c,{disabled:F,onClick:()=>m(!1),children:`Cancel`})]})]}):k?(0,x.jsxs)(`div`,{className:`ct-learning__edit-form`,children:[(0,x.jsxs)(`label`,{className:`ct-learning__field`,children:[(0,x.jsx)(`span`,{children:`Retirement note`}),(0,x.jsx)(`input`,{value:N,onChange:e=>P(e.target.value)})]}),(0,x.jsxs)(`div`,{className:`ct-learning__actions`,children:[(0,x.jsx)(c,{variant:`danger`,disabled:F,onClick:()=>M(!0),children:`Retire lesson`}),(0,x.jsx)(c,{disabled:F,onClick:G,children:`Cancel`})]})]}):(0,x.jsxs)(`div`,{className:`ct-learning__actions`,children:[(0,x.jsx)(c,{size:`sm`,disabled:F,onClick:()=>V(z),children:`Edit`}),(0,x.jsx)(c,{size:`sm`,disabled:F,onClick:()=>U(z),children:`Endorse`}),(0,x.jsx)(c,{size:`sm`,variant:`danger`,disabled:F,onClick:()=>A(!0),children:`Retire`})]})}):(0,x.jsx)(w,{title:`Retired`,testId:`lesson-retired`,children:z.invalidationReason?(0,x.jsx)(`p`,{className:`ct-learning__meta-line`,children:z.invalidationReason}):null}),(0,x.jsx)(_,{open:j,title:`Retire lesson`,body:`Retire this lesson? It will be marked inactive and excluded from the active list.`,confirmLabel:`Retire`,danger:!0,busy:F,bodyClassName:`ct-learning__confirm-body`,onConfirm:()=>z&&W(z),onCancel:()=>M(!1)})]}):null})}var O=300;function k(e,t){return[{key:`kind`,label:e.kind},{key:`recordKind`,label:e.recordKind??`lesson`},{key:`durability`,label:e.durability??`decaying`},{key:`validity`,label:y(e,t)?`active`:`inactive`,tone:y(e,t)?`ok`:`warn`},...e.producer===`operator`?[{key:`producer`,label:`Edited by operator`,tone:`accent`}]:[],...e.rating===1?[{key:`rating`,label:`Endorsed`,tone:`ok`}]:[]]}function A(){let e=r(e=>e.request),t=l(`learning.listLessons`,{},{refreshMs:u}),[n,o]=(0,v.useState)(``),[s,c]=(0,v.useState)(null),[f,p]=(0,v.useState)(null),[m,g]=(0,v.useState)(null),_=(0,v.useRef)(0),y=(0,v.useCallback)(t=>{let n=_.current+1;return _.current=n,e(`learning.searchLessons`,{query:t,k:20}).then(e=>{_.current===n&&(c(b(e.hits??[])),p(null))}).catch(e=>{_.current===n&&p(a(e))})},[e]);(0,v.useEffect)(()=>{let e=n.trim();if(!e){_.current+=1,c(null),p(null);return}let t=window.setTimeout(()=>void y(e),O);return()=>window.clearTimeout(t)},[n,y]);let S=s??t.data?.lessons??[],C=new Date().toISOString();return(0,x.jsxs)(`div`,{className:`ct-learning__tab`,"data-testid":`lessons-view`,children:[(0,x.jsx)(`input`,{type:`search`,className:`ct-learning__search`,"aria-label":`Search lessons`,placeholder:`Search lessons`,value:n,onChange:e=>o(e.target.value)}),f?(0,x.jsx)(`p`,{className:`ct-learning__callout ct-learning__callout--error`,role:`alert`,children:f}):null,t.error?(0,x.jsx)(i,{message:t.error,tone:`error`,testId:`lessons-error`}):t.loading&&!t.data?(0,x.jsx)(i,{message:`Loading lessons…`,tone:`loading`,testId:`lessons-loading`}):null,t.data||!t.loading&&!t.error?(0,x.jsx)(h,{columns:[{key:`badges`,label:`Badges`,render:e=>(0,x.jsx)(`span`,{className:`ct-learning__badges`,children:k(e,C).map(e=>(0,x.jsx)(d,{tone:e.tone,children:e.label},e.key))})},{key:`text`,label:`Lesson`,render:e=>e.text},{key:`scope`,label:`Scope`,render:e=>e.scopeLabel?.workspaceLabel??`—`},{key:`confidence`,label:`Confidence`,render:e=>e.confidence===void 0?`—`:`${Math.round(e.confidence*100)}%`},{key:`occurrences`,label:`Seen`,render:e=>e.occurrences===void 0?`—`:`${e.occurrences}×`},{key:`sessions`,label:`Sessions`,render:e=>e.distinctSessions===void 0?`—`:`${e.distinctSessions} sessions`}],rows:S,rowKey:e=>`${e.scopeLabel?.agentId??``}:${e.id}`,label:`Learning lessons`,empty:(0,x.jsx)(i,{message:`No lessons.`,testId:`lessons-empty`}),onRowClick:e=>g({id:e.id,agentId:e.scopeLabel?.agentId}),selectedKey:m?`${m.agentId??``}:${m.id}`:null}):null,m?(0,x.jsx)(D,{lessonId:m.id,agentId:m.agentId,onClose:()=>g(null),onChanged:e=>{g(e),t.reload();let r=n.trim();r&&y(r)}},`${m.agentId??``}:${m.id}`):null]})}var j=[{value:`all`,label:`All`},{value:`pending`,label:`Pending`},{value:`applied`,label:`Applied`},{value:`rejected`,label:`Rejected`},{value:`quarantined`,label:`Quarantined`}],M={pending:`accent`,applied:`ok`,rejected:`danger`,quarantined:`warn`};function N({proposalId:e,onClose:t}){let n=l(`learning.inspectProposal`,{proposalId:e});return(0,x.jsx)(f,{title:`Proposal`,testId:`proposal-detail`,actions:(0,x.jsx)(c,{onClick:t,size:`sm`,children:`Close`}),children:n.error?(0,x.jsx)(i,{message:n.error,tone:`error`,testId:`proposal-detail-error`}):n.loading&&!n.data?(0,x.jsx)(i,{message:`Loading proposal…`,tone:`loading`}):n.data?(0,x.jsx)(`pre`,{className:`ct-learning__body`,"data-testid":`proposal-body`,children:n.data.body}):null})}function P({reloadOverview:e}){let t=r(e=>e.request),[n,o]=(0,v.useState)(`all`),s=l(`learning.listProposals`,n===`all`?{}:{status:n},{refreshMs:u}),[f,p]=(0,v.useState)([]),[m,y]=(0,v.useState)(!1),[b,S]=(0,v.useState)(null),[C,w]=(0,v.useState)(null),[T,E]=(0,v.useState)(null),[D,O]=(0,v.useState)(null),k=s.data?.proposals??[],A=async(t,n)=>{y(!0),S(null);try{await t(),s.reload(),e(),n?.()}catch(e){S(a(e))}finally{y(!1)}},P=(e,n)=>(w(null),A(()=>t(`learning.decideProposal`,{proposalId:e,action:n}))),F=e=>{let n=f;return E(null),A(()=>t(`learning.decideProposals`,{ids:n,action:e}),()=>p([]))},I=e=>{p(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},L=f.length,R=k.find(e=>e.id===C)??null;return(0,x.jsxs)(`div`,{className:`ct-learning__tab`,"data-testid":`proposals-view`,children:[(0,x.jsxs)(`div`,{className:`ct-learning__toolbar`,children:[(0,x.jsx)(g,{value:n,options:j,onChange:e=>{o(e),p([])},label:`Filter proposals by status`}),L>0?(0,x.jsxs)(`div`,{className:`ct-learning__bulk`,"data-testid":`bulk-actions`,children:[(0,x.jsxs)(`span`,{className:`ct-learning__bulk-count`,children:[L,` selected`]}),(0,x.jsxs)(c,{disabled:m,onClick:()=>E(`apply`),children:[`Apply `,L,` selected`]}),(0,x.jsxs)(c,{disabled:m,onClick:()=>E(`reject`),children:[`Reject `,L,` selected`]})]}):null]}),b?(0,x.jsx)(`p`,{className:`ct-learning__callout ct-learning__callout--error`,role:`alert`,children:b}):null,s.error?(0,x.jsx)(i,{message:s.error,tone:`error`,testId:`proposals-error`}):s.loading&&!s.data?(0,x.jsx)(i,{message:`Loading proposals…`,tone:`loading`,testId:`proposals-loading`}):null,s.data||!s.loading&&!s.error?(0,x.jsx)(h,{columns:[{key:`select`,label:``,render:e=>(0,x.jsx)(`input`,{type:`checkbox`,"aria-label":`Select ${e.title}`,checked:f.includes(e.id),disabled:m,onClick:e=>e.stopPropagation(),onChange:()=>I(e.id)})},{key:`status`,label:`Status`,render:e=>(0,x.jsx)(d,{tone:M[e.status],children:e.status})},{key:`title`,label:`Title`,render:e=>e.title},{key:`scope`,label:`Scope`,render:e=>e.scopeLabel?.workspaceLabel??`—`},{key:`findings`,label:`Findings`,render:e=>e.findingCount===void 0?`—`:`${e.findingCount} findings`},{key:`actions`,label:`Actions`,render:e=>(0,x.jsxs)(`div`,{className:`ct-learning__row-actions`,children:[(0,x.jsx)(c,{size:`sm`,disabled:m,"aria-label":`Apply ${e.title}`,onClick:()=>w(e.id),children:`Apply`}),(0,x.jsx)(c,{size:`sm`,disabled:m,"aria-label":`Reject ${e.title}`,onClick:()=>void P(e.id,`reject`),children:`Reject`}),(0,x.jsx)(c,{size:`sm`,disabled:m,"aria-label":`Quarantine ${e.title}`,onClick:()=>void P(e.id,`quarantine`),children:`Quarantine`})]})}],rows:k,rowKey:e=>e.id,label:`Learning proposals`,empty:(0,x.jsx)(i,{message:`No proposals.`,testId:`proposals-empty`}),onRowClick:e=>O(e.id),selectedKey:D}):null,D?(0,x.jsx)(N,{proposalId:D,onClose:()=>O(null)}):null,(0,x.jsx)(_,{open:R!==null,title:`Apply proposal`,body:R?`Apply "${R.title}"?`:``,confirmLabel:`Apply proposal`,busy:m,bodyClassName:`ct-learning__confirm-body`,onConfirm:()=>R&&P(R.id,`apply`),onCancel:()=>w(null)}),(0,x.jsx)(_,{open:T!==null,title:T===`reject`?`Reject proposals`:`Apply proposals`,body:`${T===`reject`?`Reject`:`Apply`} ${L} selected proposals?`,confirmLabel:T===`reject`?`Reject proposals`:`Apply proposals`,busy:m,bodyClassName:`ct-learning__confirm-body`,onConfirm:()=>T&&F(T),onCancel:()=>E(null)})]})}var F=[{value:`proposals`,label:`Proposals`},{value:`lessons`,label:`Lessons`}];function I(){let e=l(`learning.overview`,{},{refreshMs:u}),[t,n]=(0,v.useState)(`proposals`),r=e.data?.proposals;return(0,x.jsxs)(`div`,{className:`ct-page`,"data-testid":`learning-view`,children:[(0,x.jsx)(`header`,{className:`ct-page__head`,children:(0,x.jsxs)(`div`,{className:`ct-page__head-text`,children:[(0,x.jsx)(`h1`,{className:`ct-page__title`,children:`Learning`}),(0,x.jsx)(`p`,{className:`ct-page__sub`,children:`Lesson proposals and the distilled lesson index.`})]})}),e.error?(0,x.jsx)(i,{message:e.error,tone:`error`,testId:`learning-overview-error`}):e.loading&&!e.data?(0,x.jsx)(i,{message:`Loading learning overview…`,tone:`loading`}):null,e.data?(0,x.jsxs)(`div`,{className:`ct-learning__stats`,"data-testid":`learning-overview`,children:[(0,x.jsx)(m,{label:`Pending`,value:r?.pending??0}),(0,x.jsx)(m,{label:`Applied`,value:r?.applied??0}),(0,x.jsx)(m,{label:`Rejected`,value:r?.rejected??0}),(0,x.jsx)(m,{label:`Quarantined`,value:r?.quarantined??0}),(0,x.jsx)(m,{label:`Lessons`,value:e.data.lessons}),(0,x.jsx)(m,{label:`Scopes`,value:e.data.scopes}),e.data.backend?(0,x.jsx)(d,{tone:`neutral`,children:e.data.backend}):null]}):null,(0,x.jsx)(g,{value:t,options:F,onChange:n,label:`Learning sections`}),t===`proposals`?(0,x.jsx)(P,{reloadOverview:e.reload}):(0,x.jsx)(A,{})]})}export{I as default};
|
|
1
|
+
import{_ as e,c as t,h as n,l as r,s as i,t as a}from"./format-BPrfsCHW.js";import{n as o,t as s}from"./links-vgPLVF05.js";import{t as c}from"./Button-ralPMMNs.js";import{n as l,t as u}from"./use-gateway-query-7iLwemQz.js";import{t as d}from"./Badge-me4YM1lq.js";import{t as f}from"./Panel-CqcbBXzJ.js";import{t as p}from"./EntityLink-CMtTP9Dk.js";import{t as m}from"./Stat-BRQhQ01w.js";import{t as h}from"./DataTable-BbRrWxor.js";import{t as g}from"./FilterPills-C_zBIqFP.js";import{t as _}from"./ConfirmDialog-9ode6FP3.js";var v=e(n(),1);function y(e,t){return e.validFrom&&e.validFrom>t?!1:!e.invalidAt||e.invalidAt>t}function b(e){return e.map(e=>({...e.lesson,sessionId:e.sessionId??e.lesson.sessionId}))}var x=t(),S=[`procedure`,`failure`,`preference`,`correction`],C=`No rationale recorded (created before provenance tracking)`;function w({title:e,testId:t,children:n}){return(0,x.jsxs)(`section`,{className:`ct-learning__section`,"data-testid":t,children:[(0,x.jsx)(`h3`,{className:`ct-learning__section-title`,children:e}),n]})}function T({quote:e}){return(0,x.jsxs)(`blockquote`,{className:`ct-learning__quote`,children:[(0,x.jsx)(`span`,{className:`ct-learning__quote-role`,children:e.role}),e.text]})}function E({evidence:e}){let{sessionKey:t}=e,n=(e.quotes??[]).find(e=>e.entryId!==void 0)?.entryId;return(0,x.jsxs)(`div`,{className:`ct-learning__evidence`,children:[(0,x.jsxs)(`div`,{className:`ct-learning__evidence-meta`,children:[(0,x.jsx)(`span`,{children:e.observedAt}),(0,x.jsxs)(`span`,{children:[`Sender: `,e.senderDisplay??e.userId??`unknown sender`]}),e.agentId===void 0?(0,x.jsx)(`span`,{children:`Agent: —`}):(0,x.jsxs)(`span`,{children:[`Agent: `,(0,x.jsx)(p,{to:o.agent(e.agentId),children:e.agentId})]})]}),(e.quotes??[]).length>0?(e.quotes??[]).map((e,t)=>(0,x.jsx)(T,{quote:e},t)):(0,x.jsx)(`p`,{className:`ct-learning__evidence-summary`,children:e.summary}),t?(0,x.jsx)(`div`,{children:(0,x.jsx)(c,{size:`sm`,onClick:()=>s(o.session(t,n?{entry:n}:{})),children:`Open session`})}):null]})}function D({lessonId:e,agentId:t,onClose:n,onChanged:o}){let s=r(e=>e.request),u=l(`learning.inspectLesson`,{lessonId:e,...t?{agentId:t}:{}}),[p,m]=(0,v.useState)(!1),[h,g]=(0,v.useState)(``),[b,T]=(0,v.useState)(`correction`),[D,O]=(0,v.useState)(``),[k,A]=(0,v.useState)(!1),[j,M]=(0,v.useState)(!1),[N,P]=(0,v.useState)(``),[F,I]=(0,v.useState)(!1),[L,R]=(0,v.useState)(null),z=u.data?.lesson,B=async(e,t)=>{I(!0),R(null);try{t(await e())}catch(e){R(a(e))}finally{I(!1)}},V=e=>{g(e.text),T(e.kind),O(``),m(!0)},H=e=>{let n=D.trim();B(()=>s(`learning.reviseLesson`,{lessonId:e.id,...t?{agentId:t}:{},text:h,kind:b,...n?{note:n}:{}}),e=>{m(!1),o({id:e.lesson.id,agentId:t})})},U=e=>{B(()=>s(`learning.rateLesson`,{lessonId:e.id,...t?{agentId:t}:{},score:1}),()=>{u.reload(),o({id:e.id,agentId:t})})},W=e=>{let n=N.trim();M(!1),A(!1),B(()=>s(`learning.rateLesson`,{lessonId:e.id,...t?{agentId:t}:{},score:-1,...n?{note:n}:{}}),()=>{P(``),u.reload(),o({id:e.id,agentId:t})})},G=()=>{A(!1),M(!1),P(``)},K=new Date().toISOString(),q=z!==void 0&&y(z,K),J=z?.origin;return(0,x.jsx)(f,{title:`Lesson`,testId:`lesson-detail`,actions:(0,x.jsx)(c,{onClick:n,size:`sm`,children:`Close`}),children:u.error?(0,x.jsx)(i,{message:u.error,tone:`error`,testId:`lesson-detail-error`}):u.loading&&!u.data?(0,x.jsx)(i,{message:`Loading lesson…`,tone:`loading`}):z?(0,x.jsxs)(`div`,{className:`ct-learning__detail`,children:[L?(0,x.jsx)(`p`,{className:`ct-learning__callout ct-learning__callout--error`,role:`alert`,children:L}):null,(0,x.jsxs)(w,{title:`Lesson`,testId:`lesson-lesson`,children:[(0,x.jsx)(`p`,{className:`ct-learning__lesson-text`,children:z.text}),(0,x.jsxs)(`div`,{className:`ct-learning__badges`,children:[(0,x.jsx)(d,{tone:`accent`,children:z.kind}),(0,x.jsx)(d,{tone:q?`ok`:`warn`,children:q?`active`:`retired`}),z.rating===1?(0,x.jsx)(d,{tone:`ok`,children:`Endorsed`}):null,z.producer===`operator`?(0,x.jsx)(d,{tone:`accent`,children:`Edited by operator`}):null]}),(0,x.jsxs)(`p`,{className:`ct-learning__meta-line`,children:[`Confidence `,Math.round(z.confidence*100),`%`]})]}),(0,x.jsx)(w,{title:`Why`,testId:`lesson-why`,children:(0,x.jsx)(`p`,{className:`ct-learning__rationale`,children:J?.rationale??C})}),(0,x.jsx)(w,{title:`Produced by`,testId:`lesson-produced-by`,children:(0,x.jsxs)(`dl`,{className:`ct-learning__kv`,children:[(0,x.jsx)(`dt`,{children:`Producer`}),(0,x.jsx)(`dd`,{children:z.producer??`—`}),(0,x.jsx)(`dt`,{children:`Model`}),(0,x.jsx)(`dd`,{children:J?.model??`—`}),(0,x.jsx)(`dt`,{children:`Prompt`}),(0,x.jsx)(`dd`,{children:J?.promptVersion??`—`}),(0,x.jsx)(`dt`,{children:`At`}),(0,x.jsx)(`dd`,{children:J?.at??`—`}),J?.actor?(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(`dt`,{children:`Actor`}),(0,x.jsx)(`dd`,{children:J.actor})]}):null]})}),(0,x.jsx)(w,{title:`Evidence`,testId:`lesson-evidence`,children:z.evidence.length===0?(0,x.jsx)(`p`,{className:`ct-learning__meta-line`,children:`No evidence recorded.`}):z.evidence.map((e,t)=>(0,x.jsx)(E,{evidence:e},t))}),(0,x.jsx)(w,{title:`History`,testId:`lesson-history`,children:(u.data?.chain??[]).length===0?(0,x.jsx)(`p`,{className:`ct-learning__meta-line`,children:`No history.`}):(u.data?.chain??[]).map(e=>(0,x.jsxs)(`div`,{className:`ct-learning__chain-row`,children:[(0,x.jsx)(`p`,{className:`ct-learning__lesson-text`,children:e.text}),(0,x.jsxs)(`p`,{className:`ct-learning__meta-line`,children:[e.validFrom,e.invalidAt?` → ${e.invalidAt}`:``,e.origin?.producer?` · ${e.origin.producer}`:``,e.origin?.actor?` · ${e.origin.actor}`:``]})]},e.id))}),(0,x.jsx)(w,{title:`Skill proposals`,testId:`lesson-proposals`,children:(u.data?.proposals??[]).length===0?(0,x.jsx)(`p`,{className:`ct-learning__meta-line`,children:`No linked proposals.`}):(u.data?.proposals??[]).map(e=>(0,x.jsxs)(`div`,{className:`ct-learning__chain-row`,children:[(0,x.jsx)(`p`,{className:`ct-learning__lesson-text`,children:e.title}),(0,x.jsxs)(`p`,{className:`ct-learning__meta-line`,children:[e.id,` · `,e.status]})]},e.id))}),q?(0,x.jsx)(w,{title:`Actions`,testId:`lesson-actions`,children:p?(0,x.jsxs)(`div`,{className:`ct-learning__edit-form`,children:[(0,x.jsxs)(`label`,{className:`ct-learning__field`,children:[(0,x.jsx)(`span`,{children:`Lesson text`}),(0,x.jsx)(`textarea`,{maxLength:400,rows:3,value:h,onChange:e=>g(e.target.value)})]}),(0,x.jsxs)(`label`,{className:`ct-learning__field`,children:[(0,x.jsx)(`span`,{children:`Kind`}),(0,x.jsx)(`select`,{value:b,onChange:e=>T(e.target.value),children:S.map(e=>(0,x.jsx)(`option`,{value:e,children:e},e))})]}),(0,x.jsxs)(`label`,{className:`ct-learning__field`,children:[(0,x.jsx)(`span`,{children:`Revision note`}),(0,x.jsx)(`input`,{value:D,onChange:e=>O(e.target.value)})]}),(0,x.jsxs)(`div`,{className:`ct-learning__actions`,children:[(0,x.jsx)(c,{variant:`primary`,disabled:F||h.trim().length===0,onClick:()=>H(z),children:`Save`}),(0,x.jsx)(c,{disabled:F,onClick:()=>m(!1),children:`Cancel`})]})]}):k?(0,x.jsxs)(`div`,{className:`ct-learning__edit-form`,children:[(0,x.jsxs)(`label`,{className:`ct-learning__field`,children:[(0,x.jsx)(`span`,{children:`Retirement note`}),(0,x.jsx)(`input`,{value:N,onChange:e=>P(e.target.value)})]}),(0,x.jsxs)(`div`,{className:`ct-learning__actions`,children:[(0,x.jsx)(c,{variant:`danger`,disabled:F,onClick:()=>M(!0),children:`Retire lesson`}),(0,x.jsx)(c,{disabled:F,onClick:G,children:`Cancel`})]})]}):(0,x.jsxs)(`div`,{className:`ct-learning__actions`,children:[(0,x.jsx)(c,{size:`sm`,disabled:F,onClick:()=>V(z),children:`Edit`}),(0,x.jsx)(c,{size:`sm`,disabled:F,onClick:()=>U(z),children:`Endorse`}),(0,x.jsx)(c,{size:`sm`,variant:`danger`,disabled:F,onClick:()=>A(!0),children:`Retire`})]})}):(0,x.jsx)(w,{title:`Retired`,testId:`lesson-retired`,children:z.invalidationReason?(0,x.jsx)(`p`,{className:`ct-learning__meta-line`,children:z.invalidationReason}):null}),(0,x.jsx)(_,{open:j,title:`Retire lesson`,body:`Retire this lesson? It will be marked inactive and excluded from the active list.`,confirmLabel:`Retire`,danger:!0,busy:F,bodyClassName:`ct-learning__confirm-body`,onConfirm:()=>z&&W(z),onCancel:()=>M(!1)})]}):null})}var O=300;function k(e,t){return[{key:`kind`,label:e.kind},{key:`recordKind`,label:e.recordKind??`lesson`},{key:`durability`,label:e.durability??`decaying`},{key:`validity`,label:y(e,t)?`active`:`inactive`,tone:y(e,t)?`ok`:`warn`},...e.producer===`operator`?[{key:`producer`,label:`Edited by operator`,tone:`accent`}]:[],...e.rating===1?[{key:`rating`,label:`Endorsed`,tone:`ok`}]:[]]}function A(){let e=r(e=>e.request),t=l(`learning.listLessons`,{},{refreshMs:u}),[n,o]=(0,v.useState)(``),[s,c]=(0,v.useState)(null),[f,p]=(0,v.useState)(null),[m,g]=(0,v.useState)(null),_=(0,v.useRef)(0),y=(0,v.useCallback)(t=>{let n=_.current+1;return _.current=n,e(`learning.searchLessons`,{query:t,k:20}).then(e=>{_.current===n&&(c(b(e.hits??[])),p(null))}).catch(e=>{_.current===n&&p(a(e))})},[e]);(0,v.useEffect)(()=>{let e=n.trim();if(!e){_.current+=1,c(null),p(null);return}let t=window.setTimeout(()=>void y(e),O);return()=>window.clearTimeout(t)},[n,y]);let S=s??t.data?.lessons??[],C=new Date().toISOString();return(0,x.jsxs)(`div`,{className:`ct-learning__tab`,"data-testid":`lessons-view`,children:[(0,x.jsx)(`input`,{type:`search`,className:`ct-learning__search`,"aria-label":`Search lessons`,placeholder:`Search lessons`,value:n,onChange:e=>o(e.target.value)}),f?(0,x.jsx)(`p`,{className:`ct-learning__callout ct-learning__callout--error`,role:`alert`,children:f}):null,t.error?(0,x.jsx)(i,{message:t.error,tone:`error`,testId:`lessons-error`}):t.loading&&!t.data?(0,x.jsx)(i,{message:`Loading lessons…`,tone:`loading`,testId:`lessons-loading`}):null,t.data||!t.loading&&!t.error?(0,x.jsx)(h,{columns:[{key:`badges`,label:`Badges`,render:e=>(0,x.jsx)(`span`,{className:`ct-learning__badges`,children:k(e,C).map(e=>(0,x.jsx)(d,{tone:e.tone,children:e.label},e.key))})},{key:`text`,label:`Lesson`,render:e=>e.text},{key:`scope`,label:`Scope`,render:e=>e.scopeLabel?.workspaceLabel??`—`},{key:`confidence`,label:`Confidence`,render:e=>e.confidence===void 0?`—`:`${Math.round(e.confidence*100)}%`},{key:`occurrences`,label:`Seen`,render:e=>e.occurrences===void 0?`—`:`${e.occurrences}×`},{key:`sessions`,label:`Sessions`,render:e=>e.distinctSessions===void 0?`—`:`${e.distinctSessions} sessions`}],rows:S,rowKey:e=>`${e.scopeLabel?.agentId??``}:${e.id}`,label:`Learning lessons`,empty:(0,x.jsx)(i,{message:`No lessons.`,testId:`lessons-empty`}),onRowClick:e=>g({id:e.id,agentId:e.scopeLabel?.agentId}),selectedKey:m?`${m.agentId??``}:${m.id}`:null}):null,m?(0,x.jsx)(D,{lessonId:m.id,agentId:m.agentId,onClose:()=>g(null),onChanged:e=>{g(e),t.reload();let r=n.trim();r&&y(r)}},`${m.agentId??``}:${m.id}`):null]})}var j=[{value:`all`,label:`All`},{value:`pending`,label:`Pending`},{value:`applied`,label:`Applied`},{value:`rejected`,label:`Rejected`},{value:`quarantined`,label:`Quarantined`}],M={pending:`accent`,applied:`ok`,rejected:`danger`,quarantined:`warn`};function N({proposalId:e,onClose:t}){let n=l(`learning.inspectProposal`,{proposalId:e});return(0,x.jsx)(f,{title:`Proposal`,testId:`proposal-detail`,actions:(0,x.jsx)(c,{onClick:t,size:`sm`,children:`Close`}),children:n.error?(0,x.jsx)(i,{message:n.error,tone:`error`,testId:`proposal-detail-error`}):n.loading&&!n.data?(0,x.jsx)(i,{message:`Loading proposal…`,tone:`loading`}):n.data?(0,x.jsx)(`pre`,{className:`ct-learning__body`,"data-testid":`proposal-body`,children:n.data.body}):null})}function P({reloadOverview:e}){let t=r(e=>e.request),[n,o]=(0,v.useState)(`all`),s=l(`learning.listProposals`,n===`all`?{}:{status:n},{refreshMs:u}),[f,p]=(0,v.useState)([]),[m,y]=(0,v.useState)(!1),[b,S]=(0,v.useState)(null),[C,w]=(0,v.useState)(null),[T,E]=(0,v.useState)(null),[D,O]=(0,v.useState)(null),k=s.data?.proposals??[],A=async(t,n)=>{y(!0),S(null);try{await t(),s.reload(),e(),n?.()}catch(e){S(a(e))}finally{y(!1)}},P=(e,n)=>(w(null),A(()=>t(`learning.decideProposal`,{proposalId:e,action:n}))),F=e=>{let n=f;return E(null),A(()=>t(`learning.decideProposals`,{ids:n,action:e}),()=>p([]))},I=e=>{p(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},L=f.length,R=k.find(e=>e.id===C)??null;return(0,x.jsxs)(`div`,{className:`ct-learning__tab`,"data-testid":`proposals-view`,children:[(0,x.jsxs)(`div`,{className:`ct-learning__toolbar`,children:[(0,x.jsx)(g,{value:n,options:j,onChange:e=>{o(e),p([])},label:`Filter proposals by status`}),L>0?(0,x.jsxs)(`div`,{className:`ct-learning__bulk`,"data-testid":`bulk-actions`,children:[(0,x.jsxs)(`span`,{className:`ct-learning__bulk-count`,children:[L,` selected`]}),(0,x.jsxs)(c,{disabled:m,onClick:()=>E(`apply`),children:[`Apply `,L,` selected`]}),(0,x.jsxs)(c,{disabled:m,onClick:()=>E(`reject`),children:[`Reject `,L,` selected`]})]}):null]}),b?(0,x.jsx)(`p`,{className:`ct-learning__callout ct-learning__callout--error`,role:`alert`,children:b}):null,s.error?(0,x.jsx)(i,{message:s.error,tone:`error`,testId:`proposals-error`}):s.loading&&!s.data?(0,x.jsx)(i,{message:`Loading proposals…`,tone:`loading`,testId:`proposals-loading`}):null,s.data||!s.loading&&!s.error?(0,x.jsx)(h,{columns:[{key:`select`,label:``,render:e=>(0,x.jsx)(`input`,{type:`checkbox`,"aria-label":`Select ${e.title}`,checked:f.includes(e.id),disabled:m,onClick:e=>e.stopPropagation(),onChange:()=>I(e.id)})},{key:`status`,label:`Status`,render:e=>(0,x.jsx)(d,{tone:M[e.status],children:e.status})},{key:`title`,label:`Title`,render:e=>e.title},{key:`scope`,label:`Scope`,render:e=>e.scopeLabel?.workspaceLabel??`—`},{key:`findings`,label:`Findings`,render:e=>e.findingCount===void 0?`—`:`${e.findingCount} findings`},{key:`actions`,label:`Actions`,render:e=>(0,x.jsxs)(`div`,{className:`ct-learning__row-actions`,children:[(0,x.jsx)(c,{size:`sm`,disabled:m,"aria-label":`Apply ${e.title}`,onClick:()=>w(e.id),children:`Apply`}),(0,x.jsx)(c,{size:`sm`,disabled:m,"aria-label":`Reject ${e.title}`,onClick:()=>void P(e.id,`reject`),children:`Reject`}),(0,x.jsx)(c,{size:`sm`,disabled:m,"aria-label":`Quarantine ${e.title}`,onClick:()=>void P(e.id,`quarantine`),children:`Quarantine`})]})}],rows:k,rowKey:e=>e.id,label:`Learning proposals`,empty:(0,x.jsx)(i,{message:`No proposals.`,testId:`proposals-empty`}),onRowClick:e=>O(e.id),selectedKey:D}):null,D?(0,x.jsx)(N,{proposalId:D,onClose:()=>O(null)}):null,(0,x.jsx)(_,{open:R!==null,title:`Apply proposal`,body:R?`Apply "${R.title}"?`:``,confirmLabel:`Apply proposal`,busy:m,bodyClassName:`ct-learning__confirm-body`,onConfirm:()=>R&&P(R.id,`apply`),onCancel:()=>w(null)}),(0,x.jsx)(_,{open:T!==null,title:T===`reject`?`Reject proposals`:`Apply proposals`,body:`${T===`reject`?`Reject`:`Apply`} ${L} selected proposals?`,confirmLabel:T===`reject`?`Reject proposals`:`Apply proposals`,busy:m,bodyClassName:`ct-learning__confirm-body`,onConfirm:()=>T&&F(T),onCancel:()=>E(null)})]})}var F=[{value:`proposals`,label:`Proposals`},{value:`lessons`,label:`Lessons`}];function I(){let e=l(`learning.overview`,{},{refreshMs:u}),[t,n]=(0,v.useState)(`proposals`),r=e.data?.proposals;return(0,x.jsxs)(`div`,{className:`ct-page`,"data-testid":`learning-view`,children:[(0,x.jsx)(`header`,{className:`ct-page__head`,children:(0,x.jsxs)(`div`,{className:`ct-page__head-text`,children:[(0,x.jsx)(`h1`,{className:`ct-page__title`,children:`Learning`}),(0,x.jsx)(`p`,{className:`ct-page__sub`,children:`Lesson proposals and the distilled lesson index.`})]})}),e.error?(0,x.jsx)(i,{message:e.error,tone:`error`,testId:`learning-overview-error`}):e.loading&&!e.data?(0,x.jsx)(i,{message:`Loading learning overview…`,tone:`loading`}):null,e.data?(0,x.jsxs)(`div`,{className:`ct-learning__stats`,"data-testid":`learning-overview`,children:[(0,x.jsx)(m,{label:`Pending`,value:r?.pending??0}),(0,x.jsx)(m,{label:`Applied`,value:r?.applied??0}),(0,x.jsx)(m,{label:`Rejected`,value:r?.rejected??0}),(0,x.jsx)(m,{label:`Quarantined`,value:r?.quarantined??0}),(0,x.jsx)(m,{label:`Lessons`,value:e.data.lessons}),(0,x.jsx)(m,{label:`Scopes`,value:e.data.scopes}),e.data.backend?(0,x.jsx)(d,{tone:`neutral`,children:e.data.backend}):null]}):null,(0,x.jsx)(g,{value:t,options:F,onChange:n,label:`Learning sections`}),t===`proposals`?(0,x.jsx)(P,{reloadOverview:e.reload}):(0,x.jsx)(A,{})]})}export{I as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,c as t,h as n,l as r,s as i,t as a}from"./format-
|
|
1
|
+
import{_ as e,c as t,h as n,l as r,s as i,t as a}from"./format-BPrfsCHW.js";import{t as o}from"./Button-ralPMMNs.js";import{i as s,t as c}from"./index-ChHyE-y3.js";import{t as l}from"./Panel-CqcbBXzJ.js";import{t as u}from"./FilterPills-C_zBIqFP.js";var d=e(n(),1),f={trace:0,debug:1,info:2,warn:3,error:4,fatal:5};function p(e){if(typeof e!=`string`)return null;let t=e.toLowerCase();return Object.hasOwn(f,t)?t:null}function m(e){let t=e.trim();if(!t.startsWith(`{`)||!t.endsWith(`}`))return null;try{let e=JSON.parse(t);return e&&typeof e==`object`?e:null}catch{return null}}var h=new RegExp(String.raw`\u001b\[[0-9;]*m`,`g`);function g(e,t){let n={id:t,raw:e,time:null,level:null,subsystem:null,message:e},r=m(e);if(!r)return n;let i=typeof r._meta==`object`&&r._meta!==null?r._meta:null,a=typeof r.time==`string`?r.time:typeof i?.date==`string`?i.date:null,o=typeof r[0]==`string`?r[0]:typeof i?.name==`string`?i.name:null,s=o?m(o):null,c=null;s&&(typeof s.subsystem==`string`?c=s.subsystem:typeof s.module==`string`&&(c=s.module)),!c&&o&&o.length<120&&(c=o);let l=null;return typeof r[1]==`string`?l=r[1]:!s&&typeof r[0]==`string`?l=r[0]:typeof r.message==`string`&&(l=r.message),{id:t,raw:e,time:a,level:p(i?.logLevelName??i?.level),subsystem:c,message:(l??e).replaceAll(h,``)}}var _=t(),v=500,y=25e4,b=2e3,x=2e3,S={all:`All levels`,debug:`Debug`,info:`Info`,warn:`Warn`,error:`Error`};function C(e,t,n){return t!==`all`&&(e.level===null||f[e.level]<f[t])?!1:n.length===0||e.raw.toLowerCase().includes(n)}function w(){let e=r(e=>e.request),t=r(e=>e.status),[n,f]=(0,d.useState)([]),[p,m]=(0,d.useState)(null),[h,b]=(0,d.useState)(!0),[w,T]=(0,d.useState)(`all`),[E,D]=(0,d.useState)(``),O=(0,d.useRef)(null),k=(0,d.useRef)(0),A=(0,d.useRef)(!1),j=(0,d.useRef)(null),M=(0,d.useCallback)(async()=>{if(!A.current){A.current=!0;try{let t=await e(`logs.tail`,{...O.current===null?{}:{cursor:O.current},limit:v,maxBytes:y}),n=(Array.isArray(t.lines)?t.lines.filter(e=>typeof e==`string`):[]).map(e=>g(e,k.current++)),r=t.reset===!0||O.current===null;f(e=>(r?n:[...e,...n]).slice(-2e3)),typeof t.cursor==`number`&&(O.current=t.cursor),m(null)}catch(e){m(a(e))}finally{A.current=!1}}},[e]),N=s();(0,d.useEffect)(()=>{if(!h||t!==`connected`||!N)return;M();let e=window.setInterval(()=>void M(),x);return()=>window.clearInterval(e)},[h,t,N,M]);let P=E.trim().toLowerCase(),F=n.filter(e=>C(e,w,P));return(0,d.useLayoutEffect)(()=>{let e=j.current;h&&e&&(e.scrollTop=e.scrollHeight)},[h,F.at(-1)?.id??-1]),(0,_.jsxs)(`div`,{className:`ct-page ct-page--fill`,"data-testid":`logs-view`,children:[(0,_.jsxs)(`header`,{className:`ct-page__head`,children:[(0,_.jsxs)(`div`,{className:`ct-page__head-text`,children:[(0,_.jsx)(`h1`,{className:`ct-page__title`,children:`Logs`}),(0,_.jsx)(`p`,{className:`ct-page__sub`,children:`The gateway's file log, newest at the bottom.`})]}),(0,_.jsxs)(o,{variant:h?`secondary`:`primary`,onClick:()=>b(e=>!e),"aria-pressed":!h,children:[(0,_.jsx)(c,{name:h?`pause`:`play`,size:15}),h?`Pause`:`Follow`]})]}),(0,_.jsxs)(`div`,{className:`ct-toolbar`,children:[(0,_.jsx)(u,{label:`Minimum level`,value:w,onChange:T,options:[`all`,`debug`,`info`,`warn`,`error`].map(e=>({value:e,label:S[e]}))}),(0,_.jsx)(`div`,{className:`ct-toolbar__grow`}),(0,_.jsxs)(`label`,{className:`ct-search`,children:[(0,_.jsx)(c,{name:`search`,size:15}),(0,_.jsx)(`input`,{className:`ct-search__input`,type:`search`,placeholder:`Filter lines`,"aria-label":`Filter log lines`,value:E,onChange:e=>D(e.target.value)})]})]}),(0,_.jsxs)(l,{title:`Gateway log`,sub:`${F.length} of ${n.length} lines${h?` · following`:` · paused`}`,className:`ct-logs`,children:[p?(0,_.jsx)(i,{tone:`error`,message:`Logs could not be read.`,hint:p}):null,(0,_.jsx)(`div`,{className:`ct-logs__scroll`,ref:j,"data-testid":`log-lines`,children:F.length===0?(0,_.jsx)(i,{message:n.length===0?`No log lines yet.`:`No lines match.`}):F.map(e=>(0,_.jsxs)(`div`,{className:`ct-log-line ct-log-line--${e.level??`plain`}`,"data-level":e.level??void 0,children:[(0,_.jsx)(`span`,{className:`ct-log-line__time`,children:e.time?new Date(e.time).toLocaleTimeString(`en-AU`):``}),(0,_.jsx)(`span`,{className:`ct-log-line__level`,children:e.level??``}),(0,_.jsx)(`span`,{className:`ct-log-line__subsystem`,children:e.subsystem??``}),(0,_.jsx)(`span`,{className:`ct-log-line__message`,children:e.message})]},e.id))})]})]})}export{b as LOG_BUFFER_LIMIT,x as LOG_POLL_MS,w as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,c as t,h as n,i as r,l as i,s as a,t as o}from"./format-DpM2rlEo.js";import{t as s}from"./Button-D5rMawzJ.js";import{t as c}from"./Dialog-Che1C2PS.js";import{a as l,r as u,t as d}from"./index-CGoFdGyu.js";import{a as f,r as p,t as m}from"./form-utils-BkwTm73v.js";import{n as h,t as g}from"./use-gateway-query-xtY3vmte.js";import{t as _}from"./Badge-sUgH4suZ.js";import{t as v}from"./Panel-DM0JsHgz.js";import{t as y}from"./DataTable-BqqaNmU8.js";import{t as b}from"./FilterPills-CA2lRy0A.js";import{t as x}from"./StatusDot-CRJsKnJw.js";import{t as S}from"./ConfirmDialog-B-AAbwH-.js";var C=e(n(),1);function w(e){return e.toSorted((e,t)=>{if(e.connected!==t.connected)return e.connected?-1:1;let n=(e.displayName??e.nodeId).toLowerCase(),r=(t.displayName??t.nodeId).toLowerCase();return n===r?e.nodeId.localeCompare(t.nodeId):n<r?-1:1})}function T(e){return e.displayName?.trim()||e.nodeId}function E(e){return e.displayName?.trim()||e.deviceId}function D(e){return e.approvalState===`pending`&&e.pendingRequestId?e.pendingRequestId:null}function O(e){return!e||e.length===0?`none`:e.filter(e=>e&&e.trim()).join(`, `)}function k(e){return e.rotatedAtMs??e.createdAtMs??e.lastUsedAtMs??null}function A(e){return e.revokedAtMs?`revoked`:`active`}var j=t();function M({device:e,onClose:t,onLinked:n}){let r=h(`identity.list`,{}),a=r.data?.persons??[],l=i(e=>e.request),[u,d]=(0,C.useState)(e.identity??``),[f,p]=(0,C.useState)(!1),[m,g]=(0,C.useState)(null),_=u||e.identity||a[0]?.person||``,v=e.identity!==void 0,y=async()=>{p(!0),g(null);try{await l(`device.identity.link`,{deviceId:e.deviceId,identity:_}),n()}catch(e){g(o(e))}finally{p(!1)}};return(0,j.jsxs)(c,{open:!0,title:v?`Change identity`:`Link identity`,width:`sm`,onClose:f?()=>{}:t,footer:(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(s,{onClick:t,disabled:f,children:`Cancel`}),(0,j.jsx)(s,{variant:`primary`,disabled:f||_===``,onClick:()=>void y(),children:v?`Change`:`Link`})]}),children:[(0,j.jsxs)(`p`,{children:[`Attribute activity from `,E(e),` to a person. The device keeps its tokens; only the attribution changes.`]}),r.loading&&a.length===0?(0,j.jsx)(`p`,{children:`Loading identities…`}):null,r.error?(0,j.jsx)(`p`,{role:`alert`,children:r.error}):null,a.length===0&&!r.loading?(0,j.jsxs)(`p`,{children:[`No identities yet. Add one with `,(0,j.jsx)(`code`,{children:`wednesdayai identity add <name>`}),`.`]}):(0,j.jsxs)(`label`,{className:`ct-nodes__field`,children:[(0,j.jsx)(`span`,{className:`ct-muted`,children:`Identity`}),(0,j.jsx)(`select`,{"aria-label":`Identity`,value:_,disabled:f,onChange:e=>d(e.target.value),children:a.map(e=>(0,j.jsx)(`option`,{value:e.person,children:e.person},e.person))})]}),m?(0,j.jsx)(`div`,{className:`ct-nodes__callout`,role:`alert`,children:m}):null]})}var N={approve:`device.pair.approve`,reject:`device.pair.reject`,rotate:`device.token.rotate`,revoke:`device.token.revoke`,unlink:`device.identity.unlink`,remove:`device.pair.remove`};function P(e){switch(e.kind){case`approve`:case`reject`:return{requestId:e.request.requestId};case`rotate`:return{deviceId:e.device.deviceId,role:e.token.role,scopes:e.token.scopes};case`revoke`:return{deviceId:e.device.deviceId,role:e.token.role};case`unlink`:case`remove`:return{deviceId:e.device.deviceId}}}function F(e){switch(e.kind){case`approve`:return{title:`Approve device pairing`,body:`Approve the pairing request from ${E(e.request)} (${e.request.deviceId})?`,label:`Approve`,danger:!1};case`reject`:return{title:`Reject device pairing`,body:`Reject the pairing request from ${E(e.request)} (${e.request.deviceId})?`,label:`Reject`,danger:!0};case`rotate`:return{title:`Rotate device token`,body:`Rotate the ${e.token.role} token for ${E(e.device)}? The previous token stops working immediately.`,label:`Rotate`,danger:!1};case`revoke`:return{title:`Revoke device token`,body:`Revoke the ${e.token.role} token for ${E(e.device)}? Clients using this token disconnect.`,label:`Revoke`,danger:!0};case`unlink`:return{title:`Unlink identity`,body:`Unlink ${E(e.device)} from ${e.device.identity}? Activity from this device stops being attributed to ${e.device.identity}.`,label:`Unlink`,danger:!0};case`remove`:return{title:`Remove paired device`,body:`Remove ${E(e.device)} (${e.device.deviceId})? Its tokens stop working.`,label:`Remove`,danger:!0}}}function I({devices:e,loading:t,error:n,onRefresh:r}){let l=i(e=>e.request),u=e?.pending??[],d=e?.paired??[],[f,p]=(0,C.useState)(null),[m,h]=(0,C.useState)(!1),[g,_]=(0,C.useState)(null),[y,b]=(0,C.useState)(null),[x,w]=(0,C.useState)(null),T=async()=>{if(f){h(!0),_(null);try{let e=await l(N[f.kind],P(f));p(null),f.kind===`rotate`&&e?.token&&b({token:e.token,role:e.role??f.token.role}),r()}catch(e){_(o(e))}finally{h(!1)}}},E=f?F(f):null;return(0,j.jsxs)(v,{title:`Devices`,sub:`Pairing requests + role tokens.`,testId:`devices-panel`,actions:(0,j.jsx)(s,{onClick:r,disabled:t,children:t?`Loading…`:`Refresh`}),children:[n?(0,j.jsx)(a,{tone:`error`,message:n,hint:(0,j.jsx)(s,{onClick:r,children:`Retry`})}):t&&!e?(0,j.jsx)(a,{tone:`loading`,message:`Loading devices…`}):u.length===0&&d.length===0?(0,j.jsx)(a,{message:`No paired devices.`}):(0,j.jsxs)(`div`,{className:`ct-nodes__devices`,children:[u.length>0?(0,j.jsxs)(`section`,{"aria-label":`Pending pairing requests`,children:[(0,j.jsx)(`h3`,{className:`ct-nodes__heading`,children:`Pending`}),u.map(e=>(0,j.jsx)(R,{req:e,busy:m,onApprove:()=>p({kind:`approve`,request:e}),onReject:()=>p({kind:`reject`,request:e})},e.requestId))]}):null,d.length>0?(0,j.jsxs)(`section`,{"aria-label":`Paired devices`,children:[(0,j.jsx)(`h3`,{className:`ct-nodes__heading`,children:`Paired`}),d.map(e=>(0,j.jsx)(z,{device:e,busy:m,onLink:()=>w(e),onRotate:t=>p({kind:`rotate`,device:e,token:t}),onRevoke:t=>p({kind:`revoke`,device:e,token:t}),onUnlink:()=>p({kind:`unlink`,device:e}),onRemove:()=>p({kind:`remove`,device:e})},e.deviceId))]}):null]}),g?(0,j.jsx)(`div`,{className:`ct-nodes__callout`,role:`alert`,children:g}):null,(0,j.jsx)(S,{open:E!==null,title:E?.title??``,body:E?.body??``,confirmLabel:E?.label??``,danger:E?.danger??!1,busy:m,bodyClassName:`ct-nodes__confirm-body`,testId:`confirm-device-action`,onConfirm:()=>void T(),onCancel:()=>{p(null),_(null)}}),(0,j.jsx)(c,{open:y!==null,title:`New ${y?.role??`device`} token`,onClose:()=>b(null),width:`sm`,footer:(0,j.jsx)(s,{variant:`primary`,onClick:()=>b(null),"data-testid":`token-done`,children:`Done`}),children:y?(0,j.jsx)(L,{token:y.token}):null}),x===null?null:(0,j.jsx)(M,{device:x,onClose:()=>w(null),onLinked:()=>{w(null),r()}})]})}function L({token:e}){let[t,n]=(0,C.useState)(!1);return(0,j.jsxs)(`div`,{className:`ct-nodes__token-reveal`,children:[(0,j.jsx)(`p`,{children:`Copy it now — it is shown only once and is not stored by the console.`}),(0,j.jsxs)(`div`,{className:`ct-nodes__token-line`,children:[(0,j.jsx)(`code`,{className:`ct-mono`,"data-testid":`rotated-token`,children:e}),(0,j.jsx)(s,{size:`sm`,onClick:()=>{navigator.clipboard?.writeText(e).then(()=>n(!0)).catch(()=>n(!1))},children:t?`Copied`:`Copy`})]})]})}function R({req:e,busy:t,onApprove:n,onReject:i}){return(0,j.jsxs)(`div`,{className:`ct-nodes__list-item`,children:[(0,j.jsxs)(`div`,{className:`ct-nodes__list-main`,children:[(0,j.jsx)(`div`,{className:`ct-nodes__list-title`,children:E(e)}),(0,j.jsxs)(`div`,{className:`ct-nodes__list-sub ct-mono`,children:[e.deviceId,e.remoteIp?` · ${e.remoteIp}`:``]}),(0,j.jsxs)(`div`,{className:`ct-nodes__list-sub`,children:[e.role?.trim()?`role: ${e.role}`:`role: —`,typeof e.ts==`number`?` · requested ${r(e.ts)}`:``,e.isRepair?` · repair`:``]})]}),(0,j.jsxs)(`div`,{className:`ct-nodes__row-actions`,children:[(0,j.jsx)(s,{size:`sm`,variant:`primary`,disabled:t,"aria-label":`Approve device ${E(e)}`,onClick:n,children:`Approve`}),(0,j.jsx)(s,{size:`sm`,variant:`danger`,disabled:t,"aria-label":`Reject device ${E(e)}`,onClick:i,children:`Reject`})]})]})}function z({device:e,busy:t,onLink:n,onRotate:r,onRevoke:i,onUnlink:a,onRemove:o}){let c=Array.isArray(e.tokens)?e.tokens:[];return(0,j.jsxs)(`div`,{className:`ct-nodes__list-item`,children:[(0,j.jsxs)(`div`,{className:`ct-nodes__list-main`,children:[(0,j.jsx)(`div`,{className:`ct-nodes__list-title`,children:E(e)}),(0,j.jsxs)(`div`,{className:`ct-nodes__list-sub ct-mono`,children:[e.deviceId,e.remoteIp?` · ${e.remoteIp}`:``]}),(0,j.jsxs)(`div`,{className:`ct-nodes__list-sub`,children:[`roles: `,O(e.roles),` · scopes: `,O(e.scopes)]}),(0,j.jsxs)(`div`,{className:`ct-nodes__list-sub`,children:[`Identity:`,` `,e.identity?(0,j.jsx)(_,{tone:`accent`,children:e.identity}):(0,j.jsx)(`span`,{className:`ct-muted`,children:`Not linked`})]}),c.length===0?(0,j.jsx)(`div`,{className:`ct-nodes__list-sub`,children:`Tokens: none`}):(0,j.jsx)(`div`,{className:`ct-nodes__tokens`,children:c.map(n=>(0,j.jsx)(B,{deviceId:e.deviceId,token:n,busy:t,onRotate:()=>r(n),onRevoke:()=>i(n)},n.role))})]}),(0,j.jsxs)(`div`,{className:`ct-nodes__row-actions`,children:[e.identity?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(s,{size:`sm`,disabled:t,onClick:n,children:`Change identity`}),(0,j.jsx)(s,{size:`sm`,variant:`danger`,disabled:t,onClick:a,children:`Unlink`})]}):(0,j.jsx)(s,{size:`sm`,variant:`primary`,disabled:t,onClick:n,children:`Link identity`}),(0,j.jsx)(s,{size:`sm`,variant:`danger`,disabled:t,onClick:o,children:`Remove`})]})]})}function B({deviceId:e,token:t,busy:n,onRotate:i,onRevoke:a}){let o=k(t),c=A(t)===`revoked`;return(0,j.jsxs)(`div`,{className:`ct-nodes__token-row`,children:[(0,j.jsxs)(`span`,{className:`ct-nodes__list-sub`,children:[(0,j.jsx)(`span`,{className:`ct-mono`,children:e}),` · `,t.role,` ·`,` `,(0,j.jsx)(_,{tone:c?`danger`:`ok`,children:A(t)}),` · scopes:`,` `,O(t.scopes),o?` · ${r(o)}`:``]}),(0,j.jsxs)(`span`,{className:`ct-nodes__row-actions`,children:[(0,j.jsx)(s,{size:`sm`,disabled:n,"aria-label":`Rotate ${t.role} token`,onClick:i,children:`Rotate`}),c?null:(0,j.jsx)(s,{size:`sm`,variant:`danger`,disabled:n,"aria-label":`Revoke ${t.role} token`,onClick:a,children:`Revoke`})]})]})}var V=`__defaults__`;function H(e){return e===`allowlist`||e===`full`||e===`deny`?e:`deny`}function U(e){return e===`always`||e===`off`||e===`on-miss`?e:`on-miss`}function W(e){return{security:H(e?.security),ask:U(e?.ask),askFallback:H(e?.askFallback??`deny`),autoAllowSkills:e?.autoAllowSkills===!0}}function G(e){if(!e||e.kind===`gateway`)return{method:`exec.approvals.get`,params:{}};let t=e.nodeId.trim();return t?{method:`exec.approvals.node.get`,params:{nodeId:t}}:null}function ee(e,t){if(!e||e.kind===`gateway`)return{method:`exec.approvals.set`,params:t};let n=e.nodeId.trim();return n?{method:`exec.approvals.node.set`,params:{...t,nodeId:n}}:null}function te(e){let t={"system.execApprovals.get":!0,"system.execApprovals.set":!0},n=[];for(let r of e){if(!(Array.isArray(r.commands)?r.commands:[]).some(e=>t[String(e)])||!r.nodeId.trim())continue;let e=r.displayName?.trim();n.push({id:r.nodeId,label:!e||e===r.nodeId?r.nodeId:`${e} · ${r.nodeId}`})}return n.sort((e,t)=>e.label.localeCompare(t.label)),n}function ne(e,t){let n=new Map;for(let t of e)t.id.trim()&&n.set(t.id,{id:t.id,name:t.name,isDefault:t.id===`main`});for(let e of Object.keys(t?.agents??{}))n.has(e)||n.set(e,{id:e,isDefault:e===`main`});let r=Array.from(n.values());return r.length===0&&r.push({id:`main`,isDefault:!0}),r.sort((e,t)=>e.isDefault===t.isDefault?(e.name?.trim()||e.id).localeCompare(t.name?.trim()||t.id):e.isDefault?-1:1),r}function re(e,t){return e===`__defaults__`?V:e&&t.some(t=>t.id===e)?e:V}function K(e,t,n){let r=m(e);return f(r,t,n),r}function q(e,t){let n=m(e);return p(n,t),n}var J=[{value:`deny`,label:`Deny`},{value:`allowlist`,label:`Allowlist`},{value:`full`,label:`Full`}],ie=[{value:`off`,label:`Off`},{value:`on-miss`,label:`On miss`},{value:`always`,label:`Always`}],Y=`__default__`;function X({nodes:e}){let t=i(e=>e.request),[n,r]=(0,C.useState)({kind:`gateway`}),[c,l]=(0,C.useState)(null),[u,d]=(0,C.useState)({form:{},dirty:!1}),[f,p]=(0,C.useState)(null),[g,_]=(0,C.useState)(!1),[y,x]=(0,C.useState)(!1),[S,w]=(0,C.useState)(null),T=(0,C.useRef)(0),E=h(`agents.list`,{}),D=te(e),O=n.kind===`gateway`||n.nodeId?.trim()!==``,k=(0,C.useCallback)(async()=>{let e=++T.current,r=G(n);if(_(!0),w(null),!r){w(`Select a node before loading exec approvals.`),_(!1);return}try{let n=await t(r.method,r.params);if(e!==T.current)return;l(n),d({form:m(n.file??{}),dirty:!1})}catch(t){e===T.current&&w(o(t))}finally{e===T.current&&_(!1)}},[t,n]);(0,C.useEffect)(()=>{k()},[k]);let A=(e,t)=>{l(null),d({form:{},dirty:!1}),p(null),r(e===`gateway`?{kind:`gateway`}:{kind:`node`,nodeId:t??``})},M=async()=>{let e=c?.hash;if(!e){w(`Exec approvals hash missing; reload and retry.`);return}x(!0),w(null);try{let r=ee(n,{file:u.form,baseHash:e});if(!r){w(`Select a node before saving exec approvals.`);return}await t(r.method,r.params),d(e=>({...e,dirty:!1})),await k()}catch(e){w(o(e))}finally{x(!1)}},N=W(u.form.defaults),P=ne(E.data?.agents??[],u.form),F=re(f,P),I=F===V,L=I?[`defaults`]:[`agents`,F],R=I?null:u.form.agents?.[F]??null,z=g||y,B=(e,t)=>{d(n=>({form:K(n.form,[...L,e],t),dirty:!0}))},H=e=>{d(t=>({form:q(t.form,[...L,e]),dirty:!0}))},U=[`agents`,F,`allowlist`],X=R?.allowlist??[];return(0,j.jsxs)(v,{title:`Exec approvals`,sub:`Allowlist and approval policy for exec host=gateway/node.`,testId:`exec-approvals-panel`,actions:(0,j.jsx)(s,{variant:`primary`,onClick:()=>void M(),disabled:z||!u.dirty||!O,children:y?`Saving…`:`Save`}),children:[S?(0,j.jsxs)(`div`,{className:`ct-nodes__callout`,role:`alert`,children:[(0,j.jsx)(`span`,{children:S}),(0,j.jsx)(s,{size:`sm`,onClick:()=>void k(),disabled:g,children:`Reload`})]}):null,(0,j.jsxs)(`div`,{className:`ct-nodes__target-row`,children:[(0,j.jsxs)(`label`,{className:`ct-nodes__field`,children:[`Host`,(0,j.jsxs)(`select`,{"aria-label":`Exec approvals host`,value:n.kind,disabled:z,onChange:e=>{e.target.value===`node`?A(`node`,n.kind===`node`?n.nodeId:D[0]?.id??``):A(`gateway`,null)},children:[(0,j.jsx)(`option`,{value:`gateway`,children:`Gateway`}),(0,j.jsx)(`option`,{value:`node`,children:`Node`})]})]}),n.kind===`node`?(0,j.jsxs)(`label`,{className:`ct-nodes__field`,children:[`Node`,(0,j.jsxs)(`select`,{"aria-label":`Exec approvals node`,value:n.nodeId??``,disabled:z||D.length===0,onChange:e=>A(`node`,e.target.value||null),children:[(0,j.jsx)(`option`,{value:``,children:`Select node`}),D.map(e=>(0,j.jsx)(`option`,{value:e.id,children:e.label},e.id))]})]}):null]}),n.kind===`node`&&D.length===0?(0,j.jsx)(a,{message:`No nodes advertise exec approvals yet.`}):null,g&&!c?(0,j.jsx)(a,{tone:`loading`,message:`Loading approvals…`}):c?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsxs)(`div`,{className:`ct-nodes__scope-row`,role:`group`,"aria-label":`Exec approvals scope`,children:[(0,j.jsx)(`span`,{className:`ct-nodes__heading`,children:`Scope`}),(0,j.jsx)(b,{label:`Scope`,value:F,options:[{value:V,label:`Defaults`},...P.map(e=>({value:e.id,label:e.name?.trim()?`${e.name} (${e.id})`:e.id}))],onChange:p})]}),(0,j.jsxs)(`dl`,{className:`ct-kv ct-nodes__policy`,children:[(0,j.jsx)(`dt`,{children:`Security`}),(0,j.jsx)(`dd`,{children:(0,j.jsx)(Z,{ariaLabel:`Security`,disabled:z,value:I?N.security:R?.security??Y,defaultValueText:N.security,showUseDefault:!I,options:J,onChange:e=>{!I&&e===Y?H(`security`):B(`security`,e)}})}),(0,j.jsx)(`dt`,{children:`Ask`}),(0,j.jsx)(`dd`,{children:(0,j.jsx)(Z,{ariaLabel:`Ask`,disabled:z,value:I?N.ask:R?.ask??Y,defaultValueText:N.ask,showUseDefault:!I,options:ie,onChange:e=>{!I&&e===Y?H(`ask`):B(`ask`,e)}})}),(0,j.jsx)(`dt`,{children:`Ask fallback`}),(0,j.jsx)(`dd`,{children:(0,j.jsx)(Z,{ariaLabel:`Ask fallback`,disabled:z,value:I?N.askFallback:R?.askFallback??Y,defaultValueText:N.askFallback,showUseDefault:!I,options:J,onChange:e=>{!I&&e===Y?H(`askFallback`):B(`askFallback`,e)}})}),(0,j.jsx)(`dt`,{children:`Auto-allow skill CLIs`}),(0,j.jsx)(`dd`,{children:(0,j.jsxs)(`span`,{className:`ct-nodes__check-row`,children:[(0,j.jsx)(`input`,{type:`checkbox`,"aria-label":`Auto-allow skill CLIs`,disabled:z,checked:I?N.autoAllowSkills:R?.autoAllowSkills??N.autoAllowSkills,onChange:e=>B(`autoAllowSkills`,e.target.checked)}),!I&&R?.autoAllowSkills!==void 0?(0,j.jsx)(s,{size:`sm`,disabled:z,onClick:()=>H(`autoAllowSkills`),children:`Use default`}):null]})})]}),I?null:(0,j.jsxs)(`div`,{className:`ct-nodes__allowlist`,children:[(0,j.jsxs)(`div`,{className:`ct-nodes__allowlist-head`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`h3`,{className:`ct-nodes__heading`,children:`Allowlist`}),(0,j.jsx)(`p`,{className:`ct-nodes__list-sub`,children:`Case-insensitive glob patterns.`})]}),(0,j.jsx)(s,{size:`sm`,disabled:z,onClick:()=>{let e=[...X,{pattern:``}];d(t=>({form:K(t.form,U,e),dirty:!0}))},children:`Add pattern`})]}),X.length===0?(0,j.jsx)(a,{message:`No allowlist entries yet.`}):X.map((e,t)=>(0,j.jsx)(ae,{entry:e,index:t,disabled:z,onPatternChange:e=>{d(n=>({form:K(n.form,[...U,t,`pattern`],e),dirty:!0}))},onRemove:()=>{d(e=>({form:X.length<=1?q(e.form,U):q(e.form,[...U,t]),dirty:!0}))}},e.id??t))]})]}):null]})}function Z({ariaLabel:e,value:t,options:n,showUseDefault:r,defaultValueText:i,disabled:a,onChange:o}){return(0,j.jsxs)(`select`,{"aria-label":e,value:t,disabled:a,onChange:e=>o(e.target.value),children:[r?(0,j.jsxs)(`option`,{value:Y,children:[`Use default (`,i,`)`]}):null,n.map(e=>(0,j.jsx)(`option`,{value:e.value,children:e.label},e.value))]})}function ae({entry:e,index:t,disabled:n,onPatternChange:i,onRemove:a}){return(0,j.jsxs)(`div`,{className:`ct-nodes__list-item`,children:[(0,j.jsxs)(`div`,{className:`ct-nodes__list-main`,children:[(0,j.jsxs)(`div`,{className:`ct-nodes__list-sub`,children:[`Last used: `,e.lastUsedAt?r(e.lastUsedAt):`never`]}),e.lastUsedCommand?(0,j.jsx)(`div`,{className:`ct-nodes__list-sub ct-mono`,children:e.lastUsedCommand}):null,e.lastResolvedPath?(0,j.jsx)(`div`,{className:`ct-nodes__list-sub ct-mono`,children:e.lastResolvedPath}):null]}),(0,j.jsxs)(`div`,{className:`ct-nodes__row-actions`,children:[(0,j.jsx)(`input`,{type:`text`,className:`ct-nodes__pattern-input`,"aria-label":`Allowlist pattern ${t+1}`,value:e.pattern??``,disabled:n,onChange:e=>i(e.target.value)}),(0,j.jsx)(s,{size:`sm`,variant:`danger`,disabled:n,onClick:a,children:`Remove`})]})]})}function oe({nodeId:e,paired:t,onClose:n,onRenamed:c}){let l=i(e=>e.request),u=h(`node.describe`,{nodeId:e}),[f,p]=(0,C.useState)(null),[m,g]=(0,C.useState)(!1),[y,b]=(0,C.useState)(null),S=u.data,w=f??(S?.displayName?.trim()||e),E=async()=>{let t=w.trim();if(t){g(!0),b(null);try{await l(`node.rename`,{nodeId:e,displayName:t}),p(null),u.reload(),c()}catch(e){b(o(e))}finally{g(!1)}}};return(0,j.jsx)(v,{title:T({nodeId:e,displayName:S?.displayName}),sub:(0,j.jsx)(`span`,{className:`ct-mono`,children:e}),testId:`node-drawer`,actions:(0,j.jsx)(`button`,{type:`button`,className:`ct-icon-btn`,"aria-label":`Close node details`,onClick:n,children:(0,j.jsx)(d,{name:`x`})}),children:(0,j.jsx)(`div`,{className:`ct-nodes__aside-body`,children:u.error?(0,j.jsx)(a,{tone:`error`,message:u.error,hint:(0,j.jsx)(s,{onClick:u.reload,children:`Retry`})}):u.loading&&!S?(0,j.jsx)(a,{tone:`loading`,message:`Loading node…`}):S?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsxs)(`div`,{className:`ct-nodes__status-row`,children:[S.connected?(0,j.jsxs)(`span`,{className:`ct-nodes__status`,children:[(0,j.jsx)(x,{tone:`ok`,label:`Connected`,pulse:!0}),` Connected`]}):(0,j.jsx)(_,{children:`Offline`}),S.paired?(0,j.jsx)(_,{tone:`accent`,children:`Paired`}):null]}),(0,j.jsxs)(`dl`,{className:`ct-kv`,children:[(0,j.jsx)(`dt`,{children:`Platform`}),(0,j.jsx)(`dd`,{children:S.platform??`—`}),(0,j.jsx)(`dt`,{children:`Version`}),(0,j.jsx)(`dd`,{children:S.version??`—`}),(0,j.jsx)(`dt`,{children:`Device`}),(0,j.jsx)(`dd`,{children:S.deviceFamily??`—`}),(0,j.jsx)(`dt`,{children:`Model`}),(0,j.jsx)(`dd`,{children:S.modelIdentifier??`—`}),(0,j.jsx)(`dt`,{children:`IP`}),(0,j.jsx)(`dd`,{className:`ct-mono`,children:S.remoteIp??`—`}),(0,j.jsx)(`dt`,{children:`Connected`}),(0,j.jsx)(`dd`,{children:S.connectedAtMs?r(S.connectedAtMs):`—`}),(0,j.jsx)(`dt`,{children:`Caps`}),(0,j.jsx)(`dd`,{className:`ct-mono`,children:O(S.caps)}),(0,j.jsx)(`dt`,{children:`Commands`}),(0,j.jsx)(`dd`,{className:`ct-mono`,children:O(S.commands)})]}),t?(0,j.jsxs)(`div`,{className:`ct-nodes__rename`,children:[(0,j.jsxs)(`label`,{className:`ct-nodes__field`,children:[`Display name`,(0,j.jsx)(`input`,{type:`text`,value:w,onChange:e=>p(e.target.value),"aria-label":`Node display name`})]}),(0,j.jsx)(s,{variant:`primary`,onClick:()=>void E(),disabled:m,children:m?`Saving…`:`Rename`})]}):null,y?(0,j.jsx)(`div`,{className:`ct-nodes__callout`,role:`alert`,children:y}):null]}):null})})}function se({nodes:e,loading:t,error:n,selectedNodeId:r,onSelectNode:c,onRefresh:l}){let u=i(e=>e.request),[d,f]=(0,C.useState)(null),[p,m]=(0,C.useState)(!1),[h,g]=(0,C.useState)(null),_=async()=>{if(d){m(!0),g(null);try{await u(d.kind===`approve`?`node.pair.approve`:`node.pair.reject`,{requestId:d.node.pendingRequestId}),f(null),l()}catch(e){g(o(e))}finally{m(!1)}}};return(0,j.jsxs)(v,{title:`Nodes`,sub:`Paired devices and live links.`,testId:`nodes-panel`,actions:(0,j.jsx)(s,{onClick:l,disabled:t,children:t?`Loading…`:`Refresh`}),children:[n?(0,j.jsx)(a,{tone:`error`,message:n,hint:(0,j.jsx)(s,{onClick:l,children:`Retry`})}):t&&e.length===0?(0,j.jsx)(a,{tone:`loading`,message:`Loading nodes…`}):e.length===0?(0,j.jsx)(a,{message:`No nodes found.`}):(0,j.jsx)(y,{label:`Nodes`,rows:e,rowKey:e=>e.nodeId,selectedKey:r,onRowClick:c,columns:[{key:`name`,label:`Node`,render:e=>(0,j.jsxs)(`div`,{className:`ct-cell-stack`,children:[(0,j.jsx)(`span`,{className:`ct-cell-stack__main`,children:T(e)}),(0,j.jsx)(`span`,{className:`ct-cell-stack__sub`,children:e.nodeId})]})},{key:`status`,label:`Status`,render:e=>(0,j.jsx)(ce,{node:e})},{key:`platform`,label:`Platform`,render:e=>(0,j.jsxs)(`div`,{className:`ct-cell-stack`,children:[(0,j.jsx)(`span`,{className:`ct-cell-stack__main`,children:e.platform??`—`}),(0,j.jsx)(`span`,{className:`ct-cell-stack__sub`,children:e.version??``})]})},{key:`ip`,label:`IP`,mono:!0,render:e=>e.remoteIp??`—`},{key:`caps`,label:`Caps`,render:e=>(0,j.jsx)(Q,{values:e.caps})},{key:`commands`,label:`Commands`,render:e=>(0,j.jsx)(Q,{values:e.commands})},{key:`actions`,label:``,render:e=>D(e)?(0,j.jsxs)(`div`,{className:`ct-nodes__row-actions`,children:[(0,j.jsx)(s,{size:`sm`,variant:`primary`,"aria-label":`Approve pairing for ${T(e)}`,onClick:t=>{t.stopPropagation(),f({kind:`approve`,node:e})},children:`Approve`}),(0,j.jsx)(s,{size:`sm`,variant:`danger`,"aria-label":`Reject pairing for ${T(e)}`,onClick:t=>{t.stopPropagation(),f({kind:`reject`,node:e})},children:`Reject`})]}):null}]}),h?(0,j.jsx)(`div`,{className:`ct-nodes__callout`,role:`alert`,children:h}):null,(0,j.jsx)(S,{open:d!==null,title:d?.kind===`approve`?`Approve node pairing`:`Reject node pairing`,body:d?`${d.kind===`approve`?`Approve`:`Reject`} the pairing request from ${T(d.node)} (${d.node.nodeId})?`:``,confirmLabel:d?.kind===`approve`?`Approve`:`Reject`,danger:d?.kind===`reject`,busy:p,bodyClassName:`ct-nodes__confirm-body`,testId:`confirm-node-pairing`,onConfirm:()=>void _(),onCancel:()=>{f(null),g(null)}})]})}function ce({node:e}){return e.connected?(0,j.jsxs)(`span`,{className:`ct-nodes__status`,children:[(0,j.jsx)(x,{tone:`ok`,label:`Connected`,pulse:!0}),`Connected`]}):D(e)?(0,j.jsxs)(`span`,{className:`ct-nodes__status`,children:[(0,j.jsx)(x,{tone:`warn`,label:`Pairing pending`,pulse:!0}),`Pending`]}):(0,j.jsxs)(`span`,{className:`ct-nodes__status`,children:[(0,j.jsx)(x,{tone:`neutral`,label:`Paired offline`}),(0,j.jsx)(_,{children:`Paired`})]})}function Q({values:e}){return!e||e.length===0?(0,j.jsx)(j.Fragment,{children:`—`}):(0,j.jsxs)(`span`,{className:`ct-nodes__chips`,title:O(e),children:[e.slice(0,3).map(e=>(0,j.jsx)(`span`,{className:`ct-nodes__chip`,children:e},e)),e.length>3?(0,j.jsxs)(`span`,{className:`ct-nodes__chip-more`,children:[`+`,e.length-3]}):null]})}var $=[`device.pair.requested`,`device.pair.resolved`,`node.pair.requested`,`node.pair.resolved`];function le(){let e=i(e=>e.request),t=h(`node.list`,{},{refreshMs:g,invalidateOn:$}),n=h(`device.pair.list`,{},{refreshMs:g,invalidateOn:$}),[r,a]=(0,C.useState)(null),o=(0,C.useCallback)(()=>{t.reload(),n.reload(),l.getState().refresh(e)},[t.reload,n.reload,e]);(0,C.useEffect)(()=>{let{subscribe:t}=i.getState(),n=null,r=()=>{n===null&&(n=window.setTimeout(()=>{n=null,!(!u()||i.getState().status!==`connected`)&&l.getState().refresh(e)},500))},a=$.map(e=>t(e,r));return()=>{n!==null&&(window.clearTimeout(n),n=null);for(let e of a)e()}},[e]);let s=w(t.data?.nodes??[]),c=s.find(e=>e.nodeId===r)??null;return(0,j.jsxs)(`div`,{className:`ct-page`,"data-testid":`nodes-view`,children:[(0,j.jsx)(`header`,{className:`ct-page__head`,children:(0,j.jsxs)(`div`,{className:`ct-page__head-text`,children:[(0,j.jsx)(`h1`,{className:`ct-page__title`,children:`Nodes`}),(0,j.jsx)(`p`,{className:`ct-page__sub`,children:`Fleet nodes, device pairing and exec approvals.`})]})}),(0,j.jsx)(X,{nodes:s}),(0,j.jsxs)(`div`,{className:c?`ct-nodes__layout ct-nodes__layout--open`:`ct-nodes__layout`,children:[(0,j.jsx)(se,{nodes:s,loading:t.loading,error:t.error,selectedNodeId:r,onSelectNode:e=>a(e.nodeId),onRefresh:o}),c?(0,j.jsx)(oe,{nodeId:c.nodeId,paired:c.paired,onClose:()=>a(null),onRenamed:o},c.nodeId):null]}),(0,j.jsx)(I,{devices:n.data,loading:n.loading,error:n.error,onRefresh:o})]})}export{le as default};
|
|
1
|
+
import{_ as e,c as t,h as n,i as r,l as i,s as a,t as o}from"./format-BPrfsCHW.js";import{t as s}from"./Button-ralPMMNs.js";import{t as c}from"./Dialog-oJKnAIqZ.js";import{a as l,r as u,t as d}from"./index-ChHyE-y3.js";import{a as f,r as p,t as m}from"./form-utils-BkwTm73v.js";import{n as h,t as g}from"./use-gateway-query-7iLwemQz.js";import{t as _}from"./Badge-me4YM1lq.js";import{t as v}from"./Panel-CqcbBXzJ.js";import{t as y}from"./DataTable-BbRrWxor.js";import{t as b}from"./FilterPills-C_zBIqFP.js";import{t as x}from"./StatusDot-CjtPcYD9.js";import{t as S}from"./ConfirmDialog-9ode6FP3.js";var C=e(n(),1);function w(e){return e.toSorted((e,t)=>{if(e.connected!==t.connected)return e.connected?-1:1;let n=(e.displayName??e.nodeId).toLowerCase(),r=(t.displayName??t.nodeId).toLowerCase();return n===r?e.nodeId.localeCompare(t.nodeId):n<r?-1:1})}function T(e){return e.displayName?.trim()||e.nodeId}function E(e){return e.displayName?.trim()||e.deviceId}function D(e){return e.approvalState===`pending`&&e.pendingRequestId?e.pendingRequestId:null}function O(e){return!e||e.length===0?`none`:e.filter(e=>e&&e.trim()).join(`, `)}function k(e){return e.rotatedAtMs??e.createdAtMs??e.lastUsedAtMs??null}function A(e){return e.revokedAtMs?`revoked`:`active`}var j=t();function M({device:e,onClose:t,onLinked:n}){let r=h(`identity.list`,{}),a=r.data?.persons??[],l=i(e=>e.request),[u,d]=(0,C.useState)(e.identity??``),[f,p]=(0,C.useState)(!1),[m,g]=(0,C.useState)(null),_=u||e.identity||a[0]?.person||``,v=e.identity!==void 0,y=async()=>{p(!0),g(null);try{await l(`device.identity.link`,{deviceId:e.deviceId,identity:_}),n()}catch(e){g(o(e))}finally{p(!1)}};return(0,j.jsxs)(c,{open:!0,title:v?`Change identity`:`Link identity`,width:`sm`,onClose:f?()=>{}:t,footer:(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(s,{onClick:t,disabled:f,children:`Cancel`}),(0,j.jsx)(s,{variant:`primary`,disabled:f||_===``,onClick:()=>void y(),children:v?`Change`:`Link`})]}),children:[(0,j.jsxs)(`p`,{children:[`Attribute activity from `,E(e),` to a person. The device keeps its tokens; only the attribution changes.`]}),r.loading&&a.length===0?(0,j.jsx)(`p`,{children:`Loading identities…`}):null,r.error?(0,j.jsx)(`p`,{role:`alert`,children:r.error}):null,a.length===0&&!r.loading?(0,j.jsxs)(`p`,{children:[`No identities yet. Add one with `,(0,j.jsx)(`code`,{children:`wednesdayai identity add <name>`}),`.`]}):(0,j.jsxs)(`label`,{className:`ct-nodes__field`,children:[(0,j.jsx)(`span`,{className:`ct-muted`,children:`Identity`}),(0,j.jsx)(`select`,{"aria-label":`Identity`,value:_,disabled:f,onChange:e=>d(e.target.value),children:a.map(e=>(0,j.jsx)(`option`,{value:e.person,children:e.person},e.person))})]}),m?(0,j.jsx)(`div`,{className:`ct-nodes__callout`,role:`alert`,children:m}):null]})}var N={approve:`device.pair.approve`,reject:`device.pair.reject`,rotate:`device.token.rotate`,revoke:`device.token.revoke`,unlink:`device.identity.unlink`,remove:`device.pair.remove`};function P(e){switch(e.kind){case`approve`:case`reject`:return{requestId:e.request.requestId};case`rotate`:return{deviceId:e.device.deviceId,role:e.token.role,scopes:e.token.scopes};case`revoke`:return{deviceId:e.device.deviceId,role:e.token.role};case`unlink`:case`remove`:return{deviceId:e.device.deviceId}}}function F(e){switch(e.kind){case`approve`:return{title:`Approve device pairing`,body:`Approve the pairing request from ${E(e.request)} (${e.request.deviceId})?`,label:`Approve`,danger:!1};case`reject`:return{title:`Reject device pairing`,body:`Reject the pairing request from ${E(e.request)} (${e.request.deviceId})?`,label:`Reject`,danger:!0};case`rotate`:return{title:`Rotate device token`,body:`Rotate the ${e.token.role} token for ${E(e.device)}? The previous token stops working immediately.`,label:`Rotate`,danger:!1};case`revoke`:return{title:`Revoke device token`,body:`Revoke the ${e.token.role} token for ${E(e.device)}? Clients using this token disconnect.`,label:`Revoke`,danger:!0};case`unlink`:return{title:`Unlink identity`,body:`Unlink ${E(e.device)} from ${e.device.identity}? Activity from this device stops being attributed to ${e.device.identity}.`,label:`Unlink`,danger:!0};case`remove`:return{title:`Remove paired device`,body:`Remove ${E(e.device)} (${e.device.deviceId})? Its tokens stop working.`,label:`Remove`,danger:!0}}}function I({devices:e,loading:t,error:n,onRefresh:r}){let l=i(e=>e.request),u=e?.pending??[],d=e?.paired??[],[f,p]=(0,C.useState)(null),[m,h]=(0,C.useState)(!1),[g,_]=(0,C.useState)(null),[y,b]=(0,C.useState)(null),[x,w]=(0,C.useState)(null),T=async()=>{if(f){h(!0),_(null);try{let e=await l(N[f.kind],P(f));p(null),f.kind===`rotate`&&e?.token&&b({token:e.token,role:e.role??f.token.role}),r()}catch(e){_(o(e))}finally{h(!1)}}},E=f?F(f):null;return(0,j.jsxs)(v,{title:`Devices`,sub:`Pairing requests + role tokens.`,testId:`devices-panel`,actions:(0,j.jsx)(s,{onClick:r,disabled:t,children:t?`Loading…`:`Refresh`}),children:[n?(0,j.jsx)(a,{tone:`error`,message:n,hint:(0,j.jsx)(s,{onClick:r,children:`Retry`})}):t&&!e?(0,j.jsx)(a,{tone:`loading`,message:`Loading devices…`}):u.length===0&&d.length===0?(0,j.jsx)(a,{message:`No paired devices.`}):(0,j.jsxs)(`div`,{className:`ct-nodes__devices`,children:[u.length>0?(0,j.jsxs)(`section`,{"aria-label":`Pending pairing requests`,children:[(0,j.jsx)(`h3`,{className:`ct-nodes__heading`,children:`Pending`}),u.map(e=>(0,j.jsx)(R,{req:e,busy:m,onApprove:()=>p({kind:`approve`,request:e}),onReject:()=>p({kind:`reject`,request:e})},e.requestId))]}):null,d.length>0?(0,j.jsxs)(`section`,{"aria-label":`Paired devices`,children:[(0,j.jsx)(`h3`,{className:`ct-nodes__heading`,children:`Paired`}),d.map(e=>(0,j.jsx)(z,{device:e,busy:m,onLink:()=>w(e),onRotate:t=>p({kind:`rotate`,device:e,token:t}),onRevoke:t=>p({kind:`revoke`,device:e,token:t}),onUnlink:()=>p({kind:`unlink`,device:e}),onRemove:()=>p({kind:`remove`,device:e})},e.deviceId))]}):null]}),g?(0,j.jsx)(`div`,{className:`ct-nodes__callout`,role:`alert`,children:g}):null,(0,j.jsx)(S,{open:E!==null,title:E?.title??``,body:E?.body??``,confirmLabel:E?.label??``,danger:E?.danger??!1,busy:m,bodyClassName:`ct-nodes__confirm-body`,testId:`confirm-device-action`,onConfirm:()=>void T(),onCancel:()=>{p(null),_(null)}}),(0,j.jsx)(c,{open:y!==null,title:`New ${y?.role??`device`} token`,onClose:()=>b(null),width:`sm`,footer:(0,j.jsx)(s,{variant:`primary`,onClick:()=>b(null),"data-testid":`token-done`,children:`Done`}),children:y?(0,j.jsx)(L,{token:y.token}):null}),x===null?null:(0,j.jsx)(M,{device:x,onClose:()=>w(null),onLinked:()=>{w(null),r()}})]})}function L({token:e}){let[t,n]=(0,C.useState)(!1);return(0,j.jsxs)(`div`,{className:`ct-nodes__token-reveal`,children:[(0,j.jsx)(`p`,{children:`Copy it now — it is shown only once and is not stored by the console.`}),(0,j.jsxs)(`div`,{className:`ct-nodes__token-line`,children:[(0,j.jsx)(`code`,{className:`ct-mono`,"data-testid":`rotated-token`,children:e}),(0,j.jsx)(s,{size:`sm`,onClick:()=>{navigator.clipboard?.writeText(e).then(()=>n(!0)).catch(()=>n(!1))},children:t?`Copied`:`Copy`})]})]})}function R({req:e,busy:t,onApprove:n,onReject:i}){return(0,j.jsxs)(`div`,{className:`ct-nodes__list-item`,children:[(0,j.jsxs)(`div`,{className:`ct-nodes__list-main`,children:[(0,j.jsx)(`div`,{className:`ct-nodes__list-title`,children:E(e)}),(0,j.jsxs)(`div`,{className:`ct-nodes__list-sub ct-mono`,children:[e.deviceId,e.remoteIp?` · ${e.remoteIp}`:``]}),(0,j.jsxs)(`div`,{className:`ct-nodes__list-sub`,children:[e.role?.trim()?`role: ${e.role}`:`role: —`,typeof e.ts==`number`?` · requested ${r(e.ts)}`:``,e.isRepair?` · repair`:``]})]}),(0,j.jsxs)(`div`,{className:`ct-nodes__row-actions`,children:[(0,j.jsx)(s,{size:`sm`,variant:`primary`,disabled:t,"aria-label":`Approve device ${E(e)}`,onClick:n,children:`Approve`}),(0,j.jsx)(s,{size:`sm`,variant:`danger`,disabled:t,"aria-label":`Reject device ${E(e)}`,onClick:i,children:`Reject`})]})]})}function z({device:e,busy:t,onLink:n,onRotate:r,onRevoke:i,onUnlink:a,onRemove:o}){let c=Array.isArray(e.tokens)?e.tokens:[];return(0,j.jsxs)(`div`,{className:`ct-nodes__list-item`,children:[(0,j.jsxs)(`div`,{className:`ct-nodes__list-main`,children:[(0,j.jsx)(`div`,{className:`ct-nodes__list-title`,children:E(e)}),(0,j.jsxs)(`div`,{className:`ct-nodes__list-sub ct-mono`,children:[e.deviceId,e.remoteIp?` · ${e.remoteIp}`:``]}),(0,j.jsxs)(`div`,{className:`ct-nodes__list-sub`,children:[`roles: `,O(e.roles),` · scopes: `,O(e.scopes)]}),(0,j.jsxs)(`div`,{className:`ct-nodes__list-sub`,children:[`Identity:`,` `,e.identity?(0,j.jsx)(_,{tone:`accent`,children:e.identity}):(0,j.jsx)(`span`,{className:`ct-muted`,children:`Not linked`})]}),c.length===0?(0,j.jsx)(`div`,{className:`ct-nodes__list-sub`,children:`Tokens: none`}):(0,j.jsx)(`div`,{className:`ct-nodes__tokens`,children:c.map(n=>(0,j.jsx)(B,{deviceId:e.deviceId,token:n,busy:t,onRotate:()=>r(n),onRevoke:()=>i(n)},n.role))})]}),(0,j.jsxs)(`div`,{className:`ct-nodes__row-actions`,children:[e.identity?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(s,{size:`sm`,disabled:t,onClick:n,children:`Change identity`}),(0,j.jsx)(s,{size:`sm`,variant:`danger`,disabled:t,onClick:a,children:`Unlink`})]}):(0,j.jsx)(s,{size:`sm`,variant:`primary`,disabled:t,onClick:n,children:`Link identity`}),(0,j.jsx)(s,{size:`sm`,variant:`danger`,disabled:t,onClick:o,children:`Remove`})]})]})}function B({deviceId:e,token:t,busy:n,onRotate:i,onRevoke:a}){let o=k(t),c=A(t)===`revoked`;return(0,j.jsxs)(`div`,{className:`ct-nodes__token-row`,children:[(0,j.jsxs)(`span`,{className:`ct-nodes__list-sub`,children:[(0,j.jsx)(`span`,{className:`ct-mono`,children:e}),` · `,t.role,` ·`,` `,(0,j.jsx)(_,{tone:c?`danger`:`ok`,children:A(t)}),` · scopes:`,` `,O(t.scopes),o?` · ${r(o)}`:``]}),(0,j.jsxs)(`span`,{className:`ct-nodes__row-actions`,children:[(0,j.jsx)(s,{size:`sm`,disabled:n,"aria-label":`Rotate ${t.role} token`,onClick:i,children:`Rotate`}),c?null:(0,j.jsx)(s,{size:`sm`,variant:`danger`,disabled:n,"aria-label":`Revoke ${t.role} token`,onClick:a,children:`Revoke`})]})]})}var V=`__defaults__`;function H(e){return e===`allowlist`||e===`full`||e===`deny`?e:`deny`}function U(e){return e===`always`||e===`off`||e===`on-miss`?e:`on-miss`}function W(e){return{security:H(e?.security),ask:U(e?.ask),askFallback:H(e?.askFallback??`deny`),autoAllowSkills:e?.autoAllowSkills===!0}}function G(e){if(!e||e.kind===`gateway`)return{method:`exec.approvals.get`,params:{}};let t=e.nodeId.trim();return t?{method:`exec.approvals.node.get`,params:{nodeId:t}}:null}function ee(e,t){if(!e||e.kind===`gateway`)return{method:`exec.approvals.set`,params:t};let n=e.nodeId.trim();return n?{method:`exec.approvals.node.set`,params:{...t,nodeId:n}}:null}function te(e){let t={"system.execApprovals.get":!0,"system.execApprovals.set":!0},n=[];for(let r of e){if(!(Array.isArray(r.commands)?r.commands:[]).some(e=>t[String(e)])||!r.nodeId.trim())continue;let e=r.displayName?.trim();n.push({id:r.nodeId,label:!e||e===r.nodeId?r.nodeId:`${e} · ${r.nodeId}`})}return n.sort((e,t)=>e.label.localeCompare(t.label)),n}function ne(e,t){let n=new Map;for(let t of e)t.id.trim()&&n.set(t.id,{id:t.id,name:t.name,isDefault:t.id===`main`});for(let e of Object.keys(t?.agents??{}))n.has(e)||n.set(e,{id:e,isDefault:e===`main`});let r=Array.from(n.values());return r.length===0&&r.push({id:`main`,isDefault:!0}),r.sort((e,t)=>e.isDefault===t.isDefault?(e.name?.trim()||e.id).localeCompare(t.name?.trim()||t.id):e.isDefault?-1:1),r}function re(e,t){return e===`__defaults__`?V:e&&t.some(t=>t.id===e)?e:V}function K(e,t,n){let r=m(e);return f(r,t,n),r}function q(e,t){let n=m(e);return p(n,t),n}var J=[{value:`deny`,label:`Deny`},{value:`allowlist`,label:`Allowlist`},{value:`full`,label:`Full`}],ie=[{value:`off`,label:`Off`},{value:`on-miss`,label:`On miss`},{value:`always`,label:`Always`}],Y=`__default__`;function X({nodes:e}){let t=i(e=>e.request),[n,r]=(0,C.useState)({kind:`gateway`}),[c,l]=(0,C.useState)(null),[u,d]=(0,C.useState)({form:{},dirty:!1}),[f,p]=(0,C.useState)(null),[g,_]=(0,C.useState)(!1),[y,x]=(0,C.useState)(!1),[S,w]=(0,C.useState)(null),T=(0,C.useRef)(0),E=h(`agents.list`,{}),D=te(e),O=n.kind===`gateway`||n.nodeId?.trim()!==``,k=(0,C.useCallback)(async()=>{let e=++T.current,r=G(n);if(_(!0),w(null),!r){w(`Select a node before loading exec approvals.`),_(!1);return}try{let n=await t(r.method,r.params);if(e!==T.current)return;l(n),d({form:m(n.file??{}),dirty:!1})}catch(t){e===T.current&&w(o(t))}finally{e===T.current&&_(!1)}},[t,n]);(0,C.useEffect)(()=>{k()},[k]);let A=(e,t)=>{l(null),d({form:{},dirty:!1}),p(null),r(e===`gateway`?{kind:`gateway`}:{kind:`node`,nodeId:t??``})},M=async()=>{let e=c?.hash;if(!e){w(`Exec approvals hash missing; reload and retry.`);return}x(!0),w(null);try{let r=ee(n,{file:u.form,baseHash:e});if(!r){w(`Select a node before saving exec approvals.`);return}await t(r.method,r.params),d(e=>({...e,dirty:!1})),await k()}catch(e){w(o(e))}finally{x(!1)}},N=W(u.form.defaults),P=ne(E.data?.agents??[],u.form),F=re(f,P),I=F===V,L=I?[`defaults`]:[`agents`,F],R=I?null:u.form.agents?.[F]??null,z=g||y,B=(e,t)=>{d(n=>({form:K(n.form,[...L,e],t),dirty:!0}))},H=e=>{d(t=>({form:q(t.form,[...L,e]),dirty:!0}))},U=[`agents`,F,`allowlist`],X=R?.allowlist??[];return(0,j.jsxs)(v,{title:`Exec approvals`,sub:`Allowlist and approval policy for exec host=gateway/node.`,testId:`exec-approvals-panel`,actions:(0,j.jsx)(s,{variant:`primary`,onClick:()=>void M(),disabled:z||!u.dirty||!O,children:y?`Saving…`:`Save`}),children:[S?(0,j.jsxs)(`div`,{className:`ct-nodes__callout`,role:`alert`,children:[(0,j.jsx)(`span`,{children:S}),(0,j.jsx)(s,{size:`sm`,onClick:()=>void k(),disabled:g,children:`Reload`})]}):null,(0,j.jsxs)(`div`,{className:`ct-nodes__target-row`,children:[(0,j.jsxs)(`label`,{className:`ct-nodes__field`,children:[`Host`,(0,j.jsxs)(`select`,{"aria-label":`Exec approvals host`,value:n.kind,disabled:z,onChange:e=>{e.target.value===`node`?A(`node`,n.kind===`node`?n.nodeId:D[0]?.id??``):A(`gateway`,null)},children:[(0,j.jsx)(`option`,{value:`gateway`,children:`Gateway`}),(0,j.jsx)(`option`,{value:`node`,children:`Node`})]})]}),n.kind===`node`?(0,j.jsxs)(`label`,{className:`ct-nodes__field`,children:[`Node`,(0,j.jsxs)(`select`,{"aria-label":`Exec approvals node`,value:n.nodeId??``,disabled:z||D.length===0,onChange:e=>A(`node`,e.target.value||null),children:[(0,j.jsx)(`option`,{value:``,children:`Select node`}),D.map(e=>(0,j.jsx)(`option`,{value:e.id,children:e.label},e.id))]})]}):null]}),n.kind===`node`&&D.length===0?(0,j.jsx)(a,{message:`No nodes advertise exec approvals yet.`}):null,g&&!c?(0,j.jsx)(a,{tone:`loading`,message:`Loading approvals…`}):c?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsxs)(`div`,{className:`ct-nodes__scope-row`,role:`group`,"aria-label":`Exec approvals scope`,children:[(0,j.jsx)(`span`,{className:`ct-nodes__heading`,children:`Scope`}),(0,j.jsx)(b,{label:`Scope`,value:F,options:[{value:V,label:`Defaults`},...P.map(e=>({value:e.id,label:e.name?.trim()?`${e.name} (${e.id})`:e.id}))],onChange:p})]}),(0,j.jsxs)(`dl`,{className:`ct-kv ct-nodes__policy`,children:[(0,j.jsx)(`dt`,{children:`Security`}),(0,j.jsx)(`dd`,{children:(0,j.jsx)(Z,{ariaLabel:`Security`,disabled:z,value:I?N.security:R?.security??Y,defaultValueText:N.security,showUseDefault:!I,options:J,onChange:e=>{!I&&e===Y?H(`security`):B(`security`,e)}})}),(0,j.jsx)(`dt`,{children:`Ask`}),(0,j.jsx)(`dd`,{children:(0,j.jsx)(Z,{ariaLabel:`Ask`,disabled:z,value:I?N.ask:R?.ask??Y,defaultValueText:N.ask,showUseDefault:!I,options:ie,onChange:e=>{!I&&e===Y?H(`ask`):B(`ask`,e)}})}),(0,j.jsx)(`dt`,{children:`Ask fallback`}),(0,j.jsx)(`dd`,{children:(0,j.jsx)(Z,{ariaLabel:`Ask fallback`,disabled:z,value:I?N.askFallback:R?.askFallback??Y,defaultValueText:N.askFallback,showUseDefault:!I,options:J,onChange:e=>{!I&&e===Y?H(`askFallback`):B(`askFallback`,e)}})}),(0,j.jsx)(`dt`,{children:`Auto-allow skill CLIs`}),(0,j.jsx)(`dd`,{children:(0,j.jsxs)(`span`,{className:`ct-nodes__check-row`,children:[(0,j.jsx)(`input`,{type:`checkbox`,"aria-label":`Auto-allow skill CLIs`,disabled:z,checked:I?N.autoAllowSkills:R?.autoAllowSkills??N.autoAllowSkills,onChange:e=>B(`autoAllowSkills`,e.target.checked)}),!I&&R?.autoAllowSkills!==void 0?(0,j.jsx)(s,{size:`sm`,disabled:z,onClick:()=>H(`autoAllowSkills`),children:`Use default`}):null]})})]}),I?null:(0,j.jsxs)(`div`,{className:`ct-nodes__allowlist`,children:[(0,j.jsxs)(`div`,{className:`ct-nodes__allowlist-head`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`h3`,{className:`ct-nodes__heading`,children:`Allowlist`}),(0,j.jsx)(`p`,{className:`ct-nodes__list-sub`,children:`Case-insensitive glob patterns.`})]}),(0,j.jsx)(s,{size:`sm`,disabled:z,onClick:()=>{let e=[...X,{pattern:``}];d(t=>({form:K(t.form,U,e),dirty:!0}))},children:`Add pattern`})]}),X.length===0?(0,j.jsx)(a,{message:`No allowlist entries yet.`}):X.map((e,t)=>(0,j.jsx)(ae,{entry:e,index:t,disabled:z,onPatternChange:e=>{d(n=>({form:K(n.form,[...U,t,`pattern`],e),dirty:!0}))},onRemove:()=>{d(e=>({form:X.length<=1?q(e.form,U):q(e.form,[...U,t]),dirty:!0}))}},e.id??t))]})]}):null]})}function Z({ariaLabel:e,value:t,options:n,showUseDefault:r,defaultValueText:i,disabled:a,onChange:o}){return(0,j.jsxs)(`select`,{"aria-label":e,value:t,disabled:a,onChange:e=>o(e.target.value),children:[r?(0,j.jsxs)(`option`,{value:Y,children:[`Use default (`,i,`)`]}):null,n.map(e=>(0,j.jsx)(`option`,{value:e.value,children:e.label},e.value))]})}function ae({entry:e,index:t,disabled:n,onPatternChange:i,onRemove:a}){return(0,j.jsxs)(`div`,{className:`ct-nodes__list-item`,children:[(0,j.jsxs)(`div`,{className:`ct-nodes__list-main`,children:[(0,j.jsxs)(`div`,{className:`ct-nodes__list-sub`,children:[`Last used: `,e.lastUsedAt?r(e.lastUsedAt):`never`]}),e.lastUsedCommand?(0,j.jsx)(`div`,{className:`ct-nodes__list-sub ct-mono`,children:e.lastUsedCommand}):null,e.lastResolvedPath?(0,j.jsx)(`div`,{className:`ct-nodes__list-sub ct-mono`,children:e.lastResolvedPath}):null]}),(0,j.jsxs)(`div`,{className:`ct-nodes__row-actions`,children:[(0,j.jsx)(`input`,{type:`text`,className:`ct-nodes__pattern-input`,"aria-label":`Allowlist pattern ${t+1}`,value:e.pattern??``,disabled:n,onChange:e=>i(e.target.value)}),(0,j.jsx)(s,{size:`sm`,variant:`danger`,disabled:n,onClick:a,children:`Remove`})]})]})}function oe({nodeId:e,paired:t,onClose:n,onRenamed:c}){let l=i(e=>e.request),u=h(`node.describe`,{nodeId:e}),[f,p]=(0,C.useState)(null),[m,g]=(0,C.useState)(!1),[y,b]=(0,C.useState)(null),S=u.data,w=f??(S?.displayName?.trim()||e),E=async()=>{let t=w.trim();if(t){g(!0),b(null);try{await l(`node.rename`,{nodeId:e,displayName:t}),p(null),u.reload(),c()}catch(e){b(o(e))}finally{g(!1)}}};return(0,j.jsx)(v,{title:T({nodeId:e,displayName:S?.displayName}),sub:(0,j.jsx)(`span`,{className:`ct-mono`,children:e}),testId:`node-drawer`,actions:(0,j.jsx)(`button`,{type:`button`,className:`ct-icon-btn`,"aria-label":`Close node details`,onClick:n,children:(0,j.jsx)(d,{name:`x`})}),children:(0,j.jsx)(`div`,{className:`ct-nodes__aside-body`,children:u.error?(0,j.jsx)(a,{tone:`error`,message:u.error,hint:(0,j.jsx)(s,{onClick:u.reload,children:`Retry`})}):u.loading&&!S?(0,j.jsx)(a,{tone:`loading`,message:`Loading node…`}):S?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsxs)(`div`,{className:`ct-nodes__status-row`,children:[S.connected?(0,j.jsxs)(`span`,{className:`ct-nodes__status`,children:[(0,j.jsx)(x,{tone:`ok`,label:`Connected`,pulse:!0}),` Connected`]}):(0,j.jsx)(_,{children:`Offline`}),S.paired?(0,j.jsx)(_,{tone:`accent`,children:`Paired`}):null]}),(0,j.jsxs)(`dl`,{className:`ct-kv`,children:[(0,j.jsx)(`dt`,{children:`Platform`}),(0,j.jsx)(`dd`,{children:S.platform??`—`}),(0,j.jsx)(`dt`,{children:`Version`}),(0,j.jsx)(`dd`,{children:S.version??`—`}),(0,j.jsx)(`dt`,{children:`Device`}),(0,j.jsx)(`dd`,{children:S.deviceFamily??`—`}),(0,j.jsx)(`dt`,{children:`Model`}),(0,j.jsx)(`dd`,{children:S.modelIdentifier??`—`}),(0,j.jsx)(`dt`,{children:`IP`}),(0,j.jsx)(`dd`,{className:`ct-mono`,children:S.remoteIp??`—`}),(0,j.jsx)(`dt`,{children:`Connected`}),(0,j.jsx)(`dd`,{children:S.connectedAtMs?r(S.connectedAtMs):`—`}),(0,j.jsx)(`dt`,{children:`Caps`}),(0,j.jsx)(`dd`,{className:`ct-mono`,children:O(S.caps)}),(0,j.jsx)(`dt`,{children:`Commands`}),(0,j.jsx)(`dd`,{className:`ct-mono`,children:O(S.commands)})]}),t?(0,j.jsxs)(`div`,{className:`ct-nodes__rename`,children:[(0,j.jsxs)(`label`,{className:`ct-nodes__field`,children:[`Display name`,(0,j.jsx)(`input`,{type:`text`,value:w,onChange:e=>p(e.target.value),"aria-label":`Node display name`})]}),(0,j.jsx)(s,{variant:`primary`,onClick:()=>void E(),disabled:m,children:m?`Saving…`:`Rename`})]}):null,y?(0,j.jsx)(`div`,{className:`ct-nodes__callout`,role:`alert`,children:y}):null]}):null})})}function se({nodes:e,loading:t,error:n,selectedNodeId:r,onSelectNode:c,onRefresh:l}){let u=i(e=>e.request),[d,f]=(0,C.useState)(null),[p,m]=(0,C.useState)(!1),[h,g]=(0,C.useState)(null),_=async()=>{if(d){m(!0),g(null);try{await u(d.kind===`approve`?`node.pair.approve`:`node.pair.reject`,{requestId:d.node.pendingRequestId}),f(null),l()}catch(e){g(o(e))}finally{m(!1)}}};return(0,j.jsxs)(v,{title:`Nodes`,sub:`Paired devices and live links.`,testId:`nodes-panel`,actions:(0,j.jsx)(s,{onClick:l,disabled:t,children:t?`Loading…`:`Refresh`}),children:[n?(0,j.jsx)(a,{tone:`error`,message:n,hint:(0,j.jsx)(s,{onClick:l,children:`Retry`})}):t&&e.length===0?(0,j.jsx)(a,{tone:`loading`,message:`Loading nodes…`}):e.length===0?(0,j.jsx)(a,{message:`No nodes found.`}):(0,j.jsx)(y,{label:`Nodes`,rows:e,rowKey:e=>e.nodeId,selectedKey:r,onRowClick:c,columns:[{key:`name`,label:`Node`,render:e=>(0,j.jsxs)(`div`,{className:`ct-cell-stack`,children:[(0,j.jsx)(`span`,{className:`ct-cell-stack__main`,children:T(e)}),(0,j.jsx)(`span`,{className:`ct-cell-stack__sub`,children:e.nodeId})]})},{key:`status`,label:`Status`,render:e=>(0,j.jsx)(ce,{node:e})},{key:`platform`,label:`Platform`,render:e=>(0,j.jsxs)(`div`,{className:`ct-cell-stack`,children:[(0,j.jsx)(`span`,{className:`ct-cell-stack__main`,children:e.platform??`—`}),(0,j.jsx)(`span`,{className:`ct-cell-stack__sub`,children:e.version??``})]})},{key:`ip`,label:`IP`,mono:!0,render:e=>e.remoteIp??`—`},{key:`caps`,label:`Caps`,render:e=>(0,j.jsx)(Q,{values:e.caps})},{key:`commands`,label:`Commands`,render:e=>(0,j.jsx)(Q,{values:e.commands})},{key:`actions`,label:``,render:e=>D(e)?(0,j.jsxs)(`div`,{className:`ct-nodes__row-actions`,children:[(0,j.jsx)(s,{size:`sm`,variant:`primary`,"aria-label":`Approve pairing for ${T(e)}`,onClick:t=>{t.stopPropagation(),f({kind:`approve`,node:e})},children:`Approve`}),(0,j.jsx)(s,{size:`sm`,variant:`danger`,"aria-label":`Reject pairing for ${T(e)}`,onClick:t=>{t.stopPropagation(),f({kind:`reject`,node:e})},children:`Reject`})]}):null}]}),h?(0,j.jsx)(`div`,{className:`ct-nodes__callout`,role:`alert`,children:h}):null,(0,j.jsx)(S,{open:d!==null,title:d?.kind===`approve`?`Approve node pairing`:`Reject node pairing`,body:d?`${d.kind===`approve`?`Approve`:`Reject`} the pairing request from ${T(d.node)} (${d.node.nodeId})?`:``,confirmLabel:d?.kind===`approve`?`Approve`:`Reject`,danger:d?.kind===`reject`,busy:p,bodyClassName:`ct-nodes__confirm-body`,testId:`confirm-node-pairing`,onConfirm:()=>void _(),onCancel:()=>{f(null),g(null)}})]})}function ce({node:e}){return e.connected?(0,j.jsxs)(`span`,{className:`ct-nodes__status`,children:[(0,j.jsx)(x,{tone:`ok`,label:`Connected`,pulse:!0}),`Connected`]}):D(e)?(0,j.jsxs)(`span`,{className:`ct-nodes__status`,children:[(0,j.jsx)(x,{tone:`warn`,label:`Pairing pending`,pulse:!0}),`Pending`]}):(0,j.jsxs)(`span`,{className:`ct-nodes__status`,children:[(0,j.jsx)(x,{tone:`neutral`,label:`Paired offline`}),(0,j.jsx)(_,{children:`Paired`})]})}function Q({values:e}){return!e||e.length===0?(0,j.jsx)(j.Fragment,{children:`—`}):(0,j.jsxs)(`span`,{className:`ct-nodes__chips`,title:O(e),children:[e.slice(0,3).map(e=>(0,j.jsx)(`span`,{className:`ct-nodes__chip`,children:e},e)),e.length>3?(0,j.jsxs)(`span`,{className:`ct-nodes__chip-more`,children:[`+`,e.length-3]}):null]})}var $=[`device.pair.requested`,`device.pair.resolved`,`node.pair.requested`,`node.pair.resolved`];function le(){let e=i(e=>e.request),t=h(`node.list`,{},{refreshMs:g,invalidateOn:$}),n=h(`device.pair.list`,{},{refreshMs:g,invalidateOn:$}),[r,a]=(0,C.useState)(null),o=(0,C.useCallback)(()=>{t.reload(),n.reload(),l.getState().refresh(e)},[t.reload,n.reload,e]);(0,C.useEffect)(()=>{let{subscribe:t}=i.getState(),n=null,r=()=>{n===null&&(n=window.setTimeout(()=>{n=null,!(!u()||i.getState().status!==`connected`)&&l.getState().refresh(e)},500))},a=$.map(e=>t(e,r));return()=>{n!==null&&(window.clearTimeout(n),n=null);for(let e of a)e()}},[e]);let s=w(t.data?.nodes??[]),c=s.find(e=>e.nodeId===r)??null;return(0,j.jsxs)(`div`,{className:`ct-page`,"data-testid":`nodes-view`,children:[(0,j.jsx)(`header`,{className:`ct-page__head`,children:(0,j.jsxs)(`div`,{className:`ct-page__head-text`,children:[(0,j.jsx)(`h1`,{className:`ct-page__title`,children:`Nodes`}),(0,j.jsx)(`p`,{className:`ct-page__sub`,children:`Fleet nodes, device pairing and exec approvals.`})]})}),(0,j.jsx)(X,{nodes:s}),(0,j.jsxs)(`div`,{className:c?`ct-nodes__layout ct-nodes__layout--open`:`ct-nodes__layout`,children:[(0,j.jsx)(se,{nodes:s,loading:t.loading,error:t.error,selectedNodeId:r,onSelectNode:e=>a(e.nodeId),onRefresh:o}),c?(0,j.jsx)(oe,{nodeId:c.nodeId,paired:c.paired,onClose:()=>a(null),onRenamed:o},c.nodeId):null]}),(0,j.jsx)(I,{devices:n.data,loading:n.loading,error:n.error,onRefresh:o})]})}export{le as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,a as t,c as n,d as r,h as i,i as a,l as o,n as s,r as c,s as l}from"./format-
|
|
1
|
+
import{_ as e,a as t,c as n,d as r,h as i,i as a,l as o,n as s,r as c,s as l}from"./format-BPrfsCHW.js";import{i as u}from"./runs-store-BZTDbQro.js";import{n as d}from"./links-vgPLVF05.js";import{a as f}from"./index-ChHyE-y3.js";import{n as p,t as m}from"./use-gateway-query-7iLwemQz.js";import{t as h}from"./Panel-CqcbBXzJ.js";import{t as g}from"./EntityLink-CMtTP9Dk.js";import{t as _}from"./Stat-BRQhQ01w.js";import{t as v}from"./StatusDot-CjtPcYD9.js";import{n as y,r as b,t as x}from"./usage-range-C-j75vK8.js";import{t as S}from"./UpdatedAgo-CJqGVu6_.js";import{a as C,r as w}from"./run-rows-1MUje5J6.js";var T=e(i(),1);function E(e,t){return t===0?`neutral`:e===t?`ok`:e===0?`danger`:`warn`}function D(e){let t=e.channelAccounts??{},n=(e.channelOrder??Object.keys(t)).map(n=>{let r=(t[n]??[]).filter(e=>e.configured!==!1),i=r.filter(e=>e.connected??e.running??!1).length;return{id:n,label:e.channelLabels?.[n]??n,connected:i,configured:r.length,tone:E(i,r.length)}}).filter(e=>e.configured>0),r=n.reduce((e,t)=>e+t.connected,0),i=n.reduce((e,t)=>e+t.configured,0);return{channels:n,connected:r,configured:i,tone:E(r,i)}}var O=n(),k={connected:{label:`Connected`,tone:`ok`},reconnecting:{label:`Reconnecting`,tone:`warn`},offline:{label:`Offline`,tone:`danger`}};function A({loading:e,error:t,empty:n,testId:r}){return t?(0,O.jsx)(l,{tone:`error`,message:`Unavailable right now.`,hint:(0,O.jsx)(`span`,{"data-testid":r,children:t})}):e?(0,O.jsx)(l,{tone:`loading`,message:`Loading…`}):(0,O.jsx)(l,{message:n})}function j(){let e=o(e=>e.status),n=o(e=>e.hello),[i,E]=(0,T.useState)(`24h`),j=b(i),M=p(`status`,{},{refreshMs:m}),N=p(`health`,{},{refreshMs:m}),P=p(`channels.status`,{probe:!1,timeoutMs:8e3},{refreshMs:m}),F=p(`usage.cost`,j,{refreshMs:m}),I=p(`cron.list`,{enabled:`enabled`,sortBy:`nextRunAtMs`,sortDir:`asc`,limit:5},{refreshMs:m}),L=u(e=>e.view),R=f(e=>e),z=r(e=>e.pending),B=r(e=>e.openPanel),V=w(L).filter(e=>e.filter===`running`),H=P.data?D(P.data):null,U=k[e],W=n?.snapshot?.uptimeMs,G=(I.data?.jobs??[]).filter(e=>e.enabled!==!1&&typeof e.state?.nextRunAtMs==`number`),K=F.data?.totals?.missingCostEntries??0,q=N.data?.recovery?.counts?.blocked;return(0,O.jsxs)(`div`,{className:`ct-page`,"data-testid":`overview-view`,children:[(0,O.jsxs)(`header`,{className:`ct-page__head`,children:[(0,O.jsxs)(`div`,{className:`ct-page__head-text`,children:[(0,O.jsx)(`h1`,{className:`ct-page__title`,children:`Overview`}),(0,O.jsx)(`p`,{className:`ct-page__sub`,children:`Health of this installation at a glance.`})]}),(0,O.jsx)(`div`,{className:`ct-segmented`,role:`group`,"aria-label":`Spend range`,children:x.map(e=>(0,O.jsx)(`button`,{type:`button`,className:e===i?`ct-segmented__item ct-segmented__item--active`:`ct-segmented__item`,"aria-pressed":e===i,onClick:()=>E(e),children:y[e]},e))}),(0,O.jsx)(S,{at:M.updatedAt,error:M.error})]}),(0,O.jsxs)(`div`,{className:`ct-stat-grid`,children:[(0,O.jsx)(_,{label:`Gateway`,tone:U.tone,value:U.label,sub:(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(`span`,{className:`ct-mono`,children:n?.server?.version??`—`}),typeof W==`number`?` · up ${c(W)}`:null,N.data?.ok===!0?` · healthy`:null]})}),(0,O.jsx)(_,{label:`Recovery`,tone:typeof q==`number`&&q>0?`warn`:void 0,value:typeof q==`number`?q:`—`,sub:(0,O.jsx)(g,{to:d.view(`recovery`),children:`Review`})}),(0,O.jsx)(_,{label:`Channels`,tone:H?.tone,value:H?`${H.connected}/${H.configured}`:`—`,sub:P.error?`Status unavailable`:(0,O.jsx)(g,{to:d.view(`channels`),children:`Accounts connected`})}),(0,O.jsx)(_,{label:`Active runs`,tone:V.length>0?`accent`:void 0,value:L?V.length:`—`,sub:(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(g,{to:d.view(`sessions`),children:`${M.data?.sessions?.count??`—`} sessions`}),` · `,(0,O.jsx)(g,{to:d.runs({filter:`running`}),children:`View running`})]})}),(0,O.jsx)(_,{label:`Spend`,value:s(F.data?.totals?.totalCost),sub:F.error?`Usage unavailable`:(0,O.jsx)(g,{to:d.view(`usage`),children:`${t(F.data?.totals?.totalTokens)} tokens · ${y[i].toLowerCase()}${K>0?` · ${K} unpriced`:``}`})})]}),M.error?(0,O.jsx)(l,{tone:`error`,message:`Gateway status is unavailable.`,hint:(0,O.jsx)(`span`,{"data-testid":`overview-gateway-error`,children:M.error})}):null,(0,O.jsxs)(`div`,{className:`ct-grid`,children:[(0,O.jsx)(h,{className:`ct-span-6`,title:`Active runs`,sub:`Live across all agents`,children:V.length===0?(0,O.jsx)(l,{message:L?`Nothing is running right now.`:`Loading…`}):(0,O.jsx)(`ul`,{className:`ct-list`,children:V.slice(0,5).map(e=>(0,O.jsxs)(`li`,{className:`ct-list__item`,children:[(0,O.jsx)(v,{tone:`accent`,label:e.entry.status,pulse:!0}),(0,O.jsx)(g,{to:d.run(e.entry.key),className:`ct-list__main`,children:e.entry.title}),(0,O.jsx)(`span`,{className:`ct-list__meta`,children:c(C(e))})]},e.entry.key))})}),(0,O.jsx)(h,{className:`ct-span-6`,title:`Channel health`,sub:`Connected accounts per transport`,testId:`overview-channels`,children:H&&H.channels.length>0?(0,O.jsx)(`ul`,{className:`ct-list`,children:H.channels.map(e=>(0,O.jsxs)(`li`,{className:`ct-list__item`,children:[(0,O.jsx)(v,{tone:e.tone,label:e.label}),(0,O.jsx)(`span`,{className:`ct-list__main`,children:e.label}),(0,O.jsx)(`span`,{className:`ct-list__meta`,children:`${e.connected}/${e.configured}`})]},e.id))}):(0,O.jsx)(A,{loading:P.loading,error:P.error,empty:`No channels are configured.`,testId:`overview-channels-error`})}),(0,O.jsx)(h,{className:`ct-span-4`,title:`Upcoming automations`,sub:`Next scheduled runs`,children:G.length>0?(0,O.jsx)(`ul`,{className:`ct-list`,children:G.slice(0,5).map(e=>(0,O.jsxs)(`li`,{className:`ct-list__item`,children:[(0,O.jsx)(`span`,{className:`ct-list__main`,children:e.name}),(0,O.jsx)(`span`,{className:`ct-list__meta`,children:a(e.state?.nextRunAtMs)})]},e.id))}):(0,O.jsx)(A,{loading:I.loading,error:I.error,empty:`No automations are scheduled.`,testId:`overview-cron-error`})}),(0,O.jsx)(h,{className:`ct-span-4`,title:`Nodes`,sub:`Paired devices`,children:R.error&&R.paired===0?(0,O.jsx)(A,{loading:!1,error:R.error,empty:``,testId:`overview-nodes-error`}):(0,O.jsxs)(`div`,{className:`ct-stat-grid`,children:[(0,O.jsx)(_,{label:`Connected`,value:R.connected}),(0,O.jsx)(_,{label:`Paired`,value:R.paired})]})}),(0,O.jsx)(h,{className:`ct-span-4`,title:`Pending approvals`,sub:`Requested since this console connected`,children:z.length===0?(0,O.jsx)(l,{message:`Nothing is waiting for approval.`}):(0,O.jsx)(`ul`,{className:`ct-list`,children:z.slice(0,3).map(e=>(0,O.jsxs)(`li`,{className:`ct-list__item`,children:[(0,O.jsx)(v,{tone:`warn`,label:`Waiting`}),(0,O.jsx)(`button`,{type:`button`,className:`ct-link-btn ct-list__main ct-mono`,onClick:B,children:e.command??`(no command)`}),(0,O.jsx)(`span`,{className:`ct-list__meta`,children:e.agentId??``})]},e.id))})})]})]})}export{j as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as e}from"./format-
|
|
1
|
+
import{c as e}from"./format-BPrfsCHW.js";var t=e();function n({title:e,sub:n,actions:r,className:i,children:a,testId:o}){return(0,t.jsxs)(`section`,{className:[`ct-panel`,i].filter(Boolean).join(` `),"aria-label":e,"data-testid":o,children:[(0,t.jsxs)(`header`,{className:`ct-panel__head`,children:[(0,t.jsxs)(`div`,{className:`ct-panel__titles`,children:[(0,t.jsx)(`h2`,{className:`ct-panel__title`,children:e}),n===void 0?null:(0,t.jsx)(`p`,{className:`ct-panel__sub`,children:n})]}),r?(0,t.jsx)(`div`,{className:`ct-panel__actions`,children:r}):null]}),(0,t.jsx)(`div`,{className:`ct-panel__body`,children:a})]})}export{n as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,c as t,h as n,s as r,t as i}from"./format-
|
|
1
|
+
import{_ as e,c as t,h as n,s as r,t as i}from"./format-BPrfsCHW.js";var a=e(n(),1),o=t();function s({host:e,label:t,mount:n,props:s}){let c=(0,a.useRef)(null),[l,u]=(0,a.useState)(null);return(0,a.useEffect)(()=>{let t=c.current;if(!t)return;u(null);let r=new AbortController,a=null;try{let i=n(t,{host:e,signal:r.signal,props:s});i&&typeof i.dispose==`function`&&(a=i.dispose)}catch(e){u(i(e))}return()=>{r.abort();try{a?.()}catch{}t.replaceChildren()}},[e,n,JSON.stringify(s)]),l===null?(0,o.jsx)(`div`,{ref:c,className:`ct-plugin-mount`}):(0,o.jsx)(r,{tone:`error`,message:`${t} failed to render.`,hint:l})}export{s as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as e,s as t}from"./format-
|
|
1
|
+
import{c as e,s as t}from"./format-BPrfsCHW.js";import{o as n}from"./links-vgPLVF05.js";import{s as r}from"./index-ChHyE-y3.js";import{t as i}from"./PluginMount-CIP5T99f.js";var a=e();function o(){let e=n(),o=r(e=>e.status),s=r(e=>e.pages),c=e.params.get(`plugin`),l=e.params.get(`page`),u=c!==null&&l!==null?s.find(e=>e.pluginId===c&&e.page.id===l)??null:null;if(o===`idle`||o===`loading`)return(0,a.jsx)(`div`,{className:`ct-page`,"data-testid":`plugin-page-view`,children:(0,a.jsx)(t,{tone:`loading`,message:`Loading plugin UI…`})});if(u===null)return(0,a.jsx)(`div`,{className:`ct-page`,"data-testid":`plugin-page-view`,children:(0,a.jsx)(t,{message:`This plugin page is not available.`,hint:`Check Debug for plugin UI load failures, or add the plugin to gateway.controlUiV2.pluginUi.allow.`})});let d={};return e.params.forEach((e,t)=>{t!==`plugin`&&t!==`page`&&(d[t]=e)}),(0,a.jsxs)(`div`,{className:`ct-page`,"data-testid":`plugin-page-view`,children:[(0,a.jsx)(`header`,{className:`ct-page__head`,children:(0,a.jsx)(`div`,{className:`ct-page__head-text`,children:(0,a.jsx)(`h1`,{className:`ct-page__title`,children:u.page.label})})}),(0,a.jsx)(i,{host:u.host,label:u.page.label,mount:u.page.mount,props:d},`${u.pluginId}/${u.page.id}/${JSON.stringify(d)}`)]})}export{o as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as e}from"./format-
|
|
1
|
+
import{c as e}from"./format-BPrfsCHW.js";import{s as t}from"./index-ChHyE-y3.js";import{t as n}from"./PluginMount-CIP5T99f.js";var r=e();function i(e){let n=[...t(e=>e.panels)].toSorted((e,t)=>e.pluginId.localeCompare(t.pluginId));return e.placement===`session`?(0,r.jsx)(s,{entries:n.filter(a),props:e.props}):(0,r.jsx)(s,{entries:n.filter(o),props:e.props})}function a(e){return e.panel.placement===`session`}function o(e){return e.panel.placement===`run`}function s({entries:e,props:t}){return e.length===0?null:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(`h3`,{className:`ct-inspector__heading`,children:`Plugins`}),e.map(e=>(0,r.jsxs)(`details`,{open:!0,className:`ct-plugin-panel`,children:[(0,r.jsxs)(`summary`,{children:[(0,r.jsx)(`span`,{className:`ct-plugin-panel__label`,children:e.panel.label}),(0,r.jsx)(`span`,{className:`ct-plugin-panel__plugin`,children:e.pluginName})]}),(0,r.jsx)(n,{host:e.host,label:e.panel.label,mount:e.panel.mount,props:t},`${e.pluginId}/${e.panel.id}/${JSON.stringify(t)}`)]},`${e.pluginId}/${e.panel.id}`))]})}export{i as t};
|