@yadsh/dsh-qa-surface 0.18.0 → 0.19.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 (65) hide show
  1. package/README.md +20 -22
  2. package/lib/attachment-access.js +147 -0
  3. package/lib/attachment-access.js.map +1 -0
  4. package/lib/chat-sharing/search.js +89 -0
  5. package/lib/chat-sharing/search.js.map +1 -0
  6. package/lib/chat-sharing/transport.js +2 -7
  7. package/lib/chat-sharing/transport.js.map +1 -1
  8. package/lib/client/QaSessionController.js +51 -9
  9. package/lib/client/QaSessionController.js.map +1 -1
  10. package/lib/client/QaSurface.js +4 -3
  11. package/lib/client/QaSurface.js.map +1 -1
  12. package/lib/client/components/QaChangelog.js +27 -0
  13. package/lib/client/components/QaChangelog.js.map +1 -1
  14. package/lib/client/components/QaRequestWait.js +15 -0
  15. package/lib/client/components/QaRequestWait.js.map +1 -0
  16. package/lib/client/index.js +3 -1
  17. package/lib/client/index.js.map +1 -1
  18. package/lib/client/project-session-state.js.map +1 -1
  19. package/lib/client/request-wait-styles.js +7 -0
  20. package/lib/client/request-wait-styles.js.map +1 -0
  21. package/lib/client/styles.js +2 -0
  22. package/lib/client/styles.js.map +1 -1
  23. package/lib/client/types.js.map +1 -1
  24. package/lib/client.js +14 -8
  25. package/lib/client.js.map +1 -1
  26. package/lib/filesystem-intent.js +39 -0
  27. package/lib/filesystem-intent.js.map +1 -0
  28. package/lib/forms/attachments.js +18 -2
  29. package/lib/forms/attachments.js.map +1 -1
  30. package/lib/index.js +46 -80
  31. package/lib/index.js.map +1 -1
  32. package/lib/qa-tools/catalog.js.map +1 -1
  33. package/lib/qa-tools/index.js.map +1 -1
  34. package/lib/qa-tools/request-user-form.js +1 -1
  35. package/lib/qa-tools/request-user-form.js.map +1 -1
  36. package/lib/request-scheduler.js +235 -0
  37. package/lib/request-scheduler.js.map +1 -0
  38. package/lib/secure-session.js +46 -52
  39. package/lib/secure-session.js.map +1 -1
  40. package/lib/session-create.js +125 -0
  41. package/lib/session-create.js.map +1 -0
  42. package/lib/typert.host.js +163 -116
  43. package/lib/typert.remote-client.d.ts +3 -3
  44. package/lib/typert.remote-client.js +159 -112
  45. package/lib/types/attachment-access.d.ts +29 -0
  46. package/lib/types/chat-sharing/search.d.ts +5 -0
  47. package/lib/types/client/QaSessionController.d.ts +12 -9
  48. package/lib/types/client/components/QaRequestWait.d.ts +6 -0
  49. package/lib/types/client/project-session-state.d.ts +2 -4
  50. package/lib/types/client/request-wait-styles.d.ts +2 -0
  51. package/lib/types/client/types.d.ts +3 -3
  52. package/lib/types/filesystem-intent.d.ts +12 -0
  53. package/lib/types/forms/attachments.d.ts +5 -2
  54. package/lib/types/index.d.ts +6 -13
  55. package/lib/types/qa-tools/catalog.d.ts +1 -1
  56. package/lib/types/qa-tools/index.d.ts +1 -1
  57. package/lib/types/qa-tools/request-user-form.d.ts +1 -1
  58. package/lib/types/request-scheduler.d.ts +28 -0
  59. package/lib/types/secure-session.d.ts +12 -26
  60. package/lib/types/session-create.d.ts +29 -0
  61. package/lib/types/types/session.d.ts +8 -0
  62. package/lib/types/user-workspace.d.ts +4 -6
  63. package/lib/user-workspace.js +13 -67
  64. package/lib/user-workspace.js.map +1 -1
  65. package/package.json +11 -9
@@ -0,0 +1,39 @@
1
+ export function qaFilesystemIntent(name, args) {
2
+ if (args === undefined)
3
+ return undefined;
4
+ const file = typeof args.file_path === "string" ? args.file_path : undefined;
5
+ const target = typeof args.path === "string" ? args.path : undefined;
6
+ const bytes = (value) => typeof value === "string" ? Buffer.byteLength(value) : 0;
7
+ switch (name) {
8
+ case "read":
9
+ case "read_image":
10
+ return file === undefined
11
+ ? undefined
12
+ : { kind: "read", path: file, fileOnlyGrant: true };
13
+ case "glob":
14
+ case "grep":
15
+ return { kind: "read", path: target ?? ".", fileOnlyGrant: false };
16
+ case "write":
17
+ case "edit":
18
+ return file === undefined
19
+ ? undefined
20
+ : {
21
+ kind: "write",
22
+ path: file,
23
+ bytes: bytes(name === "write" ? args.content : args.new_string),
24
+ };
25
+ case "str_replace_editor":
26
+ if (target === undefined)
27
+ return undefined;
28
+ if (args.command === "view")
29
+ return { kind: "read", path: target, fileOnlyGrant: true };
30
+ return {
31
+ kind: "write",
32
+ path: target,
33
+ bytes: bytes(args.command === "create" ? args.file_text : args.new_str),
34
+ };
35
+ default:
36
+ return undefined;
37
+ }
38
+ }
39
+ //# sourceMappingURL=filesystem-intent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystem-intent.js","sourceRoot":"","sources":["../src/filesystem-intent.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,kBAAkB,CAChC,IAAY,EACZ,IAAyC;IAEzC,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACzC,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7E,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACrE,MAAM,KAAK,GAAG,CAAC,KAAc,EAAE,EAAE,CAC/B,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,MAAM,CAAC;QACZ,KAAK,YAAY;YACf,OAAO,IAAI,KAAK,SAAS;gBACvB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QACxD,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM;YACT,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;QACrE,KAAK,OAAO,CAAC;QACb,KAAK,MAAM;YACT,OAAO,IAAI,KAAK,SAAS;gBACvB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC;oBACE,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,IAAI;oBACV,KAAK,EAAE,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;iBAChE,CAAC;QACR,KAAK,oBAAoB;YACvB,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAC;YAC3C,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM;gBACzB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;YAC7D,OAAO;gBACL,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;aACxE,CAAC;QACJ;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC"}
@@ -71,9 +71,11 @@ export function validateFormFile(name, data) {
71
71
  export class QaFormAttachmentAdapter {
72
72
  service;
73
73
  host;
74
- constructor(service, host) {
74
+ grantFile;
75
+ constructor(service, host, grantFile) {
75
76
  this.service = service;
76
77
  this.host = host;
78
+ this.grantFile = grantFile;
77
79
  }
78
80
  available() {
79
81
  const host = this.host();
@@ -189,7 +191,12 @@ export class QaFormAttachmentAdapter {
189
191
  });
190
192
  }
191
193
  /** Exact saved bytes are re-projected through the Host on each successful resume. */
192
- async readable(submission) {
194
+ async readable(submission, sessionId) {
195
+ if (sessionId !== undefined) {
196
+ const saved = this.service().get(sessionId, submission.form_id);
197
+ formAssert(saved.submission?.submission_id === submission.submission_id, "ACCESS_DENIED", "The submitted form is unavailable in this chat.");
198
+ submission = saved.submission;
199
+ }
193
200
  const resources = [];
194
201
  for (const item of submission.items)
195
202
  for (const file of item.files) {
@@ -207,8 +214,17 @@ export class QaFormAttachmentAdapter {
207
214
  !path.relative(host.root, readPath).startsWith("..") &&
208
215
  !path.isAbsolute(path.relative(host.root, readPath)), "FILE_UNAVAILABLE", "The Host has no file reader projection.");
209
216
  resources.push({ resource_id: file.resource_id, read_path: readPath });
217
+ if (sessionId !== undefined)
218
+ this.grantFile?.(sessionId, readPath);
210
219
  }
211
220
  return { ...submission, resources };
212
221
  }
222
+ /** Rebuild exact grants from this chat's persisted, verified submissions. */
223
+ async restore(sessionId) {
224
+ for (const record of this.service().store.list(sessionId)) {
225
+ if (record.status === "submitted" && record.submission !== undefined)
226
+ await this.readable(record.submission, sessionId);
227
+ }
228
+ }
213
229
  }
214
230
  //# sourceMappingURL=attachments.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"attachments.js","sourceRoot":"","sources":["../../src/forms/attachments.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attachments.js","sourceRoot":"","sources":["../../src/forms/attachments.ts"],"names":[],"mappings":"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"}
package/lib/index.js CHANGED
@@ -32,7 +32,6 @@ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn,
32
32
  if (target) Object.defineProperty(target, contextIn.name, descriptor);
33
33
  done = true;
34
34
  };
35
- import { randomUUID } from "node:crypto";
36
35
  import { readSourceImage as readSourceImagePreview } from "./provenance/source-image.js";
37
36
  import path from "node:path";
38
37
  import { defaultAccountsFilePath } from "./accounts/store.js";
@@ -44,9 +43,9 @@ import { QaIntegrationQuestionPolicy } from "./integration/question-policy.js";
44
43
  import { qaChatPublishedFile, qaChatAttachmentPath, } from "./chat-sharing/resources.js";
45
44
  import { installQaChatUploads } from "./chat-sharing/uploads.js";
46
45
  import { forkQaSession } from "./session-fork-host.js";
46
+ import { createQaSession } from "./session-create.js";
47
47
  import { Remote, TypertRemoteService } from "@deepseek-ai/dsh-typert-protocol";
48
48
  import { SessionId } from "@deepseek-ai/dsh-session/types";
49
- import { WorkspaceId } from "@deepseek-ai/dsh-workspace";
50
49
  import { createHostLoggerSink, getPluginLogger, } from "@yadsh/dsh-plugin-log";
51
50
  import { ConfigSchema, qaSurfaceVersion, readConfigRefs, resolveConfig, } from "./config.js";
52
51
  import { createQaAccountRemotes } from "./account-remotes.js";
@@ -55,7 +54,7 @@ import { QaQualityStore } from "./admin/quality-store.js";
55
54
  import { createSessionEraser, createSessionLogReader, } from "./admin/session-log.js";
56
55
  import { createQaPersonalSkillRemotes, QaPersonalSkillsHost, } from "./personal-skills/index.js";
57
56
  import { QaApprovalGate } from "./approvals.js";
58
- import { QaAttestationError, qaAttestationFailureMessage, } from "./attestation.js";
57
+ import { QaAttestationError } from "./attestation.js";
59
58
  import { QaFileDeleteGate } from "./qa-tools/file-delete-gate.js";
60
59
  import { QaQuestionGate } from "./questions.js";
61
60
  import { QaFormStore } from "./forms/store.js";
@@ -78,11 +77,10 @@ import { createQaIntegrationRunner } from "./integration/host-runner.js";
78
77
  import { QaIntegrationService } from "./integration/service.js";
79
78
  import { QaPolicyAdmission } from "./secure-session.js";
80
79
  import { QaAccessService } from "./access/service.js";
81
- import { applySessionModelPolicy } from "./session-model.js";
82
80
  import { userInvocableSkillNames } from "./access/model.js";
83
81
  import { createQaSlashRemotes } from "./slash/remotes.js";
84
82
  import { QaPromptNotes } from "./prompt-notes.js";
85
- import { qaActiveRequests, qaQueueStatus } from "./request-queue.js";
83
+ import { QaRequestScheduler, qaRequestFamilyBusy, qaRequestRoots, } from "./request-scheduler.js";
86
84
  import { QaTools } from "./qa-tools/index.js";
87
85
  import { docsDefaultVersionOf } from "./config-resolvers/tools.js";
88
86
  import { QaProvenanceHost } from "./provenance/host-store.js";
@@ -90,7 +88,7 @@ import { defaultLegacyProvenanceFilePath, defaultQaProvenanceDirectoryPath, File
90
88
  import { previewConvertibleDocument, previewSourceDocument, } from "./provenance/document-preview.js";
91
89
  import { readWorkspaceFileChunk } from "./provenance/file-download.js";
92
90
  import { listWorkspaceDirectory, readSourceFilePreview, readWorkspaceFile, QaSourcePreviewError, } from "./provenance/file-preview.js";
93
- import { existingQaUserWorkspace, prepareQaUserWorkspace, } from "./user-workspace.js";
91
+ import { existingQaUserWorkspace } from "./user-workspace.js";
94
92
  export const name = "qa-surface";
95
93
  export const inject = [
96
94
  "agents",
@@ -545,6 +543,7 @@ let QaSurface = (() => {
545
543
  chatSharingStore;
546
544
  chatTransport;
547
545
  chatTurnGuard;
546
+ requestScheduler;
548
547
  sharing() {
549
548
  const accounts = () => {
550
549
  const store = this.accountRemotes.resolve(this.getConfig());
@@ -561,11 +560,13 @@ let QaSurface = (() => {
561
560
  // the one live source: each read folds its current snapshots, and a settings
562
561
  // write is visible on the next read without reloading the plugin.
563
562
  this.source = () => readConfigRefs(entry);
563
+ this.requestScheduler = new QaRequestScheduler(() => this.getConfig().session.maxActiveRequests, () => qaRequestRoots(ctx, this.getConfig().session.maxActiveRequests > 0), Date.now, (agent) => qaRequestFamilyBusy(ctx, agent));
564
+ ctx.effect(() => this.requestScheduler.install(ctx), "dsh-qa-surface.request-queue");
564
565
  this.logger = getPluginLogger({
565
566
  pluginId: "dsh-qa-surface",
566
567
  consoleSink: createHostLoggerSink(ctx.logger),
567
568
  });
568
- this.formAttachments = new QaFormAttachmentAdapter(() => this.forms(), () => ctx.get("attachments"));
569
+ this.formAttachments = new QaFormAttachmentAdapter(() => this.forms(), () => ctx.get("attachments"), (sessionId, file) => this.admission.grantAttachmentFile(sessionId, file));
569
570
  this.accountRemotes = createQaAccountRemotes({
570
571
  getConfig: () => this.getConfig(),
571
572
  logger: this.logger,
@@ -665,7 +666,16 @@ let QaSurface = (() => {
665
666
  // that is where the caller's account has just been matched against the
666
667
  // ownership record. The browser's `secureSession` remote keeps its own
667
668
  // write: there the compared identity is the token's.
668
- this.integrationPrincipals);
669
+ this.integrationPrincipals, {
670
+ readEvents: async (sessionId) => {
671
+ const result = await sessionLog.read(sessionId);
672
+ return result.ok ? result.events : [];
673
+ },
674
+ restoreFiles: async (sessionId) => {
675
+ if (this.getConfig().forms.enabled)
676
+ await this.formAttachments.restore(sessionId);
677
+ },
678
+ });
669
679
  this.provenance = new QaProvenanceHost(ctx, () => this.getConfig(),
670
680
  // Sharded per chat and bounded by the resolved retention policy: the
671
681
  // turn path must never rewrite history it did not touch.
@@ -785,7 +795,7 @@ let QaSurface = (() => {
785
795
  this.tools = new QaTools(ctx, {
786
796
  forms: this.formGate,
787
797
  formsEnabled: () => this.getConfig().forms.enabled,
788
- formProjection: (submission) => this.formAttachments.readable(submission),
798
+ formProjection: (submission, sessionId) => this.formAttachments.readable(submission, sessionId),
789
799
  logger: this.logger,
790
800
  dynamicActivation: this.getConfig().tools.dynamicActivation,
791
801
  activationSkill: this.getConfig().tools.activationSkill,
@@ -1119,20 +1129,15 @@ let QaSurface = (() => {
1119
1129
  return this.getConfig();
1120
1130
  }
1121
1131
  /**
1122
- * Report how much of the deployment's request ceiling the stand is using, so
1123
- * a browser holds its question back instead of opening another turn on a
1124
- * model that is busy answering the ones it allows.
1125
- *
1126
- * The count is the Host's, not the browser's: a visitor cannot see another
1127
- * account's chats, and the HTTP API's questions are invisible to every chat
1128
- * view. Read-only, and a ceiling rather than a lock — a prompt rides the
1129
- * native session RPC this plugin does not own, so the boundary is the
1130
- * browser's own courtesy, and two questions sent in the same instant can
1131
- * still overshoot by one. What the ceiling buys is that steady state, not a
1132
- * strict bound.
1132
+ * Report server admission. Global reads expose counts only; a chat's FIFO
1133
+ * position requires that account's current read access to the chat. The
1134
+ * scheduler gates every root turn, including native and integration sends.
1133
1135
  */
1134
- queueStatus() {
1135
- return qaQueueStatus(this.getConfig().session.maxActiveRequests, qaActiveRequests(this.ctx.agents.roots()));
1136
+ queueStatus(token, sessionId) {
1137
+ if (sessionId !== undefined && this.getConfig().accounts.enabled) {
1138
+ this.sharing().access(token ?? "", sessionId);
1139
+ }
1140
+ return this.requestScheduler.status(sessionId);
1136
1141
  }
1137
1142
  /**
1138
1143
  * Create a QA session from Host-owned inputs. With account workspaces on,
@@ -1141,65 +1146,26 @@ let QaSurface = (() => {
1141
1146
  */
1142
1147
  async createSession(token, subroleId, adminPreview) {
1143
1148
  const config = this.getConfig();
1144
- if (config.session.policy === "fixed") {
1145
- throw new Error("Fixed QA sessions cannot be created.");
1146
- }
1147
- const id = SessionId(`session-${randomUUID()}`);
1148
1149
  const accounts = this.accountRemotes.resolve(config);
1149
- const owner = accounts === undefined
1150
- ? undefined
1151
- : this.accountRemotes.run(() => this.access.reserveSession(token, String(id), subroleId, adminPreview));
1152
- try {
1153
- // Check deployment-only pins before creating a durable Host session.
1154
- // Full admission below still verifies the composed agent and tool view.
1155
- this.admission.preflightDeployment();
1156
- let userCwd;
1157
- if (config.accounts.perUserWorkspace) {
1158
- const workspaceId = config.session.workspaceId;
1159
- if (owner === undefined || workspaceId === null) {
1160
- throw new Error("Per-user QA workspace configuration is unavailable.");
1161
- }
1162
- const workspace = this.ctx.workspaceRegistry.get(WorkspaceId(workspaceId));
1163
- if (workspace === undefined) {
1164
- throw new Error(`Configured QA workspace ${workspaceId} is unavailable.`);
1165
- }
1166
- userCwd = prepareQaUserWorkspace(workspace.path, owner.id);
1167
- }
1168
- const created = await this.ctx.sessionController.create({
1169
- sessionId: id,
1170
- ...(userCwd !== undefined
1171
- ? { cwd: userCwd }
1172
- : config.session.workspaceId !== null
1173
- ? { workspaceId: WorkspaceId(config.session.workspaceId) }
1174
- : config.session.cwd !== null
1175
- ? { cwd: config.session.cwd }
1176
- : {}),
1177
- ...(config.session.agentPreset === null
1178
- ? {}
1179
- : { agentPreset: config.session.agentPreset }),
1180
- });
1181
- await applySessionModelPolicy(this.ctx, created.sessionId, this.access.modelPolicyFor(String(created.sessionId)), this.logger);
1182
- const sessionId = String(created.sessionId);
1183
- await this.admission.secureSession(token, sessionId);
1184
- this.integrationPrincipals.attest(sessionId, owner?.id, accounts?.ownerIdOf(sessionId));
1185
- return sessionId;
1186
- }
1187
- catch (error) {
1188
- // This call is the only way the browser could have learned the id, so a
1189
- // failure at any stage — the Host creating the session, selecting the
1190
- // model, the admission refusing the composition — leaves no chat behind
1191
- // and the reservation goes with it. A kept record would put an empty
1192
- // chat in the account's list, and nothing else would ever remove it.
1193
- if (owner !== undefined) {
1194
- accounts?.releaseSessionReservation(owner.id, String(id));
1195
- }
1196
- this.logger.error("session.create-rejected", {
1197
- sessionId: String(id),
1198
- reason: error instanceof QaAttestationError ? error.reason : undefined,
1199
- error: error instanceof Error ? error.message : String(error),
1200
- });
1201
- throw new Error(qaAttestationFailureMessage("Unable to create a QA session.", error), { cause: error });
1202
- }
1150
+ return createQaSession({
1151
+ ctx: this.ctx,
1152
+ config,
1153
+ logger: this.logger,
1154
+ sessionFiles: createSessionEraser(),
1155
+ reserve: (id) => accounts === undefined
1156
+ ? undefined
1157
+ : this.accountRemotes.run(() => this.access.reserveSession(token, id, subroleId, adminPreview)),
1158
+ release: (owner, id) => accounts?.releaseSessionReservation(owner, id),
1159
+ modelPolicy: (id) => this.access.modelPolicyFor(id),
1160
+ preflight: () => this.admission.preflightDeployment(),
1161
+ admit: (id) => this.admission.secureSession(token, id),
1162
+ attest: (id, owner) => this.integrationPrincipals.attest(id, owner, accounts?.ownerIdOf(id)),
1163
+ reject: (id) => {
1164
+ this.integrationPrincipals.attest(id, undefined, undefined);
1165
+ this.admission.rejectSession(id);
1166
+ },
1167
+ forget: (id) => this.admission.forgetRejectedSession(id),
1168
+ });
1203
1169
  }
1204
1170
  /** Create an independently admitted ordinary branch of the caller's own chat. */
1205
1171
  async forkSession(token, sourceId, answerSeq) {