@yadsh/dsh-qa-surface 0.4.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 (421) hide show
  1. package/README.md +235 -14
  2. package/compatibility.json +10 -1
  3. package/cordis.patch.yml +17 -0
  4. package/lib/account-remotes.js +10 -0
  5. package/lib/account-remotes.js.map +1 -1
  6. package/lib/accounts/credentials.js +12 -4
  7. package/lib/accounts/credentials.js.map +1 -1
  8. package/lib/accounts/errors.js.map +1 -1
  9. package/lib/accounts/file.js.map +1 -1
  10. package/lib/accounts/store.js +38 -1
  11. package/lib/accounts/store.js.map +1 -1
  12. package/lib/approvals.js +179 -0
  13. package/lib/approvals.js.map +1 -0
  14. package/lib/cli.js +10 -0
  15. package/lib/cli.js.map +1 -1
  16. package/lib/client/QaAccountsController.js +29 -0
  17. package/lib/client/QaAccountsController.js.map +1 -1
  18. package/lib/client/QaSessionController.js +261 -48
  19. package/lib/client/QaSessionController.js.map +1 -1
  20. package/lib/client/QaSurface.js +138 -56
  21. package/lib/client/QaSurface.js.map +1 -1
  22. package/lib/client/QaSurfaceGuard.js +96 -0
  23. package/lib/client/QaSurfaceGuard.js.map +1 -0
  24. package/lib/client/QaTranscriptAdapter.js +11 -5
  25. package/lib/client/QaTranscriptAdapter.js.map +1 -1
  26. package/lib/client/approvals.js +104 -0
  27. package/lib/client/approvals.js.map +1 -0
  28. package/lib/client/attestation.js +3 -0
  29. package/lib/client/attestation.js.map +1 -1
  30. package/lib/client/components/QaApproval.js +23 -0
  31. package/lib/client/components/QaApproval.js.map +1 -0
  32. package/lib/client/components/QaChangelog.js +55 -0
  33. package/lib/client/components/QaChangelog.js.map +1 -1
  34. package/lib/client/components/QaComposer.js +1 -1
  35. package/lib/client/components/QaComposer.js.map +1 -1
  36. package/lib/client/components/QaHeader.js +2 -8
  37. package/lib/client/components/QaHeader.js.map +1 -1
  38. package/lib/client/components/QaMessage.js +20 -7
  39. package/lib/client/components/QaMessage.js.map +1 -1
  40. package/lib/client/components/QaModal.js +24 -6
  41. package/lib/client/components/QaModal.js.map +1 -1
  42. package/lib/client/components/QaQuestions.js +96 -0
  43. package/lib/client/components/QaQuestions.js.map +1 -0
  44. package/lib/client/components/QaSidebar.js +2 -6
  45. package/lib/client/components/QaSidebar.js.map +1 -1
  46. package/lib/client/components/QaSourcesPanel.js +6 -5
  47. package/lib/client/components/QaSourcesPanel.js.map +1 -1
  48. package/lib/client/components/QaWidthHandle.js +21 -1
  49. package/lib/client/components/QaWidthHandle.js.map +1 -1
  50. package/lib/client/components/surface-utils.js +2 -0
  51. package/lib/client/components/surface-utils.js.map +1 -1
  52. package/lib/client/index.js +81 -22
  53. package/lib/client/index.js.map +1 -1
  54. package/lib/client/panels/PanelHost.js +209 -0
  55. package/lib/client/panels/PanelHost.js.map +1 -0
  56. package/lib/client/panels/PanelLauncher.js +39 -0
  57. package/lib/client/panels/PanelLauncher.js.map +1 -0
  58. package/lib/client/panels/contract.js +2 -0
  59. package/lib/client/panels/contract.js.map +1 -0
  60. package/lib/client/panels/index.js +2 -0
  61. package/lib/client/panels/index.js.map +1 -0
  62. package/lib/client/panels/registry.js +171 -0
  63. package/lib/client/panels/registry.js.map +1 -0
  64. package/lib/client/project-session-state.js +8 -3
  65. package/lib/client/project-session-state.js.map +1 -1
  66. package/lib/client/questions.js +114 -0
  67. package/lib/client/questions.js.map +1 -0
  68. package/lib/client/settings/card.js +2 -2
  69. package/lib/client/settings/card.js.map +1 -1
  70. package/lib/client/settings/sections/accounts.js +3 -1
  71. package/lib/client/settings/sections/accounts.js.map +1 -1
  72. package/lib/client/settings/sections/documents.js +88 -0
  73. package/lib/client/settings/sections/documents.js.map +1 -0
  74. package/lib/client/settings/sections/interface.js +2 -0
  75. package/lib/client/settings/sections/interface.js.map +1 -1
  76. package/lib/client/settings/sections/sources.js +2 -0
  77. package/lib/client/settings/sections/sources.js.map +1 -1
  78. package/lib/client/settings/sections.js +1 -0
  79. package/lib/client/settings/sections.js.map +1 -1
  80. package/lib/client/settings-extensions/contract.js +2 -0
  81. package/lib/client/settings-extensions/contract.js.map +1 -0
  82. package/lib/client/settings-extensions/index.js +2 -0
  83. package/lib/client/settings-extensions/index.js.map +1 -0
  84. package/lib/client/settings-extensions/registry.js +63 -0
  85. package/lib/client/settings-extensions/registry.js.map +1 -0
  86. package/lib/client/settlement.js +51 -5
  87. package/lib/client/settlement.js.map +1 -1
  88. package/lib/client/source-preview.js +24 -0
  89. package/lib/client/source-preview.js.map +1 -0
  90. package/lib/client/styles.js +199 -32
  91. package/lib/client/styles.js.map +1 -1
  92. package/lib/client/subagent-codenames.js +109 -0
  93. package/lib/client/subagent-codenames.js.map +1 -0
  94. package/lib/client/types.js +3 -0
  95. package/lib/client/types.js.map +1 -1
  96. package/lib/client/user-settings/GeneralSettingsPage.js +13 -0
  97. package/lib/client/user-settings/GeneralSettingsPage.js.map +1 -0
  98. package/lib/client/user-settings/ProfileSettingsPage.js +59 -0
  99. package/lib/client/user-settings/ProfileSettingsPage.js.map +1 -0
  100. package/lib/client/user-settings/SkillCatalog.js +23 -0
  101. package/lib/client/user-settings/SkillCatalog.js.map +1 -0
  102. package/lib/client/user-settings/SkillEditor.js +89 -0
  103. package/lib/client/user-settings/SkillEditor.js.map +1 -0
  104. package/lib/client/user-settings/SkillToolPicker.js +58 -0
  105. package/lib/client/user-settings/SkillToolPicker.js.map +1 -0
  106. package/lib/client/user-settings/SkillsSettingsPage.js +171 -0
  107. package/lib/client/user-settings/SkillsSettingsPage.js.map +1 -0
  108. package/lib/client/user-settings/StartersSettingsPage.js +78 -0
  109. package/lib/client/user-settings/StartersSettingsPage.js.map +1 -0
  110. package/lib/client/user-settings/UserSettingsDialog.js +50 -0
  111. package/lib/client/user-settings/UserSettingsDialog.js.map +1 -0
  112. package/lib/client/user-settings/copy.js +84 -0
  113. package/lib/client/user-settings/copy.js.map +1 -0
  114. package/lib/client/user-settings/draft.js +127 -0
  115. package/lib/client/user-settings/draft.js.map +1 -0
  116. package/lib/client/user-settings/fields.js +24 -0
  117. package/lib/client/user-settings/fields.js.map +1 -0
  118. package/lib/client.js +6629 -1579
  119. package/lib/client.js.map +1 -1
  120. package/lib/config-resolvers/accounts.js +30 -0
  121. package/lib/config-resolvers/accounts.js.map +1 -1
  122. package/lib/config-resolvers/basics.js +4 -2
  123. package/lib/config-resolvers/basics.js.map +1 -1
  124. package/lib/config-resolvers/defaults.js +27 -0
  125. package/lib/config-resolvers/defaults.js.map +1 -1
  126. package/lib/config-resolvers/lockdown.js +11 -0
  127. package/lib/config-resolvers/lockdown.js.map +1 -1
  128. package/lib/config-resolvers/session.js +2 -2
  129. package/lib/config-resolvers/session.js.map +1 -1
  130. package/lib/config-resolvers/shared.js +9 -0
  131. package/lib/config-resolvers/shared.js.map +1 -1
  132. package/lib/config-resolvers/sources.js +2 -0
  133. package/lib/config-resolvers/sources.js.map +1 -1
  134. package/lib/config-resolvers/tools.js +37 -0
  135. package/lib/config-resolvers/tools.js.map +1 -0
  136. package/lib/config-resolvers/ui.js +2 -0
  137. package/lib/config-resolvers/ui.js.map +1 -1
  138. package/lib/config.js +299 -2
  139. package/lib/config.js.map +1 -1
  140. package/lib/documents/artifacts/ids.js +43 -0
  141. package/lib/documents/artifacts/ids.js.map +1 -0
  142. package/lib/documents/artifacts/manifest.js +66 -0
  143. package/lib/documents/artifacts/manifest.js.map +1 -0
  144. package/lib/documents/artifacts/store.js +169 -0
  145. package/lib/documents/artifacts/store.js.map +1 -0
  146. package/lib/documents/capabilities.js +93 -0
  147. package/lib/documents/capabilities.js.map +1 -0
  148. package/lib/documents/config.js +302 -0
  149. package/lib/documents/config.js.map +1 -0
  150. package/lib/documents/defaults.js +78 -0
  151. package/lib/documents/defaults.js.map +1 -0
  152. package/lib/documents/errors.js +101 -0
  153. package/lib/documents/errors.js.map +1 -0
  154. package/lib/documents/index.js +80 -0
  155. package/lib/documents/index.js.map +1 -0
  156. package/lib/documents/inspect/facts.js +161 -0
  157. package/lib/documents/inspect/facts.js.map +1 -0
  158. package/lib/documents/inspect/zip.js +108 -0
  159. package/lib/documents/inspect/zip.js.map +1 -0
  160. package/lib/documents/markdown/directives.js +135 -0
  161. package/lib/documents/markdown/directives.js.map +1 -0
  162. package/lib/documents/markdown/frontmatter.js +35 -0
  163. package/lib/documents/markdown/frontmatter.js.map +1 -0
  164. package/lib/documents/markdown/normalize.js +113 -0
  165. package/lib/documents/markdown/normalize.js.map +1 -0
  166. package/lib/documents/orchestrator/assets.js +243 -0
  167. package/lib/documents/orchestrator/assets.js.map +1 -0
  168. package/lib/documents/orchestrator/convert-document.js +186 -0
  169. package/lib/documents/orchestrator/convert-document.js.map +1 -0
  170. package/lib/documents/orchestrator/create-document.js +292 -0
  171. package/lib/documents/orchestrator/create-document.js.map +1 -0
  172. package/lib/documents/orchestrator/extract-document.js +162 -0
  173. package/lib/documents/orchestrator/extract-document.js.map +1 -0
  174. package/lib/documents/orchestrator/inspect-document.js +89 -0
  175. package/lib/documents/orchestrator/inspect-document.js.map +1 -0
  176. package/lib/documents/orchestrator/runtime-deps.js +59 -0
  177. package/lib/documents/orchestrator/runtime-deps.js.map +1 -0
  178. package/lib/documents/orchestrator/scope.js +132 -0
  179. package/lib/documents/orchestrator/scope.js.map +1 -0
  180. package/lib/documents/providers/docling.js +247 -0
  181. package/lib/documents/providers/docling.js.map +1 -0
  182. package/lib/documents/providers/libreoffice.js +130 -0
  183. package/lib/documents/providers/libreoffice.js.map +1 -0
  184. package/lib/documents/providers/markitdown.js +89 -0
  185. package/lib/documents/providers/markitdown.js.map +1 -0
  186. package/lib/documents/providers/pandoc.js +161 -0
  187. package/lib/documents/providers/pandoc.js.map +1 -0
  188. package/lib/documents/providers/process.js +164 -0
  189. package/lib/documents/providers/process.js.map +1 -0
  190. package/lib/documents/providers/registry.js +152 -0
  191. package/lib/documents/providers/registry.js.map +1 -0
  192. package/lib/documents/providers/shared.js +75 -0
  193. package/lib/documents/providers/shared.js.map +1 -0
  194. package/lib/documents/runtime.js +114 -0
  195. package/lib/documents/runtime.js.map +1 -0
  196. package/lib/documents/security/file-types.js +188 -0
  197. package/lib/documents/security/file-types.js.map +1 -0
  198. package/lib/documents/security/limits.js +78 -0
  199. package/lib/documents/security/limits.js.map +1 -0
  200. package/lib/documents/security/mime.js +43 -0
  201. package/lib/documents/security/mime.js.map +1 -0
  202. package/lib/documents/security/paths.js +133 -0
  203. package/lib/documents/security/paths.js.map +1 -0
  204. package/lib/documents/templates/registry.js +147 -0
  205. package/lib/documents/templates/registry.js.map +1 -0
  206. package/lib/documents/templates/resolver.js +59 -0
  207. package/lib/documents/templates/resolver.js.map +1 -0
  208. package/lib/documents/tools/convert.js +125 -0
  209. package/lib/documents/tools/convert.js.map +1 -0
  210. package/lib/documents/tools/create.js +187 -0
  211. package/lib/documents/tools/create.js.map +1 -0
  212. package/lib/documents/tools/index.js +41 -0
  213. package/lib/documents/tools/index.js.map +1 -0
  214. package/lib/documents/tools/inspect.js +135 -0
  215. package/lib/documents/tools/inspect.js.map +1 -0
  216. package/lib/documents/tools/shared.js +88 -0
  217. package/lib/documents/tools/shared.js.map +1 -0
  218. package/lib/documents/tools/to-markdown.js +125 -0
  219. package/lib/documents/tools/to-markdown.js.map +1 -0
  220. package/lib/documents/types.js +12 -0
  221. package/lib/documents/types.js.map +1 -0
  222. package/lib/index.js +299 -24
  223. package/lib/index.js.map +1 -1
  224. package/lib/integration-principals.js +22 -0
  225. package/lib/integration-principals.js.map +1 -0
  226. package/lib/lockdown-policy.js +15 -3
  227. package/lib/lockdown-policy.js.map +1 -1
  228. package/lib/personal-skills/errors.js +9 -0
  229. package/lib/personal-skills/errors.js.map +1 -0
  230. package/lib/personal-skills/host.js +80 -0
  231. package/lib/personal-skills/host.js.map +1 -0
  232. package/lib/personal-skills/index.js +10 -0
  233. package/lib/personal-skills/index.js.map +1 -0
  234. package/lib/personal-skills/paths.js +127 -0
  235. package/lib/personal-skills/paths.js.map +1 -0
  236. package/lib/personal-skills/provider.js +109 -0
  237. package/lib/personal-skills/provider.js.map +1 -0
  238. package/lib/personal-skills/remotes.js +40 -0
  239. package/lib/personal-skills/remotes.js.map +1 -0
  240. package/lib/personal-skills/service.js +686 -0
  241. package/lib/personal-skills/service.js.map +1 -0
  242. package/lib/personal-skills/skill-file.js +278 -0
  243. package/lib/personal-skills/skill-file.js.map +1 -0
  244. package/lib/personal-skills/skill-format.js +202 -0
  245. package/lib/personal-skills/skill-format.js.map +1 -0
  246. package/lib/personal-skills/watcher.js +96 -0
  247. package/lib/personal-skills/watcher.js.map +1 -0
  248. package/lib/profile.js +6 -4
  249. package/lib/profile.js.map +1 -1
  250. package/lib/prompt-notes.js +19 -0
  251. package/lib/prompt-notes.js.map +1 -1
  252. package/lib/provenance/file-preview.js +68 -21
  253. package/lib/provenance/file-preview.js.map +1 -1
  254. package/lib/provenance/host-store.js +69 -20
  255. package/lib/provenance/host-store.js.map +1 -1
  256. package/lib/provenance/index.js +1 -0
  257. package/lib/provenance/index.js.map +1 -1
  258. package/lib/provenance/normalize.js +3 -1
  259. package/lib/provenance/normalize.js.map +1 -1
  260. package/lib/provenance/reported.js +37 -12
  261. package/lib/provenance/reported.js.map +1 -1
  262. package/lib/provenance/snapshot-store.js +154 -0
  263. package/lib/provenance/snapshot-store.js.map +1 -0
  264. package/lib/qa-tools/activation-detector.js +53 -0
  265. package/lib/qa-tools/activation-detector.js.map +1 -0
  266. package/lib/qa-tools/activation-manager.js +111 -0
  267. package/lib/qa-tools/activation-manager.js.map +1 -0
  268. package/lib/qa-tools/catalog.js +108 -0
  269. package/lib/qa-tools/catalog.js.map +1 -0
  270. package/lib/qa-tools/durable-marker.js +115 -0
  271. package/lib/qa-tools/durable-marker.js.map +1 -0
  272. package/lib/qa-tools/index.js +83 -0
  273. package/lib/qa-tools/index.js.map +1 -0
  274. package/lib/qa-tools/lifecycle.js +64 -0
  275. package/lib/qa-tools/lifecycle.js.map +1 -0
  276. package/lib/qa-tools/types.js +2 -0
  277. package/lib/qa-tools/types.js.map +1 -0
  278. package/lib/questions.js +185 -0
  279. package/lib/questions.js.map +1 -0
  280. package/lib/resolve-config.js +5 -0
  281. package/lib/resolve-config.js.map +1 -1
  282. package/lib/secure-session.js +104 -20
  283. package/lib/secure-session.js.map +1 -1
  284. package/lib/session-ownership.js +55 -0
  285. package/lib/session-ownership.js.map +1 -0
  286. package/lib/starters.js +117 -0
  287. package/lib/starters.js.map +1 -0
  288. package/lib/typert.host.js +1162 -77
  289. package/lib/typert.remote-client.d.ts +27 -1
  290. package/lib/typert.remote-client.js +879 -14
  291. package/lib/types/account-remotes.d.ts +3 -1
  292. package/lib/types/accounts/credentials.d.ts +6 -0
  293. package/lib/types/accounts/errors.d.ts +1 -1
  294. package/lib/types/accounts/file.d.ts +10 -0
  295. package/lib/types/accounts/store.d.ts +15 -1
  296. package/lib/types/approvals.d.ts +65 -0
  297. package/lib/types/client/QaAccountsController.d.ts +7 -1
  298. package/lib/types/client/QaSessionController.d.ts +50 -1
  299. package/lib/types/client/QaSurface.d.ts +21 -4
  300. package/lib/types/client/QaSurfaceGuard.d.ts +27 -0
  301. package/lib/types/client/QaTranscriptAdapter.d.ts +7 -0
  302. package/lib/types/client/approvals.d.ts +39 -0
  303. package/lib/types/client/components/QaApproval.d.ts +13 -0
  304. package/lib/types/client/components/QaComposer.d.ts +3 -1
  305. package/lib/types/client/components/QaHeader.d.ts +3 -1
  306. package/lib/types/client/components/QaModal.d.ts +5 -4
  307. package/lib/types/client/components/QaQuestions.d.ts +13 -0
  308. package/lib/types/client/components/QaSidebar.d.ts +8 -11
  309. package/lib/types/client/components/QaWidthHandle.d.ts +13 -0
  310. package/lib/types/client/index.d.ts +1 -0
  311. package/lib/types/client/panels/PanelHost.d.ts +18 -0
  312. package/lib/types/client/panels/PanelLauncher.d.ts +5 -0
  313. package/lib/types/client/panels/contract.d.ts +83 -0
  314. package/lib/types/client/panels/index.d.ts +3 -0
  315. package/lib/types/client/panels/registry.d.ts +40 -0
  316. package/lib/types/client/project-session-state.d.ts +13 -1
  317. package/lib/types/client/questions.d.ts +45 -0
  318. package/lib/types/client/settings/sections/documents.d.ts +13 -0
  319. package/lib/types/client/settings/sections.d.ts +1 -0
  320. package/lib/types/client/settings-extensions/contract.d.ts +32 -0
  321. package/lib/types/client/settings-extensions/index.d.ts +3 -0
  322. package/lib/types/client/settings-extensions/registry.d.ts +15 -0
  323. package/lib/types/client/settlement.d.ts +41 -5
  324. package/lib/types/client/source-preview.d.ts +8 -0
  325. package/lib/types/client/styles.d.ts +2 -0
  326. package/lib/types/client/subagent-codenames.d.ts +18 -0
  327. package/lib/types/client/types.d.ts +82 -3
  328. package/lib/types/client/user-settings/GeneralSettingsPage.d.ts +14 -0
  329. package/lib/types/client/user-settings/ProfileSettingsPage.d.ts +18 -0
  330. package/lib/types/client/user-settings/SkillCatalog.d.ts +16 -0
  331. package/lib/types/client/user-settings/SkillEditor.d.ts +42 -0
  332. package/lib/types/client/user-settings/SkillToolPicker.d.ts +17 -0
  333. package/lib/types/client/user-settings/SkillsSettingsPage.d.ts +15 -0
  334. package/lib/types/client/user-settings/StartersSettingsPage.d.ts +14 -0
  335. package/lib/types/client/user-settings/UserSettingsDialog.d.ts +43 -0
  336. package/lib/types/client/user-settings/copy.d.ts +25 -0
  337. package/lib/types/client/user-settings/draft.d.ts +51 -0
  338. package/lib/types/client/user-settings/fields.d.ts +43 -0
  339. package/lib/types/config-resolvers/shared.d.ts +7 -0
  340. package/lib/types/config-resolvers/tools.d.ts +6 -0
  341. package/lib/types/documents/artifacts/ids.d.ts +14 -0
  342. package/lib/types/documents/artifacts/manifest.d.ts +32 -0
  343. package/lib/types/documents/artifacts/store.d.ts +67 -0
  344. package/lib/types/documents/capabilities.d.ts +32 -0
  345. package/lib/types/documents/config.d.ts +27 -0
  346. package/lib/types/documents/defaults.d.ts +161 -0
  347. package/lib/types/documents/errors.d.ts +42 -0
  348. package/lib/types/documents/index.d.ts +63 -0
  349. package/lib/types/documents/inspect/facts.d.ts +43 -0
  350. package/lib/types/documents/inspect/zip.d.ts +28 -0
  351. package/lib/types/documents/markdown/directives.d.ts +39 -0
  352. package/lib/types/documents/markdown/frontmatter.d.ts +15 -0
  353. package/lib/types/documents/markdown/normalize.d.ts +30 -0
  354. package/lib/types/documents/orchestrator/assets.d.ts +55 -0
  355. package/lib/types/documents/orchestrator/convert-document.d.ts +25 -0
  356. package/lib/types/documents/orchestrator/create-document.d.ts +18 -0
  357. package/lib/types/documents/orchestrator/extract-document.d.ts +24 -0
  358. package/lib/types/documents/orchestrator/inspect-document.d.ts +12 -0
  359. package/lib/types/documents/orchestrator/runtime-deps.d.ts +43 -0
  360. package/lib/types/documents/orchestrator/scope.d.ts +52 -0
  361. package/lib/types/documents/providers/docling.d.ts +54 -0
  362. package/lib/types/documents/providers/libreoffice.d.ts +40 -0
  363. package/lib/types/documents/providers/markitdown.d.ts +28 -0
  364. package/lib/types/documents/providers/pandoc.d.ts +42 -0
  365. package/lib/types/documents/providers/process.d.ts +54 -0
  366. package/lib/types/documents/providers/registry.d.ts +68 -0
  367. package/lib/types/documents/providers/shared.d.ts +27 -0
  368. package/lib/types/documents/runtime.d.ts +59 -0
  369. package/lib/types/documents/security/file-types.d.ts +39 -0
  370. package/lib/types/documents/security/limits.d.ts +24 -0
  371. package/lib/types/documents/security/mime.d.ts +13 -0
  372. package/lib/types/documents/security/paths.d.ts +38 -0
  373. package/lib/types/documents/templates/registry.d.ts +50 -0
  374. package/lib/types/documents/templates/resolver.d.ts +30 -0
  375. package/lib/types/documents/tools/convert.d.ts +9 -0
  376. package/lib/types/documents/tools/create.d.ts +14 -0
  377. package/lib/types/documents/tools/index.d.ts +33 -0
  378. package/lib/types/documents/tools/inspect.d.ts +9 -0
  379. package/lib/types/documents/tools/shared.d.ts +77 -0
  380. package/lib/types/documents/tools/to-markdown.d.ts +12 -0
  381. package/lib/types/documents/types.d.ts +294 -0
  382. package/lib/types/index.d.ts +103 -5
  383. package/lib/types/integration-principals.d.ts +9 -0
  384. package/lib/types/lockdown-policy.d.ts +12 -2
  385. package/lib/types/personal-skills/errors.d.ts +11 -0
  386. package/lib/types/personal-skills/host.d.ts +42 -0
  387. package/lib/types/personal-skills/index.d.ts +10 -0
  388. package/lib/types/personal-skills/paths.d.ts +39 -0
  389. package/lib/types/personal-skills/provider.d.ts +33 -0
  390. package/lib/types/personal-skills/remotes.d.ts +35 -0
  391. package/lib/types/personal-skills/service.d.ts +131 -0
  392. package/lib/types/personal-skills/skill-file.d.ts +64 -0
  393. package/lib/types/personal-skills/skill-format.d.ts +100 -0
  394. package/lib/types/personal-skills/watcher.d.ts +39 -0
  395. package/lib/types/profile.d.ts +13 -0
  396. package/lib/types/prompt-notes.d.ts +9 -0
  397. package/lib/types/provenance/file-preview.d.ts +47 -4
  398. package/lib/types/provenance/host-store.d.ts +7 -1
  399. package/lib/types/provenance/index.d.ts +1 -0
  400. package/lib/types/provenance/reported.d.ts +9 -1
  401. package/lib/types/provenance/snapshot-store.d.ts +23 -0
  402. package/lib/types/qa-tools/activation-detector.d.ts +29 -0
  403. package/lib/types/qa-tools/activation-manager.d.ts +47 -0
  404. package/lib/types/qa-tools/catalog.d.ts +40 -0
  405. package/lib/types/qa-tools/durable-marker.d.ts +16 -0
  406. package/lib/types/qa-tools/index.d.ts +40 -0
  407. package/lib/types/qa-tools/lifecycle.d.ts +44 -0
  408. package/lib/types/qa-tools/types.d.ts +45 -0
  409. package/lib/types/questions.d.ts +83 -0
  410. package/lib/types/secure-session.d.ts +45 -4
  411. package/lib/types/session-ownership.d.ts +30 -0
  412. package/lib/types/starters.d.ts +45 -0
  413. package/lib/types/types.d.ts +282 -7
  414. package/lib/types/user-workspace.d.ts +5 -1
  415. package/lib/user-workspace.js +21 -6
  416. package/lib/user-workspace.js.map +1 -1
  417. package/package.json +22 -9
  418. package/scripts/repair-session-events.mjs +260 -0
  419. package/lib/client/components/QaProfile.js +0 -64
  420. package/lib/client/components/QaProfile.js.map +0 -1
  421. package/lib/types/client/components/QaProfile.d.ts +0 -25
@@ -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