@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
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 stand whose model runs locally can also refuse to take questions it cannot
673
- answer at the same time: `session.maxActiveRequests` names that ceiling, and 0 —
674
- the default — names none. The count is the Host's, read from the agents that are
675
- answering right now, so a question that arrived through the HTTP API occupies a
676
- place too and a browser never has to guess about chats that are not its own.
677
- Before a send the browser asks that read; a question with no place left is never
678
- sent — no session is materialized, nothing enters the transcript, the composer
679
- keeps the text, and the visitor reads how many requests the stand is already
680
- working. That count includes this visitor's own turns, which is why the dialog
681
- names occupied places rather than people ahead: a refused question is not queued
682
- behind a number the stand cannot attribute.
683
- It is a ceiling rather than a lock: the prompt itself rides the native session
684
- RPC, so two questions pressed in the same instant can still overshoot by one.
685
- What the ceiling buys is the steady state, and an unreadable count sends the
686
- question anyway.
687
- It bounds questions, not every other send. A message typed while a chat is
688
- answering joins that chat's own queue and costs no second place, so it is admitted
689
- without the read; a human command from the palette goes to the Host's command
690
- runtime and is never held back, because that surface is how a visitor inspects or
691
- repairs a saturated stand and this plugin cannot tell which commands wake the
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":"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"}
@@ -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":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AA4B3D,mFAAmF;AACnF,MAAM,OAAO,eAAe;IAGP,GAAG;IACH,KAAK;IACL,KAAK;IACL,iBAAiB;IALnB,KAAK,GAAG,IAAI,GAAG,EAA4B,CAAC;IAC7D,YACmB,GAAY,EACZ,KAA+B,EAC/B,KAAsD,EACtD,iBAGI;mBANJ,GAAG;qBACH,KAAK;qBACL,KAAK;iCACL,iBAAiB;IAIjC,CAAC;IAEJ,KAAK,CAAC,IAAI,CAAC,KAAa,EAAE,MAAmB;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG;aACxB,iBAKF,CAAC;QACF,MAAM,KAAK,GACT,UAAU,CAAC,eAAe,KAAK,SAAS;YACtC,CAAC,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC;YACnC,CAAC,CAAC,MAAM,UAAU,CAAC,eAAe,CAC9B,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAChD,MAAM,CACP,CAAC;QACR,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAEO,aAAa,CACnB,KAAa,EACb,KAAuB;QAEvB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAG,IAAI,GAAG,CACnB,OAAO;aACJ,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;aACvC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CACjC,CAAC;QACF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YACxD,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK;gBAC5B,IACE,IAAI,CAAC,MAAM,KAAK,UAAU;oBAC1B,IAAI,CAAC,eAAe,KAAK,SAAS;oBAClC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;oBACvC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAClC,CAAC;oBACD,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;oBAClC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;oBACpC,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;YACH,IAAI,CAAC,OAAO;gBAAE,MAAM;QACtB,CAAC;QACD,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;SACzE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CACR,KAAa,EACb,OAA2B,EAC3B,MAAmB;QAEnB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACxE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACrE,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACvC,OAAO;YACL,GAAG,KAAK;YACR,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACpC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CACjD;SACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CACV,KAAa,EACb,OAA6B,EAC7B,MAAmB;QAEnB,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACvE,MAAM,OAAO,GAAG,IAAI,GAAG,CACrB,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAClD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CACvB,CACF,CAAC;QACF,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACxE,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CACf,KAAa,EACb,EAAU,EACV,MAAmB;QAEnB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QAC3D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,WAAW,CACxD,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,EAC5B,MAAM,CACP,CAAC;QACF,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACvC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CACX,KAAa,EACb,OAA6B,EAC7B,MAAmB;QAEnB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACxE,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC;QAC5B,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,IAAI,MAAM,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC;gBACH,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACzC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;QACH,CAAC,EAAE,GAAG,CAAC,CAAC;QACR,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC;YACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,CACzD,OAAO,EACP,KAAK,CAAC,MAAM,CACb,EAAE,CAAC;gBACF,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBACvC,MAAM,KAAK,CAAC,IAAI,KAAK,UAAU;oBAC7B,CAAC,CAAC;wBACE,GAAG,KAAK;wBACR,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACpC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC,CACnC;qBACF;oBACH,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO;wBACtB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC;wBACnC,CAAC,CAAC,KAAK,CAAC;YACd,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,aAAa,CAAC,IAAI,CAAC,CAAC;YACpB,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7C,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,CAAC,OAAO,CACZ,KAAa,EACb,MAAmB;QAEnB,4EAA4E;QAC5E,oEAAoE;QACpE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC/C,MAAM,WAAW,GAA8C,EAAE,CAAC;YAClE,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBACjC,IAAI,CAAC;oBACH,oEAAoE;oBACpE,oEAAoE;oBACpE,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc;wBAC/B,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;wBAC/D,CAAC,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS;4BAC9B,CAAC,CAAC,IAAI;4BACN,CAAC,CAAC;gCACE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;gCAC3B,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO;gCACjC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM;6BAChC,CAAC;oBACR,qEAAqE;oBACrE,uEAAuE;oBACvE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB;wBACvD,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG;4BACpC,OAAO,EAAE,KAAK,CAAC,OAAO;4BACtB,MAAM,EAAE,KAAK,CAAC,MAAM;yBACrB,CAAC;gBACN,CAAC;gBAAC,MAAM,CAAC;oBACP,2BAA2B;gBAC7B,CAAC;YACH,CAAC;YACD,uEAAuE;YACvE,4EAA4E;YAC5E,MAAM,OAAO,GAAG,IAAI,GAAG,CACrB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACpD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CACvB,CACF,CAAC;YACF,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;gBACvC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;oBAAE,OAAO,WAAW,CAAC,EAAE,CAAC,CAAC;YAC/C,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,EAAE,CAAC;YACnD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBAClC,MAAM,IAAI,GAAG,GAAG,EAAE;oBAChB,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpB,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;oBAC1C,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC;gBACF,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACrC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACd,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvD,IAAI,MAAM,CAAC,OAAO;oBAAE,IAAI,EAAE,CAAC;YAC7B,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,0FAA0F;IAC1F,KAAK,CAAC,MAAM,CACV,KAAa,EACb,OAA6B,EAC7B,MAAmB;QAEnB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;YACpE,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO;gBACrD,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACtD,IACE,MAAM,CAAC,IAAI,KAAK,OAAO;gBACvB,OAAO,CAAC,OAAO,CAAC,IAAI,CAClB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAC5D;gBAED,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACrE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,YAAY,CACrC,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAC1B,CAAC;YACF,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,OAAO;oBACjC,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;gBACrE,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ;oBAC/D,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAClD,CAAC;YACD,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YAC1C,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa;gBAC/B,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YACnE,MAAM,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACvC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YACpE,MAAM,iBAAiB,GAAG,OAAO;gBAC/B,EAAE,cAAc,EAAE;iBACjB,IAAI,CACH,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,IAAI,KAAK,cAAc;gBAC7B,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM;gBAC5B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAChE,CAAC;YACJ,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YAChE,MAAM,cAAc,GAAG;gBACrB,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;gBAChC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;aACjC,CAAC,IAAI,CACJ,CAAC,OAAO,EAAE,EAAE,CACV,OAAO,IAAI,OAAO,CAAC,MAAM;gBACzB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAC7D,CAAC;YACF,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,iBAAiB,IAAI,cAAc,CAAC,EAAE,CAAC;gBACjE,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO;oBACzB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;gBACrE,OAAO,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC5D,CAAC;YACD,IAAI,KAAK,KAAK,SAAS;gBACrB,IAAI,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;YACtE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACvE,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACvC,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CACd,KAAa,EACb,OAAiC;QAEjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CACrC,KAAK,EACL,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EACzB,IAAI,eAAe,EAAE,CAAC,MAAM,CAC7B,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACnE,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACvC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,MAAM,CACV,KAAa,EACb,OAA6B;QAE7B,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAChE,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAC3C,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,WAAW,CACf,KAAa,EACb,OAAkC;QAElC,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAChE,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,WAAW,CAAC,OAAO,CAAC,CAChD,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,EAAU;QACpC,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE;YAC/C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC;gBACpD,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC;aACzB,CAAC,CAAC;YACH,iBAAiB,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAChC,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IACD,KAAK,CAAC,WAAW,CACf,KAAa,EACb,OAAkC;QAElC,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAChE,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,WAAW,CAAC,OAAO,CAAC,CAChD,CAAC;IACJ,CAAC;IACO,KAAK,CAAC,cAAc,CAC1B,KAAa,EACb,EAAU,EACV,SAA+B;QAE/B,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,IAAI,EAAE;YAChC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC7C,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC5B,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACvC,OAAO,SAAS,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC;IACO,KAAK,CAAC,MAAM,CAAI,EAAU,EAAE,SAA2B;QAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACzD,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC;QACpB,CAAC;gBAAS,CAAC;YACT,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,IAAI;gBAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IACO,KAAK,CAAC,aAAa,CACzB,KAAa,EACb,EAAU,EACV,MAAmB,EACnB,OAA0B;QAE1B,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,kEAAkE;YAClE,yEAAyE;YACzE,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC5B,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;YAC5D,MAAM,IAAI,GAAG,IAAI,GAAG,CAClB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC,CAC5D,CAAC;YACF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;YAC/B,IAAI,OAAO,GAAG,EAAE,CAAC;YACjB,OAAO,IAAI,EAAE,CAAC;gBACZ,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;gBACtE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAClB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC9B,IAAI,GAAG,EAAE,MAAM,KAAK,UAAU,IAAI,GAAG,CAAC,eAAe,KAAK,SAAS;oBACjE,MAAM;gBACR,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YACxC,CAAC;YACD,IAAI,OAAO,KAAK,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;YACnE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IACO,KAAK,CAAC,aAAa,CACzB,KAAa,EACb,OAAuB,EACvB,MAAmB;QAEnB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CACrC,KAAK,EACL,MAAM,CACJ,OAAO,CAAC,IAAI,KAAK,SAAS;YACxB,CAAC,CAAC,OAAO,CAAC,SAAS;YACnB,CAAC,CAAC,OAAO,CAAC,eAAe,CAC5B,EACD,MAAM,CACP,CAAC;QACF,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO;YACxD,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,OAAO,MAAM,CAAC;IAChB,CAAC;IACO,UAAU,CAChB,KAAa,EACb,EAAU,EACV,MAAyB;QAEzB,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc;YAAE,OAAO,MAAM,CAAC;QACxD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAEzB,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,MAAM,GACV,IAAI,CAAC,KAAK,EAAE;aACT,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;aAClB,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE,KAAK,CAAC,EAAE,WAAW;YAChE,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC;QAC3C,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC;QACxC,OAAO;YACL,GAAG,MAAM;YACT,KAAK,EAAE;gBACL,GAAG,MAAM,CAAC,KAAK;gBACf,IAAI,EAAE;oBACJ,GAAG,IAAI;oBACP,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE;iBACS;aACnD;SACF,CAAC;IACJ,CAAC;CACF;AAED;;;;;;GAMG;AACH,SAAS,iBAAiB,CAAC,GAAY,EAAE,IAAY;IACnD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM;SACxB,IAAI,EAAE;SACN,MAAM,CACL,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU;QAC1C,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,KAAK,SAAS,CACnD,CAAC;IACJ,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,OAAO,OAAO,EAAE,CAAC;QACf,OAAO,GAAG,KAAK,CAAC;QAChB,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YACpC,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAAE,SAAS;YAC7C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;gBAAE,SAAS;YACzD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;gBAC5B,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACtD,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;AACH,CAAC"}
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
- * Every failure here sends the question anyway. The ceiling exists to keep a
557
- * weak model from drowning, not to be a door a browser cannot open: an
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 wanted = ((running && (approvals || questions)) || pending) &&
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.