@yadsh/dsh-qa-surface 0.13.0 → 0.14.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 (336) hide show
  1. package/README.md +148 -22
  2. package/compatibility.json +7 -3
  3. package/lib/access/capability-catalog.js +22 -6
  4. package/lib/access/capability-catalog.js.map +1 -1
  5. package/lib/access/model.js +36 -2
  6. package/lib/access/model.js.map +1 -1
  7. package/lib/access/service.js +19 -4
  8. package/lib/access/service.js.map +1 -1
  9. package/lib/account-remotes.js +4 -0
  10. package/lib/account-remotes.js.map +1 -1
  11. package/lib/accounts/database.js +49 -9
  12. package/lib/accounts/database.js.map +1 -1
  13. package/lib/accounts/errors.js.map +1 -1
  14. package/lib/accounts/file.js.map +1 -1
  15. package/lib/accounts/store.js +53 -8
  16. package/lib/accounts/store.js.map +1 -1
  17. package/lib/admin/permissions.js +6 -0
  18. package/lib/admin/permissions.js.map +1 -1
  19. package/lib/admin/quality-store.js +95 -19
  20. package/lib/admin/quality-store.js.map +1 -1
  21. package/lib/admin/service.js +178 -0
  22. package/lib/admin/service.js.map +1 -1
  23. package/lib/cli.js +24 -4
  24. package/lib/cli.js.map +1 -1
  25. package/lib/client/QaAccountsController.js +52 -5
  26. package/lib/client/QaAccountsController.js.map +1 -1
  27. package/lib/client/QaConfigController.js.map +1 -1
  28. package/lib/client/QaSessionController.js +626 -63
  29. package/lib/client/QaSessionController.js.map +1 -1
  30. package/lib/client/QaSurface.js +279 -43
  31. package/lib/client/QaSurface.js.map +1 -1
  32. package/lib/client/QaSurfaceGuard.js +2 -2
  33. package/lib/client/QaSurfaceGuard.js.map +1 -1
  34. package/lib/client/QaTranscriptAdapter.js +4 -2
  35. package/lib/client/QaTranscriptAdapter.js.map +1 -1
  36. package/lib/client/admin/QaAdmin.js +59 -34
  37. package/lib/client/admin/QaAdmin.js.map +1 -1
  38. package/lib/client/admin/pages/Conversations.js +12 -12
  39. package/lib/client/admin/pages/Conversations.js.map +1 -1
  40. package/lib/client/admin/pages/ExpertMemory.js +210 -0
  41. package/lib/client/admin/pages/ExpertMemory.js.map +1 -0
  42. package/lib/client/admin/pages/Overview.js +4 -4
  43. package/lib/client/admin/pages/Overview.js.map +1 -1
  44. package/lib/client/admin/pages/Quality.js +5 -5
  45. package/lib/client/admin/pages/Quality.js.map +1 -1
  46. package/lib/client/admin/pages/Review.js +5 -5
  47. package/lib/client/admin/pages/Review.js.map +1 -1
  48. package/lib/client/admin/pages/SkillFiles.js +3 -3
  49. package/lib/client/admin/pages/SkillFiles.js.map +1 -1
  50. package/lib/client/admin/pages/Users.js +12 -12
  51. package/lib/client/admin/pages/Users.js.map +1 -1
  52. package/lib/client/admin/routes.js +4 -0
  53. package/lib/client/admin/routes.js.map +1 -1
  54. package/lib/client/admin/shared.js +15 -6
  55. package/lib/client/admin/shared.js.map +1 -1
  56. package/lib/client/admin/styles.js +3 -0
  57. package/lib/client/admin/styles.js.map +1 -1
  58. package/lib/client/attestation.js +11 -2
  59. package/lib/client/attestation.js.map +1 -1
  60. package/lib/client/audit/QaAuditDialog.js +2 -2
  61. package/lib/client/audit/QaAuditDialog.js.map +1 -1
  62. package/lib/client/audit/QaAuditRowBadge.js +1 -1
  63. package/lib/client/audit/QaAuditRowBadge.js.map +1 -1
  64. package/lib/client/components/Markdown.js +7 -2
  65. package/lib/client/components/Markdown.js.map +1 -1
  66. package/lib/client/components/QaAgentsDrawer.js +7 -5
  67. package/lib/client/components/QaAgentsDrawer.js.map +1 -1
  68. package/lib/client/components/QaApproval.js +2 -2
  69. package/lib/client/components/QaApproval.js.map +1 -1
  70. package/lib/client/components/QaAuthGate.js +6 -6
  71. package/lib/client/components/QaAuthGate.js.map +1 -1
  72. package/lib/client/components/QaChangelog.js +64 -0
  73. package/lib/client/components/QaChangelog.js.map +1 -1
  74. package/lib/client/components/QaComposer.js +9 -6
  75. package/lib/client/components/QaComposer.js.map +1 -1
  76. package/lib/client/components/QaFileAttachment.js +1 -1
  77. package/lib/client/components/QaFileAttachment.js.map +1 -1
  78. package/lib/client/components/QaFilesPanel.js +7 -7
  79. package/lib/client/components/QaFilesPanel.js.map +1 -1
  80. package/lib/client/components/QaHeader.js +4 -4
  81. package/lib/client/components/QaHeader.js.map +1 -1
  82. package/lib/client/components/QaMessage.js +12 -12
  83. package/lib/client/components/QaMessage.js.map +1 -1
  84. package/lib/client/components/QaModal.js +11 -2
  85. package/lib/client/components/QaModal.js.map +1 -1
  86. package/lib/client/components/QaQuestions.js +4 -4
  87. package/lib/client/components/QaQuestions.js.map +1 -1
  88. package/lib/client/components/QaQueueDock.js +137 -0
  89. package/lib/client/components/QaQueueDock.js.map +1 -0
  90. package/lib/client/components/QaRequestQueue.js +22 -0
  91. package/lib/client/components/QaRequestQueue.js.map +1 -0
  92. package/lib/client/components/QaRightRail.js +2 -2
  93. package/lib/client/components/QaRightRail.js.map +1 -1
  94. package/lib/client/components/QaSidebar.js +66 -6
  95. package/lib/client/components/QaSidebar.js.map +1 -1
  96. package/lib/client/components/QaSourcesPanel.js +10 -8
  97. package/lib/client/components/QaSourcesPanel.js.map +1 -1
  98. package/lib/client/components/QaThemeSwitcher.js +19 -0
  99. package/lib/client/components/QaThemeSwitcher.js.map +1 -0
  100. package/lib/client/components/QaTurnNotice.js +40 -0
  101. package/lib/client/components/QaTurnNotice.js.map +1 -0
  102. package/lib/client/components/QaTurnRail.js +3 -3
  103. package/lib/client/components/QaTurnRail.js.map +1 -1
  104. package/lib/client/components/QaWelcomeNotice.js +2 -6
  105. package/lib/client/components/QaWelcomeNotice.js.map +1 -1
  106. package/lib/client/components/QaWidthHandle.js +2 -2
  107. package/lib/client/components/QaWidthHandle.js.map +1 -1
  108. package/lib/client/components/QaWorkGroup.js +5 -5
  109. package/lib/client/components/QaWorkGroup.js.map +1 -1
  110. package/lib/client/components/QaWorkspaceBrowser.js +10 -10
  111. package/lib/client/components/QaWorkspaceBrowser.js.map +1 -1
  112. package/lib/client/components/VariantSwitcher.js +1 -1
  113. package/lib/client/components/VariantSwitcher.js.map +1 -1
  114. package/lib/client/failure-copy.js +26 -8
  115. package/lib/client/failure-copy.js.map +1 -1
  116. package/lib/client/focus-ring.js +193 -0
  117. package/lib/client/focus-ring.js.map +1 -0
  118. package/lib/client/index.js +40 -20
  119. package/lib/client/index.js.map +1 -1
  120. package/lib/client/lineage.js +3 -16
  121. package/lib/client/lineage.js.map +1 -1
  122. package/lib/client/markdown/CodeBlock.js +2 -2
  123. package/lib/client/markdown/CodeBlock.js.map +1 -1
  124. package/lib/client/markdown/blocks.js +118 -31
  125. package/lib/client/markdown/blocks.js.map +1 -1
  126. package/lib/client/markdown/math.js +1 -1
  127. package/lib/client/markdown/math.js.map +1 -1
  128. package/lib/client/markdown/render.js +32 -16
  129. package/lib/client/markdown/render.js.map +1 -1
  130. package/lib/client/markdown/source-chip.js +3 -3
  131. package/lib/client/markdown/source-chip.js.map +1 -1
  132. package/lib/client/notifications/notification-dispatcher.js +90 -0
  133. package/lib/client/notifications/notification-dispatcher.js.map +1 -0
  134. package/lib/client/notifications/preferences.js +61 -0
  135. package/lib/client/notifications/preferences.js.map +1 -0
  136. package/lib/client/notifications/turn-completion-source.js +82 -0
  137. package/lib/client/notifications/turn-completion-source.js.map +1 -0
  138. package/lib/client/notifications/use-turn-notifications.js +108 -0
  139. package/lib/client/notifications/use-turn-notifications.js.map +1 -0
  140. package/lib/client/panels/PanelHost.js +5 -5
  141. package/lib/client/panels/PanelHost.js.map +1 -1
  142. package/lib/client/panels/PanelLauncher.js +2 -2
  143. package/lib/client/panels/PanelLauncher.js.map +1 -1
  144. package/lib/client/project-session-state.js +156 -4
  145. package/lib/client/project-session-state.js.map +1 -1
  146. package/lib/client/role/RoleSelector.js +9 -4
  147. package/lib/client/role/RoleSelector.js.map +1 -1
  148. package/lib/client/settings/card.js +58 -17
  149. package/lib/client/settings/card.js.map +1 -1
  150. package/lib/client/settings/fields.js +11 -10
  151. package/lib/client/settings/fields.js.map +1 -1
  152. package/lib/client/settings/format.js +0 -9
  153. package/lib/client/settings/format.js.map +1 -1
  154. package/lib/client/settings/sections/access.js +5 -5
  155. package/lib/client/settings/sections/access.js.map +1 -1
  156. package/lib/client/settings/sections/accounts.js +10 -10
  157. package/lib/client/settings/sections/accounts.js.map +1 -1
  158. package/lib/client/settings/sections/attachments.js +6 -6
  159. package/lib/client/settings/sections/attachments.js.map +1 -1
  160. package/lib/client/settings/sections/branding.js +7 -7
  161. package/lib/client/settings/sections/branding.js.map +1 -1
  162. package/lib/client/settings/sections/common.js +4 -2
  163. package/lib/client/settings/sections/common.js.map +1 -1
  164. package/lib/client/settings/sections/docs.js +4 -3
  165. package/lib/client/settings/sections/docs.js.map +1 -1
  166. package/lib/client/settings/sections/embedding.js +2 -2
  167. package/lib/client/settings/sections/embedding.js.map +1 -1
  168. package/lib/client/settings/sections/interface.js +12 -12
  169. package/lib/client/settings/sections/interface.js.map +1 -1
  170. package/lib/client/settings/sections/lockdown.js +9 -9
  171. package/lib/client/settings/sections/lockdown.js.map +1 -1
  172. package/lib/client/settings/sections/notes.js +12 -12
  173. package/lib/client/settings/sections/notes.js.map +1 -1
  174. package/lib/client/settings/sections/session.js +15 -12
  175. package/lib/client/settings/sections/session.js.map +1 -1
  176. package/lib/client/settings/sections/slash.js +9 -9
  177. package/lib/client/settings/sections/slash.js.map +1 -1
  178. package/lib/client/settings/sections/sources.js +26 -26
  179. package/lib/client/settings/sections/sources.js.map +1 -1
  180. package/lib/client/settings/sections/status.js +2 -2
  181. package/lib/client/settings/sections/status.js.map +1 -1
  182. package/lib/client/settings/styles.js +15 -9
  183. package/lib/client/settings/styles.js.map +1 -1
  184. package/lib/client/slash/SlashPalette.js +4 -4
  185. package/lib/client/slash/SlashPalette.js.map +1 -1
  186. package/lib/client/styles.js +133 -83
  187. package/lib/client/styles.js.map +1 -1
  188. package/lib/client/theme-preference.js +162 -0
  189. package/lib/client/theme-preference.js.map +1 -0
  190. package/lib/client/types.js +8 -0
  191. package/lib/client/types.js.map +1 -1
  192. package/lib/client/use-session-ui-state.js +7 -5
  193. package/lib/client/use-session-ui-state.js.map +1 -1
  194. package/lib/client/user-settings/GeneralSettingsPage.js +6 -6
  195. package/lib/client/user-settings/GeneralSettingsPage.js.map +1 -1
  196. package/lib/client/user-settings/IntegrationTokensPage.js +6 -6
  197. package/lib/client/user-settings/IntegrationTokensPage.js.map +1 -1
  198. package/lib/client/user-settings/NotificationSettingsPage.js +107 -0
  199. package/lib/client/user-settings/NotificationSettingsPage.js.map +1 -0
  200. package/lib/client/user-settings/PasswordSettingsPage.js +1 -1
  201. package/lib/client/user-settings/PasswordSettingsPage.js.map +1 -1
  202. package/lib/client/user-settings/ProfileSettingsPage.js +2 -2
  203. package/lib/client/user-settings/ProfileSettingsPage.js.map +1 -1
  204. package/lib/client/user-settings/SkillCatalog.js +3 -3
  205. package/lib/client/user-settings/SkillCatalog.js.map +1 -1
  206. package/lib/client/user-settings/SkillEditor.js +26 -8
  207. package/lib/client/user-settings/SkillEditor.js.map +1 -1
  208. package/lib/client/user-settings/SkillToolPicker.js +3 -3
  209. package/lib/client/user-settings/SkillToolPicker.js.map +1 -1
  210. package/lib/client/user-settings/SkillsSettingsPage.js +1 -1
  211. package/lib/client/user-settings/SkillsSettingsPage.js.map +1 -1
  212. package/lib/client/user-settings/StartersSettingsPage.js +6 -6
  213. package/lib/client/user-settings/StartersSettingsPage.js.map +1 -1
  214. package/lib/client/user-settings/UserSettingsDialog.js +7 -2
  215. package/lib/client/user-settings/UserSettingsDialog.js.map +1 -1
  216. package/lib/client/user-settings/copy.js +2 -0
  217. package/lib/client/user-settings/copy.js.map +1 -1
  218. package/lib/client/user-settings/draft.js +4 -1
  219. package/lib/client/user-settings/draft.js.map +1 -1
  220. package/lib/client/user-settings/fields.js +5 -5
  221. package/lib/client/user-settings/fields.js.map +1 -1
  222. package/lib/client.js +7228 -4002
  223. package/lib/client.js.map +1 -1
  224. package/lib/config-resolvers/defaults.js +7 -0
  225. package/lib/config-resolvers/defaults.js.map +1 -1
  226. package/lib/config-resolvers/lockdown.js +7 -0
  227. package/lib/config-resolvers/lockdown.js.map +1 -1
  228. package/lib/config-resolvers/notifications.js +15 -0
  229. package/lib/config-resolvers/notifications.js.map +1 -0
  230. package/lib/config-resolvers/session.js +11 -1
  231. package/lib/config-resolvers/session.js.map +1 -1
  232. package/lib/config.js +67 -18
  233. package/lib/config.js.map +1 -1
  234. package/lib/enforcement/tool-grants.js +6 -6
  235. package/lib/enforcement/tool-grants.js.map +1 -1
  236. package/lib/index.js +145 -30
  237. package/lib/index.js.map +1 -1
  238. package/lib/integration/answer.js +74 -8
  239. package/lib/integration/answer.js.map +1 -1
  240. package/lib/integration/expert-memory.js +39 -0
  241. package/lib/integration/expert-memory.js.map +1 -0
  242. package/lib/integration/host-runner.js +26 -14
  243. package/lib/integration/host-runner.js.map +1 -1
  244. package/lib/notifications.js +66 -0
  245. package/lib/notifications.js.map +1 -0
  246. package/lib/personal-skills/errors.js.map +1 -1
  247. package/lib/personal-skills/service.js +81 -7
  248. package/lib/personal-skills/service.js.map +1 -1
  249. package/lib/prompt-notes.js +2 -10
  250. package/lib/prompt-notes.js.map +1 -1
  251. package/lib/qa-tools/docs-tools.js +1 -1
  252. package/lib/qa-tools/docs-tools.js.map +1 -1
  253. package/lib/qa-tools/lifecycle.js +6 -3
  254. package/lib/qa-tools/lifecycle.js.map +1 -1
  255. package/lib/request-queue.js +32 -0
  256. package/lib/request-queue.js.map +1 -0
  257. package/lib/resolve-config.js +2 -0
  258. package/lib/resolve-config.js.map +1 -1
  259. package/lib/secure-session.js +7 -2
  260. package/lib/secure-session.js.map +1 -1
  261. package/lib/shared/settings.js +19 -2
  262. package/lib/shared/settings.js.map +1 -1
  263. package/lib/turn-failure-log.js +67 -0
  264. package/lib/turn-failure-log.js.map +1 -0
  265. package/lib/typert.host.js +1398 -651
  266. package/lib/typert.remote-client.d.ts +15 -1
  267. package/lib/typert.remote-client.js +1315 -645
  268. package/lib/types/access/capability-catalog.d.ts +20 -4
  269. package/lib/types/access/model.d.ts +23 -0
  270. package/lib/types/access/service.d.ts +2 -3
  271. package/lib/types/account-remotes.d.ts +8 -1
  272. package/lib/types/accounts/database.d.ts +13 -3
  273. package/lib/types/accounts/errors.d.ts +9 -1
  274. package/lib/types/accounts/file.d.ts +12 -0
  275. package/lib/types/accounts/store.d.ts +30 -2
  276. package/lib/types/admin/quality-store.d.ts +33 -0
  277. package/lib/types/admin/service.d.ts +60 -1
  278. package/lib/types/client/QaAccountsController.d.ts +25 -2
  279. package/lib/types/client/QaConfigController.d.ts +2 -2
  280. package/lib/types/client/QaSessionController.d.ts +199 -6
  281. package/lib/types/client/QaSurface.d.ts +6 -1
  282. package/lib/types/client/admin/pages/ExpertMemory.d.ts +19 -0
  283. package/lib/types/client/admin/routes.d.ts +3 -1
  284. package/lib/types/client/admin/shared.d.ts +4 -0
  285. package/lib/types/client/components/Markdown.d.ts +8 -1
  286. package/lib/types/client/components/QaHeader.d.ts +3 -1
  287. package/lib/types/client/components/QaModal.d.ts +7 -0
  288. package/lib/types/client/components/QaQueueDock.d.ts +27 -0
  289. package/lib/types/client/components/QaRequestQueue.d.ts +20 -0
  290. package/lib/types/client/components/QaThemeSwitcher.d.ts +14 -0
  291. package/lib/types/client/components/QaTurnNotice.d.ts +55 -0
  292. package/lib/types/client/focus-ring.d.ts +65 -0
  293. package/lib/types/client/lineage.d.ts +3 -13
  294. package/lib/types/client/markdown/blocks.d.ts +30 -2
  295. package/lib/types/client/markdown/render.d.ts +4 -1
  296. package/lib/types/client/notifications/notification-dispatcher.d.ts +68 -0
  297. package/lib/types/client/notifications/preferences.d.ts +44 -0
  298. package/lib/types/client/notifications/turn-completion-source.d.ts +114 -0
  299. package/lib/types/client/notifications/use-turn-notifications.d.ts +51 -0
  300. package/lib/types/client/project-session-state.d.ts +35 -1
  301. package/lib/types/client/role/RoleSelector.d.ts +7 -1
  302. package/lib/types/client/settings/card.d.ts +36 -5
  303. package/lib/types/client/settings/fields.d.ts +24 -0
  304. package/lib/types/client/settings/format.d.ts +0 -5
  305. package/lib/types/client/settings/sections/common.d.ts +3 -1
  306. package/lib/types/client/settings/sections/session.d.ts +2 -1
  307. package/lib/types/client/settings/styles.d.ts +9 -4
  308. package/lib/types/client/settings-extensions/user-session.d.ts +1 -1
  309. package/lib/types/client/theme-preference.d.ts +69 -0
  310. package/lib/types/client/types.d.ts +25 -1
  311. package/lib/types/client/use-session-ui-state.d.ts +6 -4
  312. package/lib/types/client/user-settings/GeneralSettingsPage.d.ts +5 -5
  313. package/lib/types/client/user-settings/NotificationSettingsPage.d.ts +40 -0
  314. package/lib/types/client/user-settings/UserSettingsDialog.d.ts +12 -2
  315. package/lib/types/client/user-settings/draft.d.ts +4 -1
  316. package/lib/types/client/user-settings/fields.d.ts +7 -0
  317. package/lib/types/config-resolvers/notifications.d.ts +10 -0
  318. package/lib/types/config-resolvers/session.d.ts +6 -0
  319. package/lib/types/config.d.ts +20 -1
  320. package/lib/types/index.d.ts +53 -5
  321. package/lib/types/integration/answer.d.ts +27 -0
  322. package/lib/types/integration/expert-memory.d.ts +49 -0
  323. package/lib/types/notifications.d.ts +32 -0
  324. package/lib/types/personal-skills/errors.d.ts +1 -1
  325. package/lib/types/personal-skills/service.d.ts +6 -0
  326. package/lib/types/prompt-notes.d.ts +17 -4
  327. package/lib/types/request-queue.d.ts +32 -0
  328. package/lib/types/shared/settings.d.ts +19 -2
  329. package/lib/types/turn-failure-log.d.ts +18 -0
  330. package/lib/types/types.d.ts +180 -4
  331. package/package.json +64 -63
  332. package/scripts/attach-workspace-sessions.mjs +24 -5
  333. package/scripts/repair-session-events.mjs +25 -5
  334. package/lib/client/markdown/MermaidBlock.js +0 -80
  335. package/lib/client/markdown/MermaidBlock.js.map +0 -1
  336. package/lib/types/client/markdown/MermaidBlock.d.ts +0 -6
@@ -1,5 +1,5 @@
1
1
  import qaSurfaceRemote from "@yadsh/dsh-qa-surface/remote";
2
- import { registerSettingsCard } from "@yadsh/dsh-plugin-kit/client";
2
+ import { injectCardStyles } from "@yadsh/dsh-plugin-kit/client";
3
3
  import { QaConfigController } from "./QaConfigController.js";
4
4
  import { matchesQaRoute, QaRouteController } from "./QaRouteController.js";
5
5
  import { QaAccountsController } from "./QaAccountsController.js";
@@ -12,9 +12,9 @@ import { QA_OVERLAY_STYLES, QA_ROOT_STYLES } from "./styles.js";
12
12
  import { qaKioskBasePath, qaKioskMode } from "./kiosk.js";
13
13
  import { QaAuditController } from "./audit/controller.js";
14
14
  import { createQaAuditApi } from "./audit/types.js";
15
- import { QA_SURFACE_SETTINGS_NAMESPACE } from "../shared/settings.js";
15
+ import { QA_SURFACE_ROW_CONFIG_KEY, QA_SURFACE_SETTINGS_NAMESPACE, } from "../shared/settings.js";
16
16
  import { qaStorageNamespace } from "../shared/session-key.js";
17
- import { QaSettingsCard } from "./settings/card.js";
17
+ import { QaSettingsCardEntry, } from "./settings/card.js";
18
18
  import { QA_SETTINGS_STYLES } from "./settings/styles.js";
19
19
  import { QaSurfacePanelRegistry } from "./panels/registry.js";
20
20
  import { QaUserSettingsSectionRegistry } from "./settings-extensions/index.js";
@@ -37,7 +37,7 @@ export const inject = [
37
37
  "sessions",
38
38
  "uiConversation",
39
39
  "connection",
40
- "settingsScope",
40
+ "configForms",
41
41
  "remote",
42
42
  ];
43
43
  /** Register the route-aware, full-frame QA entry: root owner in the kiosk, additive overlay slot otherwise. */
@@ -95,6 +95,9 @@ export async function apply(ctx) {
95
95
  // validates during build.
96
96
  const policyRemote = injectedRemote.qaSurface;
97
97
  const secureSession = (token, sessionId) => policyRemote.secureSession(token, sessionId);
98
+ // The stand's live load, asked once per send. Only the Host can say it:
99
+ // a browser sees its own chats and never the HTTP API's questions.
100
+ const queueStatus = () => policyRemote.queueStatus();
98
101
  const qaApi = {
99
102
  selectModel: (request) => injectedRemote.session.selectModel(request),
100
103
  selectAgentPreset: (agentId, agentPreset) => injectedRemote.agentPresets.select(agentId, agentPreset),
@@ -139,6 +142,11 @@ export async function apply(ctx) {
139
142
  ? { ok: true, value: result.value.tools }
140
143
  : { ok: false, error: result.error };
141
144
  },
145
+ memoryScopes: (token) => policyRemote.adminMemoryScopes(token),
146
+ memoryRecords: (token, namespace, query, limit, offset) => policyRemote.adminMemoryRecords(token, namespace, query, limit, offset),
147
+ correctMemory: (token, namespace, key, draft) => policyRemote.adminMemoryCorrect(token, namespace, key, draft),
148
+ forgetMemory: (token, namespace, keys) => policyRemote.adminMemoryForget(token, namespace, keys),
149
+ wipeMemory: (token, namespace, expectedRecords) => policyRemote.adminMemoryWipe(token, namespace, expectedRecords),
142
150
  };
143
151
  const sourceApi = {
144
152
  sources: (token, sessionId) => policyRemote.sources(token, sessionId),
@@ -218,12 +226,11 @@ export async function apply(ctx) {
218
226
  // a card mounted outside the overlay sees the same session the pages do.
219
227
  userSession.attach(accounts);
220
228
  const route = new QaRouteController();
221
- // One binding for both readers: the surface projects it into the page's
229
+ // One form for both readers: the surface projects it into the page's
222
230
  // configuration, the settings card edits the same namespace through it.
223
- const settingsScope = ctx.settingsScope.bind({
224
- namespace: QA_SURFACE_SETTINGS_NAMESPACE,
225
- });
226
- const config = new QaConfigController(settingsScope, async () => {
231
+ // The namespace is this bundle's profile entry id.
232
+ const configForm = ctx.configForms.get(QA_SURFACE_SETTINGS_NAMESPACE);
233
+ const config = new QaConfigController(configForm, async () => {
227
234
  // Settings RPCs are loopback-pinned by the gateway, so a browser the
228
235
  // Host serves over the LAN reads the effective configuration here.
229
236
  const described = await policyRemote.describe();
@@ -234,22 +241,31 @@ export async function apply(ctx) {
234
241
  // declarations during an incremental source typecheck.
235
242
  return described.value;
236
243
  });
237
- // The operator edits this deployment through the shared plugin-cards
238
- // tab: the same namespace the page reads, plus the Host's own answer
239
- // about what it resolved. Its stylesheet is the card shell, not the QA
240
- // page's palette.
244
+ // The operator edits this deployment from the plugin's own row in the
245
+ // Plugins panel: the same namespace the page reads, plus the Host's own
246
+ // answer about what it resolved. The row's page draws the card surface,
247
+ // the heading and the expand control, so this bundle supplies the body
248
+ // only (AGENTS.md, card-shell contract).
249
+ // The seat is keyed `<package name>#<row id>`, and the row id is the
250
+ // namespace above, so the move never orphans a saved value. The seat hands
251
+ // its registrant a `ConfigPageForm` for that namespace — `{ state, mutate }`
252
+ // only, unsubscribable and unable to write one field — which is why the
253
+ // card reads the `configForm` resolved above rather than the page's view.
241
254
  ctx.effect(() => {
242
255
  const cardFace = {
243
- scope: settingsScope,
256
+ settingsForm: configForm,
244
257
  describe: () => policyRemote.describe(),
245
258
  };
246
- return registerSettingsCard(remoteContext, {
247
- key: QA_SURFACE_SETTINGS_NAMESPACE,
248
- pluginName: "@yadsh/dsh-qa-surface",
249
- styles: QA_SETTINGS_STYLES,
250
- component: QaSettingsCard,
259
+ const removeStyles = injectCardStyles("@yadsh/dsh-qa-surface", QA_SETTINGS_STYLES);
260
+ const removeRowConfig = ctx.slots.inject("plugins.row.config", () => ctx.slots.register({
261
+ name: "plugins.row.config",
262
+ key: QA_SURFACE_ROW_CONFIG_KEY,
251
263
  inject: () => cardFace,
252
- });
264
+ }, QaSettingsCardEntry));
265
+ return () => {
266
+ removeRowConfig();
267
+ removeStyles();
268
+ };
253
269
  }, "dsh-qa-surface: settings-card");
254
270
  const syncRoute = () => {
255
271
  const snapshot = config.getSnapshot();
@@ -337,6 +353,9 @@ export async function apply(ctx) {
337
353
  ctx.effect(() => () => {
338
354
  unsubscribeConfig();
339
355
  unsubscribeConnection();
356
+ // The boot whoami otherwise outlives this callback: its answer
357
+ // clears the token the *next* instance stored under the same key.
358
+ accounts.dispose();
340
359
  config.dispose();
341
360
  route.dispose();
342
361
  }, "dsh-qa-surface: controllers");
@@ -356,6 +375,7 @@ export async function apply(ctx) {
356
375
  connection: ctx.connection.generation,
357
376
  secureSession,
358
377
  createSession: (token, subroleId, adminPreview) => policyRemote.createSession(token, subroleId, adminPreview),
378
+ queueStatus,
359
379
  accessApi,
360
380
  adminApi,
361
381
  sourceApi,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.tsx"],"names":[],"mappings":"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"}
@@ -38,8 +38,8 @@ export function chatRootOf(byId, sessionId) {
38
38
  return current;
39
39
  }
40
40
  /**
41
- * Delegated sessions whose names a page may sign its notices with: the
42
- * children of the chats it lists, catalog labels first and list titles after.
41
+ * Delegated sessions whose names a page may sign its notices with: the children
42
+ * of the chats it lists, named by the row title the Host's session list carries.
43
43
  *
44
44
  * `chats` is the visible chat set — the account's own chats while accounts are
45
45
  * on, and `undefined` for a deployment without accounts, where every chat on
@@ -49,23 +49,10 @@ export function chatRootOf(byId, sessionId) {
49
49
  * therefore contributes no id and no label — a foreign chat can neither sign
50
50
  * a notice nor be named by one.
51
51
  */
52
- export function visibleSubagentCandidates(byId, catalogs, chats) {
52
+ export function visibleSubagentCandidates(byId, chats) {
53
53
  const visible = (chatId) => chats === undefined || chats.has(chatId);
54
54
  const candidates = [];
55
55
  const seen = new Set();
56
- for (const [parentId, catalog] of Object.entries(catalogs)) {
57
- if (!visible(parentId))
58
- continue;
59
- for (const entry of catalog?.entries ?? []) {
60
- if (entry.kind !== "child")
61
- continue;
62
- const id = entry.id;
63
- if (id === undefined || seen.has(id))
64
- continue;
65
- seen.add(id);
66
- candidates.push({ id, label: entry.label ?? "" });
67
- }
68
- }
69
56
  for (const [key, summary] of Object.entries(byId)) {
70
57
  if (summary.origin !== "subagent")
71
58
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"lineage.js","sourceRoot":"","sources":["../../src/client/lineage.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAgE;IAEhE,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACxC,OAAO,OAAO,CAAC,MAAM,KAAK,UAAU,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC;AACzE,CAAC;AAOD;;;;;;;;;GASG;AACH,MAAM,UAAU,UAAU,CAAC,IAAoB,EAAE,SAAiB;IAChE,IAAI,OAAO,GAAG,SAAS,CAAC;IACxB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC;QACvC,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC;QACzC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAwBD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,yBAAyB,CACvC,IAA8C,EAC9C,QAA0B,EAC1B,KAAsC;IAEtC,MAAM,OAAO,GAAG,CAAC,MAAc,EAAW,EAAE,CAC1C,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,UAAU,GAA4B,EAAE,CAAC;IAC/C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3D,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YAAE,SAAS;QACjC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC;YAC3C,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;gBAAE,SAAS;YACrC,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;YACpB,IAAI,EAAE,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,SAAS;YAC/C,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACb,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAClD,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU;YAAE,SAAS;QAC5C,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC;QACrC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,SAAS;QAC3B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAAE,SAAS;QAC7C,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACb,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"lineage.js","sourceRoot":"","sources":["../../src/client/lineage.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAgE;IAEhE,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACxC,OAAO,OAAO,CAAC,MAAM,KAAK,UAAU,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC;AACzE,CAAC;AAOD;;;;;;;;;GASG;AACH,MAAM,UAAU,UAAU,CAAC,IAAoB,EAAE,SAAiB;IAChE,IAAI,OAAO,GAAG,SAAS,CAAC;IACxB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC;QACvC,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC;QACzC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AASD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,yBAAyB,CACvC,IAA8C,EAC9C,KAAsC;IAEtC,MAAM,OAAO,GAAG,CAAC,MAAc,EAAW,EAAE,CAC1C,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,UAAU,GAA4B,EAAE,CAAC;IAC/C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAClD,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU;YAAE,SAAS;QAC5C,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC;QACrC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,SAAS;QAC3B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAAE,SAAS;QAC7C,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACb,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -19,10 +19,10 @@ export const CodeBlock = memo(function CodeBlock({ code, lang, }) {
19
19
  return;
20
20
  clipboard.writeText(code).then(pulseCopied, () => undefined);
21
21
  }, [code, pulseCopied]);
22
- return (_jsxs("div", { className: "dsh-qa-md-code", children: [_jsxs("div", { className: "dsh-qa-md-code__banner", children: [_jsx("span", { className: "dsh-qa-md-code__lang", children: lang ?? "" }), _jsx("button", { type: "button", className: "dsh-qa-md-code__copy", onClick: onCopy, "aria-label": copied ? "Скопировано" : "Копировать код", children: copied ? "Скопировано" : "Копировать" })] }), _jsx("pre", { tabIndex: 0, children: _jsx("code", { "data-language": lang, children: lines.map((line, index) => (_jsxs(Fragment, { children: [index > 0 ? "\n" : null, line.map((span, spanIndex) => span.cls === undefined ? (_jsx(Fragment, { children: span.text }, spanIndex)) : (_jsx("span", { className: "dsh-qa-md-tok", "data-tok": span.cls, children: span.text }, spanIndex)))] }, index))) }) })] }));
22
+ return (_jsxs("div", { className: "dsh-qa-md-code", "data-testid": "qa-md-code", children: [_jsxs("div", { className: "dsh-qa-md-code__banner", "data-testid": "qa-md-code-banner", children: [_jsx("span", { className: "dsh-qa-md-code__lang", "data-testid": "qa-md-code-lang", children: lang ?? "" }), _jsx("button", { type: "button", className: "dsh-qa-md-code__copy", "data-testid": "qa-md-code-copy", onClick: onCopy, "aria-label": copied ? "Скопировано" : "Копировать код", children: copied ? "Скопировано" : "Копировать" })] }), _jsx("pre", { tabIndex: 0, "data-testid": "qa-md-code-pre", children: _jsx("code", { "data-language": lang, "data-testid": "qa-md-code-content", children: lines.map((line, index) => (_jsxs(Fragment, { children: [index > 0 ? "\n" : null, line.map((span, spanIndex) => span.cls === undefined ? (_jsx(Fragment, { children: span.text }, spanIndex)) : (_jsx("span", { className: "dsh-qa-md-tok", "data-tok": span.cls, "data-testid": "qa-md-code-token", children: span.text }, spanIndex)))] }, index))) }) })] }));
23
23
  });
24
24
  /** The globe an external link wears, drawn like the surface's other icons. */
25
25
  export function LinkGlyph() {
26
- return (_jsxs("svg", { className: "dsh-qa-md-link-icon", viewBox: "0 0 14 14", "aria-hidden": "true", children: [_jsx("circle", { cx: "7", cy: "7", r: "5.1" }), _jsx("path", { d: "M7 1.9c1.6 1.7 1.6 8.5 0 10.2M7 1.9c-1.6 1.7-1.6 8.5 0 10.2M1.9 7h10.2" })] }));
26
+ return (_jsxs("svg", { className: "dsh-qa-md-link-icon", "data-testid": "qa-md-link-icon", viewBox: "0 0 14 14", "aria-hidden": "true", children: [_jsx("circle", { cx: "7", cy: "7", r: "5.1" }), _jsx("path", { d: "M7 1.9c1.6 1.7 1.6 8.5 0 10.2M7 1.9c-1.6 1.7-1.6 8.5 0 10.2M1.9 7h10.2" })] }));
27
27
  }
28
28
  //# sourceMappingURL=CodeBlock.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CodeBlock.js","sourceRoot":"","sources":["../../../src/client/markdown/CodeBlock.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,2EAA2E;AAC3E,MAAM,SAAS,GAAG,IAAI,CAAC;AAEvB;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,SAAS,CAAC,EAC/C,IAAI,EACJ,IAAI,GAIL;IACC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACtE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE;QAC9B,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;QACtC,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO;QACpC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC/D,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;IACxB,OAAO,CACL,eAAK,SAAS,EAAC,gBAAgB,aAC7B,eAAK,SAAS,EAAC,wBAAwB,aACrC,eAAM,SAAS,EAAC,sBAAsB,YAAE,IAAI,IAAI,EAAE,GAAQ,EAC1D,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,sBAAsB,EAChC,OAAO,EAAE,MAAM,gBACH,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,YAEpD,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,GAC/B,IACL,EACN,cAAK,QAAQ,EAAE,CAAC,YACd,gCAAqB,IAAI,YACtB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAC1B,MAAC,QAAQ,eACN,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EACvB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAC5B,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,CACvB,KAAC,QAAQ,cAAkB,IAAI,CAAC,IAAI,IAArB,SAAS,CAAwB,CACjD,CAAC,CAAC,CAAC,CACF,eAEE,SAAS,EAAC,eAAe,cACf,IAAI,CAAC,GAAG,YAEjB,IAAI,CAAC,IAAI,IAJL,SAAS,CAKT,CACR,CACF,KAdY,KAAK,CAeT,CACZ,CAAC,GACG,GACH,IACF,CACP,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,MAAM,UAAU,SAAS;IACvB,OAAO,CACL,eAAK,SAAS,EAAC,qBAAqB,EAAC,OAAO,EAAC,WAAW,iBAAa,MAAM,aACzE,iBAAQ,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,KAAK,GAAG,EAChC,eAAM,CAAC,EAAC,wEAAwE,GAAG,IAC/E,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"CodeBlock.js","sourceRoot":"","sources":["../../../src/client/markdown/CodeBlock.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,2EAA2E;AAC3E,MAAM,SAAS,GAAG,IAAI,CAAC;AAEvB;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,SAAS,CAAC,EAC/C,IAAI,EACJ,IAAI,GAIL;IACC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACtE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE;QAC9B,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;QACtC,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO;QACpC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC/D,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;IACxB,OAAO,CACL,eAAK,SAAS,EAAC,gBAAgB,iBAAa,YAAY,aACtD,eAAK,SAAS,EAAC,wBAAwB,iBAAa,mBAAmB,aACrE,eAAM,SAAS,EAAC,sBAAsB,iBAAa,iBAAiB,YACjE,IAAI,IAAI,EAAE,GACN,EACP,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,sBAAsB,iBACpB,iBAAiB,EAC7B,OAAO,EAAE,MAAM,gBACH,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,YAEpD,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,GAC/B,IACL,EACN,cAAK,QAAQ,EAAE,CAAC,iBAAc,gBAAgB,YAC5C,gCAAqB,IAAI,iBAAc,oBAAoB,YACxD,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAC1B,MAAC,QAAQ,eACN,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EACvB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAC5B,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,CACvB,KAAC,QAAQ,cAAkB,IAAI,CAAC,IAAI,IAArB,SAAS,CAAwB,CACjD,CAAC,CAAC,CAAC,CACF,eAEE,SAAS,EAAC,eAAe,cACf,IAAI,CAAC,GAAG,iBACN,kBAAkB,YAE7B,IAAI,CAAC,IAAI,IALL,SAAS,CAMT,CACR,CACF,KAfY,KAAK,CAgBT,CACZ,CAAC,GACG,GACH,IACF,CACP,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,MAAM,UAAU,SAAS;IACvB,OAAO,CACL,eACE,SAAS,EAAC,qBAAqB,iBACnB,iBAAiB,EAC7B,OAAO,EAAC,WAAW,iBACP,MAAM,aAElB,iBAAQ,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,KAAK,GAAG,EAChC,eAAM,CAAC,EAAC,wEAAwE,GAAG,IAC/E,CACP,CAAC;AACJ,CAAC"}
@@ -16,6 +16,15 @@
16
16
  * delimiters stay literal text, exactly as the Host renders them. Footnote
17
17
  * definitions (`[^id]: …`) are collected the way GitHub's dialect does, with
18
18
  * lazy and indented continuation lines.
19
+ *
20
+ * A frame of a live stream is parsed with `streaming: true`, which says one
21
+ * thing only: the text may still grow. Block boundaries stay the business of
22
+ * this module — a caller that knows the answer is being written passes the
23
+ * flag, and nothing here is re-detected elsewhere. Two readings change with
24
+ * it: a block whose region runs to the end of the text has not met its
25
+ * terminator, so a fence or a `$$` block reports `pending`, and a table treats
26
+ * its live last line as still written (a delimiter row being typed opens the
27
+ * header, a row being typed stays out of the cells).
19
28
  */
20
29
  /** Container depth ceiling: enough for real answers, too low to recurse away.
21
30
  * Past it a marker stays literal text — the content is never dropped. */
@@ -28,6 +37,8 @@ const QUOTE = /^ {0,3}>[ \t]?(.*)$/u;
28
37
  const LIST_MARKER = /^( {0,3})([-+*]|\d{1,9}[.)])([ \t]+|$)/u;
29
38
  const DEFINITION = /^ {0,3}\[([^\]^][^\]]*)\]:[ \t]*<?([^\s>]+)>?[ \t]*$/u;
30
39
  const ALIGNMENT_CELL = /^:?-+:?$/u;
40
+ /** A delimiter cell mid-typing: the colons and dashes a settled one carries. */
41
+ const ALIGNMENT_PREFIX = /^:?-{0,}:?$/u;
31
42
  const CHECKBOX = /^\[([ xX])\][ \t]+/u;
32
43
  /** Display math opener: `$$` with the rest of the line as same-line content. */
33
44
  const MATH_FLOW = /^ {0,3}\$\$(.*)$/u;
@@ -68,8 +79,14 @@ export function splitTableRow(line) {
68
79
  * Does a GFM table start at `index`? The header must carry a pipe and the
69
80
  * delimiter row must match it cell for cell — which is also what keeps a
70
81
  * setext underline (`---` after a paragraph) out of the table arm.
82
+ *
83
+ * While the stream is typing the delimiter row, that row is a shorter run of
84
+ * alignment prefixes, and the arm takes it: the header reaches the table
85
+ * instead of showing its pipes as prose. The same text parsed as settled reads
86
+ * as the paragraph GFM makes of an unfinished delimiter row, so a held frame
87
+ * never becomes the final one.
71
88
  */
72
- function tableAlignments(lines, index) {
89
+ function tableAlignments(lines, index, streaming) {
73
90
  const headerLine = lines[index];
74
91
  const delimiter = lines[index + 1];
75
92
  if (headerLine === undefined || delimiter === undefined)
@@ -77,19 +94,53 @@ function tableAlignments(lines, index) {
77
94
  if (!headerLine.includes("|"))
78
95
  return undefined;
79
96
  const cells = splitTableRow(delimiter);
80
- if (cells.length === 0 || cells.length !== splitTableRow(headerLine).length) {
97
+ if (cells.length === 0)
98
+ return undefined;
99
+ const head = splitTableRow(headerLine);
100
+ const settled = cells.length === head.length;
101
+ if (!settled &&
102
+ (!streaming ||
103
+ cells.length > head.length ||
104
+ index + 1 !== lines.length - 1 ||
105
+ delimiter.trim() === "")) {
81
106
  return undefined;
82
107
  }
83
108
  const alignments = [];
84
109
  for (const cell of cells) {
85
- if (!ALIGNMENT_CELL.test(cell))
110
+ if (!(settled ? ALIGNMENT_CELL : ALIGNMENT_PREFIX).test(cell)) {
86
111
  return undefined;
112
+ }
87
113
  const left = cell.startsWith(":");
88
114
  const right = cell.endsWith(":");
89
115
  alignments.push(left && right ? "center" : right ? "right" : "left");
90
116
  }
91
117
  return alignments;
92
118
  }
119
+ /**
120
+ * The index of the line this container's text may still be growing at, or -1
121
+ * when every line is settled: a last line carrying content has no newline under
122
+ * it yet, so the model is typing it. That is what keeps a half-written table row
123
+ * out of the cells and a `$$` opener with text after it still open. Settled text
124
+ * always reports -1, which is what keeps a held frame from changing how a
125
+ * finished answer reads.
126
+ */
127
+ function liveEdge(lines, streaming) {
128
+ if (!streaming)
129
+ return -1;
130
+ const last = lines.length - 1;
131
+ return last >= 0 && (lines[last] ?? "").trim() !== "" ? last : -1;
132
+ }
133
+ /**
134
+ * The payload of a block the stream stopped inside. A frame that ends right
135
+ * after a line break carries that break as an empty last line, and those lines
136
+ * are the block's unwritten rest rather than its content.
137
+ */
138
+ function livePayload(lines) {
139
+ let end = lines.length;
140
+ while (end > 0 && (lines[end - 1] ?? "").trim() === "")
141
+ end -= 1;
142
+ return lines.slice(0, end).join("\n");
143
+ }
93
144
  /** A fence closes on a run of its own marker at least as long as the opener's. */
94
145
  function closesFence(line, marker) {
95
146
  const trimmed = line.trim();
@@ -104,14 +155,16 @@ function closesFence(line, marker) {
104
155
  /**
105
156
  * Parse a whole document.
106
157
  * @param text - Markdown source with any line endings.
158
+ * @param options - How to read the end of the text; a live stream frame marks
159
+ * the block it stopped inside as pending.
107
160
  * @returns Blocks plus the definitions the inline pass resolves against.
108
161
  */
109
- export function parseMarkdown(text) {
162
+ export function parseMarkdown(text, options = {}) {
110
163
  const definitions = new Map();
111
164
  const footnotes = new Map();
112
165
  const lines = text.replace(/\r\n?/gu, "\n").split("\n");
113
166
  return {
114
- blocks: parseBlocks(lines, definitions, footnotes, 0),
167
+ blocks: parseBlocks(lines, definitions, footnotes, 0, options.streaming === true),
115
168
  definitions,
116
169
  footnotes,
117
170
  };
@@ -122,10 +175,13 @@ export function parseMarkdown(text) {
122
175
  * @param definitions - Document-wide definition accumulator.
123
176
  * @param footnotes - Document-wide footnote accumulator.
124
177
  * @param depth - Container nesting depth.
178
+ * @param streaming - Whether the text is a live frame, so the container's last
179
+ * line may still be typed.
125
180
  * @returns The container's blocks.
126
181
  */
127
- export function parseBlocks(lines, definitions, footnotes, depth) {
182
+ export function parseBlocks(lines, definitions, footnotes, depth, streaming = false) {
128
183
  const blocks = [];
184
+ const edge = liveEdge(lines, streaming);
129
185
  let index = 0;
130
186
  while (index < lines.length) {
131
187
  const line = lines[index] ?? "";
@@ -143,26 +199,32 @@ export function parseBlocks(lines, definitions, footnotes, depth) {
143
199
  code.push((lines[index] ?? "").slice(Math.min(indent, indentOf(lines[index] ?? ""))));
144
200
  index += 1;
145
201
  }
146
- if (index < lines.length)
202
+ const closed = index < lines.length;
203
+ if (closed)
147
204
  index += 1;
148
205
  const lang = /^\S+/u.exec(fence[2]?.trim() ?? "")?.[0];
149
206
  blocks.push({
150
207
  kind: "code",
151
- text: code.join("\n"),
208
+ text: closed || !streaming ? code.join("\n") : livePayload(code),
152
209
  ...(lang === undefined ? {} : { lang }),
210
+ ...(closed || !streaming ? {} : { pending: true }),
153
211
  });
154
212
  continue;
155
213
  }
156
214
  const math = MATH_FLOW.exec(line);
157
215
  if (math !== null) {
158
- const parsed = parseMathFlow(lines, index, math[1] ?? "");
216
+ const parsed = parseMathFlow(lines, index, math[1] ?? "", edge, streaming);
159
217
  if (parsed !== undefined) {
160
- blocks.push({ kind: "math", text: parsed.text });
218
+ blocks.push({
219
+ kind: "math",
220
+ text: parsed.text,
221
+ ...(parsed.pending ? { pending: true } : {}),
222
+ });
161
223
  index = parsed.next;
162
224
  continue;
163
225
  }
164
- // Unclosed or content-bearing without a same-line close: the line stays
165
- // a paragraph, whose inline pass leaves the dollars literal.
226
+ // Settled text only: an unclosed or content-bearing opener line stays a
227
+ // paragraph, whose inline pass leaves the dollars literal.
166
228
  }
167
229
  const heading = ATX_HEADING.exec(line);
168
230
  if (heading !== null) {
@@ -198,11 +260,11 @@ export function parseBlocks(lines, definitions, footnotes, depth) {
198
260
  }
199
261
  blocks.push({
200
262
  kind: "quote",
201
- blocks: parseBlocks(body, definitions, footnotes, depth + 1),
263
+ blocks: parseBlocks(body, definitions, footnotes, depth + 1, streaming),
202
264
  });
203
265
  continue;
204
266
  }
205
- const alignments = tableAlignments(lines, index);
267
+ const alignments = tableAlignments(lines, index, streaming);
206
268
  if (alignments !== undefined && LIST_MARKER.exec(line) === null) {
207
269
  const head = splitTableRow(line);
208
270
  const rows = [];
@@ -211,7 +273,11 @@ export function parseBlocks(lines, definitions, footnotes, depth) {
211
273
  const row = lines[cursor] ?? "";
212
274
  if (isBlank(row) || !row.includes("|") || startsBlock(row))
213
275
  break;
214
- rows.push(splitTableRow(row));
276
+ // The row the stream is still typing stays inside the block but out of
277
+ // its cells: half a row would flash as a truncated one, and it is
278
+ // rendered by the next frame, which has the whole row.
279
+ if (cursor !== edge)
280
+ rows.push(splitTableRow(row));
215
281
  cursor += 1;
216
282
  }
217
283
  blocks.push({ kind: "table", align: alignments, head, rows });
@@ -219,7 +285,7 @@ export function parseBlocks(lines, definitions, footnotes, depth) {
219
285
  continue;
220
286
  }
221
287
  if (depth < MAX_DEPTH && LIST_MARKER.test(line)) {
222
- const list = parseList(lines, index, definitions, footnotes, depth);
288
+ const list = parseList(lines, index, definitions, footnotes, depth, streaming);
223
289
  blocks.push(list.list);
224
290
  index = list.next;
225
291
  continue;
@@ -237,12 +303,12 @@ export function parseBlocks(lines, definitions, footnotes, depth) {
237
303
  const id = (footnote[1] ?? "").toUpperCase();
238
304
  const body = footnoteBody(lines, index, footnote[2] ?? "");
239
305
  if (!footnotes.has(id)) {
240
- footnotes.set(id, parseBlocks(body.lines, definitions, footnotes, depth + 1));
306
+ footnotes.set(id, parseBlocks(body.lines, definitions, footnotes, depth + 1, streaming));
241
307
  }
242
308
  index = body.next;
243
309
  continue;
244
310
  }
245
- const paragraph = collectParagraph(lines, index);
311
+ const paragraph = collectParagraph(lines, index, streaming);
246
312
  blocks.push(paragraph.block);
247
313
  index = paragraph.next;
248
314
  }
@@ -253,9 +319,10 @@ export function parseBlocks(lines, definitions, footnotes, depth) {
253
319
  * after it is an underline.
254
320
  * @param lines - Container lines.
255
321
  * @param start - Index of the paragraph's first line.
322
+ * @param streaming - Whether the text may still grow.
256
323
  * @returns The block and the index after it.
257
324
  */
258
- function collectParagraph(lines, start) {
325
+ function collectParagraph(lines, start, streaming) {
259
326
  const text = [];
260
327
  let index = start;
261
328
  while (index < lines.length) {
@@ -276,7 +343,7 @@ function collectParagraph(lines, start) {
276
343
  }
277
344
  if (startsBlock(line))
278
345
  break;
279
- if (tableAlignments(lines, index) !== undefined)
346
+ if (tableAlignments(lines, index, streaming) !== undefined)
280
347
  break;
281
348
  }
282
349
  text.push(line.trimStart());
@@ -295,27 +362,46 @@ function collectParagraph(lines, start) {
295
362
  * line must be empty and the content runs to a `$$` fence line, as GitHub's
296
363
  * dialect reads it. The Host drops content written after a fence opener's
297
364
  * `$$`; here such a line stays a paragraph instead, so no text is lost.
365
+ *
366
+ * A block whose region runs to the end of the text has not met its closer, so
367
+ * while the stream is writing it the block is reported as pending: the reader
368
+ * sees the formula being written instead of its dollars, and the settled frame
369
+ * of the same text decides what the block really is. Settled text keeps the
370
+ * reading above, because an answer that never closes a `$$` is prose.
298
371
  * @param lines - Container lines.
299
372
  * @param start - Index of the opener line.
300
373
  * @param rest - The opener line after its `$$`.
301
- * @returns The math text and the index after the closing fence.
374
+ * @param edge - The line the stream may still be typing, or -1.
375
+ * @param streaming - Whether the text is a live frame.
376
+ * @returns The TeX payload, the index after the block, and whether it is open.
302
377
  */
303
- function parseMathFlow(lines, start, rest) {
378
+ function parseMathFlow(lines, start, rest, edge, streaming) {
304
379
  const sameLine = rest.indexOf("$$");
305
380
  if (sameLine >= 0 && rest.slice(sameLine + 2).trim() === "") {
306
- return { text: rest.slice(0, sameLine), next: start + 1 };
381
+ return { text: rest.slice(0, sameLine), next: start + 1, pending: false };
382
+ }
383
+ if (start === edge) {
384
+ return { text: rest, next: lines.length, pending: true };
307
385
  }
308
- if (rest.trim() !== "")
309
- return undefined;
310
386
  const body = [];
387
+ if (rest.trim() !== "") {
388
+ if (!streaming)
389
+ return undefined;
390
+ // The line break under the opener says the block went on below it rather
391
+ // than closing on its own line, so the opener's TeX starts the body.
392
+ body.push(rest);
393
+ }
311
394
  let index = start + 1;
312
395
  while (index < lines.length && !MATH_FLOW_CLOSE.test(lines[index] ?? "")) {
313
396
  body.push(lines[index] ?? "");
314
397
  index += 1;
315
398
  }
316
- if (index >= lines.length)
317
- return undefined;
318
- return { text: body.join("\n"), next: index + 1 };
399
+ if (index >= lines.length) {
400
+ return streaming
401
+ ? { text: livePayload(body), next: lines.length, pending: true }
402
+ : undefined;
403
+ }
404
+ return { text: body.join("\n"), next: index + 1, pending: false };
319
405
  }
320
406
  /**
321
407
  * Collect a footnote definition's body: the opener line's inline tail plus
@@ -363,9 +449,10 @@ function footnoteBody(lines, start, rest) {
363
449
  * @param start - Index of the first item's marker.
364
450
  * @param definitions - Document-wide definition accumulator.
365
451
  * @param depth - Container nesting depth.
452
+ * @param streaming - Whether the text may still grow.
366
453
  * @returns The list block and the index after its last item.
367
454
  */
368
- function parseList(lines, start, definitions, footnotes, depth) {
455
+ function parseList(lines, start, definitions, footnotes, depth, streaming) {
369
456
  const first = LIST_MARKER.exec(lines[start] ?? "");
370
457
  const ordered = /^\d/u.test(first?.[2] ?? "-");
371
458
  const bullet = first?.[2] ?? "-";
@@ -420,7 +507,7 @@ function parseList(lines, start, definitions, footnotes, depth) {
420
507
  // that opens a block of its own ends the item instead.
421
508
  if (startsBlock(current))
422
509
  break;
423
- if (tableAlignments(lines, index) !== undefined)
510
+ if (tableAlignments(lines, index, streaming) !== undefined)
424
511
  break;
425
512
  itemLines.push(current.trimStart());
426
513
  index += 1;
@@ -432,7 +519,7 @@ function parseList(lines, start, definitions, footnotes, depth) {
432
519
  }
433
520
  const itemBlocks = depth >= MAX_DEPTH
434
521
  ? []
435
- : parseBlocks(itemLines, definitions, footnotes, depth + 1);
522
+ : parseBlocks(itemLines, definitions, footnotes, depth + 1, streaming);
436
523
  // Only a blank line inside the item spreads it: an item that merely carries
437
524
  // a nested list or a fence still renders as a tight item, as GFM says.
438
525
  if (itemSpread)