@yadsh/dsh-qa-surface 0.5.0 → 0.6.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 (374) hide show
  1. package/README.md +194 -9
  2. package/compatibility.json +10 -1
  3. package/cordis.patch.yml +9 -0
  4. package/lib/account-remotes.js +10 -0
  5. package/lib/account-remotes.js.map +1 -1
  6. package/lib/accounts/errors.js.map +1 -1
  7. package/lib/accounts/file.js.map +1 -1
  8. package/lib/accounts/store.js +22 -0
  9. package/lib/accounts/store.js.map +1 -1
  10. package/lib/client/QaAccountsController.js +29 -0
  11. package/lib/client/QaAccountsController.js.map +1 -1
  12. package/lib/client/QaSessionController.js +168 -48
  13. package/lib/client/QaSessionController.js.map +1 -1
  14. package/lib/client/QaSurface.js +125 -56
  15. package/lib/client/QaSurface.js.map +1 -1
  16. package/lib/client/QaSurfaceGuard.js +96 -0
  17. package/lib/client/QaSurfaceGuard.js.map +1 -0
  18. package/lib/client/QaTranscriptAdapter.js +11 -5
  19. package/lib/client/QaTranscriptAdapter.js.map +1 -1
  20. package/lib/client/components/QaChangelog.js +31 -0
  21. package/lib/client/components/QaChangelog.js.map +1 -1
  22. package/lib/client/components/QaComposer.js +1 -1
  23. package/lib/client/components/QaComposer.js.map +1 -1
  24. package/lib/client/components/QaHeader.js +2 -8
  25. package/lib/client/components/QaHeader.js.map +1 -1
  26. package/lib/client/components/QaMessage.js +20 -7
  27. package/lib/client/components/QaMessage.js.map +1 -1
  28. package/lib/client/components/QaModal.js +24 -6
  29. package/lib/client/components/QaModal.js.map +1 -1
  30. package/lib/client/components/QaSidebar.js +2 -6
  31. package/lib/client/components/QaSidebar.js.map +1 -1
  32. package/lib/client/components/QaSourcesPanel.js +6 -5
  33. package/lib/client/components/QaSourcesPanel.js.map +1 -1
  34. package/lib/client/components/QaWidthHandle.js +21 -1
  35. package/lib/client/components/QaWidthHandle.js.map +1 -1
  36. package/lib/client/components/surface-utils.js +2 -0
  37. package/lib/client/components/surface-utils.js.map +1 -1
  38. package/lib/client/index.js +72 -24
  39. package/lib/client/index.js.map +1 -1
  40. package/lib/client/panels/PanelHost.js +209 -0
  41. package/lib/client/panels/PanelHost.js.map +1 -0
  42. package/lib/client/panels/PanelLauncher.js +39 -0
  43. package/lib/client/panels/PanelLauncher.js.map +1 -0
  44. package/lib/client/panels/contract.js +2 -0
  45. package/lib/client/panels/contract.js.map +1 -0
  46. package/lib/client/panels/index.js +2 -0
  47. package/lib/client/panels/index.js.map +1 -0
  48. package/lib/client/panels/registry.js +171 -0
  49. package/lib/client/panels/registry.js.map +1 -0
  50. package/lib/client/project-session-state.js +3 -0
  51. package/lib/client/project-session-state.js.map +1 -1
  52. package/lib/client/settings/card.js +2 -2
  53. package/lib/client/settings/card.js.map +1 -1
  54. package/lib/client/settings/sections/accounts.js +3 -1
  55. package/lib/client/settings/sections/accounts.js.map +1 -1
  56. package/lib/client/settings/sections/documents.js +88 -0
  57. package/lib/client/settings/sections/documents.js.map +1 -0
  58. package/lib/client/settings/sections/interface.js +2 -0
  59. package/lib/client/settings/sections/interface.js.map +1 -1
  60. package/lib/client/settings/sections.js +1 -0
  61. package/lib/client/settings/sections.js.map +1 -1
  62. package/lib/client/settings-extensions/contract.js +2 -0
  63. package/lib/client/settings-extensions/contract.js.map +1 -0
  64. package/lib/client/settings-extensions/index.js +2 -0
  65. package/lib/client/settings-extensions/index.js.map +1 -0
  66. package/lib/client/settings-extensions/registry.js +63 -0
  67. package/lib/client/settings-extensions/registry.js.map +1 -0
  68. package/lib/client/settlement.js +51 -5
  69. package/lib/client/settlement.js.map +1 -1
  70. package/lib/client/source-preview.js +24 -0
  71. package/lib/client/source-preview.js.map +1 -0
  72. package/lib/client/styles.js +157 -32
  73. package/lib/client/styles.js.map +1 -1
  74. package/lib/client/subagent-codenames.js +109 -0
  75. package/lib/client/subagent-codenames.js.map +1 -0
  76. package/lib/client/types.js +1 -0
  77. package/lib/client/types.js.map +1 -1
  78. package/lib/client/user-settings/GeneralSettingsPage.js +13 -0
  79. package/lib/client/user-settings/GeneralSettingsPage.js.map +1 -0
  80. package/lib/client/user-settings/ProfileSettingsPage.js +59 -0
  81. package/lib/client/user-settings/ProfileSettingsPage.js.map +1 -0
  82. package/lib/client/user-settings/SkillCatalog.js +23 -0
  83. package/lib/client/user-settings/SkillCatalog.js.map +1 -0
  84. package/lib/client/user-settings/SkillEditor.js +89 -0
  85. package/lib/client/user-settings/SkillEditor.js.map +1 -0
  86. package/lib/client/user-settings/SkillToolPicker.js +58 -0
  87. package/lib/client/user-settings/SkillToolPicker.js.map +1 -0
  88. package/lib/client/user-settings/SkillsSettingsPage.js +171 -0
  89. package/lib/client/user-settings/SkillsSettingsPage.js.map +1 -0
  90. package/lib/client/user-settings/StartersSettingsPage.js +78 -0
  91. package/lib/client/user-settings/StartersSettingsPage.js.map +1 -0
  92. package/lib/client/user-settings/UserSettingsDialog.js +50 -0
  93. package/lib/client/user-settings/UserSettingsDialog.js.map +1 -0
  94. package/lib/client/user-settings/copy.js +84 -0
  95. package/lib/client/user-settings/copy.js.map +1 -0
  96. package/lib/client/user-settings/draft.js +127 -0
  97. package/lib/client/user-settings/draft.js.map +1 -0
  98. package/lib/client/user-settings/fields.js +24 -0
  99. package/lib/client/user-settings/fields.js.map +1 -0
  100. package/lib/client.js +5467 -1379
  101. package/lib/client.js.map +1 -1
  102. package/lib/config-resolvers/accounts.js +30 -0
  103. package/lib/config-resolvers/accounts.js.map +1 -1
  104. package/lib/config-resolvers/defaults.js +23 -0
  105. package/lib/config-resolvers/defaults.js.map +1 -1
  106. package/lib/config-resolvers/tools.js +37 -0
  107. package/lib/config-resolvers/tools.js.map +1 -0
  108. package/lib/config-resolvers/ui.js +2 -0
  109. package/lib/config-resolvers/ui.js.map +1 -1
  110. package/lib/config.js +288 -0
  111. package/lib/config.js.map +1 -1
  112. package/lib/documents/artifacts/ids.js +43 -0
  113. package/lib/documents/artifacts/ids.js.map +1 -0
  114. package/lib/documents/artifacts/manifest.js +66 -0
  115. package/lib/documents/artifacts/manifest.js.map +1 -0
  116. package/lib/documents/artifacts/store.js +169 -0
  117. package/lib/documents/artifacts/store.js.map +1 -0
  118. package/lib/documents/capabilities.js +93 -0
  119. package/lib/documents/capabilities.js.map +1 -0
  120. package/lib/documents/config.js +302 -0
  121. package/lib/documents/config.js.map +1 -0
  122. package/lib/documents/defaults.js +78 -0
  123. package/lib/documents/defaults.js.map +1 -0
  124. package/lib/documents/errors.js +101 -0
  125. package/lib/documents/errors.js.map +1 -0
  126. package/lib/documents/index.js +80 -0
  127. package/lib/documents/index.js.map +1 -0
  128. package/lib/documents/inspect/facts.js +161 -0
  129. package/lib/documents/inspect/facts.js.map +1 -0
  130. package/lib/documents/inspect/zip.js +108 -0
  131. package/lib/documents/inspect/zip.js.map +1 -0
  132. package/lib/documents/markdown/directives.js +135 -0
  133. package/lib/documents/markdown/directives.js.map +1 -0
  134. package/lib/documents/markdown/frontmatter.js +35 -0
  135. package/lib/documents/markdown/frontmatter.js.map +1 -0
  136. package/lib/documents/markdown/normalize.js +113 -0
  137. package/lib/documents/markdown/normalize.js.map +1 -0
  138. package/lib/documents/orchestrator/assets.js +243 -0
  139. package/lib/documents/orchestrator/assets.js.map +1 -0
  140. package/lib/documents/orchestrator/convert-document.js +186 -0
  141. package/lib/documents/orchestrator/convert-document.js.map +1 -0
  142. package/lib/documents/orchestrator/create-document.js +292 -0
  143. package/lib/documents/orchestrator/create-document.js.map +1 -0
  144. package/lib/documents/orchestrator/extract-document.js +162 -0
  145. package/lib/documents/orchestrator/extract-document.js.map +1 -0
  146. package/lib/documents/orchestrator/inspect-document.js +89 -0
  147. package/lib/documents/orchestrator/inspect-document.js.map +1 -0
  148. package/lib/documents/orchestrator/runtime-deps.js +59 -0
  149. package/lib/documents/orchestrator/runtime-deps.js.map +1 -0
  150. package/lib/documents/orchestrator/scope.js +132 -0
  151. package/lib/documents/orchestrator/scope.js.map +1 -0
  152. package/lib/documents/providers/docling.js +247 -0
  153. package/lib/documents/providers/docling.js.map +1 -0
  154. package/lib/documents/providers/libreoffice.js +130 -0
  155. package/lib/documents/providers/libreoffice.js.map +1 -0
  156. package/lib/documents/providers/markitdown.js +89 -0
  157. package/lib/documents/providers/markitdown.js.map +1 -0
  158. package/lib/documents/providers/pandoc.js +161 -0
  159. package/lib/documents/providers/pandoc.js.map +1 -0
  160. package/lib/documents/providers/process.js +164 -0
  161. package/lib/documents/providers/process.js.map +1 -0
  162. package/lib/documents/providers/registry.js +152 -0
  163. package/lib/documents/providers/registry.js.map +1 -0
  164. package/lib/documents/providers/shared.js +75 -0
  165. package/lib/documents/providers/shared.js.map +1 -0
  166. package/lib/documents/runtime.js +114 -0
  167. package/lib/documents/runtime.js.map +1 -0
  168. package/lib/documents/security/file-types.js +188 -0
  169. package/lib/documents/security/file-types.js.map +1 -0
  170. package/lib/documents/security/limits.js +78 -0
  171. package/lib/documents/security/limits.js.map +1 -0
  172. package/lib/documents/security/mime.js +43 -0
  173. package/lib/documents/security/mime.js.map +1 -0
  174. package/lib/documents/security/paths.js +133 -0
  175. package/lib/documents/security/paths.js.map +1 -0
  176. package/lib/documents/templates/registry.js +147 -0
  177. package/lib/documents/templates/registry.js.map +1 -0
  178. package/lib/documents/templates/resolver.js +59 -0
  179. package/lib/documents/templates/resolver.js.map +1 -0
  180. package/lib/documents/tools/convert.js +125 -0
  181. package/lib/documents/tools/convert.js.map +1 -0
  182. package/lib/documents/tools/create.js +187 -0
  183. package/lib/documents/tools/create.js.map +1 -0
  184. package/lib/documents/tools/index.js +41 -0
  185. package/lib/documents/tools/index.js.map +1 -0
  186. package/lib/documents/tools/inspect.js +135 -0
  187. package/lib/documents/tools/inspect.js.map +1 -0
  188. package/lib/documents/tools/shared.js +88 -0
  189. package/lib/documents/tools/shared.js.map +1 -0
  190. package/lib/documents/tools/to-markdown.js +125 -0
  191. package/lib/documents/tools/to-markdown.js.map +1 -0
  192. package/lib/documents/types.js +12 -0
  193. package/lib/documents/types.js.map +1 -0
  194. package/lib/index.js +225 -20
  195. package/lib/index.js.map +1 -1
  196. package/lib/integration-principals.js +22 -0
  197. package/lib/integration-principals.js.map +1 -0
  198. package/lib/lockdown-policy.js +15 -3
  199. package/lib/lockdown-policy.js.map +1 -1
  200. package/lib/personal-skills/errors.js +9 -0
  201. package/lib/personal-skills/errors.js.map +1 -0
  202. package/lib/personal-skills/host.js +80 -0
  203. package/lib/personal-skills/host.js.map +1 -0
  204. package/lib/personal-skills/index.js +10 -0
  205. package/lib/personal-skills/index.js.map +1 -0
  206. package/lib/personal-skills/paths.js +127 -0
  207. package/lib/personal-skills/paths.js.map +1 -0
  208. package/lib/personal-skills/provider.js +109 -0
  209. package/lib/personal-skills/provider.js.map +1 -0
  210. package/lib/personal-skills/remotes.js +40 -0
  211. package/lib/personal-skills/remotes.js.map +1 -0
  212. package/lib/personal-skills/service.js +686 -0
  213. package/lib/personal-skills/service.js.map +1 -0
  214. package/lib/personal-skills/skill-file.js +278 -0
  215. package/lib/personal-skills/skill-file.js.map +1 -0
  216. package/lib/personal-skills/skill-format.js +202 -0
  217. package/lib/personal-skills/skill-format.js.map +1 -0
  218. package/lib/personal-skills/watcher.js +96 -0
  219. package/lib/personal-skills/watcher.js.map +1 -0
  220. package/lib/profile.js +6 -4
  221. package/lib/profile.js.map +1 -1
  222. package/lib/prompt-notes.js +19 -0
  223. package/lib/prompt-notes.js.map +1 -1
  224. package/lib/provenance/file-preview.js +68 -21
  225. package/lib/provenance/file-preview.js.map +1 -1
  226. package/lib/provenance/host-store.js +44 -11
  227. package/lib/provenance/host-store.js.map +1 -1
  228. package/lib/provenance/index.js +1 -0
  229. package/lib/provenance/index.js.map +1 -1
  230. package/lib/provenance/normalize.js +3 -1
  231. package/lib/provenance/normalize.js.map +1 -1
  232. package/lib/provenance/snapshot-store.js +154 -0
  233. package/lib/provenance/snapshot-store.js.map +1 -0
  234. package/lib/qa-tools/activation-detector.js +53 -0
  235. package/lib/qa-tools/activation-detector.js.map +1 -0
  236. package/lib/qa-tools/activation-manager.js +111 -0
  237. package/lib/qa-tools/activation-manager.js.map +1 -0
  238. package/lib/qa-tools/catalog.js +108 -0
  239. package/lib/qa-tools/catalog.js.map +1 -0
  240. package/lib/qa-tools/durable-marker.js +115 -0
  241. package/lib/qa-tools/durable-marker.js.map +1 -0
  242. package/lib/qa-tools/index.js +83 -0
  243. package/lib/qa-tools/index.js.map +1 -0
  244. package/lib/qa-tools/lifecycle.js +64 -0
  245. package/lib/qa-tools/lifecycle.js.map +1 -0
  246. package/lib/qa-tools/types.js +2 -0
  247. package/lib/qa-tools/types.js.map +1 -0
  248. package/lib/resolve-config.js +5 -0
  249. package/lib/resolve-config.js.map +1 -1
  250. package/lib/secure-session.js +35 -3
  251. package/lib/secure-session.js.map +1 -1
  252. package/lib/starters.js +117 -0
  253. package/lib/starters.js.map +1 -0
  254. package/lib/typert.host.js +767 -22
  255. package/lib/typert.remote-client.d.ts +17 -1
  256. package/lib/typert.remote-client.js +609 -17
  257. package/lib/types/account-remotes.d.ts +3 -1
  258. package/lib/types/accounts/errors.d.ts +1 -1
  259. package/lib/types/accounts/file.d.ts +10 -0
  260. package/lib/types/accounts/store.d.ts +7 -1
  261. package/lib/types/client/QaAccountsController.d.ts +7 -1
  262. package/lib/types/client/QaSessionController.d.ts +12 -0
  263. package/lib/types/client/QaSurface.d.ts +14 -4
  264. package/lib/types/client/QaSurfaceGuard.d.ts +27 -0
  265. package/lib/types/client/QaTranscriptAdapter.d.ts +7 -0
  266. package/lib/types/client/components/QaComposer.d.ts +3 -1
  267. package/lib/types/client/components/QaHeader.d.ts +3 -1
  268. package/lib/types/client/components/QaModal.d.ts +5 -4
  269. package/lib/types/client/components/QaSidebar.d.ts +8 -11
  270. package/lib/types/client/components/QaWidthHandle.d.ts +13 -0
  271. package/lib/types/client/index.d.ts +1 -0
  272. package/lib/types/client/panels/PanelHost.d.ts +18 -0
  273. package/lib/types/client/panels/PanelLauncher.d.ts +5 -0
  274. package/lib/types/client/panels/contract.d.ts +83 -0
  275. package/lib/types/client/panels/index.d.ts +3 -0
  276. package/lib/types/client/panels/registry.d.ts +40 -0
  277. package/lib/types/client/project-session-state.d.ts +5 -0
  278. package/lib/types/client/settings/sections/documents.d.ts +13 -0
  279. package/lib/types/client/settings/sections.d.ts +1 -0
  280. package/lib/types/client/settings-extensions/contract.d.ts +32 -0
  281. package/lib/types/client/settings-extensions/index.d.ts +3 -0
  282. package/lib/types/client/settings-extensions/registry.d.ts +15 -0
  283. package/lib/types/client/settlement.d.ts +41 -5
  284. package/lib/types/client/source-preview.d.ts +8 -0
  285. package/lib/types/client/styles.d.ts +2 -0
  286. package/lib/types/client/subagent-codenames.d.ts +18 -0
  287. package/lib/types/client/types.d.ts +35 -3
  288. package/lib/types/client/user-settings/GeneralSettingsPage.d.ts +14 -0
  289. package/lib/types/client/user-settings/ProfileSettingsPage.d.ts +18 -0
  290. package/lib/types/client/user-settings/SkillCatalog.d.ts +16 -0
  291. package/lib/types/client/user-settings/SkillEditor.d.ts +42 -0
  292. package/lib/types/client/user-settings/SkillToolPicker.d.ts +17 -0
  293. package/lib/types/client/user-settings/SkillsSettingsPage.d.ts +15 -0
  294. package/lib/types/client/user-settings/StartersSettingsPage.d.ts +14 -0
  295. package/lib/types/client/user-settings/UserSettingsDialog.d.ts +43 -0
  296. package/lib/types/client/user-settings/copy.d.ts +25 -0
  297. package/lib/types/client/user-settings/draft.d.ts +51 -0
  298. package/lib/types/client/user-settings/fields.d.ts +43 -0
  299. package/lib/types/config-resolvers/tools.d.ts +6 -0
  300. package/lib/types/documents/artifacts/ids.d.ts +14 -0
  301. package/lib/types/documents/artifacts/manifest.d.ts +32 -0
  302. package/lib/types/documents/artifacts/store.d.ts +67 -0
  303. package/lib/types/documents/capabilities.d.ts +32 -0
  304. package/lib/types/documents/config.d.ts +27 -0
  305. package/lib/types/documents/defaults.d.ts +161 -0
  306. package/lib/types/documents/errors.d.ts +42 -0
  307. package/lib/types/documents/index.d.ts +63 -0
  308. package/lib/types/documents/inspect/facts.d.ts +43 -0
  309. package/lib/types/documents/inspect/zip.d.ts +28 -0
  310. package/lib/types/documents/markdown/directives.d.ts +39 -0
  311. package/lib/types/documents/markdown/frontmatter.d.ts +15 -0
  312. package/lib/types/documents/markdown/normalize.d.ts +30 -0
  313. package/lib/types/documents/orchestrator/assets.d.ts +55 -0
  314. package/lib/types/documents/orchestrator/convert-document.d.ts +25 -0
  315. package/lib/types/documents/orchestrator/create-document.d.ts +18 -0
  316. package/lib/types/documents/orchestrator/extract-document.d.ts +24 -0
  317. package/lib/types/documents/orchestrator/inspect-document.d.ts +12 -0
  318. package/lib/types/documents/orchestrator/runtime-deps.d.ts +43 -0
  319. package/lib/types/documents/orchestrator/scope.d.ts +52 -0
  320. package/lib/types/documents/providers/docling.d.ts +54 -0
  321. package/lib/types/documents/providers/libreoffice.d.ts +40 -0
  322. package/lib/types/documents/providers/markitdown.d.ts +28 -0
  323. package/lib/types/documents/providers/pandoc.d.ts +42 -0
  324. package/lib/types/documents/providers/process.d.ts +54 -0
  325. package/lib/types/documents/providers/registry.d.ts +68 -0
  326. package/lib/types/documents/providers/shared.d.ts +27 -0
  327. package/lib/types/documents/runtime.d.ts +59 -0
  328. package/lib/types/documents/security/file-types.d.ts +39 -0
  329. package/lib/types/documents/security/limits.d.ts +24 -0
  330. package/lib/types/documents/security/mime.d.ts +13 -0
  331. package/lib/types/documents/security/paths.d.ts +38 -0
  332. package/lib/types/documents/templates/registry.d.ts +50 -0
  333. package/lib/types/documents/templates/resolver.d.ts +30 -0
  334. package/lib/types/documents/tools/convert.d.ts +9 -0
  335. package/lib/types/documents/tools/create.d.ts +14 -0
  336. package/lib/types/documents/tools/index.d.ts +33 -0
  337. package/lib/types/documents/tools/inspect.d.ts +9 -0
  338. package/lib/types/documents/tools/shared.d.ts +77 -0
  339. package/lib/types/documents/tools/to-markdown.d.ts +12 -0
  340. package/lib/types/documents/types.d.ts +294 -0
  341. package/lib/types/index.d.ts +75 -3
  342. package/lib/types/integration-principals.d.ts +9 -0
  343. package/lib/types/lockdown-policy.d.ts +12 -2
  344. package/lib/types/personal-skills/errors.d.ts +11 -0
  345. package/lib/types/personal-skills/host.d.ts +42 -0
  346. package/lib/types/personal-skills/index.d.ts +10 -0
  347. package/lib/types/personal-skills/paths.d.ts +39 -0
  348. package/lib/types/personal-skills/provider.d.ts +33 -0
  349. package/lib/types/personal-skills/remotes.d.ts +35 -0
  350. package/lib/types/personal-skills/service.d.ts +131 -0
  351. package/lib/types/personal-skills/skill-file.d.ts +64 -0
  352. package/lib/types/personal-skills/skill-format.d.ts +100 -0
  353. package/lib/types/personal-skills/watcher.d.ts +39 -0
  354. package/lib/types/profile.d.ts +13 -0
  355. package/lib/types/prompt-notes.d.ts +9 -0
  356. package/lib/types/provenance/file-preview.d.ts +47 -4
  357. package/lib/types/provenance/host-store.d.ts +7 -1
  358. package/lib/types/provenance/index.d.ts +1 -0
  359. package/lib/types/provenance/snapshot-store.d.ts +23 -0
  360. package/lib/types/qa-tools/activation-detector.d.ts +29 -0
  361. package/lib/types/qa-tools/activation-manager.d.ts +47 -0
  362. package/lib/types/qa-tools/catalog.d.ts +40 -0
  363. package/lib/types/qa-tools/durable-marker.d.ts +16 -0
  364. package/lib/types/qa-tools/index.d.ts +40 -0
  365. package/lib/types/qa-tools/lifecycle.d.ts +44 -0
  366. package/lib/types/qa-tools/types.d.ts +45 -0
  367. package/lib/types/secure-session.d.ts +24 -2
  368. package/lib/types/starters.d.ts +45 -0
  369. package/lib/types/types.d.ts +202 -3
  370. package/package.json +24 -11
  371. package/scripts/repair-session-events.mjs +260 -0
  372. package/lib/client/components/QaProfile.js +0 -64
  373. package/lib/client/components/QaProfile.js.map +0 -1
  374. package/lib/types/client/components/QaProfile.d.ts +0 -25
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yadsh/dsh-qa-surface",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
4
4
  "description": "A focused end-user QA surface backed by native DeepSeek Harness sessions",
5
5
  "repository": {
6
6
  "type": "git",
@@ -15,7 +15,8 @@
15
15
  "main": "./lib/index.js",
16
16
  "types": "./lib/types/index.d.ts",
17
17
  "bin": {
18
- "qa-accounts": "./lib/cli.js"
18
+ "qa-accounts": "./lib/cli.js",
19
+ "qa-repair-sessions": "./scripts/repair-session-events.mjs"
19
20
  },
20
21
  "exports": {
21
22
  ".": {
@@ -26,6 +27,14 @@
26
27
  "types": "./lib/types/client/index.d.ts",
27
28
  "default": "./lib/client.js"
28
29
  },
30
+ "./client/panels": {
31
+ "types": "./lib/types/client/panels/index.d.ts",
32
+ "default": "./lib/client/panels/index.js"
33
+ },
34
+ "./client/settings": {
35
+ "types": "./lib/types/client/settings-extensions/index.d.ts",
36
+ "default": "./lib/client/settings-extensions/index.js"
37
+ },
29
38
  "./remote": {
30
39
  "types": "./lib/typert.remote-client.d.ts",
31
40
  "default": "./lib/typert.remote-client.js"
@@ -66,6 +75,7 @@
66
75
  "lib/**/*.js",
67
76
  "lib/**/*.js.map",
68
77
  "lib/**/*.d.ts",
78
+ "scripts/repair-session-events.mjs",
69
79
  "cordis.patch.yml",
70
80
  "compatibility.json",
71
81
  "capability-policy.json",
@@ -110,6 +120,7 @@
110
120
  "@deepseek-ai/dsh-permission-presets": ">=0.1.5-rc.2 <0.2.0",
111
121
  "@deepseek-ai/dsh-session": ">=0.1.5-rc.2 <0.2.0",
112
122
  "@deepseek-ai/dsh-settings": ">=0.1.5-rc.2 <0.2.0",
123
+ "@deepseek-ai/dsh-skill": ">=0.1.5-rc.2 <0.2.0",
113
124
  "@deepseek-ai/dsh-system-prompt": ">=0.1.5-rc.2 <0.2.0",
114
125
  "@deepseek-ai/dsh-tools": ">=0.1.5-rc.2 <0.2.0",
115
126
  "@deepseek-ai/dsh-typert-protocol": ">=0.1.5-rc.2 <0.2.0",
@@ -118,8 +129,9 @@
118
129
  "react-dom": "^18.2.0"
119
130
  },
120
131
  "dependencies": {
132
+ "yaml": "^2.9.0",
121
133
  "zod": "^4.4.3",
122
- "@yadsh/dsh-plugin-log": "^0.3.0"
134
+ "@yadsh/dsh-plugin-log": "^0.3.1"
123
135
  },
124
136
  "devDependencies": {
125
137
  "@deepseek-ai/cordis": "4.0.2",
@@ -141,8 +153,10 @@
141
153
  "@deepseek-ai/dsh-host-webserver": "0.1.5-rc.2",
142
154
  "@deepseek-ai/dsh-llm": "0.1.5-rc.2",
143
155
  "@deepseek-ai/dsh-permission-presets": "0.1.5-rc.2",
156
+ "@deepseek-ai/dsh-scope": "0.1.5-rc.2",
144
157
  "@deepseek-ai/dsh-session": "0.1.5-rc.2",
145
158
  "@deepseek-ai/dsh-settings": "0.1.5-rc.2",
159
+ "@deepseek-ai/dsh-skill": "0.1.5-rc.2",
146
160
  "@deepseek-ai/dsh-system-prompt": "0.1.5-rc.2",
147
161
  "@deepseek-ai/dsh-tools": "0.1.5-rc.2",
148
162
  "@deepseek-ai/dsh-typert-generator": "0.1.5-rc.2",
@@ -155,15 +169,14 @@
155
169
  "eslint": "10.9.1",
156
170
  "jsdom": "^26.1.0",
157
171
  "playwright": "1.62.1",
158
- "prettier": "^3.6.2",
159
172
  "react": "18.3.1",
160
173
  "react-dom": "18.3.1",
161
174
  "tsdown": "^0.22.14",
162
175
  "typescript": "^7.0.2",
163
176
  "vitest": "^4.1.11",
164
177
  "@yadsh/dsh-config": "^0.0.0",
165
- "@yadsh/dsh-plugin-kit": "^0.1.0",
166
- "@yadsh/dsh-plugin-scripts": "^0.0.0"
178
+ "@yadsh/dsh-plugin-scripts": "^0.0.0",
179
+ "@yadsh/dsh-plugin-kit": "^0.1.0"
167
180
  },
168
181
  "publishConfig": {
169
182
  "access": "public",
@@ -171,15 +184,15 @@
171
184
  },
172
185
  "scripts": {
173
186
  "clean": "node -e \"require('node:fs').rmSync('lib', { recursive: true, force: true })\"",
174
- "build": "pnpm run lint && pnpm run clean && node scripts/generate-typert.mjs && tsc -p tsconfig.build.json && tsdown",
187
+ "build": "pnpm run clean && node scripts/generate-typert.mjs && tsc -p tsconfig.build.json && tsdown",
175
188
  "lint": "eslint src tests scripts tsdown.config.ts",
176
- "format": "prettier --check . --end-of-line auto",
177
- "format:write": "prettier --write . --end-of-line auto",
178
189
  "typecheck": "tsc -p tsconfig.json --noEmit",
179
190
  "test": "vitest run",
180
- "verify": "node scripts/verify-package.mjs",
191
+ "verify:package": "node scripts/verify-package.mjs",
192
+ "verify": "pnpm run verify:package && pnpm run verify:consumer",
193
+ "verify:consumer": "tsc -p scripts/fixtures/tsconfig.json --noEmit",
181
194
  "smoke:packed": "node scripts/smoke-packed-dsh.mjs",
182
195
  "e2e:browser": "node scripts/smoke-packed-dsh.mjs --browser",
183
- "check": "pnpm run format && pnpm run lint && pnpm run typecheck && pnpm run test && pnpm run build && pnpm run verify"
196
+ "check": "pnpm run lint && pnpm run typecheck && pnpm run test && pnpm run build && pnpm run verify"
184
197
  }
185
198
  }
@@ -0,0 +1,260 @@
1
+ #!/usr/bin/env node
2
+
3
+ import {
4
+ chmodSync,
5
+ copyFileSync,
6
+ constants as fsConstants,
7
+ lstatSync,
8
+ readFileSync,
9
+ readdirSync,
10
+ renameSync,
11
+ statSync,
12
+ writeFileSync,
13
+ } from "node:fs";
14
+ import os from "node:os";
15
+ import path from "node:path";
16
+ import { pathToFileURL } from "node:url";
17
+ import {
18
+ constants as zlibConstants,
19
+ zstdCompressSync,
20
+ zstdDecompressSync,
21
+ } from "node:zlib";
22
+
23
+ export const REPAIRABLE_EVENT_TYPES = new Set([
24
+ "safety-gate/check",
25
+ "safety-gate/block",
26
+ "safety-gate/warn",
27
+ "safety-gate/classifier-error",
28
+ "qa/sources",
29
+ ]);
30
+
31
+ const ZSTD_MAGIC = 0xfd2fb528;
32
+ const CHECKSUM_OPTIONS = {
33
+ params: { [zlibConstants.ZSTD_c_checksumFlag]: 1 },
34
+ };
35
+
36
+ /** Locate complete frames in a concatenated Zstandard artifact. */
37
+ export function scanZstdFrames(buffer) {
38
+ const frames = [];
39
+ let offset = 0;
40
+ while (offset < buffer.length) {
41
+ const start = offset;
42
+ if (buffer.length - offset < 5) throw new Error(`torn frame at ${start}`);
43
+ if (buffer.readUInt32LE(offset) !== ZSTD_MAGIC) {
44
+ throw new Error(`bad Zstandard magic at ${offset}`);
45
+ }
46
+ offset += 4;
47
+ const descriptor = buffer.readUInt8(offset);
48
+ offset += 1;
49
+ const contentSizeFlag = descriptor >>> 6;
50
+ const singleSegment = (descriptor & 32) !== 0;
51
+ const checksum = (descriptor & 4) !== 0;
52
+ const dictionaryFlag = descriptor & 3;
53
+ const dictionaryBytes = dictionaryFlag === 3 ? 4 : dictionaryFlag;
54
+ const contentSizeBytes =
55
+ contentSizeFlag === 0 ? (singleSegment ? 1 : 0) : 1 << contentSizeFlag;
56
+ const headerBytes =
57
+ (singleSegment ? 0 : 1) + dictionaryBytes + contentSizeBytes;
58
+ if (buffer.length - offset < headerBytes) {
59
+ throw new Error(`torn frame header at ${start}`);
60
+ }
61
+ offset += headerBytes;
62
+ for (;;) {
63
+ if (buffer.length - offset < 3) {
64
+ throw new Error(`torn block header at ${start}`);
65
+ }
66
+ const blockHeader = buffer.readUIntLE(offset, 3);
67
+ offset += 3;
68
+ const lastBlock = (blockHeader & 1) !== 0;
69
+ const blockType = (blockHeader >>> 1) & 3;
70
+ const blockSize = blockHeader >>> 3;
71
+ if (blockType === 3) throw new Error(`reserved block type at ${start}`);
72
+ const payloadBytes = blockType === 1 ? 1 : blockSize;
73
+ if (buffer.length - offset < payloadBytes) {
74
+ throw new Error(`torn block payload at ${start}`);
75
+ }
76
+ offset += payloadBytes;
77
+ if (lastBlock) break;
78
+ }
79
+ if (checksum) {
80
+ if (buffer.length - offset < 4) {
81
+ throw new Error(`torn checksum at ${start}`);
82
+ }
83
+ offset += 4;
84
+ }
85
+ frames.push({ start, end: offset });
86
+ }
87
+ return frames;
88
+ }
89
+
90
+ function decodeArtifact(filePath, content) {
91
+ if (!filePath.endsWith(".zstd")) return content.toString("utf8");
92
+ return scanZstdFrames(content)
93
+ .map(({ start, end }) =>
94
+ zstdDecompressSync(content.subarray(start, end)).toString("utf8"),
95
+ )
96
+ .join("");
97
+ }
98
+
99
+ function encodeArtifact(filePath, rows) {
100
+ const text = `${rows.map((row) => JSON.stringify(row)).join("\n")}\n`;
101
+ if (!filePath.endsWith(".zstd")) return Buffer.from(text, "utf8");
102
+ // Harness requires the first frame to contain exactly the header line.
103
+ const frames = [
104
+ zstdCompressSync(
105
+ Buffer.from(`${JSON.stringify(rows[0])}\n`, "utf8"),
106
+ CHECKSUM_OPTIONS,
107
+ ),
108
+ ];
109
+ const eventRows = rows.slice(1);
110
+ const frameSize = 2_000;
111
+ for (let index = 0; index < eventRows.length; index += frameSize) {
112
+ const plain = `${eventRows
113
+ .slice(index, index + frameSize)
114
+ .map((row) => JSON.stringify(row))
115
+ .join("\n")}\n`;
116
+ frames.push(zstdCompressSync(Buffer.from(plain, "utf8"), CHECKSUM_OPTIONS));
117
+ }
118
+ return Buffer.concat(frames);
119
+ }
120
+
121
+ function parseRows(filePath, plain) {
122
+ const lines = plain.split("\n").filter((line) => line.length > 0);
123
+ if (lines.length === 0) throw new Error(`${filePath}: empty session log`);
124
+ return lines.map((line, index) => {
125
+ try {
126
+ const row = JSON.parse(line);
127
+ if (typeof row !== "object" || row === null || Array.isArray(row)) {
128
+ throw new Error("row is not an object");
129
+ }
130
+ return row;
131
+ } catch (error) {
132
+ throw new Error(`${filePath}: invalid JSON on row ${index + 1}`, {
133
+ cause: error,
134
+ });
135
+ }
136
+ });
137
+ }
138
+
139
+ /** Repair one offline session log; dry-run is the default. */
140
+ export function repairSessionFile(filePath, options = {}) {
141
+ const write = options.write === true;
142
+ const before = statSync(filePath);
143
+ const original = readFileSync(filePath);
144
+ const rows = parseRows(filePath, decodeArtifact(filePath, original));
145
+ let changed = 0;
146
+ const types = new Map();
147
+ for (let index = 1; index < rows.length; index += 1) {
148
+ const row = rows[index];
149
+ if (!REPAIRABLE_EVENT_TYPES.has(row.type) || row.ignorable === true)
150
+ continue;
151
+ row.ignorable = true;
152
+ changed += 1;
153
+ types.set(row.type, (types.get(row.type) ?? 0) + 1);
154
+ }
155
+ if (changed === 0 || !write) {
156
+ return {
157
+ filePath,
158
+ changed,
159
+ types: Object.fromEntries(types),
160
+ written: false,
161
+ };
162
+ }
163
+
164
+ const now = statSync(filePath);
165
+ if (now.size !== before.size || now.mtimeMs !== before.mtimeMs) {
166
+ throw new Error(
167
+ `${filePath}: changed while being inspected; stop DSH and retry`,
168
+ );
169
+ }
170
+ const backup = `${filePath}.pre-plugin-event-repair.bak`;
171
+ copyFileSync(filePath, backup, fsConstants.COPYFILE_EXCL);
172
+ const repaired = encodeArtifact(filePath, rows);
173
+ // Decode before publishing so a bad generated frame cannot replace the log.
174
+ parseRows(filePath, decodeArtifact(filePath, repaired));
175
+ const temp = `${filePath}.${process.pid}.repair.tmp`;
176
+ writeFileSync(temp, repaired, { mode: before.mode });
177
+ chmodSync(temp, before.mode);
178
+ renameSync(temp, filePath);
179
+ return {
180
+ filePath,
181
+ changed,
182
+ types: Object.fromEntries(types),
183
+ written: true,
184
+ backup,
185
+ };
186
+ }
187
+
188
+ function sessionFiles(target) {
189
+ const details = lstatSync(target);
190
+ if (details.isSymbolicLink()) return [];
191
+ if (details.isFile()) {
192
+ return target.endsWith(".jsonl") || target.endsWith(".jsonl.zstd")
193
+ ? [target]
194
+ : [];
195
+ }
196
+ if (!details.isDirectory()) return [];
197
+ return readdirSync(target, { withFileTypes: true }).flatMap((entry) => {
198
+ if (entry.isSymbolicLink()) return [];
199
+ return sessionFiles(path.join(target, entry.name));
200
+ });
201
+ }
202
+
203
+ function usage() {
204
+ return `Usage: qa-repair-sessions [--write] [session-file-or-directory ...]
205
+
206
+ Dry-run is the default. With no target, scans $DSH_HOME/sessions (or
207
+ ~/.dsh/sessions when DSH_HOME is unset). Stop DSH before using --write.
208
+
209
+ The command only adds ignorable:true to legacy safety-gate/* and qa/sources
210
+ events. Before each changed file is replaced atomically, an exclusive
211
+ *.pre-plugin-event-repair.bak backup is created.`;
212
+ }
213
+
214
+ export function main(argv = process.argv.slice(2)) {
215
+ if (argv.includes("--help") || argv.includes("-h")) {
216
+ console.log(usage());
217
+ return 0;
218
+ }
219
+ const write = argv.includes("--write");
220
+ const unknown = argv.filter(
221
+ (arg) => arg.startsWith("-") && arg !== "--write",
222
+ );
223
+ if (unknown.length > 0) throw new Error(`unknown option: ${unknown[0]}`);
224
+ const targets = argv.filter((arg) => !arg.startsWith("-"));
225
+ if (targets.length === 0) {
226
+ const home =
227
+ process.env.DSH_HOME?.trim() || path.join(os.homedir(), ".dsh");
228
+ targets.push(path.join(home, "sessions"));
229
+ }
230
+ if (write) console.error("write mode: DSH must be stopped");
231
+ const files = [...new Set(targets.flatMap(sessionFiles))].sort();
232
+ let candidates = 0;
233
+ let events = 0;
234
+ for (const file of files) {
235
+ const result = repairSessionFile(file, { write });
236
+ if (result.changed === 0) continue;
237
+ candidates += 1;
238
+ events += result.changed;
239
+ console.log(
240
+ `${result.written ? "repaired" : "would repair"}: ${file} (${result.changed} events)`,
241
+ );
242
+ if (result.backup !== undefined) console.log(`backup: ${result.backup}`);
243
+ }
244
+ console.log(
245
+ `${write ? "repaired" : "dry run"}: ${events} events in ${candidates} of ${files.length} session logs`,
246
+ );
247
+ return 0;
248
+ }
249
+
250
+ if (
251
+ process.argv[1] !== undefined &&
252
+ pathToFileURL(path.resolve(process.argv[1])).href === import.meta.url
253
+ ) {
254
+ try {
255
+ process.exitCode = main();
256
+ } catch (error) {
257
+ console.error(error instanceof Error ? error.message : String(error));
258
+ process.exitCode = 1;
259
+ }
260
+ }
@@ -1,64 +0,0 @@
1
- import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useEffect, useState } from "react";
3
- import { QA_PROFILE_MAX_FULL_NAME, QA_PROFILE_MAX_IDENTITY_VALUE, } from "../../profile.js";
4
- import { QaModal } from "./QaModal.js";
5
- /** Form id the footer's submit control is bound to. */
6
- const FORM_ID = "dsh-qa-profile-form";
7
- /**
8
- * The signed-in user's own profile: the full name, one field per declared
9
- * external system, and the free-form instructions the assistant receives.
10
- *
11
- * The form is seeded from the stored profile each time it opens, so a closed
12
- * dialog never keeps stale edits; limits mirror the Host's, which stays the
13
- * authority — the browser only avoids a round trip for the obvious refusals.
14
- */
15
- export function QaProfileModal(props) {
16
- const [fullName, setFullName] = useState("");
17
- const [handles, setHandles] = useState({});
18
- const [instructions, setInstructions] = useState("");
19
- const [busy, setBusy] = useState(false);
20
- const [error, setError] = useState(null);
21
- useEffect(() => {
22
- if (!props.open)
23
- return;
24
- setFullName(props.profile.fullName);
25
- setHandles({ ...props.profile.identities });
26
- setInstructions(props.profile.instructions);
27
- setBusy(false);
28
- setError(null);
29
- }, [props.open, props.profile]);
30
- const tooLong = fullName.trim().length > QA_PROFILE_MAX_FULL_NAME ||
31
- instructions.length > props.instructionsMaxLength;
32
- const submit = (event) => {
33
- event.preventDefault();
34
- if (busy || tooLong)
35
- return;
36
- setBusy(true);
37
- setError(null);
38
- const input = {
39
- fullName,
40
- // Only declared fields travel: the Host refuses undeclared keys, and a
41
- // field the deployment withdrew must not be silently re-sent.
42
- identities: Object.fromEntries(props.identities.map((field) => [field.key, handles[field.key] ?? ""])),
43
- instructions,
44
- };
45
- void props.onSave(input).then((refusal) => {
46
- setBusy(false);
47
- if (refusal !== null) {
48
- setError(refusal);
49
- return;
50
- }
51
- props.onClose();
52
- });
53
- };
54
- return (_jsx(QaModal, { open: props.open, title: "\u041F\u0440\u043E\u0444\u0438\u043B\u044C", closeLabel: "\u0417\u0430\u043A\u0440\u044B\u0442\u044C \u043F\u0440\u043E\u0444\u0438\u043B\u044C", onClose: props.onClose,
55
- // The hint lines are full sentences; the shared panel width wraps them
56
- // mid-sentence and leaves one word on the second line.
57
- wide: true, footer: _jsxs(_Fragment, { children: [_jsx("button", { type: "button", className: "dsh-qa-profile__cancel", disabled: busy, onClick: props.onClose, children: "\u041E\u0442\u043C\u0435\u043D\u0430" }), _jsx("button", { type: "submit", form: FORM_ID, className: "dsh-qa-profile__save", disabled: busy || tooLong, children: busy ? "Сохранение…" : "Сохранить" })] }), children: _jsxs("form", { id: FORM_ID, className: "dsh-qa-profile", onSubmit: submit, children: [_jsx("p", { className: "dsh-qa-profile__lead", children: "\u042D\u0442\u0438 \u0434\u0430\u043D\u043D\u044B\u0435 \u0432\u0438\u0434\u0438\u0442 \u0430\u0441\u0441\u0438\u0441\u0442\u0435\u043D\u0442 \u0432 \u0432\u0430\u0448\u0438\u0445 \u0447\u0430\u0442\u0430\u0445: \u043F\u043E \u0443\u043A\u0430\u0437\u0430\u043D\u043D\u044B\u043C \u043B\u043E\u0433\u0438\u043D\u0430\u043C \u043E\u043D \u0438\u0449\u0435\u0442 \u0432\u0430\u0448\u0438 \u0437\u0430\u0434\u0430\u0447\u0438, \u0437\u0430\u044F\u0432\u043A\u0438 \u0438 MR." }), _jsxs("label", { className: "dsh-qa-profile__field", children: [_jsx("span", { children: "Email" }), _jsx("input", { value: props.email, readOnly: true })] }), _jsxs("label", { className: "dsh-qa-profile__field", children: [_jsx("span", { children: "\u0424\u0418\u041E" }), _jsx("input", { value: fullName, maxLength: QA_PROFILE_MAX_FULL_NAME, placeholder: "\u0418\u0432\u0430\u043D \u0418\u0432\u0430\u043D\u043E\u0432", autoComplete: "name", onChange: (event) => setFullName(event.currentTarget.value) })] }), props.identities.map((field) => (_jsxs("label", { className: "dsh-qa-profile__field", children: [_jsx("span", { children: field.label }), _jsx("input", { value: handles[field.key] ?? "", maxLength: QA_PROFILE_MAX_IDENTITY_VALUE, placeholder: `Логин в ${field.label}`, onChange: (event) => {
58
- // Read the value now: React empties `currentTarget` before the
59
- // state updater below runs.
60
- const value = event.currentTarget.value;
61
- setHandles((current) => ({ ...current, [field.key]: value }));
62
- } })] }, field.key))), props.identities.length === 0 ? (_jsx("p", { className: "dsh-qa-profile__hint", children: "\u0412\u043D\u0435\u0448\u043D\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043C\u044B \u043D\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0435\u043D\u044B: \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B \u0442\u043E\u043B\u044C\u043A\u043E \u0424\u0418\u041E \u0438 \u0438\u043D\u0441\u0442\u0440\u0443\u043A\u0446\u0438\u0438." })) : null, _jsxs("label", { className: "dsh-qa-profile__field", children: [_jsx("span", { children: "\u041E\u0431\u0449\u0438\u0435 \u0438\u043D\u0441\u0442\u0440\u0443\u043A\u0446\u0438\u0438 \u0434\u043B\u044F \u0430\u0433\u0435\u043D\u0442\u0430" }), _jsx("textarea", { rows: 4, value: instructions, maxLength: props.instructionsMaxLength, placeholder: "\u041D\u0430\u043F\u0440\u0438\u043C\u0435\u0440: \u043E\u0442\u0432\u0435\u0447\u0430\u0439 \u043A\u0440\u0430\u0442\u043A\u043E \u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0439, \u043E\u0442\u043A\u0443\u0434\u0430 \u0432\u0437\u044F\u043B \u0434\u0430\u043D\u043D\u044B\u0435.", onChange: (event) => setInstructions(event.currentTarget.value) })] }), _jsxs("p", { className: "dsh-qa-profile__count", children: [instructions.length, " / ", props.instructionsMaxLength] }), _jsx("p", { className: "dsh-qa-profile__hint", children: "\u0418\u043D\u0441\u0442\u0440\u0443\u043A\u0446\u0438\u0438 \u0437\u0430\u0434\u0430\u044E\u0442 \u0441\u0442\u0438\u043B\u044C \u043E\u0442\u0432\u0435\u0442\u043E\u0432, \u043D\u043E \u043D\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u044F\u044E\u0442 \u0434\u043E\u0441\u0442\u0443\u043F \u043A \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u0430\u043C." }), error === null ? null : (_jsx("p", { className: "dsh-qa-profile__error", role: "alert", children: error }))] }) }));
63
- }
64
- //# sourceMappingURL=QaProfile.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"QaProfile.js","sourceRoot":"","sources":["../../../src/client/components/QaProfile.tsx"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- import type { QaAccountIdentityField, QaAccountProfile, QaAccountProfileInput } from "../../types.js";
2
- export interface QaProfileModalProps {
3
- readonly open: boolean;
4
- readonly email: string;
5
- readonly profile: QaAccountProfile;
6
- /** Handle fields the deployment declares, in its configured order. */
7
- readonly identities: readonly QaAccountIdentityField[];
8
- readonly instructionsMaxLength: number;
9
- readonly onClose: () => void;
10
- /**
11
- * Persist the edited profile. Resolves to audience-safe refusal copy, or
12
- * null once the Host stored it.
13
- */
14
- readonly onSave: (input: QaAccountProfileInput) => Promise<string | null>;
15
- }
16
- /**
17
- * The signed-in user's own profile: the full name, one field per declared
18
- * external system, and the free-form instructions the assistant receives.
19
- *
20
- * The form is seeded from the stored profile each time it opens, so a closed
21
- * dialog never keeps stale edits; limits mirror the Host's, which stays the
22
- * authority — the browser only avoids a round trip for the obvious refusals.
23
- */
24
- export declare function QaProfileModal(props: QaProfileModalProps): import("react/jsx-runtime").JSX.Element;
25
- //# sourceMappingURL=QaProfile.d.ts.map