dsh-zen-remote 2.0.3 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/AGENTS.md +15 -1
  2. package/README.md +11 -5
  3. package/README.zh-CN.md +11 -5
  4. package/docs/adr/0001-plugin-bridge-forwards-plugin-routes.md +15 -0
  5. package/docs/adr/0002-relay-emulates-websocket.md +8 -0
  6. package/docs/interface.md +3 -1
  7. package/docs/plugin-bridge.md +140 -0
  8. package/docs/remote-access.en.md +57 -0
  9. package/docs/remote-access.md +57 -0
  10. package/lib/adapters/dsh-better-sidebar/index.js +144 -0
  11. package/lib/adapters/dsh-better-sidebar/index.js.map +1 -0
  12. package/lib/adapters/dsh-better-sidebar/methods.js +198 -0
  13. package/lib/adapters/dsh-better-sidebar/methods.js.map +1 -0
  14. package/lib/adapters/index.js +17 -0
  15. package/lib/adapters/index.js.map +1 -0
  16. package/lib/adapters/types.js +17 -0
  17. package/lib/adapters/types.js.map +1 -0
  18. package/lib/admin-routes.js +51 -0
  19. package/lib/admin-routes.js.map +1 -1
  20. package/lib/client-routes.js +18 -1
  21. package/lib/client-routes.js.map +1 -1
  22. package/lib/client.js +449 -45
  23. package/lib/config.js +27 -0
  24. package/lib/config.js.map +1 -1
  25. package/lib/http.js +10 -0
  26. package/lib/http.js.map +1 -1
  27. package/lib/index.js +246 -0
  28. package/lib/index.js.map +1 -1
  29. package/lib/plugin-adapter-core.js +385 -0
  30. package/lib/plugin-adapter-core.js.map +1 -0
  31. package/lib/plugin-bridge.js +318 -0
  32. package/lib/plugin-bridge.js.map +1 -0
  33. package/lib/plugin-loopback.js +207 -0
  34. package/lib/plugin-loopback.js.map +1 -0
  35. package/lib/plugin-route-intercept.js +1103 -0
  36. package/lib/plugin-route-intercept.js.map +1 -0
  37. package/lib/plugin-tunnel.js +416 -0
  38. package/lib/plugin-tunnel.js.map +1 -0
  39. package/lib/relay-client.js +319 -2
  40. package/lib/relay-client.js.map +1 -1
  41. package/lib/relay-server.js +633 -0
  42. package/lib/relay-server.js.map +1 -1
  43. package/lib/types/adapters/dsh-better-sidebar/index.d.ts +27 -0
  44. package/lib/types/adapters/dsh-better-sidebar/index.d.ts.map +1 -0
  45. package/lib/types/adapters/dsh-better-sidebar/methods.d.ts +51 -0
  46. package/lib/types/adapters/dsh-better-sidebar/methods.d.ts.map +1 -0
  47. package/lib/types/adapters/index.d.ts +17 -0
  48. package/lib/types/adapters/index.d.ts.map +1 -0
  49. package/lib/types/adapters/types.d.ts +42 -0
  50. package/lib/types/adapters/types.d.ts.map +1 -0
  51. package/lib/types/admin-routes.d.ts +16 -0
  52. package/lib/types/admin-routes.d.ts.map +1 -1
  53. package/lib/types/client/effects/remote-session.d.ts +0 -22
  54. package/lib/types/client/effects/remote-session.d.ts.map +1 -1
  55. package/lib/types/client/locales.d.ts +16 -0
  56. package/lib/types/client/locales.d.ts.map +1 -1
  57. package/lib/types/client/settings/SettingsSection.d.ts.map +1 -1
  58. package/lib/types/client/styles/remote-session.css.d.ts +1 -1
  59. package/lib/types/client/styles/remote-session.css.d.ts.map +1 -1
  60. package/lib/types/client-data/plugin-bridge.d.ts +79 -0
  61. package/lib/types/client-data/plugin-bridge.d.ts.map +1 -0
  62. package/lib/types/client-data/remote-status.d.ts +20 -0
  63. package/lib/types/client-data/remote-status.d.ts.map +1 -1
  64. package/lib/types/client-data/settings-form.d.ts +37 -1
  65. package/lib/types/client-data/settings-form.d.ts.map +1 -1
  66. package/lib/types/client-routes.d.ts +13 -0
  67. package/lib/types/client-routes.d.ts.map +1 -1
  68. package/lib/types/config.d.ts +8 -0
  69. package/lib/types/config.d.ts.map +1 -1
  70. package/lib/types/http.d.ts +7 -0
  71. package/lib/types/http.d.ts.map +1 -1
  72. package/lib/types/index.d.ts +4 -0
  73. package/lib/types/index.d.ts.map +1 -1
  74. package/lib/types/plugin-adapter-core.d.ts +263 -0
  75. package/lib/types/plugin-adapter-core.d.ts.map +1 -0
  76. package/lib/types/plugin-bridge.d.ts +187 -0
  77. package/lib/types/plugin-bridge.d.ts.map +1 -0
  78. package/lib/types/plugin-loopback.d.ts +104 -0
  79. package/lib/types/plugin-loopback.d.ts.map +1 -0
  80. package/lib/types/plugin-route-intercept.d.ts +114 -0
  81. package/lib/types/plugin-route-intercept.d.ts.map +1 -0
  82. package/lib/types/plugin-tunnel.d.ts +96 -0
  83. package/lib/types/plugin-tunnel.d.ts.map +1 -0
  84. package/lib/types/relay-client.d.ts +76 -0
  85. package/lib/types/relay-client.d.ts.map +1 -1
  86. package/lib/types/relay-server.d.ts +32 -1
  87. package/lib/types/relay-server.d.ts.map +1 -1
  88. package/llms.txt +1 -0
  89. package/package.json +2 -2
  90. package/scripts/check-plugin-bridge-ui.mjs +168 -0
  91. package/scripts/check-settings-form.mjs +3 -1
  92. package/src/adapters/dsh-better-sidebar/index.ts +144 -0
  93. package/src/adapters/dsh-better-sidebar/methods.ts +215 -0
  94. package/src/adapters/index.ts +19 -0
  95. package/src/adapters/types.ts +44 -0
  96. package/src/admin-routes.ts +64 -0
  97. package/src/client/effects/remote-session.ts +82 -10
  98. package/src/client/locales.ts +36 -0
  99. package/src/client/settings/SettingsSection.tsx +107 -3
  100. package/src/client/styles/remote-session.css.ts +70 -31
  101. package/src/client-data/plugin-bridge.ts +150 -0
  102. package/src/client-data/remote-status.ts +30 -0
  103. package/src/client-data/settings-form.ts +78 -0
  104. package/src/client-routes.ts +29 -1
  105. package/src/config.ts +32 -0
  106. package/src/http.ts +12 -0
  107. package/src/index.ts +252 -0
  108. package/src/plugin-adapter-core.ts +530 -0
  109. package/src/plugin-bridge.ts +435 -0
  110. package/src/plugin-loopback.ts +299 -0
  111. package/src/plugin-route-intercept.ts +1193 -0
  112. package/src/plugin-tunnel.ts +470 -0
  113. package/src/relay-client.ts +394 -2
  114. package/src/relay-server.ts +656 -1
@@ -1,2 +1,2 @@
1
- export declare const REMOTE_SESSION_CSS = "/* ---------- remote session: hide the open-on-the-server-machine entries ----------\n A remote session's files live on the relay SERVER; every \"open\" control here\n would act on the machine the DSH process runs on, not the one the browser is\n on. Hidden while the current session is remote (html[data-zr-remote-session]):\n - [data-open-target] is dsh-client-ui-open-in-app's own mount marker (RT\n dsh-client-ui-open-in-app lib/client.js ~325: the split-button anchor\n React renders with data-open-target={kind}) \u2014 one selector covers the\n session-header \"Open In...\" button, the document-preview actions, AND the\n \"Open / Show in Finder / Choose an application\" buttons of the changes\n panel and the deliverable cards (RT dsh-client-ui-deliverables\n lib/client.js ~1702, ~1963: those cards render the open-in-app package's\n FileRouteAction through the deliverables.file.actions and\n deliverables.review.file.actions slots, the same OpenTargetButton anchor).\n The attribute is the component's own contract, not a generated class. */\nhtml[data-zr-remote-session=\"1\"] [data-open-target] {\n display: none !important;\n}\n\n/* ---------- remote session: hide dsh-better-sidebar's file surfaces (T53) ----------\n dsh-better-sidebar 0.24.x is the second big \"open the machine's files\" UI.\n Every tab it registers (files/editor, git changes, subagent/tasks, side\n chat, the markdown/html/code file viewers) builds its requests from a\n {sessionId, cwd} scope and POSTs them to the plugin's own /sidebar/api/*\n routes on whichever machine answers \u2014 in a remote session that is the\n SUB-CLIENT's machine (client.js call() ~3111, fetchUpload ~3162,\n encodeHtmlUrl /sidebar/html/ ~3069-3414), so the tree would show same-named\n LOCAL files as if they were the session's and an edit would WRITE locally.\n Per the T53 decision the interfaces are hidden, not proxied: the relay\n carries no /sidebar routes and none are added.\n\n Anchors, all the plugin's or the host's own rendered contracts (no hashed\n class names; the one suffix selector, _chipIcon, is unique among the\n profile's packages \u2014 checked dsh-vision-router / dsh-auto-approve /\n dsh-mem0 / dsh-llm-verifier / dsh-plugin-subscriptions /\n @liustack/modsearch / @wxg-prc-cpg/browser-skill-dsh-plugin (modsearch /\n browser-skill) / dshmarket and every @deepseek-ai sidebar package for it):\n\n HONEST LIMITS (T53-fix): everything here is display:none ONLY. The plugin's\n components stay mounted and keep silently POSTing READ-ONLY /sidebar/api\n requests to the local machine (session.cwd, changes.ops, the tree reads a\n mounted tab refreshes with) \u2014 the data never leaves that machine, and no\n write can happen because every write control is inside the hidden surfaces.\n Known boundary: a dsh-resource://file/** address opened through\n sidebarRight.openResource in a remote session (file links in chat,\n deliverables, @-references, skills) is CLAIMED by the plugin's editor\n registration (client.js ~21377: patterns [\"dsh-resource://file/**\"]) before\n the host preview sees it \u2014 the right sidebar expands, the rules below hide\n the tab's body and chip, and an EMPTY panel remains. Root fix needs\n zen-remote's own remote file tree; separate discussion.\n\n - [data-dsh-bottom-toggle] \u2014 the header-utilities button that expands the\n bottom workbench (client.js BottomDockToggle ~20863; slot registration\n ~21492-21498, id dsh-better-sidebar:bottom-toggle). Our own phone header\n button drives the OFFICIAL right sidebar (MobileSessionHeader.tsx), so\n hiding this does not strand the phone.\n - [data-dsh-panel-host] \u2014 the fixed viewport layer the plugin appends to\n document.body (client.js ~20763); the bottom workbench panel\n ([data-dsh-bottom-panel]) is its only child, so hiding the layer hides\n the workbench whole (tab strip, + menu, tree, editor and all).\n - --dsh-sidebar-height \u2014 the plugin's layout push: written INLINE on <html>\n while the workbench is open (client.js writeGeometry ~20482-20488) and\n spent by its own layout.css as the center column's margin-bottom\n (client.js layout css ~23009: #root [data-dsh-center-col] { margin-bottom:\n var(--dsh-sidebar-height, 0px) }). Hiding the panel alone would leave\n that reserved band as a blank strip under the conversation, so the remote\n html zeroes the variable. A stylesheet !important beats a non-important\n inline style, and the plugin's JS state is never touched: the moment the\n attribute is removed (back on a local session) its own value applies\n again, transitions included.\n - [data-dsh-native-tab-host] \u2014 the wrapper the plugin renders around EVERY\n tab body it contributes to the host's native right Sidebar\n (client.js NativeTabBody ~21074, marker ~21110/21120). The host's pane\n chrome is untouched: the strip keeps the \"+\" (guide) button and the\n collapse/fullscreen controls, so a tab that was already open leaves no\n dead panel \u2014 an empty body behind a strip that still collapses, and the\n \"+\" re-opens the guide page (whose plugin capsules these rules hide, see\n below). React keeps mounting into the display:none node: no errors, and\n the restore on returning to a local session is instant.\n - [data-dockkit-tab]:has([class$=\"_chipIcon\"]) \u2014 the native tab STRIP's\n chips for plugin tabs, so an already-open tab does not survive as a\n clickable ghost. The chip button is dockkit's ([data-dockkit-tab], dsh-web\n frontend bundle: role=tab, renderTabTitle inside a\n span[data-dockkit-tab-title]); its content is the plugin's\n NativeTabTitle (~21172-21197), which always leads with a\n [class$=\"_chipIcon\"] glyph span because every built-in descriptor ships an\n icon \u2014 a chip with no glyph (an external tab registered through the\n plugin's viewer service without an icon) keeps its chip; its body is\n still hidden by the rule above. Host tabs' chips never contain a\n _chipIcon (checked all four @deepseek-ai sidebar packages), so the\n remote-aware host files page survives alongside.\n - [data-floating-window]:has([data-window-body]) \u2014 the plugin's\n body-PORTALED floating windows (client.js FloatingWindow ~15078-15120):\n the task edit window (teams.taskCreate/Update with rootSessionId via\n /sidebar/api, writeTask ~3124-3140) and the job-output window (host jobs\n kill). Both open from the subagent/tasks tab; portal escapes the tab\n body's display:none, so they need their own rule. Anchored on the\n window's own root attribute plus its own inner body marker, so a foreign\n [data-floating-window] without that shape never matches.\n - guide capsules \u2014 the empty-sidebar doorway buttons the HOST renders from\n the plugin's registrations ([data-sidebar-right-guide-entry=\"<kind>\"], RT\n dsh-client-ui-sidebar-right lib/client.js:466): kinds git / subagent /\n sidechat exist only while this plugin registers them, so those selectors\n are inert without it. The \"files\" capsule is the one ambiguous kind:\n dsh-client-ui-sidebar-files registers the SAME kind (its filesDefinition,\n lib/client.js:14-31) and that page is REMOTE-AWARE (it injects the host's\n remote.workspaceFiles service). T53-fix discriminates on the capsule's\n own rendered contract instead of plugin presence: the host's EntryBox\n renders aria-keyshortcuts from the shortcut matching entry.commandId (RT\n sidebar-right lib/client.js:461-467) \u2014 the host files guide row carries\n commandId \"workspace.files\" (dsh-client-ui-sidebar-files\n lib/client.js:30), while better-sidebar's guide rows carry NO commandId\n (client.js registerNativeSurface ~21385-21400), so its capsule never\n renders the attribute. :not([aria-keyshortcuts]) therefore hides the\n plugin's takeover capsule and spares the host's wherever the host has a\n default binding. Boundary: that \"wherever\" is not everywhere \u2014 the host\n registers workspace.files defaults for desktop:macos/windows/linux and\n web:macos/windows only (dsh-client-ui-sidebar-files lib/client.js:949-977),\n so on any other platform the OFFICIAL capsule also renders without the\n attribute and this rule hides it too (cosmetic; the page stays reachable\n through its shortcut command path and the plugin's takeover is the\n \"files\" implementation on every deployment this plugin pairs with\n better-sidebar anyway). */\nhtml[data-zr-remote-session=\"1\"] [data-dsh-bottom-toggle] {\n display: none !important;\n}\nhtml[data-zr-remote-session=\"1\"] [data-dsh-panel-host] {\n display: none !important;\n}\nhtml[data-zr-remote-session=\"1\"] {\n --dsh-sidebar-height: 0px !important;\n}\nhtml[data-zr-remote-session=\"1\"] [data-dsh-native-tab-host] {\n display: none !important;\n}\nhtml[data-zr-remote-session=\"1\"] [data-dockkit-tab]:has([class$=\"_chipIcon\"]) {\n display: none !important;\n}\nhtml[data-zr-remote-session=\"1\"] [data-floating-window]:has([data-window-body]) {\n display: none !important;\n}\nhtml[data-zr-remote-session=\"1\"] [data-sidebar-right-guide-entry=\"git\"],\nhtml[data-zr-remote-session=\"1\"] [data-sidebar-right-guide-entry=\"subagent\"],\nhtml[data-zr-remote-session=\"1\"] [data-sidebar-right-guide-entry=\"sidechat\"] {\n display: none !important;\n}\nhtml[data-zr-remote-session=\"1\"] [data-sidebar-right-guide-entry=\"files\"]:not([aria-keyshortcuts]) {\n display: none !important;\n}\n\n/* ---------- T52/T74: model-menu groups follow the session's side ----------\n The model catalog is GLOBAL (one shared load per page), so the merged\n catalog shows the server's groups everywhere; but a selection is only\n runnable on the side the open session lives on \u2014 the interceptor refuses\n the other side with a clear message. Hide what cannot run.\n\n What changed and why the mechanism is a STAMP now (T74): through 0.1.7\n each menu group rendered aria-labelledby=\"<useId>-<group.id>\" (RT017\n dsh-client-ui-model-selection lib/client.js ~824-830) \u2014 the group id was\n IN the attribute, and rules could key on a virtual group's \"zr~\" prefix\n directly. 0.2.0 renders the groups with the primitives' MenuGroup\n instead (RT dsh-client-ui-primitives lib/index.js ~4283-4304): the\n section's aria-labelledby carries ONLY the useId, the heading is a child\n div[data-menu-group-heading], and the menu container is a div whose id\n ends in \"-models\" with role=\"menu\" (RT dsh-client-ui-model-selection\n lib/client.js ~974-980). Two consequences killed the old rules: a group\n section no longer says anywhere in its markup which group it is, and the\n same MenuGroup renders OTHER menus' groups too \u2014 the old\n [role=\"menu\"] section[role=\"group\"] scope alone was too wide and would\n have hidden every unmarked group of every menu in a remote session\n (leaving just the search box), while missing the server's groups in\n local ones.\n\n The new keys on what EVERY version actually renders, the heading text:\n each virtual group's name is prefixed with the invisible WORD JOINER\n (VIRTUAL_GROUP_NAME_MARK, virtual-id.ts; written by mergeModelCatalogs).\n The browser effect (effects/model-group-side.ts) reads each group's\n heading and stamps data-zr-group=\"remote|local\" on the section \u2014 but\n only inside a CONTAINER (the sections' shared parent element) that holds\n at least one marked heading. That container rule is what scopes these\n rules to the model menu alone WITHOUT assuming menu structure: an\n unpaired client's model menu, every other menu, and the whole rest of\n the page hold no marked heading, receive no stamp, and match neither\n rule. And since the merged catalog only ever APPENDS virtual groups to\n the local list, within a decided container the unmarked groups are\n exactly the local ones \u2014 mixed containers (the norm) decide each group\n separately. The menu is a portal under <body>, but <html> is still its\n ancestor, so the html-level session attribute scopes both rules. If the\n effect is not running (uninstalled, or a host-role page that never had\n it), no stamp exists and both rules go inert \u2014 nothing stays hidden.\n\n KNOWN BOUNDARY (accepted, not fixed): in a remote session, searching the\n model menu and pressing Enter can commit a HIDDEN local model \u2014 the\n interceptor refuses it with its usual message. */\nhtml[data-zr-remote-session=\"1\"] section[role=\"group\"][data-zr-group=\"local\"] {\n display: none !important;\n}\nhtml:not([data-zr-remote-session]) section[role=\"group\"][data-zr-group=\"remote\"] {\n display: none !important;\n}\n\n/* ---------- T52-fix: hide the virtual groups in NATIVE <option> pickers ----\n The model menu above is React DOM, but dsh-vision-router's settings render\n its vision-backend picker as a native <select> of <option value={group.id}>\n rows, and its filter (dsh-vision-router lib/client.js:661-670\n filterVisionBackendGroups) drops only vision-http / vision-chain / *-vision\n \u2014 a merged virtual group (\"zr~<id>~\u2026\") survives into that picker even\n though a server model can never be a LOCAL vision backend (the router calls\n providers from the machine it runs on). Native <option> rows honor\n display:none in the dropdown list, so this hides them wherever they appear:\n - no scoping attribute on purpose: a virtual group is not a runnable\n backend in ANY local context, and the option element itself carries the\n value \u2014 no host-depth assumption, no :has();\n - when the vision router (or any other <option>-rendering surface) is not\n installed, nothing matches \u2014 dead rule, zero cost;\n - zen-remote's own surfaces are checked: our settings forms render fixed\n enum options (\"web\" / \"desktop-client\" / role kinds /\n configForm enum strings, src/client/settings/SettingsSection.tsx:641,690-701)\n and none can start with \"zr~\" (virtual group ids only ever exist inside\n model-catalog payloads and model-selection arguments). */\noption[value^=\"zr~\"] {\n display: none !important;\n}\n\n/* ---------- remote session: hide the session-export menu item (T51, T51-fix) ----------\n A remote session's log lives on the relay server and the backend refuses\n /api/session.export for a virtual id with 403 remote-unsupported\n (fetch-route-intercept.ts) \u2014 the item would only ever end in the \"Export\n failed\" modal, so it is hidden IN THE MENU (T51-fix: the anchor button\n stays, because it also opens the \u53CD\u9988 entry, which a remote session can\n still use). The DOM, verified against RT:\n - the Menu renders its anchor and its list as SIBLINGS inside its own\n span root (RT dsh-client-ui-primitives lib/index.js ~4265-4273:\n children = [anchor, portal ? createPortal(list) : list]), and the\n export Menu passes no portal flag (default false, ~3923) \u2014 so the list\n is the anchor's next sibling, matched by the general-sibling\n combinator below;\n - the list surface carries role=\"menu\" (Menu passes it at ~4243;\n MenuSurface spreads ...props onto its root div, ~3778-3795) and the\n items viewport inside it is div[role=\"presentation\"] (~4249-4252);\n - every data item is ONE div (the itemWrap wrapper, ~4143), so\n :first-child of the viewport is the FIRST item \u2014 and the export\n package puts \u4E0B\u8F7D/\u5BFC\u51FA first by construction (RT dsh-session-log-export\n lib/client.js 202-206, the optional feedback entry appended after at\n 207-211).\n The anchor button class suffix is matched the way compat.css.ts matches\n module classes (the hash prefix is build-local, \"_moreButton\" is the\n source name; unique in this slot \u2014 the only other moreButton in the RT\n tree, dsh-client-ui-sidebar-documentpreview lib/client.excel.js, lives in\n the sidebar, never under conversation.session.header.utilities).\n Known costs, accepted: with the feedback UI absent the menu's only item\n is the export, so the opened menu is EMPTY; and keyboard navigation still\n steps into the hidden item (focusable but invisible) until activated or\n escaped \u2014 it cannot be triggered through the visibility, only tabbed\n past blindly. */\nhtml[data-zr-remote-session=\"1\"] [data-slot=\"conversation.session.header.utilities\"] [class$=\"_moreButton\"] ~ [role=\"menu\"] > [role=\"presentation\"] > :first-child {\n display: none !important;\n}\n";
1
+ export declare const REMOTE_SESSION_CSS = "/* ---------- remote session: hide the open-on-the-server-machine entries ----------\n A remote session's files live on the relay SERVER; every \"open\" control here\n would act on the machine the DSH process runs on, not the one the browser is\n on. Hidden while the current session is remote (html[data-zr-remote-session]):\n - [data-open-target] is dsh-client-ui-open-in-app's own mount marker (RT\n dsh-client-ui-open-in-app lib/client.js ~325: the split-button anchor\n React renders with data-open-target={kind}) \u2014 one selector covers the\n session-header \"Open In...\" button, the document-preview actions, AND the\n \"Open / Show in Finder / Choose an application\" buttons of the changes\n panel and the deliverable cards (RT dsh-client-ui-deliverables\n lib/client.js ~1702, ~1963: those cards render the open-in-app package's\n FileRouteAction through the deliverables.file.actions and\n deliverables.review.file.actions slots, the same OpenTargetButton anchor).\n The attribute is the component's own contract, not a generated class. */\nhtml[data-zr-remote-session=\"1\"] [data-open-target] {\n display: none !important;\n}\n\n/* ---------- remote session: hide dsh-better-sidebar's file surfaces (T53, two regimes since PB-14) ----------\n dsh-better-sidebar 0.25.0 is the second big \"open the machine's files\" UI\n AND, since PB-12/13, the first ADAPTER-BRIDGED one: at exactly 0.25.0 its\n /sidebar/api routes, its two WebSockets and its side chat cross the byte\n tunnel and read/write the SERVER's data, gated on the whole-machine-data\n consent. The hiding below therefore applies ONLY while the plugin is NOT\n bridged \u2014 the :not([data-zr-bridge-dsh-better-sidebar=\"1\"]) stamp the\n remote-status poll writes; see the PB-14 note above): bridged, the panels\n are remote-aware and stay visible; unbridged (a different version, the\n server without the adapter's consent), every tab it registers (files/\n editor, git changes, subagent/tasks, side chat, the markdown/html/code\n file viewers) builds its requests from a {sessionId, cwd} scope and POSTs\n them to the plugin's own /sidebar/api/* routes on whichever machine\n answers \u2014 in a remote session that is the SUB-CLIENT's machine (client.js\n call() ~3111, fetchUpload ~3162, encodeHtmlUrl /sidebar/html/ ~3069-3414),\n so the tree would show same-named LOCAL files as if they were the\n session's and an edit would WRITE locally.\n\n Anchors, all the plugin's or the host's own rendered contracts (no hashed\n class names; the one suffix selector, _chipIcon, is unique among the\n profile's packages \u2014 checked dsh-vision-router / dsh-auto-approve /\n dsh-mem0 / dsh-llm-verifier / dsh-plugin-subscriptions /\n @liustack/modsearch / @wxg-prc-cpg/browser-skill-dsh-plugin (modsearch /\n browser-skill) / dshmarket and every @deepseek-ai sidebar package for it):\n\n HONEST LIMITS (T53-fix, adjusted PB-14): unbridged, the plugin's\n components stay mounted and keep silently POSTing READ-ONLY /sidebar/api\n requests to the local machine (session.cwd, changes.ops, the tree reads a\n mounted tab refreshes with) \u2014 the data never leaves that machine, and no\n write can happen because every write control is inside the hidden\n surfaces (the tab body hides its CHILDREN and spends the note copy as a\n ::before, so an already-open tab reads WHY it is empty instead of\n sitting blank). Known boundary: a dsh-resource://file/** address opened\n through sidebarRight.openResource in a remote session (file links in\n chat, deliverables, @-references, skills) is CLAIMED by the plugin's\n editor registration (client.js ~21377: patterns [\"dsh-resource://file/**\"])\n before the host preview sees it \u2014 the right sidebar expands, the rules\n below hide the tab's body content and chip, and the note fills the panel.\n Bridged (0.25.0 + consent), none of this applies: the tab reads the\n server's data through the adapter and stays visible whole.\n\n - [data-dsh-bottom-toggle] \u2014 the header-utilities button that expands the\n bottom workbench (client.js BottomDockToggle ~20863; slot registration\n ~21492-21498, id dsh-better-sidebar:bottom-toggle). Our own phone header\n button drives the OFFICIAL right sidebar (MobileSessionHeader.tsx), so\n hiding this does not strand the phone.\n - [data-dsh-panel-host] \u2014 the fixed viewport layer the plugin appends to\n document.body (client.js ~20763); the bottom workbench panel\n ([data-dsh-bottom-panel]) is its only child, so hiding the layer hides\n the workbench whole (tab strip, + menu, tree, editor and all).\n - --dsh-sidebar-height \u2014 the plugin's layout push: written INLINE on <html>\n while the workbench is open (client.js writeGeometry ~20482-20488) and\n spent by its own layout.css as the center column's margin-bottom\n (client.js layout css ~23009: #root [data-dsh-center-col] { margin-bottom:\n var(--dsh-sidebar-height, 0px) }). Hiding the panel alone would leave\n that reserved band as a blank strip under the conversation, so the remote\n html zeroes the variable. A stylesheet !important beats a non-important\n inline style, and the plugin's JS state is never touched: the moment the\n attribute is removed (back on a local session) its own value applies\n again, transitions included.\n - [data-dsh-native-tab-host] \u2014 the wrapper the plugin renders around EVERY\n tab body it contributes to the host's native right Sidebar\n (client.js NativeTabBody ~21074, marker ~21110/21120). The host's pane\n chrome is untouched: the strip keeps the \"+\" (guide) button and the\n collapse/fullscreen controls, so a tab that was already open leaves no\n dead panel \u2014 an empty body behind a strip that still collapses, and the\n \"+\" re-opens the guide page (whose plugin capsules these rules hide, see\n below). React keeps mounting into the display:none node: no errors, and\n the restore on returning to a local session is instant.\n - [data-dockkit-tab]:has([class$=\"_chipIcon\"]) \u2014 the native tab STRIP's\n chips for plugin tabs, so an already-open tab does not survive as a\n clickable ghost. The chip button is dockkit's ([data-dockkit-tab], dsh-web\n frontend bundle: role=tab, renderTabTitle inside a\n span[data-dockkit-tab-title]); its content is the plugin's\n NativeTabTitle (~21172-21197), which always leads with a\n [class$=\"_chipIcon\"] glyph span because every built-in descriptor ships an\n icon \u2014 a chip with no glyph (an external tab registered through the\n plugin's viewer service without an icon) keeps its chip; its body is\n still hidden by the rule above. Host tabs' chips never contain a\n _chipIcon (checked all four @deepseek-ai sidebar packages), so the\n remote-aware host files page survives alongside.\n - [data-floating-window]:has([data-window-body]) \u2014 the plugin's\n body-PORTALED floating windows (client.js FloatingWindow ~15078-15120):\n the task edit window (teams.taskCreate/Update with rootSessionId via\n /sidebar/api, writeTask ~3124-3140) and the job-output window (host jobs\n kill). Both open from the subagent/tasks tab; portal escapes the tab\n body's display:none, so they need their own rule. Anchored on the\n window's own root attribute plus its own inner body marker, so a foreign\n [data-floating-window] without that shape never matches.\n - guide capsules \u2014 the empty-sidebar doorway buttons the HOST renders from\n the plugin's registrations ([data-sidebar-right-guide-entry=\"<kind>\"], RT\n dsh-client-ui-sidebar-right lib/client.js:466): kinds git / subagent /\n sidechat exist only while this plugin registers them, so those selectors\n are inert without it. The \"files\" capsule is the one ambiguous kind:\n dsh-client-ui-sidebar-files registers the SAME kind (its filesDefinition,\n lib/client.js:14-31) and that page is REMOTE-AWARE (it injects the host's\n remote.workspaceFiles service). T53-fix discriminates on the capsule's\n own rendered contract instead of plugin presence: the host's EntryBox\n renders aria-keyshortcuts from the shortcut matching entry.commandId (RT\n sidebar-right lib/client.js:461-467) \u2014 the host files guide row carries\n commandId \"workspace.files\" (dsh-client-ui-sidebar-files\n lib/client.js:30), while better-sidebar's guide rows carry NO commandId\n (client.js registerNativeSurface ~21385-21400), so its capsule never\n renders the attribute. :not([aria-keyshortcuts]) therefore hides the\n plugin's takeover capsule and spares the host's wherever the host has a\n default binding. Boundary: that \"wherever\" is not everywhere \u2014 the host\n registers workspace.files defaults for desktop:macos/windows/linux and\n web:macos/windows only (dsh-client-ui-sidebar-files lib/client.js:949-977),\n so on any other platform the OFFICIAL capsule also renders without the\n attribute and this rule hides it too (cosmetic; the page stays reachable\n through its shortcut command path and the plugin's takeover is the\n \"files\" implementation on every deployment this plugin pairs with\n better-sidebar anyway).\n\n /* PB-14: every T53 rule below carries\n :not([data-zr-bridge-dsh-better-sidebar=\"1\"]) \u2014 when the adapter\n (PB-12) bridges the plugin, the panels read the SERVER's data through\n the byte tunnel and MUST stay visible; the hiding applies only to the\n unbridged combination, and the empty tab body then carries a note\n instead of blankness. The stamp is written by\n effects/remote-session.ts off the remote-status poll's bridgedPlugins\n list (client-data/remote-status.ts shouldStampBridgeAttribute). */\nhtml[data-zr-remote-session=\"1\"]:not([data-zr-bridge-dsh-better-sidebar=\"1\"]) [data-dsh-bottom-toggle] {\n display: none !important;\n}\nhtml[data-zr-remote-session=\"1\"]:not([data-zr-bridge-dsh-better-sidebar=\"1\"]) [data-dsh-panel-host] {\n display: none !important;\n}\nhtml[data-zr-remote-session=\"1\"]:not([data-zr-bridge-dsh-better-sidebar=\"1\"]) {\n --dsh-sidebar-height: 0px !important;\n}\n/* The unbridged tab body: hide the plugin's own content and spend the\n note copy as a ::before \u2014 an already-open tab reads WHY it is empty\n (0.25.0 keeps tabs mounted, so a stale body would otherwise sit blank).\n --zr-bridge-note is set on <html> by the stamp effect, in the\n browser's language; unset (effect not running yet) the content falls\n through and nothing renders. */\nhtml[data-zr-remote-session=\"1\"]:not([data-zr-bridge-dsh-better-sidebar=\"1\"]) [data-dsh-native-tab-host] > * {\n display: none !important;\n}\nhtml[data-zr-remote-session=\"1\"]:not([data-zr-bridge-dsh-better-sidebar=\"1\"]) [data-dsh-native-tab-host]::before {\n content: var(--zr-bridge-note);\n display: block;\n padding: 24px 16px;\n font-size: 13px;\n line-height: 1.7;\n color: var(--dsh-fg-muted, #6b7280);\n word-break: break-word;\n}\nhtml[data-zr-remote-session=\"1\"]:not([data-zr-bridge-dsh-better-sidebar=\"1\"]) [data-dockkit-tab]:has([class$=\"_chipIcon\"]) {\n display: none !important;\n}\nhtml[data-zr-remote-session=\"1\"]:not([data-zr-bridge-dsh-better-sidebar=\"1\"]) [data-floating-window]:has([data-window-body]) {\n display: none !important;\n}\nhtml[data-zr-remote-session=\"1\"]:not([data-zr-bridge-dsh-better-sidebar=\"1\"]) [data-sidebar-right-guide-entry=\"git\"],\nhtml[data-zr-remote-session=\"1\"]:not([data-zr-bridge-dsh-better-sidebar=\"1\"]) [data-sidebar-right-guide-entry=\"subagent\"],\nhtml[data-zr-remote-session=\"1\"]:not([data-zr-bridge-dsh-better-sidebar=\"1\"]) [data-sidebar-right-guide-entry=\"sidechat\"] {\n display: none !important;\n}\nhtml[data-zr-remote-session=\"1\"]:not([data-zr-bridge-dsh-better-sidebar=\"1\"]) [data-sidebar-right-guide-entry=\"files\"]:not([aria-keyshortcuts]) {\n display: none !important;\n}\n/* 0.25.0's dock fallback \u2014 the floating quick-open button the plugin pins\n for empty workspaces. Same treatment as every other open-the-machine's-\n files control: hidden while unbridged, untouched when bridged. */\nhtml[data-zr-remote-session=\"1\"]:not([data-zr-bridge-dsh-better-sidebar=\"1\"]) [data-dsh-dock-fallback] {\n display: none !important;\n}\n\n/* ---------- T52/T74: model-menu groups follow the session's side ----------\n The model catalog is GLOBAL (one shared load per page), so the merged\n catalog shows the server's groups everywhere; but a selection is only\n runnable on the side the open session lives on \u2014 the interceptor refuses\n the other side with a clear message. Hide what cannot run.\n\n What changed and why the mechanism is a STAMP now (T74): through 0.1.7\n each menu group rendered aria-labelledby=\"<useId>-<group.id>\" (RT017\n dsh-client-ui-model-selection lib/client.js ~824-830) \u2014 the group id was\n IN the attribute, and rules could key on a virtual group's \"zr~\" prefix\n directly. 0.2.0 renders the groups with the primitives' MenuGroup\n instead (RT dsh-client-ui-primitives lib/index.js ~4283-4304): the\n section's aria-labelledby carries ONLY the useId, the heading is a child\n div[data-menu-group-heading], and the menu container is a div whose id\n ends in \"-models\" with role=\"menu\" (RT dsh-client-ui-model-selection\n lib/client.js ~974-980). Two consequences killed the old rules: a group\n section no longer says anywhere in its markup which group it is, and the\n same MenuGroup renders OTHER menus' groups too \u2014 the old\n [role=\"menu\"] section[role=\"group\"] scope alone was too wide and would\n have hidden every unmarked group of every menu in a remote session\n (leaving just the search box), while missing the server's groups in\n local ones.\n\n The new keys on what EVERY version actually renders, the heading text:\n each virtual group's name is prefixed with the invisible WORD JOINER\n (VIRTUAL_GROUP_NAME_MARK, virtual-id.ts; written by mergeModelCatalogs).\n The browser effect (effects/model-group-side.ts) reads each group's\n heading and stamps data-zr-group=\"remote|local\" on the section \u2014 but\n only inside a CONTAINER (the sections' shared parent element) that holds\n at least one marked heading. That container rule is what scopes these\n rules to the model menu alone WITHOUT assuming menu structure: an\n unpaired client's model menu, every other menu, and the whole rest of\n the page hold no marked heading, receive no stamp, and match neither\n rule. And since the merged catalog only ever APPENDS virtual groups to\n the local list, within a decided container the unmarked groups are\n exactly the local ones \u2014 mixed containers (the norm) decide each group\n separately. The menu is a portal under <body>, but <html> is still its\n ancestor, so the html-level session attribute scopes both rules. If the\n effect is not running (uninstalled, or a host-role page that never had\n it), no stamp exists and both rules go inert \u2014 nothing stays hidden.\n\n KNOWN BOUNDARY (accepted, not fixed): in a remote session, searching the\n model menu and pressing Enter can commit a HIDDEN local model \u2014 the\n interceptor refuses it with its usual message. */\nhtml[data-zr-remote-session=\"1\"] section[role=\"group\"][data-zr-group=\"local\"] {\n display: none !important;\n}\nhtml:not([data-zr-remote-session]) section[role=\"group\"][data-zr-group=\"remote\"] {\n display: none !important;\n}\n\n/* ---------- T52-fix: hide the virtual groups in NATIVE <option> pickers ----\n The model menu above is React DOM, but dsh-vision-router's settings render\n its vision-backend picker as a native <select> of <option value={group.id}>\n rows, and its filter (dsh-vision-router lib/client.js:661-670\n filterVisionBackendGroups) drops only vision-http / vision-chain / *-vision\n \u2014 a merged virtual group (\"zr~<id>~\u2026\") survives into that picker even\n though a server model can never be a LOCAL vision backend (the router calls\n providers from the machine it runs on). Native <option> rows honor\n display:none in the dropdown list, so this hides them wherever they appear:\n - no scoping attribute on purpose: a virtual group is not a runnable\n backend in ANY local context, and the option element itself carries the\n value \u2014 no host-depth assumption, no :has();\n - when the vision router (or any other <option>-rendering surface) is not\n installed, nothing matches \u2014 dead rule, zero cost;\n - zen-remote's own surfaces are checked: our settings forms render fixed\n enum options (\"web\" / \"desktop-client\" / role kinds /\n configForm enum strings, src/client/settings/SettingsSection.tsx:641,690-701)\n and none can start with \"zr~\" (virtual group ids only ever exist inside\n model-catalog payloads and model-selection arguments). */\noption[value^=\"zr~\"] {\n display: none !important;\n}\n\n/* ---------- remote session: hide the session-export menu item (T51, T51-fix) ----------\n A remote session's log lives on the relay server and the backend refuses\n /api/session.export for a virtual id with 403 remote-unsupported\n (fetch-route-intercept.ts) \u2014 the item would only ever end in the \"Export\n failed\" modal, so it is hidden IN THE MENU (T51-fix: the anchor button\n stays, because it also opens the \u53CD\u9988 entry, which a remote session can\n still use). The DOM, verified against RT:\n - the Menu renders its anchor and its list as SIBLINGS inside its own\n span root (RT dsh-client-ui-primitives lib/index.js ~4265-4273:\n children = [anchor, portal ? createPortal(list) : list]), and the\n export Menu passes no portal flag (default false, ~3923) \u2014 so the list\n is the anchor's next sibling, matched by the general-sibling\n combinator below;\n - the list surface carries role=\"menu\" (Menu passes it at ~4243;\n MenuSurface spreads ...props onto its root div, ~3778-3795) and the\n items viewport inside it is div[role=\"presentation\"] (~4249-4252);\n - every data item is ONE div (the itemWrap wrapper, ~4143), so\n :first-child of the viewport is the FIRST item \u2014 and the export\n package puts \u4E0B\u8F7D/\u5BFC\u51FA first by construction (RT dsh-session-log-export\n lib/client.js 202-206, the optional feedback entry appended after at\n 207-211).\n The anchor button class suffix is matched the way compat.css.ts matches\n module classes (the hash prefix is build-local, \"_moreButton\" is the\n source name; unique in this slot \u2014 the only other moreButton in the RT\n tree, dsh-client-ui-sidebar-documentpreview lib/client.excel.js, lives in\n the sidebar, never under conversation.session.header.utilities).\n Known costs, accepted: with the feedback UI absent the menu's only item\n is the export, so the opened menu is EMPTY; and keyboard navigation still\n steps into the hidden item (focusable but invisible) until activated or\n escaped \u2014 it cannot be triggered through the visibility, only tabbed\n past blindly. */\nhtml[data-zr-remote-session=\"1\"] [data-slot=\"conversation.session.header.utilities\"] [class$=\"_moreButton\"] ~ [role=\"menu\"] > [role=\"presentation\"] > :first-child {\n display: none !important;\n}\n";
2
2
  //# sourceMappingURL=remote-session.css.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"remote-session.css.d.ts","sourceRoot":"","sources":["../../../../src/client/styles/remote-session.css.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,kBAAkB,i9gBAiQ9B,CAAA"}
1
+ {"version":3,"file":"remote-session.css.d.ts","sourceRoot":"","sources":["../../../../src/client/styles/remote-session.css.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,kBAAkB,2qmBAwS9B,CAAA"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * The plugin bridge's settings-page pure pieces (PB-5): the status → copy
3
+ * mapping the 子客户端诊断区 renders, and the consent-toggle arithmetic the
4
+ * 主服务端插件桥 section stages. Pure by the settings-form discipline — no
5
+ * fetch, no clock, no context — so scripts/check-plugin-bridge-ui.mjs pins
6
+ * every copy and every toggle shape.
7
+ *
8
+ * Deliberately import-free: this file rides the BROWSER bundle, and the
9
+ * bridge's own module (src/plugin-bridge.ts) drags node:crypto in. The
10
+ * status shape is therefore restated structurally here — it mirrors
11
+ * lib/plugin-bridge.js's `BridgeStatus` verbatim, and a drifted wire is
12
+ * handled by the tolerant mapping, not by the type system.
13
+ */
14
+ /** One plugin's bridge verdict, exactly the shape `client/status`'s
15
+ * `pluginBridge` array carries (PB-2). */
16
+ export interface PluginBridgeStatusLike {
17
+ plugin: string;
18
+ bridged: boolean;
19
+ reason?: string;
20
+ localVersion: string;
21
+ serverVersion?: string;
22
+ }
23
+ /** One row of the 诊断区's 插件桥 group: the plugin, its LOCAL version, and
24
+ * the copy key (plus the interpolation value) the locale renders. */
25
+ export interface PluginBridgeStatusView {
26
+ plugin: string;
27
+ localVersion: string;
28
+ /** The locale key under `settings.bridge.state*`. */
29
+ stateKey: PluginBridgeStateKey;
30
+ /** The server's version, when the verdict names one (版本不同's copy). */
31
+ serverVersion: string | undefined;
32
+ }
33
+ export type PluginBridgeStateKey = 'settings.bridge.stateBridged' | 'settings.bridge.stateNotOnServer' | 'settings.bridge.stateVersionMismatch' | 'settings.bridge.stateDeclarationMismatch' | 'settings.bridge.stateConsentOff' | 'settings.bridge.stateOffline' | 'settings.bridge.stateServerTooOld';
34
+ /** Tolerant read of one `pluginBridge` wire array into the render rows,
35
+ * input order kept (the route already sorts by plugin name). A malformed
36
+ * entry is skipped, never thrown into the settings page. */
37
+ export declare function derivePluginBridgeStatuses(value: unknown): PluginBridgeStatusView[];
38
+ /**
39
+ * The three-state resolution for the host settings page's 插件桥 list
40
+ * (PB-9-fix): a fetch that has not answered is LOADING, a failed or
41
+ * refused fetch is an ERROR — and only a successful answer with zero rows
42
+ * means "no plugin has registered a bridge". Collapsing the first two into
43
+ * the empty copy would tell the user nothing is bridged while the answer is
44
+ * simply not in yet (or the page was opened through the gateway, where the
45
+ * listing is refused). Pure so the check pins all four outcomes.
46
+ */
47
+ export declare function bridgeSectionState(load: 'loading' | 'error' | 'ready', rows: unknown): 'loading' | 'error' | 'empty' | 'plugins';
48
+ /**
49
+ * One consent-toggle click: the NEXT whole-machine-data consent map, staged
50
+ * over the row's `pluginBridgeConsent` field. Only `plugin`'s key moves —
51
+ * every other key (including entries for plugins no longer registered; the
52
+ * settings page deliberately never prunes what it does not render) is
53
+ * carried over verbatim, in its existing key order. An illegal current map
54
+ * (a hand-edited row) reads as the empty map: the toggle then writes exactly
55
+ * one key, and the junk is left for the row validator to keep refusing.
56
+ */
57
+ export declare function togglePluginConsent(current: unknown, plugin: string, allow: boolean): Record<string, boolean>;
58
+ /** One row of the host settings page's 插件桥 list, as the admin listing
59
+ * answers it (PB-5: plugin/version/hasServerScope/consent; PB-11 adds the
60
+ * adapter mark). */
61
+ export interface AdminBridgeRowView {
62
+ plugin: string;
63
+ version: string;
64
+ hasServerScope: boolean;
65
+ consent: boolean;
66
+ /** True when zen-remote's own adapter stands in for this plugin (the
67
+ * row renders「由 zen-remote 适配」); a wiring that predates adapters
68
+ * never sets it. */
69
+ adapted: boolean;
70
+ }
71
+ /**
72
+ * Tolerant read of one admin listing row into the render shape (PB-11).
73
+ * A malformed row is `undefined`, never a throw — the settings page skips
74
+ * it the same way {@link derivePluginBridgeStatuses} skips a bad verdict.
75
+ * `adapted` defaults to false: an older server's answer simply reads as
76
+ * "nothing is adapted".
77
+ */
78
+ export declare function readAdminBridgeRow(row: unknown): AdminBridgeRowView | undefined;
79
+ //# sourceMappingURL=plugin-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-bridge.d.ts","sourceRoot":"","sources":["../../../src/client-data/plugin-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;0CAC0C;AAC1C,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED;qEACqE;AACrE,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,qDAAqD;IACrD,QAAQ,EAAE,oBAAoB,CAAA;IAC9B,sEAAsE;IACtE,aAAa,EAAE,MAAM,GAAG,SAAS,CAAA;CAClC;AAED,MAAM,MAAM,oBAAoB,GAC5B,8BAA8B,GAC9B,kCAAkC,GAClC,sCAAsC,GACtC,0CAA0C,GAC1C,iCAAiC,GACjC,8BAA8B,GAC9B,mCAAmC,CAAA;AAcvC;;4DAE4D;AAC5D,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,EAAE,CAqBnF;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAIhI;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAS7G;AAED;;oBAEoB;AACpB,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,cAAc,EAAE,OAAO,CAAA;IACvB,OAAO,EAAE,OAAO,CAAA;IAChB;;wBAEoB;IACpB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,kBAAkB,GAAG,SAAS,CAW/E"}
@@ -42,6 +42,11 @@ export interface RemoteStatusView {
42
42
  versionMismatch: boolean;
43
43
  serverName: string;
44
44
  closed: Readonly<Record<string, RemoteClosedReason>>;
45
+ /** The plugins whose bridge verdict is bridged RIGHT NOW (PB-2; sorted
46
+ * server-side). A garbage or missing field degrades to the empty list —
47
+ * nothing is ever considered bridged on a shape the parse does not
48
+ * trust. */
49
+ bridgedPlugins: readonly string[];
45
50
  /** When this view was parsed off a GET body. */
46
51
  asOf: number;
47
52
  }
@@ -55,6 +60,21 @@ export interface RemoteStatusSnapshot {
55
60
  * garbage field degrades to its default — never a throw into the polling
56
61
  * loop. */
57
62
  export declare function parseRemoteStatusBody(body: unknown, now: number): RemoteStatusView;
63
+ /**
64
+ * Whether ONE plugin's bridge verdict is bridged RIGHT NOW, judged off the
65
+ * `bridgedPlugins` list the remote-status body carries. Tolerant by the
66
+ * same discipline as the parse: a garbage list (an older server that never
67
+ * learned the field, a broken body) reads as "not bridged" — the hiding
68
+ * rules stay in force unless the server positively says otherwise, never
69
+ * the reverse. This is the pure core behind the
70
+ * `html[data-zr-bridge-<plugin>]` stamp the remote-session stylesheet
71
+ * spends.
72
+ */
73
+ export declare function shouldStampBridgeAttribute(bridgedPlugins: unknown, plugin: string): boolean;
74
+ /** The plugin the bridge stamp names. */
75
+ export declare const BRIDGE_STAMP_PLUGIN = "dsh-better-sidebar";
76
+ /** The html attribute the stamp writes (`data-zr-bridge-dsh-better-sidebar`). */
77
+ export declare const BRIDGE_STAMP_ATTRIBUTE = "data-zr-bridge-dsh-better-sidebar";
58
78
  /** The locale keys `describeRemoteStatus` needs. */
59
79
  export type RemoteStatusTextKey = 'remoteStatusOnline' | 'remoteStatusOffline' | 'remoteStatusMismatch' | 'remoteStatusRevoked' | 'remoteStatusUnpaired';
60
80
  /** Minimal shape of the framework `t` seat over the plugin's namespace. */
@@ -1 +1 @@
1
- {"version":3,"file":"remote-status.d.ts","sourceRoot":"","sources":["../../../src/client-data/remote-status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remote-status.d.ts","sourceRoot":"","sources":["../../../src/client-data/remote-status.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,7 @@
24
24
  * separate task; the shapes mirror `lib/lan-gate-server.cjs`'s status payload
25
25
  * (devices / pairing) plus the T14 envelope (ok / gateway / config / viaGateway).
26
26
  */
27
+ import { type PluginBridgeStatusView } from './plugin-bridge.ts';
27
28
  /** Where a resolved field value came from (mirror of src/config.ts's union; the client half cannot import the host module). */
28
29
  export type ConfigSource = 'env' | 'row' | 'file' | 'default';
29
30
  /** One paired gateway device, as the gateway's status payload lists it. */
@@ -78,6 +79,8 @@ export declare const ADMIN_STATUS_ROUTE = "/_dsh/zen-remote/admin/status";
78
79
  export declare const ADMIN_PAIR_ROUTE = "/_dsh/zen-remote/admin/pair";
79
80
  export declare const ADMIN_ACTION_ROUTE = "/_dsh/zen-remote/admin/action";
80
81
  export declare const ADMIN_PUSH_TEST_ROUTE = "/_dsh/zen-remote/admin/push-test";
82
+ /** PB-5: the plugin bridge's registered-plugin listing (GET, server-local only). */
83
+ export declare const ADMIN_PLUGIN_BRIDGE_ROUTE = "/_dsh/zen-remote/admin/plugin-bridge";
81
84
  /** Same-origin client routes the sub-client block talks to (host half: T16). */
82
85
  export declare const CLIENT_CLAIM_ROUTE = "/_dsh/zen-remote/client/claim";
83
86
  export declare const CLIENT_STATUS_ROUTE = "/_dsh/zen-remote/client/status";
@@ -136,6 +139,13 @@ export interface ClientStatusBody {
136
139
  * string[], unavailable: string[], incompatibleCalls: { time: number,
137
140
  * endpoint: string, code: string }[] }` (presence-gated). */
138
141
  compat?: unknown;
142
+ /** PB-2: the per-plugin bridge verdicts (`BridgeStatus[]` verbatim,
143
+ * presence-gated — older servers answer without it). */
144
+ pluginBridge?: unknown;
145
+ /** PB-4: the plugin-route interception's diagnostics (presence-gated —
146
+ * a host role or a refused install may still answer it; a server without
147
+ * the field never does). */
148
+ pluginRouteIntercept?: unknown;
139
149
  }
140
150
  /** One remote-call failure line in the diagnostics lists. `time` is epoch
141
151
  * milliseconds — ISO-stamped rings are parsed at derive time; `method`
@@ -179,6 +189,16 @@ export interface ClientConnectionView {
179
189
  deviceName: string;
180
190
  intercept: ClientInterceptView | undefined;
181
191
  compat: ClientCompatView | undefined;
192
+ /** PB-5: the bridge verdicts as the 诊断区 renders them, input order kept
193
+ * (undefined when the body carried none — the group stays hidden). */
194
+ pluginBridge: PluginBridgeStatusView[] | undefined;
195
+ /** PB-5: the route interception's install state (`installed: false`
196
+ * renders the 本机改道未启用 line with the shape reasons; undefined when
197
+ * the body carried none). */
198
+ pluginRouteIntercept: {
199
+ installed: boolean;
200
+ reasons: string[];
201
+ } | undefined;
182
202
  }
183
203
  /**
184
204
  * Map one `client/status` body into the view the client group renders.
@@ -423,8 +443,20 @@ export declare function claimDeviceNameOf(displayText: string, fallback: string)
423
443
  export declare function oneOfField(field: string, options: readonly string[]): SettingsFieldSpec;
424
444
  /** Boolean field staged as 'true'/'false' draft text (rendered as a checkbox). */
425
445
  export declare function boolField(field: string): SettingsFieldSpec;
446
+ /**
447
+ * `pluginBridgeConsent` (PB-5): a name → boolean map staged as its canonical
448
+ * JSON draft. Nothing renders it as text — the 插件桥 toggles stage the NEXT
449
+ * map wholesale (`togglePluginConsent` builds it, one key per click) — but
450
+ * riding the shared spec table is what puts the field on the SAME save path
451
+ * as `autoShareNewSessions`: one staged revision, one save button, one
452
+ * atomic mutation. `format` keeps the value's own key order so a staged
453
+ * draft equal to the displayed value reads as "no change"; an illegal stored
454
+ * map formats as `{}` (the toggle then writes from scratch, and the junk
455
+ * stays refused by the row validator, never laundered through).
456
+ */
457
+ export declare function consentField(field: string): SettingsFieldSpec;
426
458
  /** Names of the row fields the settings page edits, in group order. */
427
- export type SettingsFieldName = 'role' | 'host' | 'port' | 'trustedProxies' | 'rateLimit' | 'vapidSubject' | 'pushSummary' | 'pushTurnEnd' | 'pushTool' | 'pushDebounceMs' | 'lang' | 'serverName' | 'idleHours' | 'autoShareNewSessions';
459
+ export type SettingsFieldName = 'role' | 'host' | 'port' | 'trustedProxies' | 'rateLimit' | 'vapidSubject' | 'pushSummary' | 'pushTurnEnd' | 'pushTool' | 'pushDebounceMs' | 'lang' | 'serverName' | 'idleHours' | 'autoShareNewSessions' | 'pluginBridgeConsent';
428
460
  /** Longest legal `serverName`, mirroring src/config.ts's cap. */
429
461
  export declare const SERVER_NAME_MAX = 40;
430
462
  /** Upper bound of `idleHours`, mirroring src/config.ts. */
@@ -546,6 +578,10 @@ export interface ZenRemoteFormState extends SettingsFormShellState {
546
578
  serverName: SettingsFieldState;
547
579
  idleHours: SettingsFieldState;
548
580
  autoShareNewSessions: SettingsFieldState;
581
+ /** The consent map's staged state (PB-5). No text control renders it — the
582
+ * 插件桥 toggles stage the next map wholesale — but its `invalid` flag
583
+ * (a malformed draft) still gates the save like any field's. */
584
+ pluginBridgeConsent: SettingsFieldState;
549
585
  deviceToken: SettingsSecretFieldState;
550
586
  /** A restart-required field ({@link RESTART_FIELDS}) has a staged change a
551
587
  * save would actually write: the save will move the row and the host
@@ -1 +1 @@
1
- {"version":3,"file":"settings-form.d.ts","sourceRoot":"","sources":["../../../src/client-data/settings-form.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAMH,+HAA+H;AAC/H,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAA;AAE7D,2EAA2E;AAC3E,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,KAAK,GAAG,gBAAgB,CAAA;IAC9B,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAA;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,mDAAmD;AACnD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,KAAK,GAAG,gBAAgB,CAAA;CAC/B;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,WAAW,EAAE,CAAA;IACvB,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI,CAAA;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,CAAC,EAAE,OAAO,CAAA;IACZ,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;IAC9B,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,MAAM,CAAC,EAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KACjC,CAAA;IACD,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,6EAA6E;AAC7E,eAAO,MAAM,kBAAkB,kCAAkC,CAAA;AACjE,eAAO,MAAM,gBAAgB,gCAAgC,CAAA;AAC7D,eAAO,MAAM,kBAAkB,kCAAkC,CAAA;AACjE,eAAO,MAAM,qBAAqB,qCAAqC,CAAA;AAEvE,gFAAgF;AAChF,eAAO,MAAM,kBAAkB,kCAAkC,CAAA;AACjE,eAAO,MAAM,mBAAmB,mCAAmC,CAAA;AACnE,gFAAgF;AAChF,eAAO,MAAM,sBAAsB,sCAAsC,CAAA;AAEzE;;;wDAGwD;AACxD,eAAO,MAAM,mBAAmB,mCAAmC,CAAA;AAEnE;;oBAEoB;AACpB,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED;6EAC6E;AAC7E,eAAO,MAAM,kBAAkB,gBAAgB,CAAA;AAI/C;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;qBAKiB;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,gFAAgF;IAChF,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;iEAE6D;IAC7D,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED;;iDAEiD;AACjD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,OAAO,CAAA;IAClB,iFAAiF;IACjF,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,yDAAyD;IACzD,cAAc,EAAE,qBAAqB,EAAE,CAAA;CACxC;AAED,0GAA0G;AAC1G,MAAM,WAAW,gBAAgB;IAC/B,qDAAqD;IACrD,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,uDAAuD;IACvD,WAAW,EAAE,qBAAqB,EAAE,CAAA;CACrC;AAED,qDAAqD;AACrD,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,SAAS,GAAG,aAAa,GAAG,YAAY,GAAG,aAAa,GAAG,cAAc,CAAA;IAC3G,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB;6DACyD;IACzD,WAAW,EAAE,MAAM,GAAG,SAAS,CAAA;IAC/B,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAA;IACjB;0DACsD;IACtD,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,mBAAmB,GAAG,SAAS,CAAA;IAC1C,MAAM,EAAE,gBAAgB,GAAG,SAAS,CAAA;CACrC;AAsED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,gBAAgB,GAAG,oBAAoB,CA4BnF;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GACvB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAA;AAExB,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,oBAAoB,EAAE,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAkB5F;AAED;;oDAEoD;AACpD,MAAM,WAAW,cAAc;IAC7B,EAAE,CAAC,EAAE,OAAO,CAAA;IACZ,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;8EAC8E;AAC9E,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAE5G;AAED;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACzB,sDAAsD;IACtD,IAAI,IAAI,MAAM,CAAA;IACd,0DAA0D;IAC1D,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAA;CAClC;AAED,wBAAgB,gBAAgB,IAAI,UAAU,CAM7C;AAID;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAMzG;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,aAAa,EAC3C,QAAQ,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,EAC7C,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,GACzB,SAAS,GAAG,MAAM,GAAG,QAAQ,CAG/B;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,aAAa,EAC3C,QAAQ,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,EAC7C,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,GACzB,MAAM,GAAG,OAAO,GAAG,QAAQ,CAI7B;AAID;;;;;;;;GAQG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAIrD,kFAAkF;AAClF,MAAM,MAAM,cAAc,GACtB;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC7C;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAAA;AAEnC,6EAA6E;AAC7E,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,aAAa,CAAA;IAC3C,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;IAC1C,+DAA+D;IAC/D,IAAI,EAAE,OAAO,CAAA;IACb,uEAAuE;IACvE,IAAI,EAAE,OAAO,CAAA;IACb,wEAAwE;IACxE,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5B,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,WAAW,IAAI,yBAAyB,CAAA;IACxC,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;IAC3C,MAAM,CAAC,GAAG,EAAE,SAAS,cAAc,EAAE,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CACpF;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,GAAG,EAAE,OAAO,CAAA;CACb;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,WAAW,IAAI;QACb,IAAI,CAAC,EAAE;YAAE,UAAU,CAAC,EAAE,aAAa,CAAC;gBAAE,EAAE,EAAE,MAAM,CAAC;gBAAC,OAAO,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,CAAA;aAAE,CAAC,CAAA;SAAE,CAAA;KAC/F,CAAA;IACD,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;CAC5C;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAAA;IACvC,QAAQ,IAAI,mBAAmB,CAAA;IAC/B,WAAW,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;CAC9G;AAED,kEAAkE;AAClE,MAAM,MAAM,kBAAkB,GAAG;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAA;AAEpF,sEAAsE;AACtE,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAA;IAC9B,uFAAuF;IACvF,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAAA;CACpD;AAED,oFAAoF;AACpF,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,CAM1D;AAED,4GAA4G;AAC5G,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAWnF;AAED,wFAAwF;AACxF,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAWxE;AAED;;wEAEwE;AACxE,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAUvE;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAK/E;AAED,mEAAmE;AACnE,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,iBAAiB,CAMvF;AAED,kFAAkF;AAClF,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,CAM1D;AAED,uEAAuE;AACvE,MAAM,MAAM,iBAAiB,GACzB,MAAM,GACN,MAAM,GACN,MAAM,GACN,gBAAgB,GAChB,WAAW,GACX,cAAc,GACd,aAAa,GACb,aAAa,GACb,UAAU,GACV,gBAAgB,GAChB,MAAM,GACN,YAAY,GACZ,WAAW,GACX,sBAAsB,CAAA;AAE1B,iEAAiE;AACjE,eAAO,MAAM,eAAe,KAAK,CAAA;AAEjC,2DAA2D;AAC3D,eAAO,MAAM,cAAc,OAAO,CAAA;AAElC,+DAA+D;AAC/D,eAAO,MAAM,eAAe,EAAE,SAAS,iBAAiB,EAevD,CAAA;AAID;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,CAEvE;AAED,2EAA2E;AAC3E,MAAM,WAAW,iBAAiB;IAChC,6DAA6D;IAC7D,KAAK,EAAE,OAAO,CAAA;IACd,+CAA+C;IAC/C,MAAM,EAAE,YAAY,CAAA;IACpB,iEAAiE;IACjE,MAAM,EAAE,OAAO,CAAA;IACf,0EAA0E;IAC1E,QAAQ,EAAE,OAAO,CAAA;IACjB;wEACoE;IACpE,eAAe,EAAE,OAAO,CAAA;CACzB;AAED,wCAAwC;AACxC,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,KAAK,GAAG,gBAAgB,CAAA;IAC9B,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAA;IAClC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,6EAA6E;AAC7E,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,KAAK,GAAG,gBAAgB,CAAA;IAC9B,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,2EAA2E;AAC3E,MAAM,WAAW,YAAY;IAC3B,oCAAoC;IACpC,SAAS,EAAE,OAAO,CAAA;IAClB,gFAAgF;IAChF,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAA;IACvB,sFAAsF;IACtF,UAAU,EAAE,OAAO,CAAA;IACnB,yCAAyC;IACzC,gBAAgB,EAAE,OAAO,CAAA;IACzB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAA;IAC/B,aAAa,EAAE,MAAM,GAAG,SAAS,CAAA;IACjC,+EAA+E;IAC/E,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,8FAA8F;IAC9F,eAAe,EAAE,OAAO,CAAA;IACxB,MAAM,EAAE,MAAM,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAA;IACpD,OAAO,EAAE,kBAAkB,EAAE,CAAA;IAC7B,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAAA;CACpC;AAED,MAAM,WAAW,qBAAqB;IACpC,iEAAiE;IACjE,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,4FAA4F;IAC5F,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAUD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,GAAE,qBAA0B,GAAG,YAAY,CAyE7G;AAID,sDAAsD;AACtD,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,OAAO,CAAA;IACjB,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,mDAAmD;AACnD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,OAAO,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB;;2DAEuD;IACvD,OAAO,EAAE,OAAO,CAAA;IAChB,oFAAoF;IACpF,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,2DAA2D;AAC3D,MAAM,WAAW,wBAAwB;IACvC,qEAAqE;IACrE,UAAU,EAAE,OAAO,CAAA;CACpB;AAED,uDAAuD;AACvD,MAAM,WAAW,kBAAmB,SAAQ,sBAAsB;IAChE;6DACyD;IACzD,WAAW,EAAE,SAAS,GAAG,OAAO,GAAG,aAAa,CAAA;IAChD,IAAI,EAAE,kBAAkB,CAAA;IACxB,IAAI,EAAE,kBAAkB,CAAA;IACxB,IAAI,EAAE,kBAAkB,CAAA;IACxB,cAAc,EAAE,kBAAkB,CAAA;IAClC,SAAS,EAAE,kBAAkB,CAAA;IAC7B,YAAY,EAAE,kBAAkB,CAAA;IAChC,WAAW,EAAE,kBAAkB,CAAA;IAC/B,WAAW,EAAE,kBAAkB,CAAA;IAC/B,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,cAAc,EAAE,kBAAkB,CAAA;IAClC,IAAI,EAAE,kBAAkB,CAAA;IACxB,UAAU,EAAE,kBAAkB,CAAA;IAC9B,SAAS,EAAE,kBAAkB,CAAA;IAC7B,oBAAoB,EAAE,kBAAkB,CAAA;IACxC,WAAW,EAAE,wBAAwB,CAAA;IACrC;;;;;;6EAMyE;IACzE,cAAc,EAAE,OAAO,CAAA;CACxB;AAKD;;;;;GAKG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoB;IACjD;;+EAE2E;IAC3E,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoB;IACrD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmB;IACzC;6EACyE;IACzE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAe;IAChD;;;wEAGoE;IACpE,OAAO,CAAC,QAAQ,CAA8B;IAC9C;;;oEAGgE;IAChE,OAAO,CAAC,UAAU,CAA2C;IAC7D,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,MAAM,CAAQ;IACtB,6EAA6E;IAC7E,OAAO,CAAC,cAAc,CAAoB;IAC1C,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAY;IAExC;;;;;;;OAOG;gBACS,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,GAAE,MAAM,OAAqB;IAMnF,mFAAmF;IACnF,WAAW,IAAI,kBAAkB;IAKjC,4EAA4E;IAC5E,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAK3C,wEAAwE;IACxE,OAAO,IAAI,IAAI;IAIf,6EAA6E;IAC7E,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI;IAM/C;;;;;OAKG;IACH,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI;IAMnD;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIhC;;;;OAIG;IACH,WAAW,IAAI,SAAS,GAAG,OAAO,GAAG,aAAa;IAIlD;;;;;OAKG;IACH,UAAU,IAAI,MAAM,GAAG,OAAO,GAAG,QAAQ;IAKzC;;;;;OAKG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,IAAI;IAKxD;;;;OAIG;IACH,iBAAiB,IAAI,OAAO;IAI5B;;;;OAIG;IACH,YAAY,IAAI,OAAO;IAIvB;;;;;;;;;;;OAWG;IACG,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQhG;;;OAGG;IACG,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;IAI1C;;;;;;;OAOG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMjC;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIhC;;;;;;;OAOG;IACG,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIrD;;;;OAIG;YACW,WAAW;IAqBzB;;;;;;OAMG;IACH,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAKlC,yEAAyE;IACzE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAMxC,mGAAmG;IACnG,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM/B,8BAA8B;IAC9B,OAAO,IAAI,IAAI;IAQf;;;;OAIG;IACH,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAIlC,wEAAwE;IACxE,OAAO,IAAI,OAAO;IASlB;;;;;OAKG;IACG,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAyB9B,sCAAsC;IACtC,OAAO,IAAI,IAAI;IAKf,OAAO,CAAC,SAAS;IAMjB,uEAAuE;IACvE,OAAO,CAAC,MAAM;IAId;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,UAAU;IAOlB;;;;;;OAMG;IACH,OAAO,CAAC,IAAI;IAoBZ,OAAO,CAAC,OAAO;IAiDf,OAAO,CAAC,OAAO;CAIhB"}
1
+ {"version":3,"file":"settings-form.d.ts","sourceRoot":"","sources":["../../../src/client-data/settings-form.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,8 @@ import type { IncomingMessage, ServerResponse } from 'node:http';
27
27
  import type { AdminAdmission } from './admin-routes.js';
28
28
  import type { FetchRouteInterceptDiagnostics } from './fetch-route-intercept.js';
29
29
  import type { CurrentSessionRead, InterceptDiagnostics } from './intercept.js';
30
+ import type { PluginRouteInterceptDiagnostics } from './plugin-route-intercept.js';
31
+ import type { BridgeStatus } from './plugin-bridge.js';
30
32
  import type { RelayClient } from './relay-client.js';
31
33
  /** Prefix all client routes live under (one webServer prefix registration). */
32
34
  export declare const CLIENT_ROUTE_PREFIX = "/_dsh/zen-remote/client";
@@ -86,6 +88,17 @@ export interface ClientHandlerOptions {
86
88
  * its refusal counters. Undefined when this composition never attempted
87
89
  * one (no connection service, or no fileUploads service to inject). */
88
90
  getFetchRouteIntercept?: () => FetchRouteInterceptDiagnostics | undefined;
91
+ /** The plugin-route interception's diagnostics (PB-4), read live per
92
+ * request: the local webServer `match` wrap that forwards bridged-plugin
93
+ * requests for remote sessions. Undefined when this composition never
94
+ * attempted one (a host role, or no webServer). */
95
+ getPluginRouteIntercept?: () => PluginRouteInterceptDiagnostics | undefined;
96
+ /** The plugin bridge's live verdict (PB-2), computed PER CALL off the local
97
+ * registry, the last handshake's `plugins` table and the connection state —
98
+ * never a stored conclusion. Wired only by the CLIENT role's mount; absent
99
+ * (the host mount, old tests) both routes answer the empty shape: status's
100
+ * `pluginBridge: []` and remote-status's `bridgedPlugins: []`. */
101
+ getPluginBridgeStatus?: () => BridgeStatus[];
89
102
  /** Serve ONLY the remote-status route (T41a-fix2, the host role's mount):
90
103
  * every other route under the prefix answers the same 404 an unknown path
91
104
  * would. The claim / status / reconnect / unshare routes exist for a
@@ -1 +1 @@
1
- {"version":3,"file":"client-routes.d.ts","sourceRoot":"","sources":["../../src/client-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAIvD,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAA;AAChF,OAAO,KAAK,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAI9E,OAAO,KAAK,EAAE,WAAW,EAAmB,MAAM,mBAAmB,CAAA;AAGrE,+EAA+E;AAC/E,eAAO,MAAM,mBAAmB,4BAA4B,CAAA;AAE5D,qEAAqE;AACrE,eAAO,MAAM,kBAAkB,kCAAiC,CAAA;AAEhE,mEAAmE;AACnE,eAAO,MAAM,mBAAmB,mCAAkC,CAAA;AAElE;kEACkE;AAClE,eAAO,MAAM,sBAAsB,sCAAqC,CAAA;AAExE;;;;;wEAKwE;AACxE,eAAO,MAAM,0BAA0B,0CAAyC,CAAA;AAEhF;;8EAE8E;AAC9E,eAAO,MAAM,oBAAoB,oCAAmC,CAAA;AAEpE;;;;4CAI4C;AAC5C,eAAO,MAAM,4BAA4B,4CAA2C,CAAA;AAOpF;;;uEAGuE;AACvE,eAAO,MAAM,wBAAwB,kCAAiC,CAAA;AAWtE,8DAA8D;AAC9D,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAEpF,MAAM,WAAW,oBAAoB;IACnC,0EAA0E;IAC1E,KAAK,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,cAAc,CAAA;IAC/C;;sCAEkC;IAClC,YAAY,EAAE,MAAM,OAAO,CAAA;IAC3B,oDAAoD;IACpD,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB;;;;;oDAKgD;IAChD,cAAc,CAAC,EAAE,MAAM,WAAW,GAAG,SAAS,CAAA;IAC9C;;8EAE0E;IAC1E,YAAY,CAAC,EAAE,MAAM,oBAAoB,GAAG,SAAS,CAAA;IACrD;;;2EAGuE;IACvE,sBAAsB,CAAC,EAAE,MAAM,8BAA8B,GAAG,SAAS,CAAA;IACzE;;;;;;0CAMsC;IACtC,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B;;;;;iBAKa;IACb,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,IAAI,CAAA;CACtD;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AA8NxF;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CA+WhF"}
1
+ {"version":3,"file":"client-routes.d.ts","sourceRoot":"","sources":["../../src/client-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAIvD,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAA;AAChF,OAAO,KAAK,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAC9E,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAA;AAElF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGtD,OAAO,KAAK,EAAE,WAAW,EAAmB,MAAM,mBAAmB,CAAA;AAGrE,+EAA+E;AAC/E,eAAO,MAAM,mBAAmB,4BAA4B,CAAA;AAE5D,qEAAqE;AACrE,eAAO,MAAM,kBAAkB,kCAAiC,CAAA;AAEhE,mEAAmE;AACnE,eAAO,MAAM,mBAAmB,mCAAkC,CAAA;AAElE;kEACkE;AAClE,eAAO,MAAM,sBAAsB,sCAAqC,CAAA;AAExE;;;;;wEAKwE;AACxE,eAAO,MAAM,0BAA0B,0CAAyC,CAAA;AAEhF;;8EAE8E;AAC9E,eAAO,MAAM,oBAAoB,oCAAmC,CAAA;AAEpE;;;;4CAI4C;AAC5C,eAAO,MAAM,4BAA4B,4CAA2C,CAAA;AAOpF;;;uEAGuE;AACvE,eAAO,MAAM,wBAAwB,kCAAiC,CAAA;AAWtE,8DAA8D;AAC9D,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAEpF,MAAM,WAAW,oBAAoB;IACnC,0EAA0E;IAC1E,KAAK,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,cAAc,CAAA;IAC/C;;sCAEkC;IAClC,YAAY,EAAE,MAAM,OAAO,CAAA;IAC3B,oDAAoD;IACpD,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB;;;;;oDAKgD;IAChD,cAAc,CAAC,EAAE,MAAM,WAAW,GAAG,SAAS,CAAA;IAC9C;;8EAE0E;IAC1E,YAAY,CAAC,EAAE,MAAM,oBAAoB,GAAG,SAAS,CAAA;IACrD;;;2EAGuE;IACvE,sBAAsB,CAAC,EAAE,MAAM,8BAA8B,GAAG,SAAS,CAAA;IACzE;;;uDAGmD;IACnD,uBAAuB,CAAC,EAAE,MAAM,+BAA+B,GAAG,SAAS,CAAA;IAC3E;;;;sEAIkE;IAClE,qBAAqB,CAAC,EAAE,MAAM,YAAY,EAAE,CAAA;IAC5C;;;;;;0CAMsC;IACtC,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B;;;;;iBAKa;IACb,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,IAAI,CAAA;CACtD;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AA8NxF;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CA8XhF"}
@@ -68,6 +68,12 @@ export interface ZenRemoteConfig {
68
68
  idleHours: number;
69
69
  /** Auto-share every newly created session to the paired phone (T16). */
70
70
  autoShareNewSessions: boolean;
71
+ /** Per-plugin consent for bridging whole-machine data (plugin bridge,
72
+ * PB-1): plugin name → whether the server owner lets that plugin's
73
+ * `scope:'server'` routes be forwarded inside remote sessions. Absent or
74
+ * false means NO — default `{}` keeps every plugin unconsented. Volatile:
75
+ * read at compare time, deliberately NOT in RESTART_FIELDS. */
76
+ pluginBridgeConsent: Record<string, boolean>;
71
77
  }
72
78
  /** Defaults, one per field — exactly what layer 4 hands back. */
73
79
  export declare const DEFAULTS: ZenRemoteConfig;
@@ -165,6 +171,7 @@ export declare const Config: z<Schemastery.ObjectS<NoInfer<{
165
171
  serverName: z<any, any, "volatile">;
166
172
  idleHours: z<any, any, "volatile">;
167
173
  autoShareNewSessions: z<any, any, "volatile">;
174
+ pluginBridgeConsent: z<any, any, "volatile">;
168
175
  serverUrl: z<any, any, "volatile">;
169
176
  deviceToken: z<string, string, "volatile">;
170
177
  turnFoldDesktop: z<any, any, "volatile">;
@@ -189,6 +196,7 @@ export declare const Config: z<Schemastery.ObjectS<NoInfer<{
189
196
  serverName: z<any, any, "volatile">;
190
197
  idleHours: z<any, any, "volatile">;
191
198
  autoShareNewSessions: z<any, any, "volatile">;
199
+ pluginBridgeConsent: z<any, any, "volatile">;
192
200
  serverUrl: z<any, any, "volatile">;
193
201
  deviceToken: z<string, string, "volatile">;
194
202
  turnFoldDesktop: z<any, any, "volatile">;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAKH,OAAO,CAAC,MAAM,0BAA0B,CAAA;AAExC,mEAAmE;AACnE,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAA;AAK7D,6EAA6E;AAC7E,MAAM,WAAW,eAAe;IAC9B;oEACgE;IAChE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAA;IACvB,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAA;IACZ,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAA;IACZ;qEACiE;IACjE,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9B,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAA;IACjB,sEAAsE;IACtE,cAAc,EAAE,MAAM,CAAA;IACtB,+EAA+E;IAC/E,YAAY,EAAE,MAAM,CAAA;IACpB,2EAA2E;IAC3E,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAA;IAC1B,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAA;IAClB,+EAA+E;IAC/E,cAAc,EAAE,MAAM,CAAA;IACtB,0EAA0E;IAC1E,WAAW,EAAE,OAAO,CAAA;IACpB,2EAA2E;IAC3E,WAAW,EAAE,OAAO,CAAA;IACpB,oDAAoD;IACpD,QAAQ,EAAE,OAAO,CAAA;IACjB,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAA;IAClB;;kDAE8C;IAC9C,SAAS,EAAE,MAAM,CAAA;IACjB,wEAAwE;IACxE,oBAAoB,EAAE,OAAO,CAAA;CAC9B;AAMD,iEAAiE;AACjE,eAAO,MAAM,QAAQ,EAAE,eAiBtB,CAAA;AAOD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAKtD;AA0LD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,GAAG,EAAE,MAAM,CAAC,UAAU,GACrB;IACD,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,EAAE,MAAM,CAAC,MAAM,eAAe,EAAE,YAAY,CAAC,CAAA;CACrD,CAuBA;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQ5F;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAE3D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aA6BjB,CAAA"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAKH,OAAO,CAAC,MAAM,0BAA0B,CAAA;AAExC,mEAAmE;AACnE,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAA;AAK7D,6EAA6E;AAC7E,MAAM,WAAW,eAAe;IAC9B;oEACgE;IAChE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAA;IACvB,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAA;IACZ,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAA;IACZ;qEACiE;IACjE,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9B,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAA;IACjB,sEAAsE;IACtE,cAAc,EAAE,MAAM,CAAA;IACtB,+EAA+E;IAC/E,YAAY,EAAE,MAAM,CAAA;IACpB,2EAA2E;IAC3E,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAA;IAC1B,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAA;IAClB,+EAA+E;IAC/E,cAAc,EAAE,MAAM,CAAA;IACtB,0EAA0E;IAC1E,WAAW,EAAE,OAAO,CAAA;IACpB,2EAA2E;IAC3E,WAAW,EAAE,OAAO,CAAA;IACpB,oDAAoD;IACpD,QAAQ,EAAE,OAAO,CAAA;IACjB,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAA;IAClB;;kDAE8C;IAC9C,SAAS,EAAE,MAAM,CAAA;IACjB,wEAAwE;IACxE,oBAAoB,EAAE,OAAO,CAAA;IAC7B;;;;mEAI+D;IAC/D,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC7C;AAMD,iEAAiE;AACjE,eAAO,MAAM,QAAQ,EAAE,eAkBtB,CAAA;AAOD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAKtD;AA8MD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,GAAG,EAAE,MAAM,CAAC,UAAU,GACrB;IACD,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,EAAE,MAAM,CAAC,MAAM,eAAe,EAAE,YAAY,CAAC,CAAA;CACrD,CAwBA;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQ5F;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAE3D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAiCjB,CAAA"}
@@ -38,4 +38,11 @@ export declare function responseJson(res: ServerResponse, status: number, body:
38
38
  * @returns true when the request may mutate the workspace.
39
39
  */
40
40
  export declare function sameOriginPost(req: IncomingMessage): boolean;
41
+ /**
42
+ * One plugin-bridge refusal (PB-3): the standard JSON envelope plus the
43
+ * `x-zen-remote-error` marker header — the sub-client's passthrough layer
44
+ * classifies a refusal off the header alone, because the success path
45
+ * streams opaque plugin bytes and must never have to parse a body.
46
+ */
47
+ export declare function pluginBridgeError(res: ServerResponse, status: number, code: string): void;
41
48
  //# sourceMappingURL=http.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/http.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAEhE;;wEAEwE;AACxE,wBAAgB,YAAY,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CASrF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAgB5D"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/http.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAEhE;;wEAEwE;AACxE,wBAAgB,YAAY,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CASrF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAgB5D;AAGD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAGzF"}
@@ -23,6 +23,8 @@ declare module '@deepseek-ai/cordis' {
23
23
  }
24
24
  import type { AdminAdmission } from './admin-routes.js';
25
25
  import type { RelayClient } from './relay-client.js';
26
+ import type { BridgeRegistry } from './plugin-bridge.js';
27
+ export type { BridgeDeclaration, ZenRemoteService } from './plugin-bridge.js';
26
28
  export { Config, resolveRole } from './config.js';
27
29
  export { sameOriginPost } from './http.js';
28
30
  /** Exact route the phone composer POSTs one file body to. */
@@ -37,6 +39,8 @@ export declare const UPLOAD_DIR = ".dsh-uploads";
37
39
  export declare const DEFAULT_MAX_UPLOAD_BYTES: number;
38
40
  /** The live client-role relay client, if one was built. */
39
41
  export declare function getRelayClient(): RelayClient | undefined;
42
+ /** The live bridge registry, if a plugin row is currently applied. */
43
+ export declare function getBridgeRegistry(): BridgeRegistry | undefined;
40
44
  /** Host half config. Every field below arrives through the loader as a
41
45
  * volatile live reference — a `{ get() }` wrapper over the stored value, not
42
46
  * the value itself (src/config.ts explains why every field is volatile) — so
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAIhE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAWlD,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAU,MAAM;QACd,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,CAAA;KAClD;CACF;AAUD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAKvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAgBpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAS1C,6DAA6D;AAC7D,eAAO,MAAM,YAAY,4BAA4B,CAAA;AAiBrD;;kEAEkE;AAClE,eAAO,MAAM,mBAAmB,mCAAmC,CAAA;AAEnE,+FAA+F;AAC/F,eAAO,MAAM,UAAU,iBAAiB,CAAA;AAExC,6DAA6D;AAC7D,eAAO,MAAM,wBAAwB,QAAmB,CAAA;AAiBxD,2DAA2D;AAC3D,wBAAgB,cAAc,IAAI,WAAW,GAAG,SAAS,CAExD;AAED;;;;;8DAK8D;AAC9D,MAAM,WAAW,eAAe;IAC9B;;;;qEAIiE;IACjE,IAAI,CAAC,EAAE,OAAO,CAAA;IACd;iEAC6D;IAC7D,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;;;uDAGmD;IACnD,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB;;;;;;;+DAO2D;IAC3D,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B;wCACoC;IACpC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B;wEACoE;IACpE,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B;AAED;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAGhH;AA6BD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAKnE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAgBlD;AA6HD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,cAAc,GAC/C,OAAO,CAAC,IAAI,CAAC,CAyCf;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,GAAE,eAAoB,GAAG,IAAI,CAkmBtE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAIhE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAWlD,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAU,MAAM;QACd,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,CAAA;KAClD;CACF;AAUD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAKvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAgBpD,OAAO,KAAK,EAAqB,cAAc,EAAqD,MAAM,oBAAoB,CAAA;AAO9H,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAO7E,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAS1C,6DAA6D;AAC7D,eAAO,MAAM,YAAY,4BAA4B,CAAA;AAiBrD;;kEAEkE;AAClE,eAAO,MAAM,mBAAmB,mCAAmC,CAAA;AAEnE,+FAA+F;AAC/F,eAAO,MAAM,UAAU,iBAAiB,CAAA;AAExC,6DAA6D;AAC7D,eAAO,MAAM,wBAAwB,QAAmB,CAAA;AAiBxD,2DAA2D;AAC3D,wBAAgB,cAAc,IAAI,WAAW,GAAG,SAAS,CAExD;AAaD,sEAAsE;AACtE,wBAAgB,iBAAiB,IAAI,cAAc,GAAG,SAAS,CAE9D;AAED;;;;;8DAK8D;AAC9D,MAAM,WAAW,eAAe;IAC9B;;;;qEAIiE;IACjE,IAAI,CAAC,EAAE,OAAO,CAAA;IACd;iEAC6D;IAC7D,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;;;uDAGmD;IACnD,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB;;;;;;;+DAO2D;IAC3D,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B;wCACoC;IACpC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B;wEACoE;IACpE,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B;AAED;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAGhH;AA6BD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAKnE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAgBlD;AA6HD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,cAAc,GAC/C,OAAO,CAAC,IAAI,CAAC,CAyCf;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,GAAE,eAAoB,GAAG,IAAI,CAg0BtE"}