@threadbase-sh/streamer 1.70.0 → 1.70.1
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/dist/api/handlers/sessions.handlers.d.ts +3 -17
- package/dist/api/handlers/sessions.handlers.d.ts.map +1 -1
- package/dist/cli.cjs +20 -13
- package/dist/cli.cjs.map +1 -1
- package/dist/index.cjs +20 -13
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +20 -13
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/services/prompts/promptRegistry.d.ts +1 -1
- package/dist/services/prompts/promptRegistry.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -9741,7 +9741,7 @@ var PromptRegistry = class {
|
|
|
9741
9741
|
this.maxRecordsPerSession = options.maxRecordsPerSession ?? PROMPT_MAX_RECORDS_PER_SESSION;
|
|
9742
9742
|
}
|
|
9743
9743
|
open(draft, adapter, promptId = this.createId()) {
|
|
9744
|
-
this.
|
|
9744
|
+
this.sweepExpired(draft.sessionId);
|
|
9745
9745
|
const held = this.byId.get(promptId);
|
|
9746
9746
|
if (held && (held.prompt.state === "open" || held.prompt.state === "updated")) {
|
|
9747
9747
|
throw new Error(`Prompt id already exists: ${promptId}`);
|
|
@@ -9843,17 +9843,17 @@ var PromptRegistry = class {
|
|
|
9843
9843
|
get(promptId) {
|
|
9844
9844
|
const entry = this.byId.get(promptId);
|
|
9845
9845
|
if (!entry) return null;
|
|
9846
|
-
this.
|
|
9846
|
+
this.sweepExpired(entry.prompt.sessionId);
|
|
9847
9847
|
return this.byId.has(promptId) ? copyPrompt(entry.prompt) : null;
|
|
9848
9848
|
}
|
|
9849
9849
|
hasActionable(sessionId) {
|
|
9850
|
-
this.
|
|
9850
|
+
this.sweepExpired(sessionId);
|
|
9851
9851
|
return [...this.bySession.get(sessionId)?.values() ?? []].some(
|
|
9852
9852
|
(entry) => entry.prompt.state === "open" || entry.prompt.state === "updated"
|
|
9853
9853
|
);
|
|
9854
9854
|
}
|
|
9855
9855
|
snapshot(sessionId) {
|
|
9856
|
-
this.
|
|
9856
|
+
this.sweepExpired(sessionId);
|
|
9857
9857
|
return {
|
|
9858
9858
|
type: "prompt_snapshot",
|
|
9859
9859
|
schemaVersion: PROMPT_SCHEMA_VERSION,
|
|
@@ -9868,7 +9868,7 @@ var PromptRegistry = class {
|
|
|
9868
9868
|
for (const entry of this.byId.values()) this.clearExpiration(entry);
|
|
9869
9869
|
}
|
|
9870
9870
|
answer(sessionId, answer) {
|
|
9871
|
-
this.
|
|
9871
|
+
this.sweepExpired(sessionId);
|
|
9872
9872
|
const entry = this.byId.get(answer.promptId);
|
|
9873
9873
|
if (!entry || entry.prompt.sessionId !== sessionId) {
|
|
9874
9874
|
return Promise.resolve({ ok: false, code: "prompt_not_found" });
|
|
@@ -9998,7 +9998,7 @@ var PromptRegistry = class {
|
|
|
9998
9998
|
if (!entry) throw new Error(`Unknown prompt: ${promptId}`);
|
|
9999
9999
|
return entry;
|
|
10000
10000
|
}
|
|
10001
|
-
|
|
10001
|
+
sweepExpired(sessionId) {
|
|
10002
10002
|
const now = this.now();
|
|
10003
10003
|
const session = this.bySession.get(sessionId);
|
|
10004
10004
|
if (!session) return;
|
|
@@ -11022,19 +11022,26 @@ var SessionHandlers = class {
|
|
|
11022
11022
|
json(res, 400, { error: "Missing input field" });
|
|
11023
11023
|
return;
|
|
11024
11024
|
}
|
|
11025
|
-
this.promptRegistry.
|
|
11025
|
+
this.promptRegistry.sweepExpired(sessionId);
|
|
11026
11026
|
const openPrompt = this.pendingPermission.has(sessionId) ? "permission" : this.pendingQuestions.has(sessionId) ? "question" : null;
|
|
11027
11027
|
if (openPrompt) {
|
|
11028
|
-
this.
|
|
11029
|
-
|
|
11030
|
-
|
|
11031
|
-
|
|
11032
|
-
|
|
11028
|
+
const pendingGate = openPrompt === "permission" ? this.pendingPermission.get(sessionId) : void 0;
|
|
11029
|
+
const promptState = pendingGate?.promptId !== void 0 && this.promptRegistry.get(pendingGate.promptId)?.state === "resolved" ? "answered" : "open";
|
|
11030
|
+
this.log.info(
|
|
11031
|
+
`[input.prompt_pending] ${sessionId.slice(0, 8)} kind=${openPrompt} state=${promptState}`,
|
|
11032
|
+
{
|
|
11033
|
+
event: "input.prompt_pending",
|
|
11034
|
+
sessionId,
|
|
11035
|
+
promptKind: openPrompt,
|
|
11036
|
+
promptState
|
|
11037
|
+
}
|
|
11038
|
+
);
|
|
11033
11039
|
json(res, 409, {
|
|
11034
11040
|
ok: false,
|
|
11035
11041
|
reason: "prompt_pending",
|
|
11036
11042
|
promptKind: openPrompt,
|
|
11037
|
-
|
|
11043
|
+
promptState,
|
|
11044
|
+
error: promptState === "answered" ? "Your answer was sent; wait for the prompt to close before sending text" : "A prompt is waiting for an answer; answer or dismiss it before sending text"
|
|
11038
11045
|
});
|
|
11039
11046
|
return;
|
|
11040
11047
|
}
|