@yadsh/dsh-qa-surface 0.7.4 → 0.9.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 (247) hide show
  1. package/README.md +169 -12
  2. package/compatibility.json +5 -0
  3. package/lib/access/capability-catalog.js +32 -3
  4. package/lib/access/capability-catalog.js.map +1 -1
  5. package/lib/access/model.js +24 -4
  6. package/lib/access/model.js.map +1 -1
  7. package/lib/access/role-repository.js +199 -91
  8. package/lib/access/role-repository.js.map +1 -1
  9. package/lib/access/service.js +223 -7
  10. package/lib/access/service.js.map +1 -1
  11. package/lib/account-remotes.js +2 -4
  12. package/lib/account-remotes.js.map +1 -1
  13. package/lib/accounts/database.js +447 -0
  14. package/lib/accounts/database.js.map +1 -0
  15. package/lib/accounts/errors.js.map +1 -1
  16. package/lib/accounts/file.js +27 -90
  17. package/lib/accounts/file.js.map +1 -1
  18. package/lib/accounts/store.js +224 -59
  19. package/lib/accounts/store.js.map +1 -1
  20. package/lib/admin/permissions.js +4 -0
  21. package/lib/admin/permissions.js.map +1 -1
  22. package/lib/admin/quality-store.js +270 -54
  23. package/lib/admin/quality-store.js.map +1 -1
  24. package/lib/admin/service.js +145 -7
  25. package/lib/admin/service.js.map +1 -1
  26. package/lib/admin/session-log.js +66 -5
  27. package/lib/admin/session-log.js.map +1 -1
  28. package/lib/cli.js +2 -1
  29. package/lib/cli.js.map +1 -1
  30. package/lib/client/QaSessionController.js +379 -39
  31. package/lib/client/QaSessionController.js.map +1 -1
  32. package/lib/client/QaSurface.js +94 -34
  33. package/lib/client/QaSurface.js.map +1 -1
  34. package/lib/client/QaTranscriptAdapter.js +40 -0
  35. package/lib/client/QaTranscriptAdapter.js.map +1 -1
  36. package/lib/client/admin/QaAdmin.js +26 -8
  37. package/lib/client/admin/QaAdmin.js.map +1 -1
  38. package/lib/client/admin/{format.js → copy.js} +1 -1
  39. package/lib/client/admin/copy.js.map +1 -0
  40. package/lib/client/admin/pages/Conversations.js +34 -8
  41. package/lib/client/admin/pages/Conversations.js.map +1 -1
  42. package/lib/client/admin/pages/Overview.js +1 -1
  43. package/lib/client/admin/pages/Overview.js.map +1 -1
  44. package/lib/client/admin/pages/Quality.js +1 -1
  45. package/lib/client/admin/pages/Quality.js.map +1 -1
  46. package/lib/client/admin/pages/Review.js +1 -1
  47. package/lib/client/admin/pages/Review.js.map +1 -1
  48. package/lib/client/admin/pages/Users.js +6 -2
  49. package/lib/client/admin/pages/Users.js.map +1 -1
  50. package/lib/client/admin/shared.js +10 -1
  51. package/lib/client/admin/shared.js.map +1 -1
  52. package/lib/client/admin/styles.js +2 -0
  53. package/lib/client/admin/styles.js.map +1 -1
  54. package/lib/client/audit/QaAuditDialog.js +74 -0
  55. package/lib/client/audit/QaAuditDialog.js.map +1 -0
  56. package/lib/client/audit/QaAuditRowBadge.js +17 -0
  57. package/lib/client/audit/QaAuditRowBadge.js.map +1 -0
  58. package/lib/client/audit/controller.js +39 -0
  59. package/lib/client/audit/controller.js.map +1 -0
  60. package/lib/client/audit/types.js +36 -0
  61. package/lib/client/audit/types.js.map +1 -0
  62. package/lib/client/audit/use-chat-audits.js +139 -0
  63. package/lib/client/audit/use-chat-audits.js.map +1 -0
  64. package/lib/client/components/Markdown.js +14 -206
  65. package/lib/client/components/Markdown.js.map +1 -1
  66. package/lib/client/components/QaChangelog.js +91 -0
  67. package/lib/client/components/QaChangelog.js.map +1 -1
  68. package/lib/client/components/QaComposer.js +63 -3
  69. package/lib/client/components/QaComposer.js.map +1 -1
  70. package/lib/client/components/QaHeader.js +1 -3
  71. package/lib/client/components/QaHeader.js.map +1 -1
  72. package/lib/client/components/QaMessage.js +25 -4
  73. package/lib/client/components/QaMessage.js.map +1 -1
  74. package/lib/client/components/QaQuestions.js +1 -1
  75. package/lib/client/components/QaQuestions.js.map +1 -1
  76. package/lib/client/components/QaSidebar.js +17 -3
  77. package/lib/client/components/QaSidebar.js.map +1 -1
  78. package/lib/client/components/QaSourcesPanel.js +3 -18
  79. package/lib/client/components/QaSourcesPanel.js.map +1 -1
  80. package/lib/client/components/QaWorkGroup.js +4 -8
  81. package/lib/client/components/QaWorkGroup.js.map +1 -1
  82. package/lib/client/components/source-icon.js +26 -0
  83. package/lib/client/components/source-icon.js.map +1 -0
  84. package/lib/client/components/thinking-phrases.js +2 -11
  85. package/lib/client/components/thinking-phrases.js.map +1 -1
  86. package/lib/client/components/use-now.js +21 -0
  87. package/lib/client/components/use-now.js.map +1 -0
  88. package/lib/client/index.js +33 -5
  89. package/lib/client/index.js.map +1 -1
  90. package/lib/client/lineage.js +18 -0
  91. package/lib/client/lineage.js.map +1 -0
  92. package/lib/client/markdown/CodeBlock.js +28 -0
  93. package/lib/client/markdown/CodeBlock.js.map +1 -0
  94. package/lib/client/markdown/blocks.js +342 -0
  95. package/lib/client/markdown/blocks.js.map +1 -0
  96. package/lib/client/markdown/highlight.js +1089 -0
  97. package/lib/client/markdown/highlight.js.map +1 -0
  98. package/lib/client/markdown/inline.js +377 -0
  99. package/lib/client/markdown/inline.js.map +1 -0
  100. package/lib/client/markdown/render.js +147 -0
  101. package/lib/client/markdown/render.js.map +1 -0
  102. package/lib/client/markdown/source-chip.js +55 -0
  103. package/lib/client/markdown/source-chip.js.map +1 -0
  104. package/lib/client/markdown/use-transient-flag.js +27 -0
  105. package/lib/client/markdown/use-transient-flag.js.map +1 -0
  106. package/lib/client/project-session-state.js +15 -2
  107. package/lib/client/project-session-state.js.map +1 -1
  108. package/lib/client/prompt-content.js +26 -0
  109. package/lib/client/prompt-content.js.map +1 -1
  110. package/lib/client/role/RoleSelector.js +11 -2
  111. package/lib/client/role/RoleSelector.js.map +1 -1
  112. package/lib/client/role/preview.js +123 -0
  113. package/lib/client/role/preview.js.map +1 -0
  114. package/lib/client/settings/card.js +2 -2
  115. package/lib/client/settings/card.js.map +1 -1
  116. package/lib/client/settings/sections/lockdown.js +1 -6
  117. package/lib/client/settings/sections/lockdown.js.map +1 -1
  118. package/lib/client/settings/sections/slash.js +57 -0
  119. package/lib/client/settings/sections/slash.js.map +1 -0
  120. package/lib/client/settings/sections/status.js +9 -1
  121. package/lib/client/settings/sections/status.js.map +1 -1
  122. package/lib/client/settings/sections.js +1 -0
  123. package/lib/client/settings/sections.js.map +1 -1
  124. package/lib/client/slash/SlashPalette.js +48 -0
  125. package/lib/client/slash/SlashPalette.js.map +1 -0
  126. package/lib/client/slash/copy.js +54 -0
  127. package/lib/client/slash/copy.js.map +1 -0
  128. package/lib/client/slash/slash-router.js +49 -0
  129. package/lib/client/slash/slash-router.js.map +1 -0
  130. package/lib/client/slash/useSlashNavigation.js +95 -0
  131. package/lib/client/slash/useSlashNavigation.js.map +1 -0
  132. package/lib/client/styles.js +124 -20
  133. package/lib/client/styles.js.map +1 -1
  134. package/lib/client/types.js +11 -0
  135. package/lib/client/types.js.map +1 -1
  136. package/lib/client.js +7615 -1567
  137. package/lib/client.js.map +1 -1
  138. package/lib/config-resolvers/accounts.js +15 -0
  139. package/lib/config-resolvers/accounts.js.map +1 -1
  140. package/lib/config-resolvers/basics.js +11 -2
  141. package/lib/config-resolvers/basics.js.map +1 -1
  142. package/lib/config-resolvers/defaults.js +30 -0
  143. package/lib/config-resolvers/defaults.js.map +1 -1
  144. package/lib/config-resolvers/lockdown.js +8 -2
  145. package/lib/config-resolvers/lockdown.js.map +1 -1
  146. package/lib/config-resolvers/slash-commands.js +60 -0
  147. package/lib/config-resolvers/slash-commands.js.map +1 -0
  148. package/lib/config-resolvers/sources.js +16 -0
  149. package/lib/config-resolvers/sources.js.map +1 -1
  150. package/lib/config.js +118 -2
  151. package/lib/config.js.map +1 -1
  152. package/lib/index.js +183 -11
  153. package/lib/index.js.map +1 -1
  154. package/lib/lockdown-policy.js +19 -0
  155. package/lib/lockdown-policy.js.map +1 -1
  156. package/lib/personal-skills/service.js +16 -3
  157. package/lib/personal-skills/service.js.map +1 -1
  158. package/lib/provenance/host-store.js +25 -4
  159. package/lib/provenance/host-store.js.map +1 -1
  160. package/lib/provenance/retention.js +25 -0
  161. package/lib/provenance/retention.js.map +1 -0
  162. package/lib/provenance/snapshot-store.js +290 -35
  163. package/lib/provenance/snapshot-store.js.map +1 -1
  164. package/lib/questions.js +98 -38
  165. package/lib/questions.js.map +1 -1
  166. package/lib/resolve-config.js +5 -0
  167. package/lib/resolve-config.js.map +1 -1
  168. package/lib/secure-session.js +139 -21
  169. package/lib/secure-session.js.map +1 -1
  170. package/lib/slash/catalog.js +77 -0
  171. package/lib/slash/catalog.js.map +1 -0
  172. package/lib/slash/matcher.js +100 -0
  173. package/lib/slash/matcher.js.map +1 -0
  174. package/lib/slash/parser.js +79 -0
  175. package/lib/slash/parser.js.map +1 -0
  176. package/lib/slash/policy.js +72 -0
  177. package/lib/slash/policy.js.map +1 -0
  178. package/lib/slash/remotes.js +272 -0
  179. package/lib/slash/remotes.js.map +1 -0
  180. package/lib/typert.host.js +348 -56
  181. package/lib/typert.remote-client.d.ts +7 -1
  182. package/lib/typert.remote-client.js +274 -51
  183. package/lib/types/access/capability-catalog.d.ts +28 -1
  184. package/lib/types/access/role-repository.d.ts +38 -7
  185. package/lib/types/access/service.d.ts +106 -3
  186. package/lib/types/account-remotes.d.ts +8 -4
  187. package/lib/types/accounts/database.d.ts +84 -0
  188. package/lib/types/accounts/errors.d.ts +7 -1
  189. package/lib/types/accounts/file.d.ts +17 -39
  190. package/lib/types/accounts/store.d.ts +110 -19
  191. package/lib/types/admin/quality-store.d.ts +38 -2
  192. package/lib/types/admin/service.d.ts +34 -2
  193. package/lib/types/admin/session-log.d.ts +65 -1
  194. package/lib/types/client/QaSessionController.d.ts +84 -2
  195. package/lib/types/client/QaSurface.d.ts +14 -1
  196. package/lib/types/client/admin/{format.d.ts → copy.d.ts} +1 -1
  197. package/lib/types/client/admin/pages/Conversations.d.ts +4 -0
  198. package/lib/types/client/audit/QaAuditDialog.d.ts +21 -0
  199. package/lib/types/client/audit/QaAuditRowBadge.d.ts +18 -0
  200. package/lib/types/client/audit/controller.d.ts +27 -0
  201. package/lib/types/client/audit/types.d.ts +72 -0
  202. package/lib/types/client/audit/use-chat-audits.d.ts +20 -0
  203. package/lib/types/client/components/Markdown.d.ts +7 -8
  204. package/lib/types/client/components/QaComposer.d.ts +12 -2
  205. package/lib/types/client/components/QaQuestions.d.ts +7 -0
  206. package/lib/types/client/components/QaSidebar.d.ts +11 -1
  207. package/lib/types/client/components/QaSourcesPanel.d.ts +1 -3
  208. package/lib/types/client/components/source-icon.d.ts +12 -0
  209. package/lib/types/client/components/use-now.d.ts +8 -0
  210. package/lib/types/client/lineage.d.ts +15 -0
  211. package/lib/types/client/markdown/CodeBlock.d.ts +14 -0
  212. package/lib/types/client/markdown/blocks.d.ts +74 -0
  213. package/lib/types/client/markdown/highlight.d.ts +29 -0
  214. package/lib/types/client/markdown/inline.d.ts +40 -0
  215. package/lib/types/client/markdown/render.d.ts +13 -0
  216. package/lib/types/client/markdown/source-chip.d.ts +32 -0
  217. package/lib/types/client/markdown/use-transient-flag.d.ts +12 -0
  218. package/lib/types/client/project-session-state.d.ts +3 -1
  219. package/lib/types/client/prompt-content.d.ts +9 -1
  220. package/lib/types/client/role/RoleSelector.d.ts +11 -1
  221. package/lib/types/client/role/preview.d.ts +109 -0
  222. package/lib/types/client/settings/sections/slash.d.ts +16 -0
  223. package/lib/types/client/settings/sections.d.ts +1 -0
  224. package/lib/types/client/slash/SlashPalette.d.ts +24 -0
  225. package/lib/types/client/slash/copy.d.ts +30 -0
  226. package/lib/types/client/slash/slash-router.d.ts +67 -0
  227. package/lib/types/client/slash/useSlashNavigation.d.ts +47 -0
  228. package/lib/types/client/styles.d.ts +9 -0
  229. package/lib/types/client/types.d.ts +16 -1
  230. package/lib/types/config-resolvers/slash-commands.d.ts +20 -0
  231. package/lib/types/index.d.ts +83 -2
  232. package/lib/types/lockdown-policy.d.ts +16 -0
  233. package/lib/types/personal-skills/service.d.ts +5 -0
  234. package/lib/types/provenance/host-store.d.ts +20 -3
  235. package/lib/types/provenance/retention.d.ts +46 -0
  236. package/lib/types/provenance/snapshot-store.d.ts +63 -7
  237. package/lib/types/questions.d.ts +13 -0
  238. package/lib/types/secure-session.d.ts +27 -1
  239. package/lib/types/slash/catalog.d.ts +56 -0
  240. package/lib/types/slash/matcher.d.ts +51 -0
  241. package/lib/types/slash/parser.d.ts +46 -0
  242. package/lib/types/slash/policy.d.ts +40 -0
  243. package/lib/types/slash/remotes.d.ts +35 -0
  244. package/lib/types/types.d.ts +254 -5
  245. package/package.json +9 -5
  246. package/scripts/attach-workspace-sessions.mjs +472 -0
  247. package/lib/client/admin/format.js.map +0 -1
package/README.md CHANGED
@@ -13,12 +13,22 @@ Session and Agent Loop.
13
13
  - renders only user text, assistant-visible text and safe status messages;
14
14
  - supports streaming, Stop, optional New chat, safe Markdown, copy actions and
15
15
  a responsive first-party-style conversation layout;
16
+ - renders assistant Markdown with this plugin's own GFM grammar — headings
17
+ through `######`, nested and task lists, tables, quotes, images, autolinks,
18
+ reference links — inside an HTML-free renderer, and relays the host theme's
19
+ own typography and syntax colors (`--dsw-font-markdown-*`,
20
+ `--dsw-alias-markdown-*`, `--shiki-token-*`) so a fenced block here reads
21
+ like one in DSH's own transcript, in either theme and at any font-size
22
+ preference. A fence carries the language banner, a copy button and a built-in
23
+ highlighter for the languages answers use; an unknown or absent language
24
+ stays plain monospace;
16
25
  - optionally shows a minimal per-browser chat-history sidebar
17
26
  (`ui.showSessionList`) whose switching re-runs policy attestation;
18
27
  - blocks unsupported approvals/questions instead of auto-approving them, and can
19
28
  park them for the operator to answer (`interaction.approvals: interactive`,
20
29
  `interaction.questions: interactive`) instead of refusing or stalling on a
21
- card the QA view cannot show;
30
+ card the QA view cannot show; a parked question takes the composer's place
31
+ until it is answered or its turn ends;
22
32
  - pins locked sessions to the configured `read-only` or isolated
23
33
  `workspace-write` policy plus `approval=never` before Send is enabled;
24
34
  - applies a Host-side tool allow-list plus a monotonic execution guard;
@@ -145,6 +155,10 @@ config:
145
155
  enabled: false
146
156
  allowRegistration: true
147
157
  sessionTtlDays: 30
158
+ # Login/registration attempts accepted per rolling minute, store-wide
159
+ # (optional). The limit backs the password checks; raise it only when a
160
+ # shared kiosk genuinely needs the headroom.
161
+ maxAuthAttemptsPerMinute: 30
148
162
  showOtherUsersChats: false
149
163
  perUserWorkspace: false
150
164
  profile:
@@ -176,8 +190,17 @@ config:
176
190
  # interactive: park it over the composer for the operator to answer.
177
191
  approvals: blocked
178
192
  # unsupported: refuse ask_user_question with an actionable reason.
179
- # interactive: park the request over the composer as an answerable form.
193
+ # interactive (or enabled): park the request over the composer as an
194
+ # answerable form, which owns the composer until it is answered or the
195
+ # turn ends.
180
196
  questions: unsupported
197
+ # Root-page entry behavior (optional; see "Serving the QA rig over the LAN").
198
+ entry:
199
+ # Inject the root → /qa redirect for non-loopback hostnames.
200
+ redirectNonLoopback: true
201
+ # Let the /qa route run the one-time ?token= host-cookie exchange itself,
202
+ # so transparent entry works without the deploy proxy.
203
+ cookieBootstrap: true
181
204
  lockdown:
182
205
  enabled: true
183
206
  enforceFixedAgentPreset: true
@@ -331,6 +354,32 @@ passes the child as session `cwd` but deliberately does not register or attach
331
354
  it as another DSH Workspace. Chats therefore remain ordinary entries in the
332
355
  global DSH session list rather than creating one Workspace row per account.
333
356
 
357
+ That choice has one visible consequence: in the host's workspace browser these
358
+ chats sit under `Ungrouped`. DSH grants Workspace membership only to a session
359
+ whose stored cwd IS the Workspace path - `Workspace.attachSession` compares the
360
+ two after `realpath`, and the browser derives its groups from
361
+ `workspace.sessionIds` alone - so a per-account child directory can never be a
362
+ member, and no later action can make it one: the contract has no attach or
363
+ membership request for an existing session, and dragging a session never
364
+ crosses groups. Registering a Workspace per account directory would group them,
365
+ at the cost of putting every visitor's scratch root into the operator's global
366
+ workspace registry; this plugin does not do that.
367
+
368
+ Chats left outside every workspace for a repairable reason - created while the
369
+ deployment pinned `session.cwd`, or through `workspaceId` with the same
370
+ directory spelled differently (`E:/base` against `E:\base`) - can be adopted
371
+ while DSH is stopped:
372
+
373
+ ```bash
374
+ qa-attach-sessions # dry run against $DSH_HOME
375
+ qa-attach-sessions --write # adopt; registry backed up first
376
+ ```
377
+
378
+ The command adopts only sessions whose canonical cwd IS a registered Workspace
379
+ path, prepends them newest first, and refuses anything below a Workspace path,
380
+ because the Host drops those from membership again on the next read. Per-user
381
+ chats are therefore never touched.
382
+
334
383
  The boundary combines DSH `workspace-write` with a Host tool guard for both
335
384
  read and write paths, canonicalizes existing ancestors to reject symlink
336
385
  escapes, propagates the root to subagent sessions, rejects shell/process/LSP
@@ -493,6 +542,81 @@ transcript shows and image thumbnails resolved from the session's asset
493
542
  repository; each group jumps back to its message. Below 600px the rail goes
494
543
  full-bleed. The agents drawer keeps its own header drawer for now.
495
544
 
545
+ ### Slash commands and skills
546
+
547
+ Off by default. Typing `/` in the composer normally gets the same refusal it
548
+ always did («Команды со слешем недоступны в режиме помощника»), and nothing
549
+ about that changes for a deployment that upgrades.
550
+
551
+ Turn it on with the master switch, then say exactly what it admits:
552
+
553
+ ```yaml
554
+ lockdown:
555
+ allowSlashCommands: true
556
+
557
+ slashCommands:
558
+ skills:
559
+ mode: allow-list # deny-all | allow-list | all
560
+ allow:
561
+ - generate-tkp
562
+ - generate-tz
563
+ - gap-analysis
564
+ commands:
565
+ mode: deny-all # deny-all | allow-list | all
566
+ allow: []
567
+ palette:
568
+ enabled: true
569
+ fuzzySearch: true
570
+ maxVisible: 12
571
+ showDescriptions: true
572
+ showKindBadge: true
573
+ ```
574
+
575
+ The switch and the policy are two separate decisions: turning slashes on opens
576
+ the palette, and the palette offers only what the two lists name. A deployment
577
+ that enables the switch and declares nothing gets the legacy behaviour — every
578
+ user-invocable skill of the chat, no commands at all — and the Host says so once
579
+ in its log (`slash.legacy-defaults`) rather than silently behaving as if it had
580
+ been configured.
581
+
582
+ The two kinds behave differently, and the difference is the point:
583
+
584
+ ```text
585
+ Skill Human command
586
+ /generate-tkp Сделай ТКП /compact
587
+ → ordinary model turn → the Host runs it
588
+ → the native skill consumer injects → the model never sees it
589
+ the skill's instructions → command/run + command/done land
590
+ → QA reads no SKILL.md and injects in the session log, projected as a
591
+ nothing itself control row, not an answer bubble
592
+ ```
593
+
594
+ A skill with `user-invocable: true` and `disable-model-invocation: true` shows up
595
+ in the palette and runs; the model still cannot see it. A skill with
596
+ `user-invocable: false` never appears. `/name` typed inside an ordinary sentence
597
+ still works the way it does everywhere else in the Harness — QA does not
598
+ rewrite that path — but when the deployment withholds that particular skill, the
599
+ composer says so before the turn runs instead of letting the user believe it
600
+ took effect.
601
+
602
+ Keyboard and touch: `/` opens the palette above the composer and it closes as
603
+ soon as a space is typed (you are writing arguments by then). `↑`/`↓` move,
604
+ `Tab` and `Enter` insert the invocation **without running it** — the second
605
+ Enter sends — and `Escape` closes. Clicking or tapping a row inserts it and
606
+ leaves the caret in the field. A skill and a command that share a name are two
607
+ separate rows, and a hand-typed `/plan` when both exist asks which one you
608
+ meant rather than guessing.
609
+
610
+ Admission is the Host's, not the browser's. The catalog arrives already filtered
611
+ by the policy and by the chat's role, and `/compact` typed by hand is re-checked
612
+ against the same policy before the native runtime is allowed near it. The slash
613
+ interface changes nothing about tools, the sandbox, the permission preset or
614
+ approvals: a skill invoked by hand carries exactly the permissions it carries
615
+ when the model loads it.
616
+
617
+ The settings card carries the same policy under «Слеш-действия», with the
618
+ allow lists as plain name lists — the config stores names, never ids.
619
+
496
620
  ### Panel extensions
497
621
 
498
622
  QA Surface can host optional feature panels without importing those features.
@@ -630,7 +754,10 @@ still opens in an explicit compatibility read-only mode. Send, stop, approvals
630
754
  and questions stay disabled so the historical session cannot bypass the
631
755
  current workspace or permission boundary; use New chat to continue under the
632
756
  current configuration. A chat the Host no longer lists is pruned from the
633
- index. Each
757
+ index, and so is a delegated subagent session: the rows, the chat counter in
758
+ the account settings and the first-login claim batch all read the same lineage
759
+ marks the host list carries, so a subagent's transcript can never be reopened,
760
+ counted or migrated as a chat. Each
634
761
  row carries a two-click delete control that removes the chat from this
635
762
  browser's index; deleting the chat that is currently open continues in a
636
763
  fresh attested session. Host-side sessions are not deleted — DSH 0.1.x
@@ -710,10 +837,17 @@ audit trail at `/qa/admin`. Capability choices come from the live tool and
710
837
  skill registries; configured-but-missing entries remain visible and are not
711
838
  deleted. Admin authorization affects only the management API and never grants
712
839
  agent capabilities. `Preview as role` creates an ordinary session using the
713
- selected role's real server-enforced policy and shows a persistent preview
714
- banner.
715
-
716
- The configuration lives in `$DSH_HOME/qa-capability-policies.json`; user
840
+ selected role's real server-enforced policy and shows the preview banner, which
841
+ carries the way out. The preview belongs to the navigation that opened it: it
842
+ ends when that entry is left, and an ordinary account never holds it, so a chat
843
+ started later in the same tab runs under the account's own default profile.
844
+ A user page reports each assigned profile's effective capabilities the way a
845
+ session resolves them: the deployment's pinned tools plus Common and the role,
846
+ the skill-grantable ceiling separately, and declared audiences among the
847
+ skills.
848
+
849
+ The configuration lives in `$DSH_HOME/qa-capability-policies.db` (a pre-0.8.0
850
+ `qa-capability-policies.json` beside it is imported on first use); user
717
851
  assignments and session snapshots stay with the existing account store. Tools
718
852
  are filtered with an agent-scoped restriction and a pre-execution gate. Skills
719
853
  use an agent-scoped `skill` consumer that publishes only the allow-listed
@@ -721,15 +855,24 @@ catalog and rejects direct out-of-policy loads with `SKILL_NOT_AVAILABLE`.
721
855
  The browser selector is hidden for a single assigned role. Switching roles
722
856
  after a meaningful turn requires confirmation and creates a new conversation.
723
857
 
724
- ### Tools that arrive with a skill
858
+ ### Tools that arrive with a skill, and tools taken away
725
859
 
726
- A role's tools are split into two classes. `always` tools are visible from the
727
- first model step. `skillGrantable` tools are a ceiling, not a grant: they stay
728
- out of the model's tool list until an activated skill requires them, which
860
+ A role's tools are split into three classes. `always` tools are visible from
861
+ the first model step. `skillGrantable` tools are a ceiling, not a grant: they
862
+ stay out of the model's tool list until an activated skill requires them, which
729
863
  keeps a large catalog such as browser automation out of every step of every
730
864
  conversation. An older flat `tools: []` list is read as `always`, so an
731
865
  upgraded deployment never hands out more than it did before.
732
866
 
867
+ `deny` withdraws a tool. The deployment's pinned `toolPolicy.allow` reaches
868
+ every profile, so a pinned name cannot simply be unchecked in a role; a denial
869
+ beats it, beats the Common layer and beats every skill, and it narrows the
870
+ ceiling below. Because the ceiling is a property of the conversation rather
871
+ than of one agent, the agents a chat delegates to — subagents and the named
872
+ domain experts — are held to it as well: they may reach anything the role can
873
+ reach, including tools a skill would grant, and nothing beyond it. Withdrawing
874
+ `dsh_git_*` from a role therefore withdraws it from that role's experts too.
875
+
733
876
  ### Skills declare their own audience
734
877
 
735
878
  A skill describes itself inside the ordinary `metadata` block of its
@@ -797,7 +940,13 @@ The console covers the quality loop end to end:
797
940
  the stored transcript: messages in recorded order, tool calls with their
798
941
  arguments, results and errors, per-message feedback, and the capability
799
942
  snapshot frozen when the session started. A link can point at one message
800
- (`/qa/admin/conversations/<id>/<seq>`).
943
+ (`/qa/admin/conversations/<id>/<seq>`). An administrator can also delete the
944
+ conversation from its own page: that removes the chat itself — its stored
945
+ log, the sessions delegated from it, its ownership record, its ratings,
946
+ reviews, queue entries and collected sources — unlike the sidebar's "delete
947
+ chat", which hides a row in one browser. The Host refuses while the Harness
948
+ still holds the session open or when the deployment stores sessions
949
+ somewhere directories cannot express, and audits the act.
801
950
  - **Review queue** — what needs attention, derived from unanswered negative
802
951
  feedback, explicitly queued conversations and failed tool calls. A reviewer
803
952
  classifies issues across answer, context, tools, skills and access, sets a
@@ -858,6 +1007,14 @@ the `qaSurface/describe` Host Remote, so branding, session pinning and
858
1007
  lockdown UI switches keep working over the LAN. Host-side enforcement was
859
1008
  never dependent on that read path.
860
1009
 
1010
+ `describe` takes no token on purpose — the browser needs the configuration
1011
+ before it can render anything — so treat its answer as public deployment
1012
+ metadata: any `/qa` visitor can read the full resolved configuration, not
1013
+ only the audience-facing projection, including operator-side values such as
1014
+ the `lockdown.sharedReadOnlyRoots` paths. Keep credentials and secrets out of
1015
+ the `qa-surface` configuration entirely; the plugin declares no field for
1016
+ them, and nothing in the channel redacts the resolved values.
1017
+
861
1018
  What a LAN deployment does not change:
862
1019
 
863
1020
  - DSH has no authentication or TLS on this port; anyone who can reach it can
@@ -27,6 +27,11 @@
27
27
  "workspaceRegistry.get",
28
28
  "skills.registerProvider",
29
29
  "skills.change"
30
+ ],
31
+ "optionalFeatures": [
32
+ "sessionSkillCatalog.list (the session's user-invocable skill catalog; without it the palette offers no skills)",
33
+ "commands.list (the session agent's effective commands; without it the palette offers no commands)",
34
+ "commands.execute (the native command runtime the slashExecute remote calls)"
30
35
  ]
31
36
  },
32
37
  "qaSurfacePanelExtensions": {
@@ -22,16 +22,29 @@ export class QaCapabilityCatalog {
22
22
  ctx;
23
23
  additionalToolNames;
24
24
  knownSubroles;
25
+ presetScope;
25
26
  constructor(ctx, additionalToolNames = () => [],
26
27
  /** Role ids used to report unknown subrole ids in skill metadata. */
27
- knownSubroles = () => []) {
28
+ knownSubroles = () => [],
29
+ /**
30
+ * The viewing scope an administrator's catalog is read with, for callers
31
+ * that have no agent of their own. Skills and tools an agent preset mounts
32
+ * (a kit's skill catalog, the preset's tool family) live in that preset's
33
+ * scope, so a global-only read reported an almost empty catalog: the
34
+ * administrator could neither see nor grant what every chat mounts.
35
+ * Resolving the scope may compose the preset; a failure degrades to the
36
+ * global view instead of failing the page.
37
+ */
38
+ presetScope = () => Promise.resolve(undefined)) {
28
39
  this.ctx = ctx;
29
40
  this.additionalToolNames = additionalToolNames;
30
41
  this.knownSubroles = knownSubroles;
42
+ this.presetScope = presetScope;
31
43
  }
32
44
  async snapshot(agent) {
45
+ const scope = agent ?? (await this.resolvePresetScope());
33
46
  const toolDescriptors = this.ctx.tools
34
- .schemas(agent)
47
+ .schemas(scope)
35
48
  .map((schema) => ({
36
49
  type: "tool",
37
50
  id: schema.name,
@@ -57,7 +70,7 @@ export class QaCapabilityCatalog {
57
70
  }
58
71
  const registry = this.ctx.get("skills");
59
72
  const lookup = {
60
- ...(agent === undefined ? {} : { scope: agent }),
73
+ ...(scope === undefined ? {} : { scope }),
61
74
  ...(agent?.session.header.cwd === undefined
62
75
  ? {}
63
76
  : { cwd: agent.session.header.cwd }),
@@ -90,6 +103,22 @@ export class QaCapabilityCatalog {
90
103
  : await this.readSkillMetadata(registry, skillList, lookup),
91
104
  });
92
105
  }
106
+ /**
107
+ * The scope an administrator's catalog is read with. A deployment that pins
108
+ * QA chats to an agent preset gets that preset's standing scope; without a
109
+ * pinned preset there is no scope to borrow, and the read stays global.
110
+ */
111
+ async resolvePresetScope() {
112
+ try {
113
+ return await this.presetScope();
114
+ }
115
+ catch (error) {
116
+ // A preset the deployment cannot compose is an operator problem this
117
+ // page is not the place to surface: the global view is still readable.
118
+ this.ctx.logger.warn(`qa-surface: could not resolve the QA preset scope for the capability catalog: ${error instanceof Error ? error.message : String(error)}`);
119
+ return undefined;
120
+ }
121
+ }
93
122
  /**
94
123
  * Read `metadata.qa-surface` of every discovered skill.
95
124
  *
@@ -1 +1 @@
1
- {"version":3,"file":"capability-catalog.js","sourceRoot":"","sources":["../../src/access/capability-catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capability-catalog.js","sourceRoot":"","sources":["../../src/access/capability-catalog.ts"],"names":[],"mappings":"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"}
@@ -29,12 +29,14 @@ export function normalizeToolSelection(value, label = "tools") {
29
29
  return Object.freeze({
30
30
  always: uniqueIds(value, label),
31
31
  skillGrantable: Object.freeze([]),
32
+ deny: Object.freeze([]),
32
33
  });
33
34
  }
34
35
  const selection = value;
35
36
  return Object.freeze({
36
37
  always: uniqueIds(selection?.always ?? [], `${label}.always`),
37
38
  skillGrantable: uniqueIds(selection?.skillGrantable ?? [], `${label}.skillGrantable`),
39
+ deny: uniqueIds(selection?.deny ?? [], `${label}.deny`),
38
40
  });
39
41
  }
40
42
  export function normalizeCapabilitySelection(value) {
@@ -149,12 +151,25 @@ export function roleToolSelection(config, subroleId) {
149
151
  const role = config.subroles.find((candidate) => candidate.id === subroleId && candidate.enabled);
150
152
  if (role === undefined)
151
153
  throw new TypeError("QA subrole is unavailable");
154
+ // A denial from either layer wins over every grant, including the pinned
155
+ // system tools: that is the only way an administrator can withdraw a name
156
+ // the deployment hands out to every profile. It narrows the grant ceiling
157
+ // too, so a skill cannot hand back what the role takes away.
158
+ const denied = new Set([
159
+ ...(config.common.tools.deny ?? []),
160
+ ...(role.capabilities.tools.deny ?? []),
161
+ ]);
162
+ const granted = (values) => uniqueIds(values, "tools").filter((name) => !denied.has(name));
152
163
  return Object.freeze({
153
- always: uniqueIds([...config.common.tools.always, ...role.capabilities.tools.always], "tools.always"),
154
- skillGrantable: uniqueIds([
164
+ always: granted([
165
+ ...config.common.tools.always,
166
+ ...role.capabilities.tools.always,
167
+ ]),
168
+ skillGrantable: granted([
155
169
  ...config.common.tools.skillGrantable,
156
170
  ...role.capabilities.tools.skillGrantable,
157
- ], "tools.skillGrantable"),
171
+ ]),
172
+ deny: Object.freeze([...denied]),
158
173
  });
159
174
  }
160
175
  /** The ceiling that bounds what one activated skill may add to the toolset. */
@@ -227,7 +242,12 @@ export function resolveCapabilityPolicy({ config, subroleId, systemTools, system
227
242
  const systemToolIds = uniqueIds(systemTools, "system tools");
228
243
  const systemSkillIds = uniqueIds(systemSkills, "system skills");
229
244
  const selection = roleToolSelection(config, role.id);
230
- const configuredBase = [...new Set([...systemToolIds, ...selection.always])];
245
+ // The denial reaches the system tools too: the deployment pins them for every
246
+ // profile, and withdrawing one is the only reason this list exists.
247
+ const denied = new Set(selection.deny ?? []);
248
+ const configuredBase = [
249
+ ...new Set([...systemToolIds, ...selection.always]),
250
+ ].filter((name) => !denied.has(name));
231
251
  const configuredGrantable = selection.skillGrantable;
232
252
  const { visible: configuredSkills, declared: declaredSkills } = resolveVisibleSkills(config, role, systemSkillIds, skillMetadata ?? new Map());
233
253
  const baseTools = [...available(configuredBase, installed.tools)];
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/access/model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/access/model.ts"],"names":[],"mappings":"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"}