@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.
- package/README.md +20 -22
- package/lib/attachment-access.js +147 -0
- package/lib/attachment-access.js.map +1 -0
- package/lib/chat-sharing/search.js +89 -0
- package/lib/chat-sharing/search.js.map +1 -0
- package/lib/chat-sharing/transport.js +2 -7
- package/lib/chat-sharing/transport.js.map +1 -1
- package/lib/client/QaSessionController.js +51 -9
- package/lib/client/QaSessionController.js.map +1 -1
- package/lib/client/QaSurface.js +4 -3
- package/lib/client/QaSurface.js.map +1 -1
- package/lib/client/components/QaChangelog.js +27 -0
- package/lib/client/components/QaChangelog.js.map +1 -1
- package/lib/client/components/QaRequestWait.js +15 -0
- package/lib/client/components/QaRequestWait.js.map +1 -0
- package/lib/client/index.js +3 -1
- package/lib/client/index.js.map +1 -1
- package/lib/client/project-session-state.js.map +1 -1
- package/lib/client/request-wait-styles.js +7 -0
- package/lib/client/request-wait-styles.js.map +1 -0
- package/lib/client/styles.js +2 -0
- package/lib/client/styles.js.map +1 -1
- package/lib/client/types.js.map +1 -1
- package/lib/client.js +14 -8
- package/lib/client.js.map +1 -1
- package/lib/filesystem-intent.js +39 -0
- package/lib/filesystem-intent.js.map +1 -0
- package/lib/forms/attachments.js +18 -2
- package/lib/forms/attachments.js.map +1 -1
- package/lib/index.js +46 -80
- package/lib/index.js.map +1 -1
- package/lib/qa-tools/catalog.js.map +1 -1
- package/lib/qa-tools/index.js.map +1 -1
- package/lib/qa-tools/request-user-form.js +1 -1
- package/lib/qa-tools/request-user-form.js.map +1 -1
- package/lib/request-scheduler.js +235 -0
- package/lib/request-scheduler.js.map +1 -0
- package/lib/secure-session.js +46 -52
- package/lib/secure-session.js.map +1 -1
- package/lib/session-create.js +125 -0
- package/lib/session-create.js.map +1 -0
- package/lib/typert.host.js +163 -116
- package/lib/typert.remote-client.d.ts +3 -3
- package/lib/typert.remote-client.js +159 -112
- package/lib/types/attachment-access.d.ts +29 -0
- package/lib/types/chat-sharing/search.d.ts +5 -0
- package/lib/types/client/QaSessionController.d.ts +12 -9
- package/lib/types/client/components/QaRequestWait.d.ts +6 -0
- package/lib/types/client/project-session-state.d.ts +2 -4
- package/lib/types/client/request-wait-styles.d.ts +2 -0
- package/lib/types/client/types.d.ts +3 -3
- package/lib/types/filesystem-intent.d.ts +12 -0
- package/lib/types/forms/attachments.d.ts +5 -2
- package/lib/types/index.d.ts +6 -13
- package/lib/types/qa-tools/catalog.d.ts +1 -1
- package/lib/types/qa-tools/index.d.ts +1 -1
- package/lib/types/qa-tools/request-user-form.d.ts +1 -1
- package/lib/types/request-scheduler.d.ts +28 -0
- package/lib/types/secure-session.d.ts +12 -26
- package/lib/types/session-create.d.ts +29 -0
- package/lib/types/types/session.d.ts +8 -0
- package/lib/types/user-workspace.d.ts +4 -6
- package/lib/user-workspace.js +13 -67
- package/lib/user-workspace.js.map +1 -1
- package/package.json +11 -9
package/README.md
CHANGED
|
@@ -669,28 +669,26 @@ stays quiet until a message is actually sent, and the old session stays intact
|
|
|
669
669
|
for operator inspection. The sidebar orders chats by the host's last update,
|
|
670
670
|
so merely opening a chat never moves it.
|
|
671
671
|
|
|
672
|
-
A
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
model. A command that does wake it enters the same Host count, so the next
|
|
693
|
-
question waits behind it like behind any other turn.
|
|
672
|
+
A deployment can bound concurrent chats with `session.maxActiveRequests`; the
|
|
673
|
+
default 0 leaves concurrency unbounded. Admission is enforced on the server
|
|
674
|
+
before a root agent takes its first step, covering browser, integration and
|
|
675
|
+
native prompts. Simultaneous sends reserve places atomically; waiting chats
|
|
676
|
+
start in FIFO order without resending their questions. A complete turn keeps
|
|
677
|
+
its place through tool calls and review. Delegated experts run within their
|
|
678
|
+
chat's place, including background descendants still running after the parent
|
|
679
|
+
turn ends. A subsequent turn rejoins the queue behind earlier waiters.
|
|
680
|
+
|
|
681
|
+
An inline status above the composer shows the waiting chat's real queue
|
|
682
|
+
position. After at least three completed turns the server can also provide an
|
|
683
|
+
approximate delay based on recent durations. Before that, no duration is shown.
|
|
684
|
+
The status survives closing and reopening the page while Host stays running;
|
|
685
|
+
the stop button cancels a waiting request. Queue status reveals global counts
|
|
686
|
+
only, and a chat's position requires current read access. An unavailable status
|
|
687
|
+
read does not bypass server admission.
|
|
688
|
+
|
|
689
|
+
Changing the limit does not interrupt already active turns: lowering it admits
|
|
690
|
+
no new chat until the active count fits, and raising it releases more waiters.
|
|
691
|
+
Commands that do not run a turn remain usable while the stand is full.
|
|
694
692
|
|
|
695
693
|
Regeneration: the last committed answer offers a retry action. The session log
|
|
696
694
|
is append-only, so "regenerate" sends a hidden instruction as an ordinary
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { statSync } from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { canonicalCandidate, pathIsInside } from "./user-workspace.js";
|
|
4
|
+
function record(value) {
|
|
5
|
+
return value !== null && typeof value === "object"
|
|
6
|
+
? value
|
|
7
|
+
: undefined;
|
|
8
|
+
}
|
|
9
|
+
/** Exact attachment capabilities, owned by one admitted conversation. */
|
|
10
|
+
export class QaAttachmentAccess {
|
|
11
|
+
ctx;
|
|
12
|
+
recovery;
|
|
13
|
+
bindings = new Map();
|
|
14
|
+
constructor(ctx, recovery = {}) {
|
|
15
|
+
this.ctx = ctx;
|
|
16
|
+
this.recovery = recovery;
|
|
17
|
+
}
|
|
18
|
+
root() {
|
|
19
|
+
const root = this.ctx.get("attachments")
|
|
20
|
+
?.root;
|
|
21
|
+
return typeof root === "string" ? root : undefined;
|
|
22
|
+
}
|
|
23
|
+
async admit(session) {
|
|
24
|
+
const id = String(session.id);
|
|
25
|
+
let binding = this.bindings.get(id);
|
|
26
|
+
if (binding === undefined) {
|
|
27
|
+
binding = { scope: { files: new Set(), members: new Set([id]) } };
|
|
28
|
+
this.bindings.set(id, binding);
|
|
29
|
+
const current = binding;
|
|
30
|
+
binding.ready = (async () => {
|
|
31
|
+
const events = (await this.recovery.readEvents?.(id)) ?? [];
|
|
32
|
+
if (this.bindings.get(id) !== current)
|
|
33
|
+
return;
|
|
34
|
+
this.observe(id, events);
|
|
35
|
+
this.observe(id, session.snapshotEvents?.() ?? []);
|
|
36
|
+
await this.recovery.restoreFiles?.(id);
|
|
37
|
+
})();
|
|
38
|
+
}
|
|
39
|
+
try {
|
|
40
|
+
await binding.ready;
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
if (this.bindings.get(id) === binding)
|
|
44
|
+
this.revoke(id);
|
|
45
|
+
throw error;
|
|
46
|
+
}
|
|
47
|
+
// Also covers a prompt accepted while the durable prefix was loading.
|
|
48
|
+
this.observe(id, session.snapshotEvents?.() ?? []);
|
|
49
|
+
if (this.bindings.get(id) === binding)
|
|
50
|
+
this.publish(binding.scope);
|
|
51
|
+
}
|
|
52
|
+
inherit(session, parentId) {
|
|
53
|
+
const parent = this.bindings.get(parentId);
|
|
54
|
+
if (parent === undefined)
|
|
55
|
+
return;
|
|
56
|
+
const id = String(session.id);
|
|
57
|
+
this.revoke(id);
|
|
58
|
+
parent.scope.members.add(id);
|
|
59
|
+
this.bindings.set(id, { scope: parent.scope });
|
|
60
|
+
this.observe(id, session.snapshotEvents?.() ?? []);
|
|
61
|
+
this.publish(parent.scope);
|
|
62
|
+
}
|
|
63
|
+
/** Only Host-admitted file blocks are authority; text and tool output are not. */
|
|
64
|
+
observe(sessionId, events) {
|
|
65
|
+
const binding = this.bindings.get(sessionId);
|
|
66
|
+
if (binding === undefined)
|
|
67
|
+
return;
|
|
68
|
+
const host = this.ctx.get("attachments");
|
|
69
|
+
for (const value of events) {
|
|
70
|
+
const event = record(value);
|
|
71
|
+
if (event?.type !== "user/message")
|
|
72
|
+
continue;
|
|
73
|
+
const content = record(event.data)?.content;
|
|
74
|
+
if (!Array.isArray(content))
|
|
75
|
+
continue;
|
|
76
|
+
for (const raw of content) {
|
|
77
|
+
const part = record(raw);
|
|
78
|
+
if (part?.type !== "file")
|
|
79
|
+
continue;
|
|
80
|
+
try {
|
|
81
|
+
const file = host?.fileHostPath?.(part.attachment);
|
|
82
|
+
if (file !== undefined)
|
|
83
|
+
this.grantFile(sessionId, file);
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
// Invalid or unsupported Host reference never widens access.
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
this.publish(binding.scope);
|
|
91
|
+
}
|
|
92
|
+
/** Called only after a durable form's bytes and session ownership are verified. */
|
|
93
|
+
grantFile(sessionId, file) {
|
|
94
|
+
const binding = this.bindings.get(sessionId);
|
|
95
|
+
const root = this.root();
|
|
96
|
+
if (binding === undefined || root === undefined || !path.isAbsolute(file))
|
|
97
|
+
return;
|
|
98
|
+
try {
|
|
99
|
+
const canonical = canonicalCandidate(file);
|
|
100
|
+
if (!pathIsInside(canonical, canonicalCandidate(root)) ||
|
|
101
|
+
!statSync(canonical).isFile())
|
|
102
|
+
return;
|
|
103
|
+
if (binding.scope.files.has(canonical))
|
|
104
|
+
return;
|
|
105
|
+
binding.scope.files.add(canonical);
|
|
106
|
+
this.publish(binding.scope);
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
// Missing bytes or a symlink outside the store are not a file grant.
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
files(sessionId) {
|
|
113
|
+
return [...(this.bindings.get(sessionId)?.scope.files ?? [])];
|
|
114
|
+
}
|
|
115
|
+
publish(scope) {
|
|
116
|
+
const documents = this.ctx.get("documents");
|
|
117
|
+
if (documents?.registerInputRoots === undefined)
|
|
118
|
+
return;
|
|
119
|
+
const files = [...scope.files];
|
|
120
|
+
if (files.length === 0)
|
|
121
|
+
return;
|
|
122
|
+
for (const id of scope.members) {
|
|
123
|
+
const binding = this.bindings.get(id);
|
|
124
|
+
if (binding === undefined ||
|
|
125
|
+
(binding.publisher === documents &&
|
|
126
|
+
binding.published?.length === files.length))
|
|
127
|
+
continue;
|
|
128
|
+
binding.revoke?.();
|
|
129
|
+
binding.revoke = documents.registerInputRoots(id, files);
|
|
130
|
+
binding.published = files;
|
|
131
|
+
binding.publisher = documents;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
revoke(sessionId) {
|
|
135
|
+
const binding = this.bindings.get(sessionId);
|
|
136
|
+
if (binding === undefined)
|
|
137
|
+
return;
|
|
138
|
+
this.bindings.delete(sessionId);
|
|
139
|
+
binding.scope.members.delete(sessionId);
|
|
140
|
+
binding.revoke?.();
|
|
141
|
+
}
|
|
142
|
+
dispose() {
|
|
143
|
+
for (const id of this.bindings.keys())
|
|
144
|
+
this.revoke(id);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=attachment-access.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attachment-access.js","sourceRoot":"","sources":["../src/attachment-access.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { SessionId } from "@deepseek-ai/dsh-session/types";
|
|
2
|
+
/** Apply account scope before the provider's ranking/limit, then recheck each read. */
|
|
3
|
+
export async function searchQaChats(ctx, query, visible, signal) {
|
|
4
|
+
const normalized = query.trim();
|
|
5
|
+
if (normalized.length === 0 ||
|
|
6
|
+
normalized.length > 500 ||
|
|
7
|
+
normalized.includes("\0"))
|
|
8
|
+
throw new Error("Session search requires 1–500 characters without NUL.");
|
|
9
|
+
signal.throwIfAborted();
|
|
10
|
+
const initial = await visible();
|
|
11
|
+
if (initial.size === 0)
|
|
12
|
+
return { items: [], hasMore: false };
|
|
13
|
+
const provider = ctx.get("sessionQuery");
|
|
14
|
+
if (provider?.searchSessions === undefined)
|
|
15
|
+
throw new Error("Session search is unavailable.");
|
|
16
|
+
const found = new Map();
|
|
17
|
+
const cursors = new Set();
|
|
18
|
+
let cursor;
|
|
19
|
+
let limit = 20;
|
|
20
|
+
for (let calls = 0; calls < 100; calls++) {
|
|
21
|
+
signal.throwIfAborted();
|
|
22
|
+
let page;
|
|
23
|
+
try {
|
|
24
|
+
page = await provider.searchSessions({
|
|
25
|
+
query: normalized,
|
|
26
|
+
sessionFilters: [{ kind: "id", values: [...initial].map(SessionId) }],
|
|
27
|
+
eventFilters: [
|
|
28
|
+
{ kind: "type", values: ["user/message", "assistant/message"] },
|
|
29
|
+
{ kind: "surface", values: ["current"] },
|
|
30
|
+
],
|
|
31
|
+
limit,
|
|
32
|
+
...(cursor === undefined ? {} : { cursor }),
|
|
33
|
+
}, { signal });
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
signal.throwIfAborted();
|
|
37
|
+
const code = error?.code;
|
|
38
|
+
if (cursor === undefined &&
|
|
39
|
+
code === "SESSION_QUERY_INVALID_LIMIT" &&
|
|
40
|
+
limit > 1) {
|
|
41
|
+
limit = Math.max(1, Math.floor(limit / 2));
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
if (cursor !== undefined && code === "SESSION_QUERY_STALE_CURSOR") {
|
|
45
|
+
cursor = undefined;
|
|
46
|
+
found.clear();
|
|
47
|
+
cursors.clear();
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
throw error;
|
|
51
|
+
}
|
|
52
|
+
signal.throwIfAborted();
|
|
53
|
+
if (page.items.length > limit)
|
|
54
|
+
throw new Error("Session search provider exceeded its page limit.");
|
|
55
|
+
const allowed = await visible();
|
|
56
|
+
signal.throwIfAborted();
|
|
57
|
+
for (const id of found.keys())
|
|
58
|
+
if (!allowed.has(id))
|
|
59
|
+
found.delete(id);
|
|
60
|
+
for (const hit of page.items) {
|
|
61
|
+
const id = String(hit.header.id), match = hit.bestMatch;
|
|
62
|
+
if (!initial.has(id) ||
|
|
63
|
+
!allowed.has(id) ||
|
|
64
|
+
String(match.sessionId) !== id ||
|
|
65
|
+
match.surface !== "current" ||
|
|
66
|
+
!["user/message", "assistant/message"].includes(match.type))
|
|
67
|
+
continue;
|
|
68
|
+
if (!found.has(id))
|
|
69
|
+
found.set(id, [...match.snippet].slice(0, 240).join(""));
|
|
70
|
+
}
|
|
71
|
+
if (page.nextCursor !== undefined && cursors.has(page.nextCursor))
|
|
72
|
+
throw new Error("Session search provider repeated a cursor.");
|
|
73
|
+
if (found.size > 20 ||
|
|
74
|
+
page.nextCursor === undefined ||
|
|
75
|
+
allowed.size === 0) {
|
|
76
|
+
return {
|
|
77
|
+
items: [...found].slice(0, 20).map(([sessionId, snippet]) => ({
|
|
78
|
+
sessionId: SessionId(sessionId),
|
|
79
|
+
snippet,
|
|
80
|
+
})),
|
|
81
|
+
hasMore: found.size > 20,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
cursor = page.nextCursor;
|
|
85
|
+
cursors.add(cursor);
|
|
86
|
+
}
|
|
87
|
+
throw new Error("Session search exceeded its bounded page budget.");
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/chat-sharing/search.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAiC3D,uFAAuF;AACvF,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,GAAY,EACZ,KAAa,EACb,OAA2C,EAC3C,MAAmB;IAEnB,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAChC,IACE,UAAU,CAAC,MAAM,KAAK,CAAC;QACvB,UAAU,CAAC,MAAM,GAAG,GAAG;QACvB,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC;QAEzB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,MAAM,CAAC,cAAc,EAAE,CAAC;IACxB,MAAM,OAAO,GAAG,MAAM,OAAO,EAAE,CAAC;IAChC,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC7D,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,cAAc,CAA+B,CAAC;IACvE,IAAI,QAAQ,EAAE,cAAc,KAAK,SAAS;QACxC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,IAAI,MAA0B,CAAC;IAC/B,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC;QACzC,MAAM,CAAC,cAAc,EAAE,CAAC;QACxB,IAAI,IAA2D,CAAC;QAChE,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,QAAQ,CAAC,cAAc,CAClC;gBACE,KAAK,EAAE,UAAU;gBACjB,cAAc,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBACrE,YAAY,EAAE;oBACZ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,cAAc,EAAE,mBAAmB,CAAC,EAAE;oBAC/D,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE;iBACzC;gBACD,KAAK;gBACL,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;aAC5C,EACD,EAAE,MAAM,EAAE,CACX,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,cAAc,EAAE,CAAC;YACxB,MAAM,IAAI,GAAI,KAAuC,EAAE,IAAI,CAAC;YAC5D,IACE,MAAM,KAAK,SAAS;gBACpB,IAAI,KAAK,6BAA6B;gBACtC,KAAK,GAAG,CAAC,EACT,CAAC;gBACD,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC3C,SAAS;YACX,CAAC;YACD,IAAI,MAAM,KAAK,SAAS,IAAI,IAAI,KAAK,4BAA4B,EAAE,CAAC;gBAClE,MAAM,GAAG,SAAS,CAAC;gBACnB,KAAK,CAAC,KAAK,EAAE,CAAC;gBACd,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChB,SAAS;YACX,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,CAAC,cAAc,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK;YAC3B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,MAAM,OAAO,GAAG,MAAM,OAAO,EAAE,CAAC;QAChC,MAAM,CAAC,cAAc,EAAE,CAAC;QACxB,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE;YAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtE,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC7B,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAC9B,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC;YACxB,IACE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChB,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE;gBAC9B,KAAK,CAAC,OAAO,KAAK,SAAS;gBAC3B,CAAC,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;gBAE3D,SAAS;YACX,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChB,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;YAC/D,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,IACE,KAAK,CAAC,IAAI,GAAG,EAAE;YACf,IAAI,CAAC,UAAU,KAAK,SAAS;YAC7B,OAAO,CAAC,IAAI,KAAK,CAAC,EAClB,CAAC;YACD,OAAO;gBACL,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC5D,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC;oBAC/B,OAAO;iBACR,CAAC,CAAC;gBACH,OAAO,EAAE,KAAK,CAAC,IAAI,GAAG,EAAE;aACzB,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;AACtE,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { SessionId } from "@deepseek-ai/dsh-session/types";
|
|
2
|
+
import { searchQaChats } from "./search.js";
|
|
2
3
|
/** Durable access is checked before and after asynchronous reads and per frame. */
|
|
3
4
|
export class QaChatTransport {
|
|
4
5
|
ctx;
|
|
@@ -55,13 +56,7 @@ export class QaChatTransport {
|
|
|
55
56
|
};
|
|
56
57
|
}
|
|
57
58
|
async search(token, request, signal) {
|
|
58
|
-
await this.list(token, signal);
|
|
59
|
-
const value = await this.ctx.sessionController.search(request, signal);
|
|
60
|
-
const allowed = new Set((await this.list(token, signal)).items.map((item) => String(item.sessionId)));
|
|
61
|
-
return {
|
|
62
|
-
items: value.items.filter((item) => allowed.has(String(item.sessionId))),
|
|
63
|
-
hasMore: false,
|
|
64
|
-
};
|
|
59
|
+
return searchQaChats(this.ctx, request.query, async () => new Set((await this.list(token, signal)).items.map((item) => String(item.sessionId))), signal);
|
|
65
60
|
}
|
|
66
61
|
async projections(token, id, signal) {
|
|
67
62
|
const access = await this.sessionAccess(token, id, signal);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/chat-sharing/transport.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/chat-sharing/transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -198,6 +198,10 @@ export class QaSessionController {
|
|
|
198
198
|
/** Host-side question requests of the bound chat waiting for the operator. */
|
|
199
199
|
hostQuestions;
|
|
200
200
|
queueRemote;
|
|
201
|
+
requestRemote;
|
|
202
|
+
requestWaitStatus = null;
|
|
203
|
+
requestReadRevision = 0;
|
|
204
|
+
requestReading = false;
|
|
201
205
|
/** Last send the stand had no room for; drives the request-ceiling dialog. */
|
|
202
206
|
requestQueueNotice = null;
|
|
203
207
|
/** Set while a running turn is polled for parked requests. */
|
|
@@ -266,6 +270,7 @@ export class QaSessionController {
|
|
|
266
270
|
this.hostApprovals = new QaHostApprovalBridge(options.approvalApi);
|
|
267
271
|
this.hostQuestions = new QaHostQuestionBridge(options.questionApi);
|
|
268
272
|
this.queueRemote = options.queueStatus;
|
|
273
|
+
this.requestRemote = options.requestStatus;
|
|
269
274
|
// Cold account catalogs can outlive one short network round trip.
|
|
270
275
|
// Keep bootstrap bounded without rejecting a valid slow restoration.
|
|
271
276
|
this.timeoutMs = options.timeoutMs ?? 60_000;
|
|
@@ -430,7 +435,7 @@ export class QaSessionController {
|
|
|
430
435
|
// the submission rides exactly the way it always did.
|
|
431
436
|
if (this.disposed || (bound !== undefined && this.session !== bound))
|
|
432
437
|
return false;
|
|
433
|
-
if (ceiling !== null && ceiling.full) {
|
|
438
|
+
if (ceiling !== null && ceiling.full && ceiling.managed !== true) {
|
|
434
439
|
this.requestQueueNotice = ceiling;
|
|
435
440
|
this.publish();
|
|
436
441
|
return false;
|
|
@@ -553,10 +558,8 @@ export class QaSessionController {
|
|
|
553
558
|
/**
|
|
554
559
|
* What the stand answers about its load, or null when it does not answer.
|
|
555
560
|
*
|
|
556
|
-
*
|
|
557
|
-
*
|
|
558
|
-
* unreadable count says nothing about the load, and refusing a visitor on
|
|
559
|
-
* that would be a worse answer than the one they would have got.
|
|
561
|
+
* A failed status read does not bypass the server queue. Submit normally;
|
|
562
|
+
* the Host owns admission even when the browser cannot read its load.
|
|
560
563
|
*/
|
|
561
564
|
async readQueueStatus() {
|
|
562
565
|
if (this.queueRemote === undefined)
|
|
@@ -570,6 +573,35 @@ export class QaSessionController {
|
|
|
570
573
|
return null;
|
|
571
574
|
}
|
|
572
575
|
}
|
|
576
|
+
async refreshRequestStatus(sessionId, token) {
|
|
577
|
+
if (this.requestRemote === undefined || this.requestReading)
|
|
578
|
+
return;
|
|
579
|
+
this.requestReading = true;
|
|
580
|
+
const revision = this.requestReadRevision;
|
|
581
|
+
try {
|
|
582
|
+
const result = await this.requestRemote(token, sessionId);
|
|
583
|
+
if (this.disposed ||
|
|
584
|
+
revision !== this.requestReadRevision ||
|
|
585
|
+
String(this.session?.sessionId) !== sessionId)
|
|
586
|
+
return;
|
|
587
|
+
if (!result.ok)
|
|
588
|
+
return;
|
|
589
|
+
const status = result.value.managed === true && result.value.waiting === true
|
|
590
|
+
? result.value
|
|
591
|
+
: null;
|
|
592
|
+
if (JSON.stringify(status) === JSON.stringify(this.requestWaitStatus))
|
|
593
|
+
return;
|
|
594
|
+
this.requestWaitStatus = status;
|
|
595
|
+
this.publish();
|
|
596
|
+
}
|
|
597
|
+
catch {
|
|
598
|
+
// Keep the last known position during a transient transport failure.
|
|
599
|
+
}
|
|
600
|
+
finally {
|
|
601
|
+
if (revision === this.requestReadRevision)
|
|
602
|
+
this.requestReading = false;
|
|
603
|
+
}
|
|
604
|
+
}
|
|
573
605
|
/**
|
|
574
606
|
* Close the request-ceiling dialog. Nothing is retried and nothing is
|
|
575
607
|
* dropped: the held-back question is still the composer's own text, so asking
|
|
@@ -1890,6 +1922,9 @@ export class QaSessionController {
|
|
|
1890
1922
|
// answers for its own sends.
|
|
1891
1923
|
this.requestQueueNotice = null;
|
|
1892
1924
|
this.policyReady = false;
|
|
1925
|
+
this.requestWaitStatus = null;
|
|
1926
|
+
this.requestReadRevision += 1;
|
|
1927
|
+
this.requestReading = false;
|
|
1893
1928
|
this.inheritedThroughSeq = undefined;
|
|
1894
1929
|
this.compatibilityReadOnly = false;
|
|
1895
1930
|
// The catalog belongs to the chat that produced it: another chat has a
|
|
@@ -1946,7 +1981,7 @@ export class QaSessionController {
|
|
|
1946
1981
|
? "reconnecting"
|
|
1947
1982
|
: "idle",
|
|
1948
1983
|
error: this.operationError,
|
|
1949
|
-
requestQueue: this.requestQueueNotice,
|
|
1984
|
+
requestQueue: this.requestWaitStatus ?? this.requestQueueNotice,
|
|
1950
1985
|
canSend: connected && !materializing,
|
|
1951
1986
|
pendingMessage: this.pendingSubmission?.message ?? null,
|
|
1952
1987
|
chatsRevision: this.chatsRevision,
|
|
@@ -1960,7 +1995,7 @@ export class QaSessionController {
|
|
|
1960
1995
|
...this.state,
|
|
1961
1996
|
phase: !connected && this.connectedOnce ? "reconnecting" : this.state.phase,
|
|
1962
1997
|
error: this.operationError ?? this.state.error,
|
|
1963
|
-
requestQueue: this.requestQueueNotice,
|
|
1998
|
+
requestQueue: this.requestWaitStatus ?? this.requestQueueNotice,
|
|
1964
1999
|
};
|
|
1965
2000
|
this.emit();
|
|
1966
2001
|
return;
|
|
@@ -1998,7 +2033,7 @@ export class QaSessionController {
|
|
|
1998
2033
|
// carries its owner's name when an admin reads it.
|
|
1999
2034
|
author: this.accounts?.messageAuthorOf(sessionId),
|
|
2000
2035
|
operationError: this.operationError,
|
|
2001
|
-
requestQueue: this.requestQueueNotice,
|
|
2036
|
+
requestQueue: this.requestWaitStatus ?? this.requestQueueNotice,
|
|
2002
2037
|
policyReady: this.policyReady,
|
|
2003
2038
|
compatibilityReadOnly: this.compatibilityReadOnly,
|
|
2004
2039
|
admissionPending: this.admissionPending || this.pendingSubmission !== undefined,
|
|
@@ -2345,13 +2380,18 @@ export class QaSessionController {
|
|
|
2345
2380
|
: false;
|
|
2346
2381
|
const pending = this.hostApprovals.list().length > 0 ||
|
|
2347
2382
|
this.hostQuestions.list().length > 0;
|
|
2348
|
-
const
|
|
2383
|
+
const queue = this.requestRemote !== undefined &&
|
|
2384
|
+
this.config.session.maxActiveRequests > 0;
|
|
2385
|
+
const wanted = ((running && (approvals || questions || queue)) || pending) &&
|
|
2349
2386
|
// A subagent watched from the panel is a read-only view of a session the
|
|
2350
2387
|
// chat owns: its own requests belong to the chat, not to this binding.
|
|
2351
2388
|
this.viewingSubagent === null &&
|
|
2352
2389
|
this.session !== undefined;
|
|
2353
2390
|
if (!wanted) {
|
|
2354
2391
|
this.stopPendingPolling();
|
|
2392
|
+
this.requestWaitStatus = null;
|
|
2393
|
+
this.requestReadRevision += 1;
|
|
2394
|
+
this.requestReading = false;
|
|
2355
2395
|
return;
|
|
2356
2396
|
}
|
|
2357
2397
|
if (this.pendingTimer !== undefined || this.session === undefined)
|
|
@@ -2359,6 +2399,8 @@ export class QaSessionController {
|
|
|
2359
2399
|
const sessionId = String(this.session.sessionId);
|
|
2360
2400
|
const token = this.hostToken();
|
|
2361
2401
|
const tick = () => {
|
|
2402
|
+
if (queue)
|
|
2403
|
+
void this.refreshRequestStatus(sessionId, token);
|
|
2362
2404
|
// A seam still on screen is re-read even where its config gate has since
|
|
2363
2405
|
// closed: the Host is the authority on what it holds, and an empty answer
|
|
2364
2406
|
// is what takes a settled request off the screen.
|