@yadsh/dsh-qa-surface 0.3.0 → 0.5.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 (276) hide show
  1. package/README.md +192 -15
  2. package/cordis.patch.yml +8 -0
  3. package/lib/account-remotes.js +100 -0
  4. package/lib/account-remotes.js.map +1 -0
  5. package/lib/accounts/credentials.js +35 -0
  6. package/lib/accounts/credentials.js.map +1 -0
  7. package/lib/accounts/errors.js +9 -0
  8. package/lib/accounts/errors.js.map +1 -0
  9. package/lib/accounts/file.js +101 -0
  10. package/lib/accounts/file.js.map +1 -0
  11. package/lib/accounts/store.js +159 -161
  12. package/lib/accounts/store.js.map +1 -1
  13. package/lib/accounts/token.js +61 -0
  14. package/lib/accounts/token.js.map +1 -0
  15. package/lib/approvals.js +179 -0
  16. package/lib/approvals.js.map +1 -0
  17. package/lib/attachment-rules.js +111 -0
  18. package/lib/attachment-rules.js.map +1 -0
  19. package/lib/cli.js +132 -9
  20. package/lib/cli.js.map +1 -1
  21. package/lib/client/QaAccountsController.js +32 -2
  22. package/lib/client/QaAccountsController.js.map +1 -1
  23. package/lib/client/QaSessionController.js +140 -65
  24. package/lib/client/QaSessionController.js.map +1 -1
  25. package/lib/client/QaSurface.js +134 -107
  26. package/lib/client/QaSurface.js.map +1 -1
  27. package/lib/client/QaTranscriptAdapter.js +71 -6
  28. package/lib/client/QaTranscriptAdapter.js.map +1 -1
  29. package/lib/client/approvals.js +104 -0
  30. package/lib/client/approvals.js.map +1 -0
  31. package/lib/client/attachments.js +150 -0
  32. package/lib/client/attachments.js.map +1 -0
  33. package/lib/client/attestation.js +4 -1
  34. package/lib/client/attestation.js.map +1 -1
  35. package/lib/client/base64.js +16 -0
  36. package/lib/client/base64.js.map +1 -0
  37. package/lib/client/chat-files.js +48 -0
  38. package/lib/client/chat-files.js.map +1 -0
  39. package/lib/client/components/Markdown.js +1 -1
  40. package/lib/client/components/Markdown.js.map +1 -1
  41. package/lib/client/components/QaApproval.js +23 -0
  42. package/lib/client/components/QaApproval.js.map +1 -0
  43. package/lib/client/components/QaChangelog.js +62 -19
  44. package/lib/client/components/QaChangelog.js.map +1 -1
  45. package/lib/client/components/QaComposer.js +56 -74
  46. package/lib/client/components/QaComposer.js.map +1 -1
  47. package/lib/client/components/QaFileAttachment.js +19 -0
  48. package/lib/client/components/QaFileAttachment.js.map +1 -0
  49. package/lib/client/components/QaFilesPanel.js +45 -0
  50. package/lib/client/components/QaFilesPanel.js.map +1 -0
  51. package/lib/client/components/QaHeader.js +34 -0
  52. package/lib/client/components/QaHeader.js.map +1 -0
  53. package/lib/client/components/QaMessage.js +17 -4
  54. package/lib/client/components/QaMessage.js.map +1 -1
  55. package/lib/client/components/QaModal.js +31 -0
  56. package/lib/client/components/QaModal.js.map +1 -0
  57. package/lib/client/components/QaProfile.js +64 -0
  58. package/lib/client/components/QaProfile.js.map +1 -0
  59. package/lib/client/components/QaQuestions.js +96 -0
  60. package/lib/client/components/QaQuestions.js.map +1 -0
  61. package/lib/client/components/QaRightRail.js +15 -0
  62. package/lib/client/components/QaRightRail.js.map +1 -0
  63. package/lib/client/components/QaSidebar.js +6 -1
  64. package/lib/client/components/QaSidebar.js.map +1 -1
  65. package/lib/client/components/{QaSourcesDrawer.js → QaSourcesPanel.js} +3 -3
  66. package/lib/client/components/QaSourcesPanel.js.map +1 -0
  67. package/lib/client/components/QaTurnRail.js +15 -0
  68. package/lib/client/components/QaTurnRail.js.map +1 -1
  69. package/lib/client/components/QaWidthHandle.js +25 -20
  70. package/lib/client/components/QaWidthHandle.js.map +1 -1
  71. package/lib/client/components/QaWorkGroup.js +19 -20
  72. package/lib/client/components/QaWorkGroup.js.map +1 -1
  73. package/lib/client/components/surface-utils.js +28 -0
  74. package/lib/client/components/surface-utils.js.map +1 -0
  75. package/lib/client/components/thinking-phrases.js +24 -0
  76. package/lib/client/components/thinking-phrases.js.map +1 -0
  77. package/lib/client/create-session.js +7 -32
  78. package/lib/client/create-session.js.map +1 -1
  79. package/lib/client/failure-copy.js +63 -0
  80. package/lib/client/failure-copy.js.map +1 -0
  81. package/lib/client/index.js +49 -7
  82. package/lib/client/index.js.map +1 -1
  83. package/lib/client/project-session-state.js +5 -3
  84. package/lib/client/project-session-state.js.map +1 -1
  85. package/lib/client/prompt-content.js +54 -0
  86. package/lib/client/prompt-content.js.map +1 -0
  87. package/lib/client/questions.js +114 -0
  88. package/lib/client/questions.js.map +1 -0
  89. package/lib/client/settings/card.js +143 -0
  90. package/lib/client/settings/card.js.map +1 -0
  91. package/lib/client/settings/fields.js +145 -0
  92. package/lib/client/settings/fields.js.map +1 -0
  93. package/lib/client/settings/format.js +255 -0
  94. package/lib/client/settings/format.js.map +1 -0
  95. package/lib/client/settings/sections/access.js +25 -0
  96. package/lib/client/settings/sections/access.js.map +1 -0
  97. package/lib/client/settings/sections/accounts.js +47 -0
  98. package/lib/client/settings/sections/accounts.js.map +1 -0
  99. package/lib/client/settings/sections/attachments.js +46 -0
  100. package/lib/client/settings/sections/attachments.js.map +1 -0
  101. package/lib/client/settings/sections/branding.js +28 -0
  102. package/lib/client/settings/sections/branding.js.map +1 -0
  103. package/lib/client/settings/sections/common.js +20 -0
  104. package/lib/client/settings/sections/common.js.map +1 -0
  105. package/lib/client/settings/sections/embedding.js +19 -0
  106. package/lib/client/settings/sections/embedding.js.map +1 -0
  107. package/lib/client/settings/sections/interface.js +60 -0
  108. package/lib/client/settings/sections/interface.js.map +1 -0
  109. package/lib/client/settings/sections/lockdown.js +82 -0
  110. package/lib/client/settings/sections/lockdown.js.map +1 -0
  111. package/lib/client/settings/sections/session.js +53 -0
  112. package/lib/client/settings/sections/session.js.map +1 -0
  113. package/lib/client/settings/sections/sources.js +74 -0
  114. package/lib/client/settings/sections/sources.js.map +1 -0
  115. package/lib/client/settings/sections/status.js +37 -0
  116. package/lib/client/settings/sections/status.js.map +1 -0
  117. package/lib/client/settings/sections.js +23 -0
  118. package/lib/client/settings/sections.js.map +1 -0
  119. package/lib/client/settings/styles.js +57 -0
  120. package/lib/client/settings/styles.js.map +1 -0
  121. package/lib/client/stream-publisher.js +47 -0
  122. package/lib/client/stream-publisher.js.map +1 -0
  123. package/lib/client/styles.js +127 -19
  124. package/lib/client/styles.js.map +1 -1
  125. package/lib/client/types.js +2 -0
  126. package/lib/client/types.js.map +1 -1
  127. package/lib/client/use-right-rail.js +96 -0
  128. package/lib/client/use-right-rail.js.map +1 -0
  129. package/lib/client/use-session-ui-state.js +26 -19
  130. package/lib/client/use-session-ui-state.js.map +1 -1
  131. package/lib/client.js +5694 -813
  132. package/lib/client.js.map +1 -1
  133. package/lib/config-resolvers/accounts.js +60 -0
  134. package/lib/config-resolvers/accounts.js.map +1 -0
  135. package/lib/config-resolvers/attachments.js +28 -0
  136. package/lib/config-resolvers/attachments.js.map +1 -0
  137. package/lib/config-resolvers/basics.js +61 -0
  138. package/lib/config-resolvers/basics.js.map +1 -0
  139. package/lib/config-resolvers/defaults.js +136 -0
  140. package/lib/config-resolvers/defaults.js.map +1 -0
  141. package/lib/config-resolvers/lockdown.js +90 -0
  142. package/lib/config-resolvers/lockdown.js.map +1 -0
  143. package/lib/config-resolvers/session.js +42 -0
  144. package/lib/config-resolvers/session.js.map +1 -0
  145. package/lib/config-resolvers/shared.js +51 -0
  146. package/lib/config-resolvers/shared.js.map +1 -0
  147. package/lib/config-resolvers/sources.js +83 -0
  148. package/lib/config-resolvers/sources.js.map +1 -0
  149. package/lib/config-resolvers/ui.js +20 -0
  150. package/lib/config-resolvers/ui.js.map +1 -0
  151. package/lib/config.js +76 -6
  152. package/lib/config.js.map +1 -1
  153. package/lib/entry-redirect.js +2 -1
  154. package/lib/entry-redirect.js.map +1 -1
  155. package/lib/index.js +198 -79
  156. package/lib/index.js.map +1 -1
  157. package/lib/profile.js +214 -0
  158. package/lib/profile.js.map +1 -0
  159. package/lib/prompt-notes.js +231 -0
  160. package/lib/prompt-notes.js.map +1 -0
  161. package/lib/provenance/host-store.js +25 -9
  162. package/lib/provenance/host-store.js.map +1 -1
  163. package/lib/provenance/reported.js +37 -12
  164. package/lib/provenance/reported.js.map +1 -1
  165. package/lib/questions.js +185 -0
  166. package/lib/questions.js.map +1 -0
  167. package/lib/resolve-config.js +35 -410
  168. package/lib/resolve-config.js.map +1 -1
  169. package/lib/secure-session.js +139 -21
  170. package/lib/secure-session.js.map +1 -1
  171. package/lib/session-ownership.js +55 -0
  172. package/lib/session-ownership.js.map +1 -0
  173. package/lib/shared/session-key.js +18 -0
  174. package/lib/shared/session-key.js.map +1 -0
  175. package/lib/shared/settings.js +10 -0
  176. package/lib/shared/settings.js.map +1 -0
  177. package/lib/thinking-phrases.js +68 -0
  178. package/lib/thinking-phrases.js.map +1 -0
  179. package/lib/typert.host.js +506 -21
  180. package/lib/typert.remote-client.d.ts +15 -1
  181. package/lib/typert.remote-client.js +407 -15
  182. package/lib/types/account-remotes.d.ts +42 -0
  183. package/lib/types/accounts/credentials.d.ts +20 -0
  184. package/lib/types/accounts/errors.d.ts +11 -0
  185. package/lib/types/accounts/file.d.ts +82 -0
  186. package/lib/types/accounts/store.d.ts +74 -43
  187. package/lib/types/accounts/token.d.ts +31 -0
  188. package/lib/types/approvals.d.ts +65 -0
  189. package/lib/types/attachment-rules.d.ts +44 -0
  190. package/lib/types/cli.d.ts +2 -2
  191. package/lib/types/client/QaAccountsController.d.ts +8 -1
  192. package/lib/types/client/QaSessionController.d.ts +53 -16
  193. package/lib/types/client/QaSurface.d.ts +14 -1
  194. package/lib/types/client/approvals.d.ts +39 -0
  195. package/lib/types/client/attachments.d.ts +54 -0
  196. package/lib/types/client/base64.d.ts +10 -0
  197. package/lib/types/client/chat-files.d.ts +30 -0
  198. package/lib/types/client/components/QaApproval.d.ts +13 -0
  199. package/lib/types/client/components/QaChangelog.d.ts +1 -1
  200. package/lib/types/client/components/QaComposer.d.ts +8 -4
  201. package/lib/types/client/components/QaFileAttachment.d.ts +14 -0
  202. package/lib/types/client/components/QaFilesPanel.d.ts +15 -0
  203. package/lib/types/client/components/QaHeader.d.ts +41 -0
  204. package/lib/types/client/components/QaMessage.d.ts +3 -1
  205. package/lib/types/client/components/QaModal.d.ts +26 -0
  206. package/lib/types/client/components/QaProfile.d.ts +25 -0
  207. package/lib/types/client/components/QaQuestions.d.ts +13 -0
  208. package/lib/types/client/components/QaRightRail.d.ts +23 -0
  209. package/lib/types/client/components/QaSidebar.d.ts +14 -0
  210. package/lib/types/client/components/{QaSourcesDrawer.d.ts → QaSourcesPanel.d.ts} +7 -4
  211. package/lib/types/client/components/QaTurnRail.d.ts +6 -0
  212. package/lib/types/client/components/QaWidthHandle.d.ts +14 -7
  213. package/lib/types/client/components/QaWorkGroup.d.ts +5 -3
  214. package/lib/types/client/components/surface-utils.d.ts +11 -0
  215. package/lib/types/client/components/thinking-phrases.d.ts +9 -0
  216. package/lib/types/client/create-session.d.ts +6 -9
  217. package/lib/types/client/failure-copy.d.ts +19 -0
  218. package/lib/types/client/project-session-state.d.ts +8 -1
  219. package/lib/types/client/prompt-content.d.ts +30 -0
  220. package/lib/types/client/questions.d.ts +45 -0
  221. package/lib/types/client/settings/card.d.ts +23 -0
  222. package/lib/types/client/settings/fields.d.ts +139 -0
  223. package/lib/types/client/settings/format.d.ts +108 -0
  224. package/lib/types/client/settings/sections/access.d.ts +9 -0
  225. package/lib/types/client/settings/sections/accounts.d.ts +9 -0
  226. package/lib/types/client/settings/sections/attachments.d.ts +15 -0
  227. package/lib/types/client/settings/sections/branding.d.ts +8 -0
  228. package/lib/types/client/settings/sections/common.d.ts +28 -0
  229. package/lib/types/client/settings/sections/embedding.d.ts +8 -0
  230. package/lib/types/client/settings/sections/interface.d.ts +9 -0
  231. package/lib/types/client/settings/sections/lockdown.d.ts +9 -0
  232. package/lib/types/client/settings/sections/session.d.ts +9 -0
  233. package/lib/types/client/settings/sections/sources.d.ts +9 -0
  234. package/lib/types/client/settings/sections/status.d.ts +22 -0
  235. package/lib/types/client/settings/sections.d.ts +25 -0
  236. package/lib/types/client/settings/styles.d.ts +8 -0
  237. package/lib/types/client/stream-publisher.d.ts +28 -0
  238. package/lib/types/client/types.d.ts +76 -1
  239. package/lib/types/client/use-right-rail.d.ts +56 -0
  240. package/lib/types/client/use-session-ui-state.d.ts +13 -7
  241. package/lib/types/config-resolvers/accounts.d.ts +15 -0
  242. package/lib/types/config-resolvers/attachments.d.ts +6 -0
  243. package/lib/types/config-resolvers/basics.d.ts +8 -0
  244. package/lib/types/config-resolvers/defaults.d.ts +4 -0
  245. package/lib/types/config-resolvers/lockdown.d.ts +10 -0
  246. package/lib/types/config-resolvers/session.d.ts +6 -0
  247. package/lib/types/config-resolvers/shared.d.ts +23 -0
  248. package/lib/types/config-resolvers/sources.d.ts +6 -0
  249. package/lib/types/config-resolvers/ui.d.ts +6 -0
  250. package/lib/types/index.d.ts +48 -15
  251. package/lib/types/profile.d.ts +76 -0
  252. package/lib/types/prompt-notes.d.ts +110 -0
  253. package/lib/types/provenance/reported.d.ts +9 -1
  254. package/lib/types/questions.d.ts +83 -0
  255. package/lib/types/resolve-config.d.ts +8 -3
  256. package/lib/types/secure-session.d.ts +46 -2
  257. package/lib/types/session-ownership.d.ts +30 -0
  258. package/lib/types/shared/session-key.d.ts +23 -0
  259. package/lib/types/shared/settings.d.ts +10 -0
  260. package/lib/types/thinking-phrases.d.ts +17 -0
  261. package/lib/types/types.d.ts +203 -9
  262. package/lib/types/user-workspace.d.ts +42 -0
  263. package/lib/user-workspace.js +246 -0
  264. package/lib/user-workspace.js.map +1 -0
  265. package/package.json +15 -8
  266. package/CHANGELOG.md +0 -176
  267. package/SPEC-dsh-qa-surface.md +0 -2425
  268. package/docs/ARCHITECTURE.md +0 -66
  269. package/docs/COMPATIBILITY.md +0 -14
  270. package/docs/CONFIGURATION.md +0 -199
  271. package/docs/EMBEDDING.md +0 -13
  272. package/docs/SOURCES-MIGRATION.md +0 -28
  273. package/docs/SOURCES-PROVENANCE-AUDIT.md +0 -88
  274. package/docs/SPEC-dsh-qa-surface-accounts.md +0 -219
  275. package/docs/SPEC-dsh-qa-surface-sources-provenance.md +0 -1692
  276. package/lib/client/components/QaSourcesDrawer.js.map +0 -1
@@ -0,0 +1,179 @@
1
+ import { randomUUID } from "node:crypto";
2
+ /**
3
+ * Interactive resolution of the tool policy `ask` decision.
4
+ *
5
+ * A composed gate — a content classifier, a hook rule — answers `ask` for a
6
+ * call it will not decide alone. On an attested QA agent that ask resolves
7
+ * against the deployment's pinned `approval=never` policy, so the model is told
8
+ * the user rejected a call the user never saw. This gate sits outside every
9
+ * other `tools/pre-execute` listener and hands the decision to the operator
10
+ * instead: the request is parked here, the QA view lists it over its own
11
+ * remote, and the answer becomes the decision the chain would have produced.
12
+ *
13
+ * `interaction.approvals: blocked` keeps the previous fail-closed behavior —
14
+ * the call is refused with the surface's own reason. Either way nothing is
15
+ * approved automatically, and the allow-list, the workspace fence and the
16
+ * read-only sandbox still run on the resolved call.
17
+ *
18
+ * Only sessions this deployment attested are touched. Any other session's ask
19
+ * is handed back to the chain untouched, so an operator instance that also
20
+ * serves ordinary chats keeps its own approval flow.
21
+ */
22
+ export class QaApprovalGate {
23
+ ctx;
24
+ interactive;
25
+ ownership;
26
+ logger;
27
+ pending = new Map();
28
+ disposers = [];
29
+ constructor(ctx, interactive, ownership, logger) {
30
+ this.ctx = ctx;
31
+ this.interactive = interactive;
32
+ this.ownership = ownership;
33
+ this.logger = logger;
34
+ }
35
+ /** Wrap every tool call; other gates compose inside this listener. */
36
+ install() {
37
+ this.ownership.install(this.ctx);
38
+ this.disposers.push(this.ctx.on("tools/pre-execute", (execution, next) => this.handle(execution, next), { prepend: true }));
39
+ this.disposers.push(this.ctx.on("agent/disposed", ({ agent }) => {
40
+ const sessionId = String(agent.session.id);
41
+ this.ownership.forget(sessionId);
42
+ this.settleOwner(sessionId, "unavailable");
43
+ }));
44
+ }
45
+ /** Approvals of one chat, oldest first: what the QA view lists. */
46
+ list(sessionId) {
47
+ if (!this.interactive())
48
+ return [];
49
+ return [...this.pending.values()]
50
+ .map((entry) => entry.view)
51
+ .filter((view) => view.sessionId === sessionId)
52
+ .sort((left, right) => left.createdAt - right.createdAt);
53
+ }
54
+ /** Apply the operator's answer; an unknown or foreign id is refused. */
55
+ answer(sessionId, requestId, decision) {
56
+ const entry = this.pending.get(requestId);
57
+ if (entry === undefined || entry.view.sessionId !== sessionId)
58
+ return false;
59
+ this.logger.info("approval.decided", {
60
+ sessionId,
61
+ toolName: entry.view.toolName,
62
+ decision,
63
+ });
64
+ entry.settle(decision);
65
+ return true;
66
+ }
67
+ /** Detach the listener and fail every parked request. Wired as an effect. */
68
+ dispose() {
69
+ for (const entry of [...this.pending.values()]) {
70
+ entry.settle("unavailable");
71
+ }
72
+ this.pending.clear();
73
+ for (const dispose of this.disposers.splice(0))
74
+ dispose();
75
+ }
76
+ async handle(execution, next) {
77
+ const owner = this.ownerOf(execution);
78
+ if (owner === undefined)
79
+ return next();
80
+ const decision = await next();
81
+ if (decision.kind !== "ask")
82
+ return decision;
83
+ if (!this.interactive()) {
84
+ this.logger.info("approval.blocked", {
85
+ sessionId: owner.sessionId,
86
+ toolName: execution.name,
87
+ });
88
+ return {
89
+ kind: "deny",
90
+ reason: `tool "${execution.name}" requires approval, but approval interactions are unavailable in QA`,
91
+ };
92
+ }
93
+ const outcome = await this.request(owner, execution, decision.reason);
94
+ return this.resolve(execution.name, outcome);
95
+ }
96
+ /**
97
+ * The chat a call belongs to, when this deployment attested it. A child of an
98
+ * attested chat answers under the chat the operator is looking at.
99
+ */
100
+ ownerOf(execution) {
101
+ const session = execution.agent?.session;
102
+ if (session === undefined)
103
+ return undefined;
104
+ const ownerSessionId = String(session.id);
105
+ const sessionId = this.ownership.rootOf(ownerSessionId);
106
+ if (sessionId === undefined)
107
+ return undefined;
108
+ return {
109
+ sessionId,
110
+ ownerSessionId,
111
+ delegated: sessionId !== ownerSessionId,
112
+ };
113
+ }
114
+ /** Park one call until the operator answers, the turn is cancelled, or … */
115
+ request(owner, execution, reason) {
116
+ const signal = execution.signal;
117
+ if (signal?.aborted === true)
118
+ return Promise.resolve("cancelled");
119
+ return new Promise((resolve) => {
120
+ const id = randomUUID();
121
+ const onAbort = () => finish("cancelled");
122
+ const finish = (outcome) => {
123
+ if (!this.pending.has(id))
124
+ return;
125
+ this.pending.delete(id);
126
+ signal?.removeEventListener("abort", onAbort);
127
+ resolve(outcome);
128
+ };
129
+ this.pending.set(id, {
130
+ ownerSessionId: owner.ownerSessionId,
131
+ view: {
132
+ id,
133
+ sessionId: owner.sessionId,
134
+ toolName: execution.name,
135
+ reason: reason ?? null,
136
+ createdAt: Date.now(),
137
+ delegated: owner.delegated,
138
+ },
139
+ settle: finish,
140
+ });
141
+ signal?.addEventListener("abort", onAbort, { once: true });
142
+ this.logger.info("approval.pending", {
143
+ sessionId: owner.sessionId,
144
+ toolName: execution.name,
145
+ delegated: owner.delegated,
146
+ reason,
147
+ });
148
+ });
149
+ }
150
+ resolve(toolName, outcome) {
151
+ switch (outcome) {
152
+ case "allowed-once":
153
+ return { kind: "allow" };
154
+ case "rejected":
155
+ return {
156
+ kind: "deny",
157
+ reason: `the QA user rejected tool "${toolName}"`,
158
+ };
159
+ case "cancelled":
160
+ return {
161
+ kind: "deny",
162
+ reason: `approval for tool "${toolName}" was cancelled before the QA user answered`,
163
+ };
164
+ case "unavailable":
165
+ return {
166
+ kind: "deny",
167
+ reason: `tool "${toolName}" requires approval, but its QA approval request is gone`,
168
+ };
169
+ }
170
+ }
171
+ /** Fail the requests one session's agent owns; a child never holds the chat. */
172
+ settleOwner(ownerSessionId, outcome) {
173
+ for (const entry of [...this.pending.values()]) {
174
+ if (entry.ownerSessionId === ownerSessionId)
175
+ entry.settle(outcome);
176
+ }
177
+ }
178
+ }
179
+ //# sourceMappingURL=approvals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approvals.js","sourceRoot":"","sources":["../src/approvals.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Attachment vocabulary shared by the Host configuration and the browser
3
+ * composer. The module stays free of Node and DOM imports: the client bundle
4
+ * imports it directly, and the Host resolver uses it to normalize the
5
+ * operator's configuration.
6
+ */
7
+ /**
8
+ * Text-file extensions the composer accepts out of the box. Compared
9
+ * lowercase and without the leading dot; an entry is a suffix, not a glob.
10
+ */
11
+ export const DEFAULT_QA_TEXT_EXTENSIONS = Object.freeze([
12
+ "md",
13
+ "markdown",
14
+ "txt",
15
+ "text",
16
+ "log",
17
+ "json",
18
+ "jsonl",
19
+ "yaml",
20
+ "yml",
21
+ "toml",
22
+ "ini",
23
+ "cfg",
24
+ "conf",
25
+ "env",
26
+ "csv",
27
+ "tsv",
28
+ "xml",
29
+ "html",
30
+ "htm",
31
+ "css",
32
+ "js",
33
+ "mjs",
34
+ "cjs",
35
+ "ts",
36
+ "tsx",
37
+ "jsx",
38
+ "py",
39
+ "rb",
40
+ "go",
41
+ "rs",
42
+ "java",
43
+ "kt",
44
+ "cs",
45
+ "php",
46
+ "sh",
47
+ "bash",
48
+ "zsh",
49
+ "ps1",
50
+ "bat",
51
+ "cmd",
52
+ "sql",
53
+ "patch",
54
+ "diff",
55
+ ]);
56
+ /** Bounds the resolver and the settings card agree on. */
57
+ export const QA_PASTED_TEXT_LINES_MIN = 0;
58
+ export const QA_PASTED_TEXT_LINES_MAX = 10_000;
59
+ export const QA_MAX_FILE_BYTES_MIN = 1024;
60
+ export const QA_MAX_FILE_BYTES_MAX = 52_428_800;
61
+ export const QA_MAX_PENDING_MIN = 1;
62
+ export const QA_MAX_PENDING_MAX = 40;
63
+ /** One accepted extension token: no dot, no separator, bounded length. */
64
+ const EXTENSION_PATTERN = /^[a-z0-9][a-z0-9_-]{0,15}$/u;
65
+ /**
66
+ * Normalize an operator-authored extension list: lowercase, leading dots
67
+ * stripped, malformed entries and duplicates dropped, order preserved.
68
+ * An empty result means no extension is accepted by name — the composer then
69
+ * still accepts whatever the browser reports as `text/*`.
70
+ * @param values - raw extension tokens from configuration.
71
+ * @returns the normalized token list.
72
+ */
73
+ export function normalizeTextExtensions(values) {
74
+ const seen = new Set();
75
+ const normalized = [];
76
+ for (const value of values) {
77
+ const token = value.trim().toLowerCase().replace(/^\.+/u, "");
78
+ if (!EXTENSION_PATTERN.test(token) || seen.has(token))
79
+ continue;
80
+ seen.add(token);
81
+ normalized.push(token);
82
+ }
83
+ return normalized;
84
+ }
85
+ /**
86
+ * Whether one file name carries an accepted text extension. The comparison is
87
+ * case-insensitive; a name without a dot, or with a hidden-file dot only
88
+ * (`.gitignore`), is matched against the whole leaf.
89
+ * @param name - display file name.
90
+ * @param extensions - normalized accepted extensions.
91
+ * @returns whether the name matches one accepted extension.
92
+ */
93
+ export function hasTextExtension(name, extensions) {
94
+ const leaf = name.trim().toLowerCase();
95
+ if (leaf === "")
96
+ return false;
97
+ const dot = leaf.lastIndexOf(".");
98
+ const suffix = dot <= 0 ? leaf : leaf.slice(dot + 1);
99
+ return extensions.includes(suffix);
100
+ }
101
+ /**
102
+ * Count the lines of a pasted blob the way a reader counts them: a single
103
+ * trailing newline does not open a new line, and CRLF counts once.
104
+ * @param text - pasted plain text.
105
+ * @returns the line count, at least 1 for any non-empty text.
106
+ */
107
+ export function countTextLines(text) {
108
+ const normalized = text.replace(/\r\n?/gu, "\n").replace(/\n$/u, "");
109
+ return normalized === "" ? 0 : normalized.split("\n").length;
110
+ }
111
+ //# sourceMappingURL=attachment-rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachment-rules.js","sourceRoot":"","sources":["../src/attachment-rules.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAsB,MAAM,CAAC,MAAM,CAAC;IACzE,IAAI;IACJ,UAAU;IACV,KAAK;IACL,MAAM;IACN,KAAK;IACL,MAAM;IACN,OAAO;IACP,MAAM;IACN,KAAK;IACL,MAAM;IACN,KAAK;IACL,KAAK;IACL,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,KAAK;IACL,KAAK;IACL,IAAI;IACJ,KAAK;IACL,KAAK;IACL,IAAI;IACJ,KAAK;IACL,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,MAAM;IACN,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,OAAO;IACP,MAAM;CACP,CAAC,CAAC;AAEH,0DAA0D;AAC1D,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAC1C,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAC/C,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAC1C,MAAM,CAAC,MAAM,qBAAqB,GAAG,UAAU,CAAC;AAChD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AACpC,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAErC,0EAA0E;AAC1E,MAAM,iBAAiB,GAAG,6BAA6B,CAAC;AAExD;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CACrC,MAAyB;IAEzB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,SAAS;QAChE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChB,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAY,EACZ,UAA6B;IAE7B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACvC,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,KAAK,CAAC;IAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IACrD,OAAO,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACrC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACrE,OAAO,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AAC/D,CAAC"}
package/lib/cli.js CHANGED
@@ -8,14 +8,21 @@ const defaultIo = {
8
8
  };
9
9
  const USAGE = `Usage:
10
10
  qa-accounts [--file <path>] list
11
+ qa-accounts [--file <path>] show <email>
11
12
  qa-accounts [--file <path>] add <email> --password-stdin [--name <name>] [--role admin|user]
13
+ qa-accounts [--file <path>] set-password <email> --password-stdin
12
14
  qa-accounts [--file <path>] set-role <email> <admin|user>
13
15
  qa-accounts [--file <path>] disable <email> # blocks logins and revokes live tokens
14
16
  qa-accounts [--file <path>] enable <email>
15
17
  qa-accounts [--file <path>] revoke <email> # invalidates every issued token
18
+ qa-accounts [--file <path>] profile <email> [--full-name <name>]
19
+ [--identity <key>=<value>]... [--clear-identity <key>]...
20
+ [--instructions-file <path|->] [--clear-full-name] [--clear-instructions]
16
21
 
17
22
  The accounts file defaults to \\$DSH_HOME/qa-accounts.json. Passwords are read
18
- from stdin (one line) so they never land in shell history.`;
23
+ from stdin (one line) so they never land in shell history; --instructions-file -
24
+ reads that text from stdin too. Profile identity keys are free-form here: the
25
+ deployment's accounts.profile.identities decides which of them reach the prompt.`;
19
26
  function readPasswordStdin() {
20
27
  let password;
21
28
  try {
@@ -26,22 +33,84 @@ function readPasswordStdin() {
26
33
  }
27
34
  return password.replace(/\r?\n$/u, "");
28
35
  }
36
+ /** Read the instructions text from a file, or from stdin when the path is "-". */
37
+ function readInstructions(path, readStdin) {
38
+ if (path === "-")
39
+ return readStdin();
40
+ try {
41
+ return readFileSync(path, "utf8");
42
+ }
43
+ catch (error) {
44
+ throw new Error(`could not read the instructions from ${path}: ${error instanceof Error ? error.message : String(error)}`, { cause: error });
45
+ }
46
+ }
47
+ /** Print one account's self-declared profile under its `show` header. */
48
+ function printProfile(io, user) {
49
+ const profile = user.profile;
50
+ io.out(` full name: ${profile.fullName === "" ? "(unset)" : profile.fullName}`);
51
+ const keys = Object.keys(profile.identities);
52
+ if (keys.length === 0)
53
+ io.out(" identities: (none)");
54
+ for (const key of keys)
55
+ io.out(` ${key}: ${profile.identities[key] ?? ""}`);
56
+ if (profile.instructions === "") {
57
+ io.out(" instructions: (none)");
58
+ }
59
+ else {
60
+ io.out(` instructions (${profile.instructions.length} characters):`);
61
+ for (const line of profile.instructions.split("\n"))
62
+ io.out(` ${line}`);
63
+ }
64
+ io.out(` updated: ${profile.updatedAt ?? "(never)"}`);
65
+ }
66
+ /** Options that consume the following argument. */
67
+ const VALUE_OPTIONS = new Set([
68
+ "--file",
69
+ "--name",
70
+ "--role",
71
+ "--full-name",
72
+ "--identity",
73
+ "--clear-identity",
74
+ "--instructions-file",
75
+ ]);
76
+ /** Options that stand alone. */
77
+ const FLAG_OPTIONS = new Set([
78
+ "--password-stdin",
79
+ "--clear-full-name",
80
+ "--clear-instructions",
81
+ ]);
82
+ /** Parse one `--identity` argument; the key is normalized like the config's. */
83
+ function identityFlag(raw) {
84
+ const separator = raw.indexOf("=");
85
+ const key = separator < 0 ? "" : raw.slice(0, separator).trim().toLowerCase();
86
+ if (key === "") {
87
+ throw new Error("--identity expects <key>=<value>");
88
+ }
89
+ return { key, value: raw.slice(separator + 1) };
90
+ }
29
91
  /** Execute one management command; returns the process exit code. */
30
- export function run(argv, io, readPassword = readPasswordStdin) {
92
+ export function run(argv, io, readStdin = readPasswordStdin) {
31
93
  const positional = [];
32
94
  const options = new Map();
95
+ const identities = [];
96
+ const clearedIdentities = [];
33
97
  for (let index = 0; index < argv.length; index += 1) {
34
98
  const arg = argv[index];
35
- if (arg === "--password-stdin") {
36
- options.set("password-stdin", "true");
99
+ if (FLAG_OPTIONS.has(arg)) {
100
+ options.set(arg.slice(2), "true");
37
101
  continue;
38
102
  }
39
- if (arg === "--file" || arg === "--name" || arg === "--role") {
103
+ if (VALUE_OPTIONS.has(arg)) {
40
104
  const value = argv[index + 1];
41
105
  if (value === undefined || value.startsWith("--")) {
42
106
  throw new Error(`${arg} requires a value`);
43
107
  }
44
- options.set(arg.slice(2), value);
108
+ if (arg === "--identity")
109
+ identities.push(identityFlag(value));
110
+ else if (arg === "--clear-identity")
111
+ clearedIdentities.push(value.trim().toLowerCase());
112
+ else
113
+ options.set(arg.slice(2), value);
45
114
  index += 1;
46
115
  continue;
47
116
  }
@@ -88,13 +157,22 @@ export function run(argv, io, readPassword = readPasswordStdin) {
88
157
  throw new Error("--role must be admin or user");
89
158
  }
90
159
  const name = options.get("name");
91
- const user = accounts.addUser(first, readPassword(), {
160
+ const user = accounts.addUser(first, readStdin(), {
92
161
  ...(name === undefined ? {} : { displayName: name }),
93
162
  ...(role === undefined ? {} : { role: role }),
94
163
  });
95
164
  io.out(`added ${user.email} (${user.role})`);
96
165
  return 0;
97
166
  }
167
+ case "set-password": {
168
+ requireArgs(1);
169
+ if (!options.has("password-stdin")) {
170
+ throw new Error("the set-password command requires --password-stdin");
171
+ }
172
+ const user = accounts.setPassword(first, readStdin());
173
+ io.out(`${user.email} password updated; live tokens revoked`);
174
+ return 0;
175
+ }
98
176
  case "set-role": {
99
177
  requireArgs(2);
100
178
  if (second !== "admin" && second !== "user") {
@@ -122,13 +200,58 @@ export function run(argv, io, readPassword = readPasswordStdin) {
122
200
  io.out(`${user.email} tokens revoked`);
123
201
  return 0;
124
202
  }
203
+ case "show": {
204
+ requireArgs(1);
205
+ const user = accounts.findUser(first);
206
+ if (user === undefined) {
207
+ throw new Error(`no account for ${first}`);
208
+ }
209
+ io.out(`${user.email}\t${user.displayName}\t${user.role}` +
210
+ `${user.disabled ? "\tdisabled" : ""}`);
211
+ printProfile(io, user);
212
+ return 0;
213
+ }
214
+ case "profile": {
215
+ requireArgs(1);
216
+ const email = first;
217
+ const current = accounts.findUser(email);
218
+ if (current === undefined) {
219
+ throw new Error(`no account for ${email}`);
220
+ }
221
+ // Field-level flags merge into the stored profile; anything the command
222
+ // line does not mention keeps its stored value.
223
+ const mergedIdentities = {
224
+ ...current.profile.identities,
225
+ };
226
+ for (const key of clearedIdentities)
227
+ delete mergedIdentities[key];
228
+ for (const identity of identities) {
229
+ mergedIdentities[identity.key] = identity.value;
230
+ }
231
+ const instructionsFile = options.get("instructions-file");
232
+ const instructions = options.has("clear-instructions")
233
+ ? ""
234
+ : instructionsFile === undefined
235
+ ? current.profile.instructions
236
+ : readInstructions(instructionsFile, readStdin);
237
+ const user = accounts.setProfile(email, {
238
+ fullName: options.has("clear-full-name")
239
+ ? ""
240
+ : (options.get("full-name") ?? current.profile.fullName),
241
+ identities: mergedIdentities,
242
+ instructions,
243
+ });
244
+ io.out(`profile updated for ${user.email}`);
245
+ printProfile(io, user);
246
+ return 0;
247
+ }
125
248
  default:
126
249
  throw new Error(`unknown command ${JSON.stringify(command)}`);
127
250
  }
128
251
  }
129
- export function main(argv, io = defaultIo, readPassword = readPasswordStdin) {
252
+ export function main(argv, io = defaultIo, readStdin = readPasswordStdin) {
130
253
  try {
131
- return run(argv, io, readPassword);
254
+ return run(argv, io, readStdin);
132
255
  }
133
256
  catch (error) {
134
257
  io.err(`qa-accounts: ${error instanceof QaAccountsError ? `${error.message} (reason: ${error.reason})` : error instanceof Error ? error.message : String(error)}`);
package/lib/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { qaStorageNamespace } from "../shared/session-key.js";
1
2
  /** The `(reason: <code>)` marker the Host folds into account wire failures. */
2
3
  const ACCOUNTS_REASON_MARKER = /\(reason: ([a-z-]+)\)/u;
3
4
  /** Union of the own chat ids and every mapped one, own ids first. */
@@ -28,6 +29,10 @@ export function accountsErrorMessage(code) {
28
29
  return "Пароль должен быть не короче 8 символов.";
29
30
  case "invalid-display-name":
30
31
  return "Слишком длинное имя.";
32
+ case "invalid-profile":
33
+ return "Проверьте поля профиля: значение слишком длинное или недопустимое.";
34
+ case "profile-disabled":
35
+ return "Профиль отключён на этом сервере.";
31
36
  case "registration-disabled":
32
37
  return "Регистрация на этом сервере отключена.";
33
38
  case "rate-limited":
@@ -141,6 +146,32 @@ export class QaAccountsController {
141
146
  console.warn("dsh-qa-surface: session claim failed", error);
142
147
  }
143
148
  }
149
+ /**
150
+ * Replace the signed-in user's own profile. Resolves to audience-safe
151
+ * refusal copy when the Host rejected the write, and to null once the
152
+ * snapshot carries the stored profile — the form reports the outcome inline
153
+ * rather than through the gate's state machine.
154
+ */
155
+ async updateProfile(input) {
156
+ const token = this.tokenValue;
157
+ if (this.disposed || token === null || this.snapshot.stage !== "authed") {
158
+ return accountsErrorMessage(null);
159
+ }
160
+ try {
161
+ const result = await this.options.remote.accountsUpdateProfile(token, input);
162
+ if (this.disposed || this.snapshot.stage !== "authed")
163
+ return null;
164
+ if (!result.ok) {
165
+ return accountsErrorMessage(accountsReasonOf(result.error));
166
+ }
167
+ this.publish({ ...this.snapshot, user: result.value });
168
+ return null;
169
+ }
170
+ catch (error) {
171
+ console.warn("dsh-qa-surface: profile update failed", error);
172
+ return accountsErrorMessage(null);
173
+ }
174
+ }
144
175
  async authenticate(mode, call) {
145
176
  if (this.snapshot.stage !== "gate" || this.snapshot.busy || this.disposed) {
146
177
  return;
@@ -315,8 +346,7 @@ export class QaAccountsController {
315
346
  }
316
347
  }
317
348
  tokenKey() {
318
- const config = this.options.config();
319
- return `${config.session.storageKey}:v1:${config.route.path}:account-token`;
349
+ return `${qaStorageNamespace(this.options.config())}:account-token`;
320
350
  }
321
351
  publish(snapshot) {
322
352
  if (this.disposed)
@@ -1 +1 @@
1
- {"version":3,"file":"QaAccountsController.js","sourceRoot":"","sources":["../../src/client/QaAccountsController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"QaAccountsController.js","sourceRoot":"","sources":["../../src/client/QaAccountsController.ts"],"names":[],"mappings":"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"}