@schlessera/brain-ui-server 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/dist/activity/digest.d.ts +29 -0
- package/dist/activity/digest.d.ts.map +1 -0
- package/dist/activity/digest.js +61 -0
- package/dist/activity/digest.js.map +1 -0
- package/dist/activity/notify.d.ts +62 -0
- package/dist/activity/notify.d.ts.map +1 -0
- package/dist/activity/notify.js +171 -0
- package/dist/activity/notify.js.map +1 -0
- package/dist/activity/push-sender.d.ts +63 -0
- package/dist/activity/push-sender.d.ts.map +1 -0
- package/dist/activity/push-sender.js +131 -0
- package/dist/activity/push-sender.js.map +1 -0
- package/dist/activity/query.d.ts +16 -0
- package/dist/activity/query.d.ts.map +1 -0
- package/dist/activity/query.js +128 -0
- package/dist/activity/query.js.map +1 -0
- package/dist/activity/recorder.d.ts +48 -0
- package/dist/activity/recorder.d.ts.map +1 -0
- package/dist/activity/recorder.js +205 -0
- package/dist/activity/recorder.js.map +1 -0
- package/dist/activity/runtime.d.ts +31 -0
- package/dist/activity/runtime.d.ts.map +1 -0
- package/dist/activity/runtime.js +109 -0
- package/dist/activity/runtime.js.map +1 -0
- package/dist/activity/span-sink.d.ts +22 -0
- package/dist/activity/span-sink.d.ts.map +1 -0
- package/dist/activity/span-sink.js +138 -0
- package/dist/activity/span-sink.js.map +1 -0
- package/dist/activity/store.d.ts +207 -0
- package/dist/activity/store.d.ts.map +1 -0
- package/dist/activity/store.js +440 -0
- package/dist/activity/store.js.map +1 -0
- package/dist/activity/stream.d.ts +45 -0
- package/dist/activity/stream.d.ts.map +1 -0
- package/dist/activity/stream.js +312 -0
- package/dist/activity/stream.js.map +1 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +16 -0
- package/dist/app.js.map +1 -1
- package/dist/cron/scheduler.d.ts.map +1 -1
- package/dist/cron/scheduler.js +20 -5
- package/dist/cron/scheduler.js.map +1 -1
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +32 -6
- package/dist/db/client.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/routes/activity.d.ts +20 -0
- package/dist/routes/activity.d.ts.map +1 -0
- package/dist/routes/activity.js +300 -0
- package/dist/routes/activity.js.map +1 -0
- package/dist/routes/push.d.ts +6 -0
- package/dist/routes/push.d.ts.map +1 -0
- package/dist/routes/push.js +73 -0
- package/dist/routes/push.js.map +1 -0
- package/dist/routes/sessions.d.ts.map +1 -1
- package/dist/routes/sessions.js +20 -4
- package/dist/routes/sessions.js.map +1 -1
- package/dist/ws/bridge.d.ts +2 -1
- package/dist/ws/bridge.d.ts.map +1 -1
- package/dist/ws/bridge.js +27 -2
- package/dist/ws/bridge.js.map +1 -1
- package/dist/ws/connection.d.ts.map +1 -1
- package/dist/ws/connection.js +9 -1
- package/dist/ws/connection.js.map +1 -1
- package/dist/ws/dispatch.d.ts.map +1 -1
- package/dist/ws/dispatch.js +11 -0
- package/dist/ws/dispatch.js.map +1 -1
- package/dist/ws/host.d.ts +16 -0
- package/dist/ws/host.d.ts.map +1 -1
- package/dist/ws/host.js +2 -0
- package/dist/ws/host.js.map +1 -1
- package/dist/ws/run-session.d.ts.map +1 -1
- package/dist/ws/run-session.js +21 -1
- package/dist/ws/run-session.js.map +1 -1
- package/migrations/007_activity.sql +114 -0
- package/migrations/008_push_subscriptions.sql +24 -0
- package/package.json +5 -3
- package/src/activity/digest.ts +92 -0
- package/src/activity/notify.ts +285 -0
- package/src/activity/push-sender.ts +215 -0
- package/src/activity/query.ts +160 -0
- package/src/activity/recorder.ts +261 -0
- package/src/activity/runtime.ts +141 -0
- package/src/activity/span-sink.ts +152 -0
- package/src/activity/store.ts +774 -0
- package/src/activity/stream.ts +366 -0
- package/src/app.ts +17 -0
- package/src/cron/scheduler.ts +28 -8
- package/src/db/client.ts +31 -6
- package/src/index.ts +22 -0
- package/src/routes/activity.ts +363 -0
- package/src/routes/push.ts +90 -0
- package/src/routes/sessions.ts +24 -4
- package/src/ws/bridge.ts +29 -2
- package/src/ws/connection.ts +9 -1
- package/src/ws/dispatch.ts +13 -0
- package/src/ws/host.ts +18 -0
- package/src/ws/run-session.ts +28 -1
package/src/ws/run-session.ts
CHANGED
|
@@ -2,6 +2,7 @@ import type { ChatImageAttachment, ClientEnvironment } from "@schlessera/brain-u
|
|
|
2
2
|
import type { WSContext } from "./clients.js";
|
|
3
3
|
import { withSessionId, withTurnScope } from "./frames.js";
|
|
4
4
|
import { makeBridge, emitTurnError } from "./bridge.js";
|
|
5
|
+
import { createTurnRecorder, type TurnRecorder } from "../activity/recorder.js";
|
|
5
6
|
import { resolveTurnTarget } from "./routing.js";
|
|
6
7
|
import type { QueuedFollowUp, RunningTurn } from "./turns.js";
|
|
7
8
|
import { queuedBytes, queuedFollowUpBytes } from "./turns.js";
|
|
@@ -114,7 +115,19 @@ export async function runSession(
|
|
|
114
115
|
}, host.turnTimeoutMs);
|
|
115
116
|
turn.timeoutHandle = timeoutHandle;
|
|
116
117
|
|
|
117
|
-
|
|
118
|
+
// One recorder per turn identity: a queued follow-up re-mints turnId
|
|
119
|
+
// and gets its own run in the activity record.
|
|
120
|
+
const recorder: TurnRecorder | undefined = host.activity
|
|
121
|
+
? createTurnRecorder(
|
|
122
|
+
{
|
|
123
|
+
store: host.activity.store,
|
|
124
|
+
onWrite: () => host.activity!.stream.pump(),
|
|
125
|
+
log: host.log,
|
|
126
|
+
},
|
|
127
|
+
{ turnId: turn.turnId, sessionId: turn.sessionId }
|
|
128
|
+
)
|
|
129
|
+
: undefined;
|
|
130
|
+
const bridge = makeBridge(host, turn, text, backend.id, recorder);
|
|
118
131
|
const startedAt = Date.now();
|
|
119
132
|
host.reportTurnStarted(turn);
|
|
120
133
|
try {
|
|
@@ -139,8 +152,22 @@ export async function runSession(
|
|
|
139
152
|
} else {
|
|
140
153
|
host.reportTurnCompleted(turn, Date.now() - startedAt);
|
|
141
154
|
}
|
|
155
|
+
// Terminal precedence: cancellation and timeout are host-owned facts;
|
|
156
|
+
// otherwise the recorder refines from the buffered result frame.
|
|
157
|
+
recorder?.finish(
|
|
158
|
+
turn.cancelled
|
|
159
|
+
? "cancelled"
|
|
160
|
+
: abortController.signal.aborted
|
|
161
|
+
? "timeout"
|
|
162
|
+
: turn.lastResult === "error"
|
|
163
|
+
? "error"
|
|
164
|
+
: "success"
|
|
165
|
+
);
|
|
142
166
|
} catch (err) {
|
|
143
167
|
emitTurnError(host, turn, err);
|
|
168
|
+
recorder?.finish(
|
|
169
|
+
turn.cancelled ? "cancelled" : abortController.signal.aborted ? "timeout" : "error"
|
|
170
|
+
);
|
|
144
171
|
} finally {
|
|
145
172
|
clearTimeout(timeoutHandle);
|
|
146
173
|
}
|