@happyvertical/smrt-chat 0.57.36 → 0.57.38
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/agents/tool-loop.md +60 -6
- package/dist/assistant-turn-events.d.ts +12 -4
- package/dist/assistant-turn-events.d.ts.map +1 -1
- package/dist/assistant-turn.d.ts +29 -1
- package/dist/assistant-turn.d.ts.map +1 -1
- package/dist/chunks/{ChatService-D0XuiCTk.js → ChatService-BGBAqmZq.js} +14 -3
- package/dist/chunks/ChatService-BGBAqmZq.js.map +1 -0
- package/dist/chunks/assistant-turn-events-BbZUf-Ju.js.map +1 -1
- package/dist/chunks/chat-stream-BHUXKIzE.js +2689 -0
- package/dist/chunks/chat-stream-BHUXKIzE.js.map +1 -0
- package/dist/collections/ChatMessageCollection.d.ts +5 -1
- package/dist/collections/ChatMessageCollection.d.ts.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -5
- package/dist/index.js.map +1 -1
- package/dist/internal/agent-runtime.js +1 -1
- package/dist/manifest.json +2 -1
- package/dist/persona-conversation.d.ts +5 -0
- package/dist/persona-conversation.d.ts.map +1 -1
- package/dist/services/ChatService.d.ts +12 -1
- package/dist/services/ChatService.d.ts.map +1 -1
- package/dist/smrt-knowledge.json +5 -5
- package/dist/svelte/components/assistant/create-assistant-dock-controller.svelte.d.ts +6 -2
- package/dist/svelte/components/assistant/create-assistant-dock-controller.svelte.d.ts.map +1 -1
- package/dist/svelte/components/assistant/create-assistant-dock-controller.svelte.js +4 -1
- package/dist/sveltekit.d.ts +13 -2
- package/dist/sveltekit.d.ts.map +1 -1
- package/dist/sveltekit.js +7 -3
- package/dist/sveltekit.js.map +1 -1
- package/dist/tool-loop.d.ts +47 -9
- package/dist/tool-loop.d.ts.map +1 -1
- package/dist/voice.d.ts +4 -0
- package/dist/voice.d.ts.map +1 -1
- package/package.json +21 -21
- package/dist/chunks/ChatService-D0XuiCTk.js.map +0 -1
- package/dist/chunks/chat-stream-D6B3InMe.js +0 -2601
- package/dist/chunks/chat-stream-D6B3InMe.js.map +0 -1
package/agents/tool-loop.md
CHANGED
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
(`DEFAULT_MAX_STEPS = 8`; `initialSteps` counts earlier legs of a resumed
|
|
11
11
|
turn). `maxTotalTokens` (with `initialTokens`) and `deadline` end the turn
|
|
12
12
|
early with `stoppedReason: 'budget'`.
|
|
13
|
-
- **Forced final call (#4378).** At the cap,
|
|
14
|
-
next round is offered no tools (`tools: undefined`, `toolChoice: 'none'`),
|
|
13
|
+
- **Forced final call (#4378).** At the cap, once the budget is spent, or
|
|
14
|
+
after repeated calls (below, #4391), the next round is offered no tools (`tools: undefined`, `toolChoice: 'none'`),
|
|
15
15
|
and any tool calls the model still emits are discarded. That call alone gets
|
|
16
16
|
the fixed `TOOL_LOOP_ANSWER_NOW_INSTRUCTION` as a temporary `user`
|
|
17
17
|
instruction. If the transcript already ends with a user turn, it is added
|
|
@@ -37,8 +37,8 @@
|
|
|
37
37
|
`TimeoutError`, or an `AbortError` the caller's signal did not cause) ends
|
|
38
38
|
`stoppedReason: 'timeout'` instead of failing or passing as an empty
|
|
39
39
|
success; other errors still throw. When the final round was the forced
|
|
40
|
-
no-tools call, `capReason` (`max_steps` | `budget`
|
|
41
|
-
alongside `empty`/`timeout`.
|
|
40
|
+
no-tools call, `capReason` (`max_steps` | `budget` | `repeated_calls`)
|
|
41
|
+
keeps that cause alongside `empty`/`timeout`.
|
|
42
42
|
- **Quiet stream ends (older SDKs).** SDKs <= 0.108.0 can end a timed-out
|
|
43
43
|
stream quietly: no text, no tool calls, no finish reason. That shape is a
|
|
44
44
|
suspected timeout only for an AI boundary that has already reported a
|
|
@@ -61,10 +61,18 @@
|
|
|
61
61
|
`'Done.'`. The plain chat-stream path retries a blank stream once, then
|
|
62
62
|
sends the fallback, or `CHAT_STREAM_TIMEOUT_ERROR` only under the
|
|
63
63
|
quiet-end rule above.
|
|
64
|
+
- **Provider errors (#4454).** A model call that throws is not answered by
|
|
65
|
+
default (an `error` event, nothing stored). `runAssistantTurn` /
|
|
66
|
+
`mountAssistantRoutes` take `providerErrorFallback`: text, or
|
|
67
|
+
`(code, error) => text | undefined` (blank or `undefined` declines and the
|
|
68
|
+
turn fails as before). The text is stored as the assistant row with
|
|
69
|
+
`metadata.fallback: 'provider_error'` (so `isFallbackReply` is true and
|
|
70
|
+
history skips it), the turn ends `stoppedReason: 'provider_error'`, and the
|
|
71
|
+
error still goes to `onError`. A cancelled turn is never answered this way.
|
|
64
72
|
- **Stored metadata.** Every authored assistant reply carries
|
|
65
73
|
`replyMetadataFor(result, reply)`: `metadata.stoppedReason` (enum),
|
|
66
74
|
`metadata.capReason` when set, and `metadata.fallback` (`empty` |
|
|
67
|
-
`timeout`) when the content is the fallback. Hosts read the stop reason
|
|
75
|
+
`timeout` | `provider_error`) when the content is the fallback. Hosts read the stop reason
|
|
68
76
|
from `turn.result.stoppedReason` (persona), `AssistantTurnResult` / the
|
|
69
77
|
`done` event's `stoppedReason` and `capReason` (assistant), or the stored
|
|
70
78
|
message's metadata. `isFallbackReply(message)` tells a fallback apart; the
|
|
@@ -78,8 +86,18 @@
|
|
|
78
86
|
templates (Gemma, Anthropic) reject. Hosts should hide feedback
|
|
79
87
|
controls (thumbs, corrections) on a message where `isFallbackReply` is
|
|
80
88
|
true: there is no model answer to rate.
|
|
89
|
+
- **History budget (#4458).** `historyLimit` counts replayed turns, not
|
|
90
|
+
raw rows, so persisted tool rows (`authorInvocation`, failed calls) never
|
|
91
|
+
take a slot. The assistant route and voice pass `roles` to
|
|
92
|
+
`getThreadMessages` / `getRoomMessages`, which filter in SQL: the read
|
|
93
|
+
returns at most `limit` rows whatever the thread holds. A fallback reply
|
|
94
|
+
is one replayed turn (its marker). The chat-stream paths cap the
|
|
95
|
+
browser's array at `MAX_CHAT_STREAM_MESSAGES` kept messages, scanning
|
|
96
|
+
back at most 10× that many entries. Threads holding only replayed roles
|
|
97
|
+
see the same history as before.
|
|
81
98
|
- **Dock.** The `done` event's `capReason` reaches the dock, which offers
|
|
82
|
-
Continue for a capped turn even when it ended `empty`
|
|
99
|
+
Continue for a `max_steps`/`budget` capped turn even when it ended `empty`
|
|
100
|
+
or `timeout` (never for `repeated_calls`, #4391).
|
|
83
101
|
- **Reasoning.** `AIResponse.reasoning` (newer SDKs, sdk#1459) is read
|
|
84
102
|
defensively, capped at `MAX_TOOL_LOOP_REASONING_CHARS` code points, passed
|
|
85
103
|
to `onReasoning` (forwarded by both callers; a throw is ignored) and
|
|
@@ -175,6 +193,42 @@ second copy of the result.
|
|
|
175
193
|
resume leg starts a fresh cache).
|
|
176
194
|
- Deduped calls count toward the step cap: a round of repeats is still a
|
|
177
195
|
round, so a model stuck repeating a call still stops at `maxSteps`.
|
|
196
|
+
- The note points at the earlier result and says to change the arguments
|
|
197
|
+
(for example, add a filter), because a repeat returns the same result.
|
|
198
|
+
|
|
199
|
+
## Repeated calls end the tool phase (#4391)
|
|
200
|
+
|
|
201
|
+
A model stuck on one call (an unfiltered count, sent again and again) used
|
|
202
|
+
to burn every step to `maxSteps`. Now, once a single dedupe key (same tool,
|
|
203
|
+
same canonical arguments) has been deduped `maxRepeatedCalls` times in one
|
|
204
|
+
`runToolLoop` call, the rest of that round still runs — every tool call gets
|
|
205
|
+
its tool result — and the next model call is the forced no-tools call with
|
|
206
|
+
`TOOL_LOOP_ANSWER_NOW_INSTRUCTION` plus, on this path only (and its blank
|
|
207
|
+
retry), `TOOL_LOOP_REPEATED_CALLS_INSTRUCTION`: if the results do not match
|
|
208
|
+
what was asked (a total where a filtered count was asked), say the figure
|
|
209
|
+
could not be got rather than presenting the result as the answer.
|
|
210
|
+
|
|
211
|
+
- **Option.** `maxRepeatedCalls` on `runToolLoop`, `runAssistantTurn`,
|
|
212
|
+
`runPersonaConversationTurn` and `mountAssistantRoutes`. Default
|
|
213
|
+
`DEFAULT_MAX_REPEATED_CALLS` (2); `0` (or less) turns it off; otherwise it
|
|
214
|
+
is floored and capped at `MAX_REPEATED_CALLS_LIMIT` (16). Non-numbers use
|
|
215
|
+
the default.
|
|
216
|
+
- **What counts.** Only deduped repeats, counted per key: a different
|
|
217
|
+
argument is a different key, mutating and other non-dedupable calls never
|
|
218
|
+
count, and a non-read-only call clears the counts with the dedupe cache.
|
|
219
|
+
Counts live inside one `runToolLoop` call; an assistant resume leg starts
|
|
220
|
+
at zero.
|
|
221
|
+
- **Report.** `stoppedReason: 'repeated_calls'` and `capReason:
|
|
222
|
+
'repeated_calls'`; `capReason` stays when the forced call then ends `empty`
|
|
223
|
+
or `timeout`. When the step cap or budget is reached in the same round,
|
|
224
|
+
`repeated_calls` wins: more steps would only repeat the call. Stored
|
|
225
|
+
replies carry it in `metadata.stoppedReason`/`metadata.capReason`, like the
|
|
226
|
+
other caps; the `done` event carries both.
|
|
227
|
+
- **Dock: no Continue.** The dock records `run.stoppedReason:
|
|
228
|
+
'repeated_calls'` but does not offer Continue (`waitingFor` stays null):
|
|
229
|
+
the model already had the result it kept asking for, so another leg would
|
|
230
|
+
repeat the call. Continue stays for `max_steps` and `budget` only. Hosts
|
|
231
|
+
with their own UI should do the same.
|
|
178
232
|
- The audit sink gets `action: 'chat.tool_call_deduped'` (not a fresh
|
|
179
233
|
execution or failure); the persona path's tool row carries
|
|
180
234
|
`toolCallData.deduped: true`.
|
|
@@ -86,11 +86,18 @@ export interface AssistantClientToolResult {
|
|
|
86
86
|
/** Why a turn finished. */
|
|
87
87
|
export type AssistantTurnStopReason = 'stop' | 'max_steps'
|
|
88
88
|
/** The turn's token or time budget ran out (`maxTurnTokens`/`maxTurnMs`). */
|
|
89
|
-
| 'budget'
|
|
89
|
+
| 'budget'
|
|
90
|
+
/**
|
|
91
|
+
* One read-only call was repeated `maxRepeatedCalls` times; the model
|
|
92
|
+
* answered without tools (#4391). Not continuable: repeating won't help.
|
|
93
|
+
*/
|
|
94
|
+
| 'repeated_calls' | 'no_tools' | 'cancelled'
|
|
90
95
|
/** The model returned no answer, even after one retry; the reply is the fallback (#4379). */
|
|
91
96
|
| 'empty'
|
|
92
97
|
/** A model call timed out; the reply is the fallback (#4379). */
|
|
93
|
-
| 'timeout'
|
|
98
|
+
| 'timeout'
|
|
99
|
+
/** A model call failed and the host's `providerErrorFallback` answered (#4454). */
|
|
100
|
+
| 'provider_error';
|
|
94
101
|
/** One event of a streamed assistant turn. `M` is the host's message shape. */
|
|
95
102
|
export type AssistantTurnEvent<M = Record<string, unknown>> = {
|
|
96
103
|
type: 'status';
|
|
@@ -114,9 +121,10 @@ export type AssistantTurnEvent<M = Record<string, unknown>> = {
|
|
|
114
121
|
stoppedReason: AssistantTurnStopReason;
|
|
115
122
|
/**
|
|
116
123
|
* Why tools were withdrawn on the final round, kept when the turn then
|
|
117
|
-
* ends `empty` or `timeout` (#4379).
|
|
124
|
+
* ends `empty` or `timeout` (#4379). `repeated_calls` (#4391) is not
|
|
125
|
+
* continuable; `max_steps` and `budget` are.
|
|
118
126
|
*/
|
|
119
|
-
capReason?: 'max_steps' | 'budget';
|
|
127
|
+
capReason?: 'max_steps' | 'budget' | 'repeated_calls';
|
|
120
128
|
} | {
|
|
121
129
|
type: 'error';
|
|
122
130
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assistant-turn-events.d.ts","sourceRoot":"","sources":["../src/assistant-turn-events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,oEAAoE;AACpE,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAEzE;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,oBAAoB,CAAC;IAC5B,qEAAqE;IACrE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAwB;AACxB,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAExD,gFAAgF;AAChF,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,OAAO,GAAG,aAAa,CAAC;AAEnE,mCAAmC;AACnC,MAAM,MAAM,iBAAiB,GACzB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAClC;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,qBAAqB,CAAC;CACjC,GACD;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEN,mDAAmD;AACnD,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,4EAA4E;IAC5E,MAAM,EAAE,mBAAmB,CAAC;CAC7B;AAED,6EAA6E;AAC7E,MAAM,WAAW,8BAA8B;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,MAAM,EAAE,mBAAmB,CAAC;CAC7B;AAED,mEAAmE;AACnE,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,2BAA2B;AAC3B,MAAM,MAAM,uBAAuB,GAC/B,MAAM,GACN,WAAW;AACb,6EAA6E;GAC3E,QAAQ,
|
|
1
|
+
{"version":3,"file":"assistant-turn-events.d.ts","sourceRoot":"","sources":["../src/assistant-turn-events.ts"],"names":[],"mappings":"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"}
|
package/dist/assistant-turn.d.ts
CHANGED
|
@@ -203,6 +203,12 @@ export interface AssistantTurnOptions<M = Record<string, unknown>> {
|
|
|
203
203
|
/** Scope for `continuations` (e.g. the thread id). */
|
|
204
204
|
continuationKey?: string;
|
|
205
205
|
maxSteps?: number;
|
|
206
|
+
/**
|
|
207
|
+
* Deduped repeats of one read-only call that end the tool phase (#4391;
|
|
208
|
+
* forwarded to `runToolLoop`). Default `DEFAULT_MAX_REPEATED_CALLS` (2);
|
|
209
|
+
* `0` turns it off. Counted per leg: a resume starts at zero.
|
|
210
|
+
*/
|
|
211
|
+
maxRepeatedCalls?: number;
|
|
206
212
|
/**
|
|
207
213
|
* Token budget for the whole turn, across every browser round trip. Once
|
|
208
214
|
* spent, the model gets one last round without tools to answer, and the
|
|
@@ -230,6 +236,18 @@ export interface AssistantTurnOptions<M = Record<string, unknown>> {
|
|
|
230
236
|
* `DEFAULT_EMPTY_ANSWER_FALLBACK`. Replaces the old `'Done.'`.
|
|
231
237
|
*/
|
|
232
238
|
emptyAnswerFallback?: string;
|
|
239
|
+
/**
|
|
240
|
+
* Reply stored when a model call throws (#4454): a provider failure such
|
|
241
|
+
* as an `AIError` with code `API_ERROR`. A string, or a function of the
|
|
242
|
+
* error's `code` (and the error itself) returning the text; a blank or
|
|
243
|
+
* `undefined` result declines, and the turn fails as it does with no option
|
|
244
|
+
* set. The reply is stored like `emptyAnswerFallback`, with
|
|
245
|
+
* `metadata.fallback: 'provider_error'`, and the turn ends with
|
|
246
|
+
* `stoppedReason: 'provider_error'`. The error is still passed to
|
|
247
|
+
* `onError`. Unset: an `error` event and nothing stored. A cancelled turn
|
|
248
|
+
* and the turn's own user-facing errors are never answered this way.
|
|
249
|
+
*/
|
|
250
|
+
providerErrorFallback?: ProviderErrorFallback;
|
|
233
251
|
/**
|
|
234
252
|
* Host opt-in: answer from the model's reasoning text when the final round
|
|
235
253
|
* and its retry are blank (forwarded, see `ToolLoopOptions`). Default false.
|
|
@@ -281,11 +299,21 @@ export interface AssistantTurnState {
|
|
|
281
299
|
resumedFrom: string | null;
|
|
282
300
|
continuationId?: string;
|
|
283
301
|
}
|
|
302
|
+
/** `tool` of a step for a call whose name is not a registered tool (#4453). */
|
|
303
|
+
export declare const UNKNOWN_TOOL_STEP_NAME = "unknown_tool";
|
|
304
|
+
/** `label` of that step; the model's requested name is never echoed. */
|
|
305
|
+
export declare const UNKNOWN_TOOL_STEP_LABEL = "Unknown tool";
|
|
306
|
+
/**
|
|
307
|
+
* Host text for a failed model call (see
|
|
308
|
+
* {@link AssistantTurnOptions.providerErrorFallback}). The function gets the
|
|
309
|
+
* error's string `code` when it has one.
|
|
310
|
+
*/
|
|
311
|
+
export type ProviderErrorFallback = string | ((code: string | undefined, error: unknown) => string | undefined);
|
|
284
312
|
/** What {@link runAssistantTurn} returns when its generator completes. */
|
|
285
313
|
export interface AssistantTurnResult {
|
|
286
314
|
stoppedReason: AssistantTurnStopReason | 'client_tools' | 'error';
|
|
287
315
|
/** Why tools were withdrawn on the final round, when they were (#4379). */
|
|
288
|
-
capReason?: 'max_steps' | 'budget';
|
|
316
|
+
capReason?: 'max_steps' | 'budget' | 'repeated_calls';
|
|
289
317
|
content: string;
|
|
290
318
|
loop?: ToolLoopResult;
|
|
291
319
|
/** The turn's origin message (from the continuation on a resume). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assistant-turn.d.ts","sourceRoot":"","sources":["../src/assistant-turn.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"assistant-turn.d.ts","sourceRoot":"","sources":["../src/assistant-turn.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACd,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAEV,kBAAkB,EAClB,uBAAuB,EACxB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAGL,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAE1B,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAK1B,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,aAAa,EAEnB,MAAM,gBAAgB,CAAC;AAExB,iEAAiE;AACjE,eAAO,MAAM,2BAA2B,QAAiB,CAAC;AAE1D;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,CAAC,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,gDAAgD;IAChD,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,mDAAmD;IACnD,WAAW,EAAE,oBAAoB,EAAE,CAAC;IACpC,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,WAAW,0BAA0B;IACzC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1E,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAC;IACzE;;;;OAIG;IACH,GAAG,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD;;;;;;;OAOG;IACH,OAAO,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClD;AAED,wEAAwE;AACxE,eAAO,MAAM,yBAAyB,QAAY,CAAC;AA6BnD,2DAA2D;AAC3D,wBAAgB,6BAA6B,CAC3C,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CAAO,GACnD,0BAA0B,CA+B5B;AAED,+EAA+E;AAC/E,MAAM,WAAW,uBAAuB;IACtC,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7C,oBAAoB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvE;AAED,4EAA4E;AAC5E,eAAO,MAAM,2BAA2B,6BAA6B,CAAC;AAEtE;;;;;;;;;;;;GAYG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EACH,uBAAuB,GACvB,CAAC,MAAM,OAAO,CAAC,uBAAuB,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC,EAC/D,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CAAO,GACnD,0BAA0B,CAmE5B;AAED,wEAAwE;AACxE,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,WAAW,GAAG,aAAa,GAAG,MAAM,CAAC;IACnD,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC/C;AAED,6EAA6E;AAC7E,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,KAAK,iBAAiB,GAAG,IAAI,CAAC;IAC5E;;;;;;;OAOG;IACH,sBAAsB,CAAC,EAAE,CACvB,UAAU,EAAE,cAAc,KACvB,iBAAiB,GAAG,IAAI,CAAC;CAC/B;AAkBD,4CAA4C;AAC5C,MAAM,WAAW,oBAAoB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC/D,EAAE,EAAE,WAAW,CAAC;IAChB,kEAAkE;IAClE,SAAS,EAAE,gBAAgB,CAAC;IAC5B,EAAE,CAAC,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sDAAsD;IACtD,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,MAAM,CAAC,EAAE;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,qBAAqB,EAAE,CAAA;KAAE,CAAC;IACtE;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,OAAO,CAAC;IACjD,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IACvB,0DAA0D;IAC1D,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B,oFAAoF;IACpF,WAAW,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACrC,mEAAmE;IACnE,aAAa,CAAC,EAAE,0BAA0B,CAAC;IAC3C,sDAAsD;IACtD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;IACvC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;;;;;;OAUG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;OAIG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;IAC7C,8DAA8D;IAC9D,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IACzC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2EAA2E;IAC3E,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,CAAC,CAAC;IAC3C;;;;OAIG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;IACxE,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAC;IACxB;;;OAGG;IACH,OAAO,CAAC,EAAE,wBAAwB,CAAC;IACnC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,+EAA+E;AAC/E,eAAO,MAAM,sBAAsB,iBAAiB,CAAC;AACrD,wEAAwE;AACxE,eAAO,MAAM,uBAAuB,iBAAiB,CAAC;AAEtD;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAC7B,MAAM,GACN,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,OAAO,KAAK,MAAM,GAAG,SAAS,CAAC,CAAC;AAsBvE,0EAA0E;AAC1E,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,uBAAuB,GAAG,cAAc,GAAG,OAAO,CAAC;IAClE,2EAA2E;IAC3E,SAAS,CAAC,EAAE,WAAW,GAAG,QAAQ,GAAG,gBAAgB,CAAC;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,qEAAqE;IACrE,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAaD,+DAA+D;AAC/D,eAAO,MAAM,4BAA4B,wDACc,CAAC;AAExD;;;;;GAKG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;IAG7C,QAAQ,CAAC,IAAI,EAAE,MAAM;gBADrB,OAAO,EAAE,MAAM,EACN,IAAI,EAAE,MAAM;CAKxB;AAED,uDAAuD;AACvD,MAAM,MAAM,wBAAwB,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;AAuBhE;;;;GAIG;AACH,wBAAuB,gBAAgB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjE,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAC/B,cAAc,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAsE5D;AA2dD,sEAAsE;AACtE,eAAO,MAAM,mCAAmC,QAAS,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,cAAc,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,EAC5D,OAAO,GAAE;IACP,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,6EAA6E;IAC7E,OAAO,CAAC,EAAE,wBAAwB,CAAC;IACnC;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB,GACL,QAAQ,CA2DV"}
|
|
@@ -876,6 +876,9 @@ var ChatMessageCollection = class extends SmrtCollection {
|
|
|
876
876
|
* lookup (S5 #1392): room ids are not globally unique, so a roomId-only read
|
|
877
877
|
* could surface another tenant's messages for a same-id room. The caller's
|
|
878
878
|
* membership gate is tenant-scoped, so the read MUST be too.
|
|
879
|
+
*
|
|
880
|
+
* `roles` (non-empty) keeps only those roles, in SQL, so `limit` counts
|
|
881
|
+
* them alone (#4458); omitted or empty reads every role.
|
|
879
882
|
*/
|
|
880
883
|
async getByRoom(roomId, tenantId, options) {
|
|
881
884
|
const where = {
|
|
@@ -884,6 +887,7 @@ var ChatMessageCollection = class extends SmrtCollection {
|
|
|
884
887
|
isDeleted: false,
|
|
885
888
|
threadId: null
|
|
886
889
|
};
|
|
890
|
+
if (options?.roles?.length) where.role = [...options.roles];
|
|
887
891
|
if (options?.before) {
|
|
888
892
|
const cursorMsg = await this.get({
|
|
889
893
|
id: options.before,
|
|
@@ -2005,7 +2009,8 @@ var ChatService = class ChatService {
|
|
|
2005
2009
|
await this.#requireActiveMembership(params.roomId, params.actorProfileId, params.tenantId);
|
|
2006
2010
|
return this.#messages.getByRoom(params.roomId, params.tenantId, {
|
|
2007
2011
|
limit: params.limit,
|
|
2008
|
-
before: params.before
|
|
2012
|
+
before: params.before,
|
|
2013
|
+
roles: params.roles
|
|
2009
2014
|
});
|
|
2010
2015
|
}
|
|
2011
2016
|
/**
|
|
@@ -2094,6 +2099,11 @@ var ChatService = class ChatService {
|
|
|
2094
2099
|
* the thread's room. Messages are returned oldest-first (chronological).
|
|
2095
2100
|
* Replaces direct `messages.list({ where: { threadId } })` reach-ins that
|
|
2096
2101
|
* could read another tenant's/room's thread history by raw id.
|
|
2102
|
+
*
|
|
2103
|
+
* `roles` (non-empty) keeps only those roles, in SQL, so `limit` counts
|
|
2104
|
+
* them alone: a history builder passes the roles it replays and gets the
|
|
2105
|
+
* newest `limit` of those, however many tool rows sit between (#4458).
|
|
2106
|
+
* Omitted or empty reads every role.
|
|
2097
2107
|
*/
|
|
2098
2108
|
async getThreadMessages(params) {
|
|
2099
2109
|
const thread = await this.#threads.get({
|
|
@@ -2106,7 +2116,8 @@ var ChatService = class ChatService {
|
|
|
2106
2116
|
where: {
|
|
2107
2117
|
tenantId: params.tenantId,
|
|
2108
2118
|
threadId: params.threadId,
|
|
2109
|
-
isDeleted: false
|
|
2119
|
+
isDeleted: false,
|
|
2120
|
+
...params.roles?.length ? { role: [...params.roles] } : {}
|
|
2110
2121
|
},
|
|
2111
2122
|
orderBy: "created_at DESC",
|
|
2112
2123
|
limit: params.limit
|
|
@@ -2250,4 +2261,4 @@ function sendAgentReply(service, params) {
|
|
|
2250
2261
|
//#endregion
|
|
2251
2262
|
export { sendAgentReply as a, ChatThread as c, ChatParticipant as d, ChatMessage as f, clientRequestMessageId as i, ChatRoom as l, ChatService as n, VoiceSessionCollection as o, AgentSession as p, ChatService_exports as r, VoiceSession as s, ChatClientRequestConflictError as t, ChatReaction as u };
|
|
2252
2263
|
|
|
2253
|
-
//# sourceMappingURL=ChatService-
|
|
2264
|
+
//# sourceMappingURL=ChatService-BGBAqmZq.js.map
|