@ouispec/agent-react 0.4.0 → 0.8.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 +2 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/provider/AgentProvider.d.ts +2 -0
- package/dist/provider/AgentProvider.d.ts.map +1 -1
- package/dist/provider/AgentProvider.js +266 -20
- package/dist/provider/AgentProvider.js.map +1 -1
- package/dist/provider/attachments.d.ts +77 -0
- package/dist/provider/attachments.d.ts.map +1 -0
- package/dist/provider/attachments.js +213 -0
- package/dist/provider/attachments.js.map +1 -0
- package/dist/provider/stored-messages.d.ts.map +1 -1
- package/dist/provider/stored-messages.js +16 -3
- package/dist/provider/stored-messages.js.map +1 -1
- package/dist/provider/types.d.ts +55 -5
- package/dist/provider/types.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -7,6 +7,8 @@ npm install @ouispec/agent-react
|
|
|
7
7
|
```
|
|
8
8
|
|
|
9
9
|
- `AgentProvider` and `useAgent`: the conversation, its messages and tool calls, sending a turn, and the turn's stream. The socket is a seam (`realtime.createSocket`), so a product supplies its own connection and credentials.
|
|
10
|
+
- `stopTurn`, `isStopping` and `acceptedTurnId` on `useAgent`: the person's Stop for the turn in progress, and the turn whose UI requests the tab runs now (give it to the tab's OUI runtime: `accept: acceptCurrentTurn(agent.acceptedTurnId)`). A message sent while a turn runs supersedes it; a stopped turn's message keeps what it had said, marked `stopped`.
|
|
11
|
+
- `attachments` on `useAgent`: the files on the message being written. `attach(files)` checks each against the platform's limits and uploads it at once through `config.attachments.upload` (into the conversation, made then if there is none yet); each item shows its progress, or why it was refused; `remove(key)` cancels an upload or removes the file. `sendMessage` waits for uploads still running and sends the ready files' references; `waitingToSend` is true meanwhile. It sends nothing, and resolves `notSent: { reason, content }` so the composer keeps the draft, when a file on the message is refused, when a send already waits, or when the conversation changes or `stopTurn` gives the waiting send up. A file uploaded for a message that is not sent is removed through `config.attachments.remove`. A message's files are on `AgentMessage.attachments`.
|
|
10
12
|
- `ApprovalCard`: shows what an irreversible call will do and takes the person's decision. It can't be bound to the agent: only a person's click approves.
|
|
11
13
|
- `useFeedback`, `storedToAgentMessages`, and the view annotations.
|
|
12
14
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
export { AgentProvider, useAgent } from './provider/AgentProvider.js';
|
|
1
|
+
export { AgentProvider, useAgent, STOP_CONFIRM_TIMEOUT_MS } from './provider/AgentProvider.js';
|
|
2
2
|
export { useFeedback } from './hooks/useFeedback.js';
|
|
3
3
|
export { storedToAgentMessages } from './provider/stored-messages.js';
|
|
4
|
+
export type { ComposerAttachment, ComposerAttachmentsState, NotSentReason } from './provider/attachments.js';
|
|
4
5
|
export { ApprovalCard } from './approvals/ApprovalCard.js';
|
|
5
6
|
export type { ApprovalCardProps, ApprovalCardParts, ApprovalCardFrameProps, ApprovalCardButtonProps, ApprovalCardLabels, } from './approvals/ApprovalCard.js';
|
|
6
|
-
export type { AgentApprovalRequest, AgentClientConfig, AgentContextValue, AgentHistoryState, AgentMessage, AgentToolCallState, AgentDebugState, AgentSessionRecord, DebugLogEntry, DebugLogLevel, DebugLogNamespace, } from './provider/types.js';
|
|
7
|
+
export type { AgentApprovalRequest, AgentClientConfig, AgentContextValue, AgentHistoryState, AgentMessage, AgentToolCallState, AgentDebugState, AgentSessionRecord, DebugLogEntry, DebugLogLevel, DebugLogNamespace, SendMessageResult, } from './provider/types.js';
|
|
7
8
|
export { AgentEntityComponent, defineAgentEntity, AgentEntity, asAgentEntity, useViewAnnotation, } from './entity/index.js';
|
|
8
9
|
export type { AgentEntityRenderContext, DefineAgentEntityConfig, AgentEntityProps, AgentEntityChildContext, AsAgentEntityConfig, InjectedAgentEntityProps, UseViewAnnotationOptions, UseViewAnnotationReturn, } from './entity/index.js';
|
|
9
10
|
export { AnnotationRegistry } from './annotations/AnnotationRegistry.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAE/F,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,YAAY,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE7G,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,6BAA6B,CAAC;AAErC,YAAY,EACV,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,wBAAwB,EACxB,uBAAuB,EACvB,gBAAgB,EAChB,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,YAAY,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { AgentProvider, useAgent } from './provider/AgentProvider.js';
|
|
1
|
+
export { AgentProvider, useAgent, STOP_CONFIRM_TIMEOUT_MS } from './provider/AgentProvider.js';
|
|
2
2
|
export { useFeedback } from './hooks/useFeedback.js';
|
|
3
3
|
export { storedToAgentMessages } from './provider/stored-messages.js';
|
|
4
4
|
// Approvals (ADR-0228): the card where the person approves an irreversible call.
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAE/F,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAGtE,iFAAiF;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAwB3D,8BAA8B;AAC9B,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAa3B,2CAA2C;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAEzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { AgentClientConfig } from '@ouispec/agent-core';
|
|
3
3
|
import type { AgentContextValue } from './types.js';
|
|
4
|
+
/** How long a stop may go unconfirmed by the turn's end before the turn is shown as stopped (ADR-0252 §2.14). */
|
|
5
|
+
export declare const STOP_CONFIRM_TIMEOUT_MS = 10000;
|
|
4
6
|
/**
|
|
5
7
|
* AgentProvider — turnkey provider that handles the complete agent lifecycle.
|
|
6
8
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentProvider.d.ts","sourceRoot":"","sources":["../../src/provider/AgentProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAA8E,MAAM,OAAO,CAAC;AACnG,OAAO,KAAK,EACV,iBAAiB,EAKlB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"AgentProvider.d.ts","sourceRoot":"","sources":["../../src/provider/AgentProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAA8E,MAAM,OAAO,CAAC;AACnG,OAAO,KAAK,EACV,iBAAiB,EAKlB,MAAM,qBAAqB,CAAC;AAc7B,OAAO,KAAK,EAEV,iBAAiB,EAQlB,MAAM,YAAY,CAAC;AAepB,iHAAiH;AACjH,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAiE9C;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;IAAE,MAAM,EAAE,iBAAiB,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,iFAwiC3G;AAED,wBAAgB,QAAQ,IAAI,iBAAiB,CAI5C"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React, { createContext, useContext, useState, useCallback, useEffect, useRef } from 'react';
|
|
2
|
-
import { APPROVAL_DECIDE_EVENT } from '@ouispec/agent-core';
|
|
2
|
+
import { APPROVAL_DECIDE_EVENT, TURN_STOP_EVENT } from '@ouispec/agent-core';
|
|
3
|
+
import { useComposerAttachments } from './attachments.js';
|
|
3
4
|
import { ALL_AGENT_SOCKET_EVENTS, parseSocketEvent } from '@ouispec/agent-core';
|
|
4
5
|
import { browserTimeZone } from './time-zone.js';
|
|
5
6
|
import { createSocketIOSocket } from './socketio.js';
|
|
@@ -13,6 +14,12 @@ const DEFAULT_ACTIVE_CONVERSATION_KEY = 'agent-sdk.activeConversation';
|
|
|
13
14
|
const HISTORY_PAGE_SIZE = 20;
|
|
14
15
|
/** How long the card waits for the approval store to answer a click. */
|
|
15
16
|
const APPROVAL_DECIDE_TIMEOUT_MS = 10_000;
|
|
17
|
+
/** How long the server's answer to a Stop is waited for before the platform's API is asked instead. */
|
|
18
|
+
const STOP_ACK_TIMEOUT_MS = 3_000;
|
|
19
|
+
/** How long a stop may go unconfirmed by the turn's end before the turn is shown as stopped (ADR-0252 §2.14). */
|
|
20
|
+
export const STOP_CONFIRM_TIMEOUT_MS = 10_000;
|
|
21
|
+
/** How many ended turns the tab remembers, to ignore what they still send. */
|
|
22
|
+
const ENDED_TURNS_REMEMBERED = 20;
|
|
16
23
|
/**
|
|
17
24
|
* The tab's remembered active conversation, in `sessionStorage` so a reload
|
|
18
25
|
* returns to it and a new tab starts fresh. Storage can be missing or throw
|
|
@@ -121,6 +128,9 @@ export function AgentProvider({ config, children }) {
|
|
|
121
128
|
const [pendingApproval, setPendingApproval] = useState(null);
|
|
122
129
|
const [approvalDeciding, setApprovalDeciding] = useState(false);
|
|
123
130
|
const [approvalError, setApprovalError] = useState(null);
|
|
131
|
+
// The turn the person asked to stop, from their Stop until its end arrives (ADR-0252 §2.14).
|
|
132
|
+
const [isStopping, setIsStopping] = useState(false);
|
|
133
|
+
const stoppingRef = useRef(null);
|
|
124
134
|
const socketRef = useRef(null);
|
|
125
135
|
const unsubscribeRef = useRef(null);
|
|
126
136
|
// The room of the turn in progress and its token. A reconnect gives the
|
|
@@ -151,6 +161,46 @@ export function AgentProvider({ config, children }) {
|
|
|
151
161
|
});
|
|
152
162
|
}, []);
|
|
153
163
|
const clearDebugLogs = useCallback(() => setDebugLogs([]), []);
|
|
164
|
+
// The conversation a message or a file goes to: made on first use, once,
|
|
165
|
+
// however many files and messages ask for it at the same moment.
|
|
166
|
+
const creatingRef = useRef(null);
|
|
167
|
+
const ensureConversation = useCallback(async () => {
|
|
168
|
+
// A conversation being restored or opened is the one a message or a file goes to: wait for it,
|
|
169
|
+
// rather than make another (a file pasted while the remembered chat loads belongs to it).
|
|
170
|
+
// Each load is waited for once: one that is still pending after it settled is not waited on again.
|
|
171
|
+
for (let pending = pendingLoadRef.current; pending;) {
|
|
172
|
+
await pending;
|
|
173
|
+
const next = pendingLoadRef.current;
|
|
174
|
+
pending = next === pending ? null : next;
|
|
175
|
+
}
|
|
176
|
+
if (conversationIdRef.current)
|
|
177
|
+
return conversationIdRef.current;
|
|
178
|
+
if (!creatingRef.current) {
|
|
179
|
+
creatingRef.current = (async () => {
|
|
180
|
+
addDebugLog('info', 'agent:api', 'Creating conversation...', {});
|
|
181
|
+
const result = await configRef.current.createConversation();
|
|
182
|
+
setActiveConversation(result.conversationId);
|
|
183
|
+
addDebugLog('info', 'agent:api', `Conversation created: ${result.conversationId}`, { conversationId: result.conversationId });
|
|
184
|
+
return result.conversationId;
|
|
185
|
+
})().finally(() => {
|
|
186
|
+
creatingRef.current = null;
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
return creatingRef.current;
|
|
190
|
+
}, [addDebugLog, setActiveConversation]);
|
|
191
|
+
// The files on the message being written (ADR-0252 §2.14).
|
|
192
|
+
const messagesRef = useRef([]);
|
|
193
|
+
messagesRef.current = messages;
|
|
194
|
+
const composer = useComposerAttachments({
|
|
195
|
+
config: () => configRef.current,
|
|
196
|
+
ensureConversation,
|
|
197
|
+
conversationId: () => conversationIdRef.current,
|
|
198
|
+
messages: () => messagesRef.current,
|
|
199
|
+
log: (level, message, data) => addDebugLog(level, 'agent:api', message, data),
|
|
200
|
+
});
|
|
201
|
+
const { takeForSend, clear: clearComposer, ...composerState } = composer;
|
|
202
|
+
const cancelWaitingSendRef = useRef(composer.cancelWaitingSend);
|
|
203
|
+
cancelWaitingSendRef.current = composer.cancelWaitingSend;
|
|
154
204
|
// --- Socket connection lifecycle (SDK-owned; the socket is a seam) ---
|
|
155
205
|
useEffect(() => {
|
|
156
206
|
const { url, getToken, createSocket = createSocketIOSocket } = config.realtime;
|
|
@@ -214,6 +264,58 @@ export function AgentProvider({ config, children }) {
|
|
|
214
264
|
const liveTurnRef = useRef({ starting: false, turnId: null });
|
|
215
265
|
const turnStartsRef = useRef(0);
|
|
216
266
|
const heldEndsRef = useRef([]);
|
|
267
|
+
/**
|
|
268
|
+
* Whether an event of turn `turnId` belongs to the turn the tab is running. While a new turn has
|
|
269
|
+
* no id yet, nothing does: whatever still arrives is the turn before it, which a new message has
|
|
270
|
+
* superseded (ADR-0252 §2.5), and its text and calls are no longer shown as in progress.
|
|
271
|
+
*/
|
|
272
|
+
const ofLiveTurn = (turnId) => {
|
|
273
|
+
const { starting, turnId: live } = liveTurnRef.current;
|
|
274
|
+
if (starting)
|
|
275
|
+
return false;
|
|
276
|
+
if (turnId !== undefined && endedTurnsRef.current.has(turnId))
|
|
277
|
+
return false;
|
|
278
|
+
return live === null || turnId === undefined || turnId === live;
|
|
279
|
+
};
|
|
280
|
+
/**
|
|
281
|
+
* The turns the tab has shown as ended. A turn shown as stopped because its stop was never
|
|
282
|
+
* confirmed, or superseded by a new message, may have a worker still streaming: the text, calls
|
|
283
|
+
* and approval cards it sends after that are not shown as in progress again (`ofLiveTurn`). Its
|
|
284
|
+
* end is still read, since an end is safe to apply twice: for a turn that is not the tab's it
|
|
285
|
+
* only finishes that turn's own message, and for no turn at all it changes nothing.
|
|
286
|
+
*/
|
|
287
|
+
const endedTurnsRef = useRef(new Set());
|
|
288
|
+
const rememberEnded = (turnId) => {
|
|
289
|
+
if (!turnId)
|
|
290
|
+
return;
|
|
291
|
+
const ended = endedTurnsRef.current;
|
|
292
|
+
ended.add(turnId);
|
|
293
|
+
// The last few are all that can still be sending.
|
|
294
|
+
if (ended.size > ENDED_TURNS_REMEMBERED)
|
|
295
|
+
ended.delete(ended.values().next().value);
|
|
296
|
+
};
|
|
297
|
+
/** The assistant message and running calls of a turn that ended by being stopped, as the panel shows them. */
|
|
298
|
+
const markStopped = (prev, turnId, reason) => {
|
|
299
|
+
const msgId = `msg_${turnId}`;
|
|
300
|
+
const marked = prev.map((m) => {
|
|
301
|
+
if (m.id === msgId)
|
|
302
|
+
return { ...m, isStreaming: false, stopped: reason };
|
|
303
|
+
if (m.toolCall?.status === 'running')
|
|
304
|
+
return { ...m, toolCall: { ...m.toolCall, status: 'stopped' } };
|
|
305
|
+
return m.isStreaming ? { ...m, isStreaming: false } : m;
|
|
306
|
+
});
|
|
307
|
+
// A turn stopped before it said anything still shows that it was stopped.
|
|
308
|
+
return marked.some((m) => m.id === msgId)
|
|
309
|
+
? marked
|
|
310
|
+
: [...marked, { id: msgId, role: 'assistant', content: '', timestamp: Date.now(), stopped: reason }];
|
|
311
|
+
};
|
|
312
|
+
/** A stop is no longer waited on: its turn ended, or the tab moved on. */
|
|
313
|
+
const clearStopping = () => {
|
|
314
|
+
if (stoppingRef.current?.timer)
|
|
315
|
+
clearTimeout(stoppingRef.current.timer);
|
|
316
|
+
stoppingRef.current = null;
|
|
317
|
+
setIsStopping(false);
|
|
318
|
+
};
|
|
217
319
|
/** Whether an end of turn `turnId` is the end of the turn the tab is running. */
|
|
218
320
|
const endsLiveTurn = (turnId) => {
|
|
219
321
|
const live = liveTurnRef.current.turnId;
|
|
@@ -232,6 +334,9 @@ export function AgentProvider({ config, children }) {
|
|
|
232
334
|
case 'token': {
|
|
233
335
|
if (!event.content)
|
|
234
336
|
break;
|
|
337
|
+
// Text a superseded turn still sends is not the turn in progress's.
|
|
338
|
+
if (!ofLiveTurn(event.turnId))
|
|
339
|
+
break;
|
|
235
340
|
streamBufferRef.current += event.content;
|
|
236
341
|
// Snapshot the accumulated content BEFORE enqueueing the state update.
|
|
237
342
|
// React batches updates and runs the setMessages callback later; if the
|
|
@@ -273,6 +378,8 @@ export function AgentProvider({ config, children }) {
|
|
|
273
378
|
// Don't update message content — leave the existing text visible.
|
|
274
379
|
break;
|
|
275
380
|
case 'intent_call':
|
|
381
|
+
if (!ofLiveTurn(event.turnId))
|
|
382
|
+
break;
|
|
276
383
|
setMessages(prev => [...prev, {
|
|
277
384
|
id: `tool_${event.id}`,
|
|
278
385
|
role: 'tool',
|
|
@@ -296,6 +403,9 @@ export function AgentProvider({ config, children }) {
|
|
|
296
403
|
: m));
|
|
297
404
|
break;
|
|
298
405
|
case 'approval_required': {
|
|
406
|
+
// A card for a turn the person has moved on from is not shown: its approval is withdrawn.
|
|
407
|
+
if (!ofLiveTurn(event.turnId))
|
|
408
|
+
break;
|
|
299
409
|
// The card renders it; only the user's click on it decides.
|
|
300
410
|
const { type: _type, ...request } = event;
|
|
301
411
|
setPendingApproval(request);
|
|
@@ -309,12 +419,39 @@ export function AgentProvider({ config, children }) {
|
|
|
309
419
|
// message is finished, and nothing of the turn in progress is touched — not its streaming
|
|
310
420
|
// state, its id, its room or its text.
|
|
311
421
|
const earlier = `msg_${event.turnId}`;
|
|
312
|
-
|
|
422
|
+
rememberEnded(event.turnId);
|
|
423
|
+
setMessages(prev => prev.map(m => m.id === earlier ? { ...m, isStreaming: false, ...(event.stopReason ? { stopped: event.stopReason } : {}) } : m));
|
|
313
424
|
addDebugLog('info', 'agent:state', 'An earlier turn completed after the next one started; the turn in progress continues', {
|
|
314
425
|
turnId: event.turnId,
|
|
315
426
|
});
|
|
316
427
|
break;
|
|
317
428
|
}
|
|
429
|
+
if (event.stopReason) {
|
|
430
|
+
// The turn was stopped: what it had said stays, marked. Stopped by a message from another
|
|
431
|
+
// window, the conversation has moved on without this tab, so it is read again.
|
|
432
|
+
const reason = event.stopReason;
|
|
433
|
+
const asked = stoppingRef.current?.turnId === event.turnId;
|
|
434
|
+
rememberEnded(event.turnId);
|
|
435
|
+
streamBufferRef.current = '';
|
|
436
|
+
roundPrefixRef.current = '';
|
|
437
|
+
setMessages(prev => markStopped(prev, event.turnId, reason));
|
|
438
|
+
setIsStreaming(false);
|
|
439
|
+
setCurrentTurnId(null);
|
|
440
|
+
liveTurnRef.current = { starting: false, turnId: null };
|
|
441
|
+
activeRoomRef.current = null;
|
|
442
|
+
if (unsubscribeRef.current) {
|
|
443
|
+
unsubscribeRef.current();
|
|
444
|
+
unsubscribeRef.current = null;
|
|
445
|
+
}
|
|
446
|
+
clearStopping();
|
|
447
|
+
setPendingApproval(null);
|
|
448
|
+
addDebugLog('info', 'agent:state', `Turn stopped: ${reason}`, { turnId: event.turnId, reason });
|
|
449
|
+
if (reason === 'superseded' && !asked)
|
|
450
|
+
supersededElsewhereRef.current?.();
|
|
451
|
+
break;
|
|
452
|
+
}
|
|
453
|
+
clearStopping();
|
|
454
|
+
rememberEnded(event.turnId);
|
|
318
455
|
// Finalize all streaming messages. Drop any assistant streaming bubble
|
|
319
456
|
// that ended up truly empty (e.g. token_clear wiped it and no text was
|
|
320
457
|
// re-emitted). Preserve tool messages (which legitimately have null content).
|
|
@@ -325,7 +462,8 @@ export function AgentProvider({ config, children }) {
|
|
|
325
462
|
return finalized.filter(m => {
|
|
326
463
|
// Only drop assistant bubbles that are empty (null or empty string).
|
|
327
464
|
// Tool messages have null content by design — keep them.
|
|
328
|
-
|
|
465
|
+
// A stopped turn's message is kept even when it had said nothing: it says the turn was stopped.
|
|
466
|
+
if (m.role === 'assistant' && (m.content === null || m.content === '') && !m.stopped) {
|
|
329
467
|
return false;
|
|
330
468
|
}
|
|
331
469
|
return true;
|
|
@@ -373,9 +511,12 @@ export function AgentProvider({ config, children }) {
|
|
|
373
511
|
unsubscribeRef.current();
|
|
374
512
|
unsubscribeRef.current = null;
|
|
375
513
|
}
|
|
514
|
+
clearStopping();
|
|
376
515
|
break;
|
|
377
516
|
}
|
|
378
517
|
}, []);
|
|
518
|
+
// Set once conversations can be loaded (below): what a turn superseded from another window does.
|
|
519
|
+
const supersededElsewhereRef = useRef(null);
|
|
379
520
|
// --- Join a turn room ---
|
|
380
521
|
// The realtime server requires a signed room token for a turn room and
|
|
381
522
|
// denies the join without one — the socket stays connected, the
|
|
@@ -458,14 +599,8 @@ export function AgentProvider({ config, children }) {
|
|
|
458
599
|
// A message sent while a conversation loads belongs to that conversation.
|
|
459
600
|
if (pendingLoadRef.current)
|
|
460
601
|
await pendingLoadRef.current;
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
addDebugLog('info', 'agent:api', 'Creating conversation...', {});
|
|
464
|
-
const result = await configRef.current.createConversation();
|
|
465
|
-
convId = result.conversationId;
|
|
466
|
-
setActiveConversation(convId);
|
|
467
|
-
addDebugLog('info', 'agent:api', `Conversation created: ${convId}`, { conversationId: convId });
|
|
468
|
-
}
|
|
602
|
+
// Read at once when there is one: the message goes out in the same tick it was sent.
|
|
603
|
+
const convId = conversationIdRef.current ?? (await ensureConversation());
|
|
469
604
|
// A click on the approval card continues the turn, but it is not a message.
|
|
470
605
|
if (!approval) {
|
|
471
606
|
const userMsg = {
|
|
@@ -473,6 +608,7 @@ export function AgentProvider({ config, children }) {
|
|
|
473
608
|
role: 'user',
|
|
474
609
|
content,
|
|
475
610
|
timestamp: Date.now(),
|
|
611
|
+
...(attachments?.length ? { attachments } : {}),
|
|
476
612
|
};
|
|
477
613
|
setMessages(prev => [...prev, userMsg]);
|
|
478
614
|
// A new message moves on: a card still waiting belongs to the previous turn.
|
|
@@ -480,6 +616,16 @@ export function AgentProvider({ config, children }) {
|
|
|
480
616
|
}
|
|
481
617
|
// Any choice still on screen belongs to the previous turn.
|
|
482
618
|
setPresentedOptions(null);
|
|
619
|
+
// A message sent while a turn runs supersedes it (ADR-0252 §2.5): the platform stops that turn,
|
|
620
|
+
// and here it is shown as stopped at once. Its room is left when the new turn's is joined, so
|
|
621
|
+
// its own end may never arrive to say so.
|
|
622
|
+
const superseded = approval ? null : liveTurnRef.current.turnId;
|
|
623
|
+
if (superseded) {
|
|
624
|
+
rememberEnded(superseded);
|
|
625
|
+
setMessages(prev => markStopped(prev, superseded, 'superseded'));
|
|
626
|
+
roundPrefixRef.current = '';
|
|
627
|
+
clearStopping();
|
|
628
|
+
}
|
|
483
629
|
setIsStreaming(true);
|
|
484
630
|
// From here the tab's turn is this one, though it has no id until the request returns: the end
|
|
485
631
|
// of any earlier turn no longer ends it.
|
|
@@ -498,7 +644,7 @@ export function AgentProvider({ config, children }) {
|
|
|
498
644
|
conversationId: convId,
|
|
499
645
|
content,
|
|
500
646
|
context,
|
|
501
|
-
attachments,
|
|
647
|
+
...(attachments?.length ? { attachments } : {}),
|
|
502
648
|
...(approval ? { approval } : {}),
|
|
503
649
|
});
|
|
504
650
|
addDebugLog('info', 'agent:api', `Turn started: ${turnId}`, {
|
|
@@ -542,8 +688,87 @@ export function AgentProvider({ config, children }) {
|
|
|
542
688
|
}]);
|
|
543
689
|
return { turnId: '' };
|
|
544
690
|
}
|
|
545
|
-
}, [collectContext, subscribeToRoom, addDebugLog,
|
|
546
|
-
|
|
691
|
+
}, [collectContext, subscribeToRoom, addDebugLog, ensureConversation, handleProtocolEvent]);
|
|
692
|
+
// A message carries the composer's ready files, once the uploads still running have finished.
|
|
693
|
+
// Nothing is sent when the files say not to: why, with the text, so the composer keeps the draft.
|
|
694
|
+
const sendMessage = useCallback((content, attachments) => {
|
|
695
|
+
if (attachments)
|
|
696
|
+
return startTurn(content, attachments);
|
|
697
|
+
const go = (taken) => {
|
|
698
|
+
if ('refs' in taken)
|
|
699
|
+
return startTurn(content, taken.refs);
|
|
700
|
+
addDebugLog('info', 'agent:api', `The message was not sent: ${taken.notSent}`, { reason: taken.notSent });
|
|
701
|
+
return { turnId: '', notSent: { reason: taken.notSent, content } };
|
|
702
|
+
};
|
|
703
|
+
const taken = takeForSend();
|
|
704
|
+
return 'then' in taken ? taken.then(go) : Promise.resolve(go(taken));
|
|
705
|
+
}, [startTurn, takeForSend, addDebugLog]);
|
|
706
|
+
// --- The person's Stop (ADR-0252 §2.14) ---
|
|
707
|
+
// Asked over the socket, from the turn's room: the server takes it only from there. The turn's
|
|
708
|
+
// worker hears it, stores what it had, and sends the turn's end with why. If the socket cannot
|
|
709
|
+
// ask, or the end has not arrived in time, the platform's API is asked instead and the turn is
|
|
710
|
+
// shown as stopped: the person pressed Stop, and the panel must not go on saying "working".
|
|
711
|
+
const stopTurn = useCallback(async () => {
|
|
712
|
+
// A send still waiting for its files is given up: nothing was sent, and the draft is kept.
|
|
713
|
+
cancelWaitingSendRef.current();
|
|
714
|
+
const turnId = liveTurnRef.current.turnId;
|
|
715
|
+
if (!turnId || stoppingRef.current)
|
|
716
|
+
return;
|
|
717
|
+
const entry = { turnId, timer: null };
|
|
718
|
+
stoppingRef.current = entry;
|
|
719
|
+
setIsStopping(true);
|
|
720
|
+
addDebugLog('info', 'agent:api', 'Stopping the turn', { turnId });
|
|
721
|
+
let askedThroughApi = false;
|
|
722
|
+
const askApi = async () => {
|
|
723
|
+
const stop = configRef.current.stopTurn;
|
|
724
|
+
if (!stop || askedThroughApi)
|
|
725
|
+
return;
|
|
726
|
+
askedThroughApi = true;
|
|
727
|
+
try {
|
|
728
|
+
await stop({ turnId, conversationId: conversationIdRef.current });
|
|
729
|
+
}
|
|
730
|
+
catch (err) {
|
|
731
|
+
addDebugLog('warn', 'agent:api', `The API could not be asked to stop the turn: ${reasonOf(err)}`, { turnId });
|
|
732
|
+
}
|
|
733
|
+
};
|
|
734
|
+
const stillWaiting = () => stoppingRef.current === entry;
|
|
735
|
+
// Not confirmed in time: ask the API (once), and show the turn as stopped.
|
|
736
|
+
entry.timer = setTimeout(() => {
|
|
737
|
+
void (async () => {
|
|
738
|
+
if (!stillWaiting())
|
|
739
|
+
return;
|
|
740
|
+
await askApi();
|
|
741
|
+
if (!stillWaiting())
|
|
742
|
+
return;
|
|
743
|
+
addDebugLog('warn', 'agent:state', 'The stop was not confirmed in time; the turn is shown as stopped', { turnId });
|
|
744
|
+
handleProtocolEvent({ type: 'done', turnId, stopReason: 'user_stop' });
|
|
745
|
+
})();
|
|
746
|
+
}, STOP_CONFIRM_TIMEOUT_MS);
|
|
747
|
+
const socket = socketRef.current;
|
|
748
|
+
const room = activeRoomRef.current?.room;
|
|
749
|
+
const answer = socket?.connected && room
|
|
750
|
+
? await new Promise(resolve => {
|
|
751
|
+
const timer = setTimeout(() => resolve({ ok: false, reason: 'unavailable' }), STOP_ACK_TIMEOUT_MS);
|
|
752
|
+
socket.emit(TURN_STOP_EVENT, { turnId, room }, (result) => {
|
|
753
|
+
clearTimeout(timer);
|
|
754
|
+
resolve(result && typeof result === 'object' && 'ok' in result ? result : { ok: false, reason: 'unavailable' });
|
|
755
|
+
});
|
|
756
|
+
})
|
|
757
|
+
: { ok: false, reason: 'unavailable' };
|
|
758
|
+
if (!answer.ok) {
|
|
759
|
+
// The socket could not ask (not connected, or a realtime server from before the event).
|
|
760
|
+
addDebugLog('warn', 'agent:socket', `The stop could not be asked over the socket: ${answer.reason}`, { turnId });
|
|
761
|
+
if (stillWaiting())
|
|
762
|
+
await askApi();
|
|
763
|
+
}
|
|
764
|
+
}, [addDebugLog, handleProtocolEvent]);
|
|
765
|
+
/** The turn whose UI requests the tab runs now: none while starting, none once a stop is asked. */
|
|
766
|
+
const acceptedTurnId = useCallback(() => {
|
|
767
|
+
const { starting, turnId } = liveTurnRef.current;
|
|
768
|
+
if (starting || !turnId)
|
|
769
|
+
return null;
|
|
770
|
+
return stoppingRef.current?.turnId === turnId ? null : turnId;
|
|
771
|
+
}, []);
|
|
547
772
|
// --- The user's decision on an approval card (ADR-0228 §2.2.3) ---
|
|
548
773
|
// Only the card calls this: it is not on the context `useAgent` returns, so
|
|
549
774
|
// nothing an app binds for the assistant can reach it.
|
|
@@ -604,6 +829,7 @@ export function AgentProvider({ config, children }) {
|
|
|
604
829
|
turnStartsRef.current += 1;
|
|
605
830
|
liveTurnRef.current = { starting: false, turnId: null };
|
|
606
831
|
heldEndsRef.current = [];
|
|
832
|
+
clearStopping();
|
|
607
833
|
}, []);
|
|
608
834
|
/**
|
|
609
835
|
* Show a stored conversation. The latest request wins: a load that finishes
|
|
@@ -617,7 +843,13 @@ export function AgentProvider({ config, children }) {
|
|
|
617
843
|
const seq = ++loadSeqRef.current;
|
|
618
844
|
setIsLoadingConversation(true);
|
|
619
845
|
addDebugLog('info', 'agent:api', `${restoring ? 'Restoring' : 'Loading'} conversation ${id}`, { conversationId: id });
|
|
620
|
-
|
|
846
|
+
// The load is the pending one before anything in it runs, and it clears the pending load only
|
|
847
|
+
// while it is that load, as it settles: a host whose getConversation throws synchronously
|
|
848
|
+
// leaves nothing pending.
|
|
849
|
+
let settle;
|
|
850
|
+
const load = new Promise(resolve => (settle = resolve));
|
|
851
|
+
pendingLoadRef.current = load;
|
|
852
|
+
void (async () => {
|
|
621
853
|
try {
|
|
622
854
|
const stored = await getConversation(id);
|
|
623
855
|
if (seq !== loadSeqRef.current)
|
|
@@ -641,15 +873,22 @@ export function AgentProvider({ config, children }) {
|
|
|
641
873
|
}
|
|
642
874
|
}
|
|
643
875
|
finally {
|
|
644
|
-
if (seq === loadSeqRef.current)
|
|
876
|
+
if (seq === loadSeqRef.current)
|
|
645
877
|
setIsLoadingConversation(false);
|
|
878
|
+
if (pendingLoadRef.current === load)
|
|
646
879
|
pendingLoadRef.current = null;
|
|
647
|
-
|
|
880
|
+
settle();
|
|
648
881
|
}
|
|
649
882
|
})();
|
|
650
|
-
pendingLoadRef.current = load;
|
|
651
883
|
return load;
|
|
652
884
|
}, [addDebugLog, setActiveConversation]);
|
|
885
|
+
// A turn of this tab superseded by a message sent from another window: the conversation has
|
|
886
|
+
// moved on there, so it is read again here.
|
|
887
|
+
supersededElsewhereRef.current = () => {
|
|
888
|
+
const id = conversationIdRef.current;
|
|
889
|
+
if (id)
|
|
890
|
+
void loadConversation(id, { restoring: false });
|
|
891
|
+
};
|
|
653
892
|
// Return to the tab's conversation after a reload.
|
|
654
893
|
useEffect(() => {
|
|
655
894
|
const remembered = readRemembered(sessionKeyOf(configRef.current));
|
|
@@ -732,8 +971,10 @@ export function AgentProvider({ config, children }) {
|
|
|
732
971
|
if (isStreaming || id === conversationIdRef.current)
|
|
733
972
|
return;
|
|
734
973
|
leaveTurn();
|
|
974
|
+
// Files on an unsent message belong to the conversation being left.
|
|
975
|
+
clearComposer();
|
|
735
976
|
await loadConversation(id, { restoring: false });
|
|
736
|
-
}, [isStreaming, leaveTurn, loadConversation]);
|
|
977
|
+
}, [isStreaming, leaveTurn, loadConversation, clearComposer]);
|
|
737
978
|
/** Leave the open conversation for a new one. Callers check that no turn is answering. */
|
|
738
979
|
const resetToNewConversation = useCallback(() => {
|
|
739
980
|
loadSeqRef.current++;
|
|
@@ -742,10 +983,11 @@ export function AgentProvider({ config, children }) {
|
|
|
742
983
|
leaveTurn();
|
|
743
984
|
setActiveConversation(null);
|
|
744
985
|
setMessages([]);
|
|
986
|
+
clearComposer();
|
|
745
987
|
setPresentedOptions(null);
|
|
746
988
|
setPendingApproval(null);
|
|
747
989
|
addDebugLog('info', 'agent:state', 'New conversation');
|
|
748
|
-
}, [leaveTurn, setActiveConversation, addDebugLog]);
|
|
990
|
+
}, [leaveTurn, setActiveConversation, addDebugLog, clearComposer]);
|
|
749
991
|
const startNewConversation = useCallback(() => {
|
|
750
992
|
if (isStreaming)
|
|
751
993
|
return;
|
|
@@ -833,6 +1075,10 @@ export function AgentProvider({ config, children }) {
|
|
|
833
1075
|
open: useCallback(() => setIsOpen(true), []),
|
|
834
1076
|
close: useCallback(() => setIsOpen(false), []),
|
|
835
1077
|
sendMessage,
|
|
1078
|
+
attachments: composerState,
|
|
1079
|
+
stopTurn,
|
|
1080
|
+
isStopping,
|
|
1081
|
+
acceptedTurnId,
|
|
836
1082
|
messages,
|
|
837
1083
|
isStreaming,
|
|
838
1084
|
isProcessing: isStreaming,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentProvider.js","sourceRoot":"","sources":["../../src/provider/AgentProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAQnG,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEhF,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAgBrD,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAA8B,MAAM,0BAA0B,CAAC;AACpH,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEzD,MAAM,YAAY,GAAG,aAAa,CAA2B,IAAI,CAAC,CAAC;AAEnE,MAAM,cAAc,GAAG,GAAG,CAAC;AAC3B,MAAM,+BAA+B,GAAG,8BAA8B,CAAC;AACvE,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,wEAAwE;AACxE,MAAM,0BAA0B,GAAG,MAAM,CAAC;AAE1C;;;;GAIG;AACH,SAAS,YAAY,CAAC,MAAyB;IAC7C,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,qBAAqB,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IACnF,OAAO,MAAM,CAAC,qBAAqB,IAAI,+BAA+B,CAAC;AACzE,CAAC;AACD,SAAS,cAAc,CAAC,GAAkB;IACxC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AACD,SAAS,eAAe,CAAC,GAAkB,EAAE,cAA6B;IACxE,IAAI,CAAC,GAAG;QAAE,OAAO;IACjB,IAAI,CAAC;QACH,IAAI,cAAc;YAAE,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;;YAClE,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,uDAAuD;IACzD,CAAC;AACH,CAAC;AACD;;;GAGG;AACH,SAAS,YAAY,CAAC,OAAiC,EAAE,MAA+B;IACtF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,QAAQ,CAAC;IACzC,IAAI,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC;IAC5D,IAAI,MAAM,KAAK,UAAU,IAAI,CAAC,OAAO,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC;IAC/D,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,IAAI,IAAI,CAAC,KAAK,MAAM,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IACjG,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,QAAQ,CAAC,GAAY;IAC5B,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,oBAAoB,GAAwB,CAAC,cAAc,EAAE,gBAAgB,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;AACjH,IAAI,eAAe,GAAG,CAAC,CAAC;AAExB,SAAS,gBAAgB,CACvB,KAAoB,EACpB,EAAqB,EACrB,OAAe,EACf,IAAc;IAEd,OAAO;QACL,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE;QAC9B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,KAAK;QACL,EAAE;QACF,OAAO;QACP,IAAI;KACL,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,aAAa,CAAC,EAAE,MAAM,EAAE,QAAQ,EAA4D;IAC1G,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACxE,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAC1E,4EAA4E;IAC5E,sDAAsD;IACtD,MAAM,iBAAiB,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;IACtD,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1E,MAAM,cAAc,GAAG,MAAM,CAAuB,IAAI,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,GAAG,QAAQ,CAA6B,EAAE,CAAC,CAAC;IACjG,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5D,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACtE,gFAAgF;IAChF,MAAM,uBAAuB,GAAG,MAAM,CAA6B,EAAE,CAAC,CAAC;IACvE,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAA0B,EAAE,CAAC,CAAC;IAChF,MAAM,gBAAgB,GAAG,MAAM,CAA0B,EAAE,CAAC,CAAC;IAC7D,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC1D,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAiB,EAAE,CAAC,CAAC;IAC7D,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAkB,EAAE,CAAC,CAAC;IAChE,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAA0B,IAAI,CAAC,CAAC;IACxF,oFAAoF;IACpF,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAA8B,IAAI,CAAC,CAAC;IAC1F,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChE,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACxE,MAAM,SAAS,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAC;IAClD,MAAM,cAAc,GAAG,MAAM,CAAsB,IAAI,CAAC,CAAC;IACzD,wEAAwE;IACxE,2EAA2E;IAC3E,4EAA4E;IAC5E,2BAA2B;IAC3B,MAAM,aAAa,GAAG,MAAM,CAA0C,IAAI,CAAC,CAAC;IAC5E,MAAM,eAAe,GAAG,MAAM,CAAS,EAAE,CAAC,CAAC;IAC3C,MAAM,cAAc,GAAG,MAAM,CAAS,EAAE,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,eAAe,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;IAC7C,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC;IAC3B,eAAe,CAAC,OAAO,GAAG,YAAY,CAAC;IACvC,cAAc,CAAC,OAAO,GAAG,WAAW,CAAC;IAErC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,GAAG,CAAC;IAE9C,MAAM,qBAAqB,GAAG,WAAW,CAAC,CAAC,EAAiB,EAAE,EAAE;QAC9D,iBAAiB,CAAC,OAAO,GAAG,EAAE,CAAC;QAC/B,iBAAiB,CAAC,EAAE,CAAC,CAAC;QACtB,eAAe,CAAC,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IACvD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,KAAoB,EAAE,EAAqB,EAAE,OAAe,EAAE,IAAc,EAAE,EAAE;QAC/G,IAAI,CAAC,eAAe,CAAC,OAAO;YAAE,OAAO;QACrC,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACzD,YAAY,CAAC,IAAI,CAAC,EAAE;YAClB,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC;YAC9B,OAAO,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3E,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAE/D,wEAAwE;IACxE,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,GAAG,oBAAoB,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC/E,IAAI,CAAC,GAAG;YAAE,OAAO;QAEjB,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;QAE/C,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YACxB,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;YAC/E,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC;YACrC,IAAI,MAAM,EAAE,CAAC;gBACX,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,wCAAwC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;gBAClH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,MAAc,EAAE,EAAE;YACzC,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,iBAAiB,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,GAAU,EAAE,EAAE;YACxC,WAAW,CAAC,OAAO,EAAE,cAAc,EAAE,qBAAqB,GAAG,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACnG,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,OAAe,EAAE,EAAE;YACjD,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,yBAAyB,OAAO,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QACxF,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9D,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC;QAE3B,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,UAAU,EAAE,CAAC;YACpB,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;YACzB,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAE1B,oBAAoB;IACpB,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,OAAO,GAAG,CAAC,CAAgB,EAAE,EAAE;YACnC,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;gBACtD,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC,CAAC;QACF,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC9C,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,kCAAkC;IAClC,uEAAuE;IACvE,4EAA4E;IAC5E,6EAA6E;IAC7E,2EAA2E;IAC3E,4EAA4E;IAC5E,6EAA6E;IAC7E,4EAA4E;IAC5E,cAAc;IACd,EAAE;IACF,sEAAsE;IACtE,sCAAsC;IACtC,0EAA0E;IAC1E,oEAAoE;IACpE,gEAAgE;IAChE,MAAM,WAAW,GAAG,MAAM,CAA+C,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5G,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAChC,MAAM,WAAW,GAAG,MAAM,CAAuB,EAAE,CAAC,CAAC;IACrD,iFAAiF;IACjF,MAAM,YAAY,GAAG,CAAC,MAA0B,EAAW,EAAE;QAC3D,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;QACxC,OAAO,IAAI,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,CAAC;IAClE,CAAC,CAAC;IAEF,iCAAiC;IACjC,MAAM,mBAAmB,GAAG,WAAW,CAAC,CAAC,KAAyB,EAAE,EAAE;QACpE,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACtF,+EAA+E;YAC/E,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChC,OAAO;QACT,CAAC;QACD,WAAW,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;QAC/D,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;QAEnC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,IAAI,CAAC,KAAK,CAAC,OAAO;oBAAE,MAAM;gBAC1B,eAAe,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC;gBACzC,uEAAuE;gBACvE,wEAAwE;gBACxE,qEAAqE;gBACrE,wEAAwE;gBACxE,uEAAuE;gBACvE,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC;gBACzC,WAAW,CAAC,IAAI,CAAC,EAAE;oBACjB,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;oBACpC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC;oBACxD,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE,CAAC;wBACvB,+DAA+D;wBAC/D,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;wBAC1B,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;wBACzF,OAAO,OAAO,CAAC;oBACjB,CAAC;oBACD,0FAA0F;oBAC1F,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC;oBACjD,OAAO,CAAC,GAAG,OAAO,EAAE;4BAClB,EAAE,EAAE,KAAK;4BACT,IAAI,EAAE,WAAoB;4BAC1B,OAAO,EAAE,QAAQ;4BACjB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;4BACrB,WAAW,EAAE,IAAI;yBAClB,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBACH,MAAM;YACR,CAAC;YAED,KAAK,aAAa;gBAChB,oEAAoE;gBACpE,uEAAuE;gBACvE,0CAA0C;gBAC1C,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC;oBAC5B,yDAAyD;oBACzD,cAAc,CAAC,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC;oBACjD,oEAAoE;oBACpE,eAAe,CAAC,OAAO,GAAG,cAAc,CAAC,OAAO,GAAG,MAAM,CAAC;gBAC5D,CAAC;gBACD,kEAAkE;gBAClE,MAAM;YAER,KAAK,aAAa;gBAChB,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE;wBAC5B,EAAE,EAAE,QAAQ,KAAK,CAAC,EAAE,EAAE;wBACtB,IAAI,EAAE,MAAe;wBACrB,OAAO,EAAE,IAAI;wBACb,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;wBACrB,QAAQ,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,SAAkB,EAAE;qBAC1G,CAAC,CAAC,CAAC;gBACJ,MAAM;YAER,KAAK,eAAe;gBAClB,gFAAgF;gBAChF,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAK,KAAK,CAAC,MAAkC,CAAC,iBAAiB,EAAE,CAAC;oBACpH,MAAM,OAAO,GAAG,KAAK,CAAC,MAAiC,CAAC;oBACxD,mBAAmB,CAAC;wBAClB,MAAM,EAAG,OAAO,CAAC,MAAiB,IAAI,EAAE;wBACxC,OAAO,EAAG,OAAO,CAAC,OAAuC,IAAI,EAAE;wBAC/D,KAAK,EAAG,OAAO,CAAC,KAAgB,IAAI,SAAS;qBAC9C,CAAC,CAAC;gBACL,CAAC;gBACD,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAC/B,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,KAAK,CAAC,MAAM;oBAC7B,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAC,QAAS,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,UAAmB,CAAC,CAAC,CAAC,OAAgB,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE;oBAC9H,CAAC,CAAC,CAAC,CACN,CAAC,CAAC;gBACH,MAAM;YAER,KAAK,mBAAmB,CAAC,CAAC,CAAC;gBACzB,4DAA4D;gBAC5D,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,GAAG,KAAK,CAAC;gBAC1C,kBAAkB,CAAC,OAAO,CAAC,CAAC;gBAC5B,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBACvB,mBAAmB,CAAC,KAAK,CAAC,CAAC;gBAC3B,MAAM;YACR,CAAC;YAED,KAAK,MAAM;gBACT,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;oBAChC,0FAA0F;oBAC1F,0FAA0F;oBAC1F,uCAAuC;oBACvC,MAAM,OAAO,GAAG,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;oBACtC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC3G,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,sFAAsF,EAAE;wBACzH,MAAM,EAAE,KAAK,CAAC,MAAM;qBACrB,CAAC,CAAC;oBACH,MAAM;gBACR,CAAC;gBACD,uEAAuE;gBACvE,uEAAuE;gBACvE,8EAA8E;gBAC9E,eAAe,CAAC,OAAO,GAAG,EAAE,CAAC;gBAC7B,cAAc,CAAC,OAAO,GAAG,EAAE,CAAC;gBAC5B,WAAW,CAAC,IAAI,CAAC,EAAE;oBACjB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAC7B,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CACjD,CAAC;oBACF,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;wBAC1B,qEAAqE;wBACrE,yDAAyD;wBACzD,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,KAAK,EAAE,CAAC,EAAE,CAAC;4BACvE,OAAO,KAAK,CAAC;wBACf,CAAC;wBACD,OAAO,IAAI,CAAC;oBACd,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBACH,cAAc,CAAC,KAAK,CAAC,CAAC;gBACtB,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBACvB,WAAW,CAAC,OAAO,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;gBACxD,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;gBAC7B,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;oBAC3B,cAAc,CAAC,OAAO,EAAE,CAAC;oBACzB,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC;gBAChC,CAAC;gBACD,MAAM;YAER,KAAK,OAAO;gBACV,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;oBAChC,2FAA2F;oBAC3F,4BAA4B;oBAC5B,MAAM,OAAO,GAAG,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;oBACtC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;wBAClB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBACxF,EAAE,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,WAAoB,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,oBAAoB,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE;qBAC/H,CAAC,CAAC;oBACH,MAAM;gBACR,CAAC;gBACD,eAAe,CAAC,OAAO,GAAG,EAAE,CAAC;gBAC7B,cAAc,CAAC,OAAO,GAAG,EAAE,CAAC;gBAC5B,WAAW,CAAC,IAAI,CAAC,EAAE;oBACjB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBACnC,IAAI,IAAI,EAAE,WAAW,EAAE,CAAC;wBACtB,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,oBAAoB,EAAE,CAAC,CAAC;oBAChH,CAAC;oBACD,OAAO,CAAC,GAAG,IAAI,EAAE;4BACf,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE;4BACvB,IAAI,EAAE,WAAoB;4BAC1B,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,oBAAoB;4BAC9C,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;yBACtB,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBACH,cAAc,CAAC,KAAK,CAAC,CAAC;gBACtB,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBACvB,WAAW,CAAC,OAAO,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;gBACxD,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;gBAC7B,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;oBAC3B,cAAc,CAAC,OAAO,EAAE,CAAC;oBACzB,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC;gBAChC,CAAC;gBACD,MAAM;QACV,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,2BAA2B;IAC3B,uEAAuE;IACvE,gEAAgE;IAChE,kEAAkE;IAClE,0EAA0E;IAC1E,qEAAqE;IACrE,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,MAAkB,EAAE,IAAY,EAAE,SAAkB,EAAE,EAAE;QACpF,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CACT,WAAW,EACX,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,EAChD,CAAC,GAA2E,EAAE,EAAE;gBAC9E,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;oBACnD,WAAW,CAAC,OAAO,EAAE,cAAc,EAAE,6BAA6B,IAAI,EAAE,EAAE;wBACxE,IAAI;wBACJ,MAAM,EAAE,GAAG,CAAC,MAAM;wBAClB,KAAK,EAAE,GAAG,CAAC,KAAK;qBACjB,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,gBAAgB,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC7F,CAAC;YACH,CAAC,CACF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,kBAAkB,IAAI,uBAAuB,EAAE;gBACjF,IAAI;gBACJ,IAAI,EAAE,sEAAsE;aAC7E,CAAC,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QACnC,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,sDAAsD;IACtD,MAAM,eAAe,GAAG,WAAW,CAAC,CAAC,IAAY,EAAE,MAAc,EAAE,SAAkB,EAAE,EAAE;QACvF,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,WAAW,CAAC,OAAO,EAAE,cAAc,EAAE,4DAA4D,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7G,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;QAClB,CAAC;QAED,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,wBAAwB,IAAI,EAAE,EAAE;YAClE,IAAI;YACJ,MAAM;YACN,YAAY,EAAE,CAAC,CAAC,SAAS;YACzB,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC,CAAC;QAEH,oEAAoE;QACpE,4CAA4C;QAC5C,aAAa,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QACnD,IAAI,MAAM,CAAC,SAAS;YAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QAExD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmC,CAAC;QAE5D,KAAK,MAAM,SAAS,IAAI,uBAAuB,EAAE,CAAC;YAChD,MAAM,OAAO,GAAG,CAAC,IAAa,EAAE,EAAE;gBAChC,WAAW,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC7E,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;gBACzD,IAAI,MAAM;oBAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAC1C,CAAC,CAAC;YACF,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACjC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,GAAG,EAAE;YACV,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,QAAQ,EAAE,CAAC;gBAC5C,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACjC,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;YACnC,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,2BAA2B,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACnF,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,mBAAmB,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEjD,6DAA6D;IAC7D,MAAM,cAAc,GAAG,WAAW,CAAC,GAAwB,EAAE;QAC3D,MAAM,WAAW,GAAG,kBAAkB,CAAC,qBAAqB,EAAE,CAAC;QAC/D,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;QACnC,OAAO;YACL,WAAW,EAAE,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YACjF,kBAAkB,EAAE,WAAW;YAC/B,8EAA8E;YAC9E,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,2FAA2F;IAC3F,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,EAAE,OAAe,EAAE,WAAoB,EAAE,QAA+B,EAAE,EAAE;QAC7G,0EAA0E;QAC1E,IAAI,cAAc,CAAC,OAAO;YAAE,MAAM,cAAc,CAAC,OAAO,CAAC;QACzD,IAAI,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,0BAA0B,EAAE,EAAE,CAAC,CAAC;YACjE,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;YAC5D,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;YAC/B,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAC9B,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,yBAAyB,MAAM,EAAE,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC;QAClG,CAAC;QAED,4EAA4E;QAC5E,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,OAAO,GAAiB;gBAC5B,EAAE,EAAE,YAAY,IAAI,CAAC,GAAG,EAAE,EAAE;gBAC5B,IAAI,EAAE,MAAM;gBACZ,OAAO;gBACP,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC;YACF,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;YACxC,6EAA6E;YAC7E,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QACD,2DAA2D;QAC3D,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC1B,cAAc,CAAC,IAAI,CAAC,CAAC;QACrB,+FAA+F;QAC/F,yCAAyC;QACzC,MAAM,OAAO,GAAG,EAAE,aAAa,CAAC,OAAO,CAAC;QACxC,WAAW,CAAC,OAAO,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACvD,eAAe,CAAC,OAAO,GAAG,EAAE,CAAC;QAE7B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;YACjC,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,oBAAoB,EAAE;gBAC7G,cAAc,EAAE,MAAM;gBACtB,aAAa,EAAE,OAAO,CAAC,MAAM;gBAC7B,OAAO;gBACP,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACtF,CAAC,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC;gBAC5E,cAAc,EAAE,MAAM;gBACtB,OAAO;gBACP,OAAO;gBACP,WAAW;gBACX,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAClC,CAAC,CAAC;YAEH,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,iBAAiB,MAAM,EAAE,EAAE;gBAC1D,MAAM;gBACN,UAAU;gBACV,YAAY,EAAE,CAAC,CAAC,SAAS;aAC1B,CAAC,CAAC;YACH,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,mBAAmB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YACpE,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACzB,IAAI,aAAa,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;gBACtC,WAAW,CAAC,OAAO,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;gBAClD,iGAAiG;gBACjG,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;oBAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAC9E,CAAC;YAED,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;gBAC3B,cAAc,CAAC,OAAO,EAAE,CAAC;gBACzB,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC;YAChC,CAAC;YACD,kGAAkG;YAClG,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC1C,cAAc,CAAC,OAAO,GAAG,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;YAC1E,CAAC;YAED,OAAO,EAAE,MAAM,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,gBAAgB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YACtH,8FAA8F;YAC9F,sBAAsB;YACtB,IAAI,aAAa,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;gBACtC,WAAW,CAAC,OAAO,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;gBACxD,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;oBAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;gBAC5E,cAAc,CAAC,KAAK,CAAC,CAAC;YACxB,CAAC;YACD,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE;oBAC5B,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE;oBACvB,IAAI,EAAE,WAAoB;oBAC1B,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB;oBACvE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;iBACtB,CAAC,CAAC,CAAC;YACJ,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QACxB,CAAC;IACH,CAAC,EAAE,CAAC,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,qBAAqB,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAE/F,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,OAAe,EAAE,WAAoB,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEzH,oEAAoE;IACpE,4EAA4E;IAC5E,uDAAuD;IACvD,MAAM,kBAAkB,GAAG,MAAM,CAA8B,IAAI,CAAC,CAAC;IACrE,kBAAkB,CAAC,OAAO,GAAG,eAAe,CAAC;IAC7C,MAAM,cAAc,GAAG,WAAW,CAAC,KAAK,EAAE,QAA0B,EAAE,EAAE;QACtE,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC;QAC3C,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,gBAAgB,CAAC,yDAAyD,CAAC,CAAC;YAC5E,OAAO;QACT,CAAC;QACD,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC1B,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvB,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACjH,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAAuB,OAAO,CAAC,EAAE;YAC/D,MAAM,KAAK,GAAG,UAAU,CACtB,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC,EACnF,0BAA0B,CAC3B,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,QAAQ,EAAE,EAAE,CAAC,MAA4B,EAAE,EAAE;gBAChH,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,qBAAqB,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YAClI,gBAAgB,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9C,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAC3B,OAAO;QACT,CAAC;QACD,4FAA4F;QAC5F,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAClC,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QAC/H,CAAC;QACD,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACzB,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,SAAS,CACb,EAAE,EACF,SAAS,EACT,MAAM,CAAC,QAAQ,KAAK,SAAS;YAC3B,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE;YAC7E,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,CAC3D,CAAC;IACJ,CAAC,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IAE7B,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE;QACvC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACzB,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvB,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,+BAA+B;IAE/B,sDAAsD;IACtD,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;QACjC,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;YAC3B,cAAc,CAAC,OAAO,EAAE,CAAC;YACzB,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC;QAChC,CAAC;QACD,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;QAC7B,eAAe,CAAC,OAAO,GAAG,EAAE,CAAC;QAC7B,cAAc,CAAC,OAAO,GAAG,EAAE,CAAC;QAC5B,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvB,4EAA4E;QAC5E,aAAa,CAAC,OAAO,IAAI,CAAC,CAAC;QAC3B,WAAW,CAAC,OAAO,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACxD,WAAW,CAAC,OAAO,GAAG,EAAE,CAAC;IAC3B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP;;;;OAIG;IACH,MAAM,gBAAgB,GAAG,WAAW,CAAC,CAAC,EAAU,EAAE,EAAE,SAAS,EAA0B,EAAE,EAAE;QACzF,MAAM,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC;QAC1D,IAAI,CAAC,eAAe;YAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC/C,MAAM,GAAG,GAAG,EAAE,UAAU,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAC/B,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,iBAAiB,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC;QACtH,MAAM,IAAI,GAAG,CAAC,KAAK,IAAI,EAAE;YACvB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,EAAE,CAAC,CAAC;gBACzC,IAAI,GAAG,KAAK,UAAU,CAAC,OAAO;oBAAE,OAAO;gBACvC,qBAAqB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;gBAC7C,WAAW,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACpD,mBAAmB,CAAC,IAAI,CAAC,CAAC;gBAC1B,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBACzB,eAAe,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,KAAK,UAAU,CAAC,OAAO;oBAAE,OAAO;gBACvC,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACjE,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,+BAA+B,EAAE,KAAK,OAAO,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC1G,IAAI,SAAS,EAAE,CAAC;oBACd,qBAAqB,CAAC,IAAI,CAAC,CAAC;gBAC9B,CAAC;qBAAM,CAAC;oBACN,eAAe,CAAC,wCAAwC,CAAC,CAAC;gBAC5D,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,IAAI,GAAG,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC;oBAC/B,wBAAwB,CAAC,KAAK,CAAC,CAAC;oBAChC,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QACL,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC,EAAE,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAEzC,mDAAmD;IACnD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,UAAU,GAAG,cAAc,CAAC,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QACnE,IAAI,UAAU;YAAE,KAAK,gBAAgB,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEvB,MAAM,cAAc,GAAG,WAAW,CAAC,KAAK,EAAE,MAAgC,EAAE,EAAE;QAC5E,MAAM,iBAAiB,GAAG,SAAS,CAAC,OAAO,CAAC,iBAAiB,CAAC;QAC9D,IAAI,CAAC,iBAAiB;YAAE,OAAO;QAC/B,IAAI,MAAM,EAAE,CAAC;YACX,gBAAgB,CAAC,OAAO,GAAG,MAAM,CAAC;YAClC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;QACD,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC;QACvC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;YACxF,gEAAgE;YAChE,IAAI,KAAK,KAAK,gBAAgB,CAAC,OAAO;gBAAE,OAAO;YAC/C,uBAAuB,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;YACrD,uBAAuB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5C,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5B,eAAe,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,iCAAiC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACnF,eAAe,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;gBAAS,CAAC;YACT,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,MAAM,kBAAkB,GAAG,WAAW,CACpC,KAAK,EAAE,MAAmE,EAAE,EAAE;QAC5E,MAAM,iBAAiB,GAAG,SAAS,CAAC,OAAO,CAAC,iBAAiB,CAAC;QAC9D,IAAI,CAAC,iBAAiB;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAC/E,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC,EACD,EAAE,CACH,CAAC;IAEF,6EAA6E;IAC7E,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,IAAgC,EAAE,EAAE;QACjE,MAAM,OAAO,GAAG,uBAAuB,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACrE,uBAAuB,CAAC,OAAO,GAAG,IAAI,CAAC;QACvC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,OAAO,GAAG,CAAC;YAAE,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC;QACxE,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,mGAAmG;IACnG,MAAM,cAAc,GAAG,WAAW,CAAC,CAAC,OAAmC,EAAE,EAAE;QACzE,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC;QACxC,SAAS,CAAC,uBAAuB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACpD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;YAC3C,IAAI,CAAC,OAAO;gBAAE,OAAO,CAAC,CAAC,CAAC,CAAC;YACzB,OAAO,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,CAAC,CAAC,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,MAAM,kBAAkB,GAAG,WAAW,CAAC,KAAK,EAAE,EAAU,EAAE,KAAoB,EAAE,EAAE;QAChF,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,kBAAkB,CAAC;QACpD,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QACtE,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,yBAAyB,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,KAAK,IAAI,EAAE,CAAC,CAAC;QACnH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACxC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAC1B,OAAO,OAAO,CAAC;IACjB,CAAC,EAAE,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;IAElC,MAAM,mBAAmB,GAAG,WAAW,CAAC,KAAK,EAAE,GAAa,EAAE,OAAiC,EAAE,EAAE;QACjG,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,mBAAmB,CAAC;QACrD,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QAC/E,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,GAAG,CAAC,MAAM,kBAAkB,EAAE,EAAE,eAAe,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9G,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC3C,cAAc,CAAC,OAAO,CAAC,CAAC;QACxB,OAAO,OAAO,CAAC;IACjB,CAAC,EAAE,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;IAEhC,MAAM,kBAAkB,GAAG,WAAW,CAAC,KAAK,EAAE,EAAU,EAAE,EAAE;QAC5D,IAAI,WAAW,IAAI,EAAE,KAAK,iBAAiB,CAAC,OAAO;YAAE,OAAO;QAC5D,SAAS,EAAE,CAAC;QACZ,MAAM,gBAAgB,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IACnD,CAAC,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAE/C,0FAA0F;IAC1F,MAAM,sBAAsB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC9C,UAAU,CAAC,OAAO,EAAE,CAAC;QACrB,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC;QAC9B,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAChC,SAAS,EAAE,CAAC;QACZ,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC5B,WAAW,CAAC,EAAE,CAAC,CAAC;QAChB,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC1B,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACzB,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,kBAAkB,CAAC,CAAC;IACzD,CAAC,EAAE,CAAC,SAAS,EAAE,qBAAqB,EAAE,WAAW,CAAC,CAAC,CAAC;IAEpD,MAAM,oBAAoB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC5C,IAAI,WAAW;YAAE,OAAO;QACxB,sBAAsB,EAAE,CAAC;IAC3B,CAAC,EAAE,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAE1C,MAAM,mBAAmB,GAAG,WAAW,CAAC,KAAK,EAAE,GAAa,EAAE,EAAE;QAC9D,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,mBAAmB,CAAC;QACrD,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QACtE,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC;QACvC,MAAM,YAAY,GAAG,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,YAAY,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;QAC5F,CAAC;QACD,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,GAAG,CAAC,MAAM,kBAAkB,EAAE,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC;QACrG,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC;QAClB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1B,SAAS,CAAC,uBAAuB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACpF,IAAI,YAAY,IAAI,iBAAiB,CAAC,OAAO,KAAK,IAAI;YAAE,sBAAsB,EAAE,CAAC;IACnF,CAAC,EAAE,CAAC,WAAW,EAAE,sBAAsB,EAAE,SAAS,CAAC,CAAC,CAAC;IAErD,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE;QACrC,OAAO;YACL,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,GAAG,EAAE,WAAW;YAChB,UAAU,EAAE,WAAW;YACvB,OAAO,EAAE;gBACP,cAAc;gBACd,aAAa;gBACb,SAAS;gBACT,WAAW;gBACX,YAAY,EAAE,QAAQ,CAAC,MAAM;gBAC7B,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC3B,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,SAAS,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;oBAC9C,WAAW,EAAE,CAAC,CAAC,WAAW;oBAC1B,QAAQ,EAAE,CAAC,CAAC,QAAQ;iBACrB,CAAC,CAAC;aACJ;YACD,KAAK,EAAE;gBACL,OAAO,EAAE,YAAY;gBACrB,QAAQ,EAAE,SAAS,CAAC,MAAM;gBAC1B,IAAI,EAAE,SAAS;aAChB;YACD,WAAW,EAAE;gBACX,SAAS,EAAE,OAAO,SAAS,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;gBAC7E,GAAG,EAAE,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;gBACrE,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG;aACjC;SACF,CAAC;IACJ,CAAC,EAAE,CAAC,cAAc,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAEpH,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE;QACrC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAChG,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC;QACb,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC7D,CAAC,CAAC,QAAQ,GAAG,iBAAiB,cAAc,IAAI,SAAS,IAAI,KAAK,OAAO,CAAC;QAC1E,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC,CAAC,KAAK,EAAE,CAAC;QACV,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAC7B,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC,EAAE,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC,CAAC;IAEpC,MAAM,UAAU,GAAoB;QAClC,OAAO,EAAE,YAAY;QACrB,UAAU,EAAE,eAAe;QAC3B,IAAI,EAAE,SAAS;QACf,SAAS,EAAE,cAAc;QACzB,UAAU,EAAE,oBAAoB;QAChC,aAAa;QACb,aAAa;KACd,CAAC;IAEF,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,KAAa,EAAE,EAAE;QACjD,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC1B,WAAW,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;QACtC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,YAAY,GAAsB;QACtC,MAAM;QACN,MAAM,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACjD,IAAI,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QAC5C,KAAK,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QAC9C,WAAW;QACX,QAAQ;QACR,WAAW;QACX,YAAY,EAAE,WAAW;QACzB,aAAa;QACb,cAAc;QACd,SAAS;QACT,KAAK,EAAE,UAAU;QACjB,gBAAgB;QAChB,YAAY;QACZ,cAAc;QACd,eAAe;QACf,MAAM,EAAE,SAAS,CAAC,OAAO;QACzB,OAAO,EAAE;YACP,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,IAAI,MAAM,CAAC,eAAe,CAAC;YACtE,MAAM,EAAE;gBACN,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC;gBAC1C,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC;gBAC3C,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC;aAC5C;YACD,aAAa,EAAE,oBAAoB;YACnC,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,aAAa;YACrB,OAAO,EAAE,cAAc;YACvB,KAAK,EAAE,YAAY;YACnB,OAAO,EAAE,cAAc;YACvB,KAAK,EAAE,kBAAkB;YACzB,MAAM,EAAE,kBAAkB;YAC1B,MAAM,EAAE,mBAAmB;YAC3B,MAAM,EAAE,mBAAmB;YAC3B,QAAQ,EAAE,eAAe;SAC1B;QACD,qBAAqB;QACrB,kBAAkB;QAClB,oBAAoB;KACrB,CAAC;IAEF,MAAM,gBAAgB,GAA0B;QAC9C,OAAO,EAAE,eAAe;QACxB,QAAQ,EAAE,gBAAgB;QAC1B,KAAK,EAAE,aAAa;QACpB,MAAM,EAAE,cAAc;QACtB,OAAO,EAAE,eAAe;KACzB,CAAC;IAEF,OAAO,KAAK,CAAC,aAAa,CACxB,YAAY,CAAC,QAAQ,EACrB,EAAE,KAAK,EAAE,YAAY,EAAE,EACvB,KAAK,CAAC,aAAa,CAAC,uBAAuB,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,QAAQ,CAAC,CAC7F,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,MAAM,GAAG,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IACrC,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IAC3E,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
1
|
+
{"version":3,"file":"AgentProvider.js","sourceRoot":"","sources":["../../src/provider/AgentProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { type AgentClientConfig, type AttachmentRef } from '@ouispec/agent-core';
|
|
2
|
+
import type { AgentMessage } from './types.js';
|
|
3
|
+
/** One file on the message being written. */
|
|
4
|
+
export interface ComposerAttachment {
|
|
5
|
+
/** Stable for the item's life: what `remove` takes. */
|
|
6
|
+
key: string;
|
|
7
|
+
name: string;
|
|
8
|
+
bytes: number;
|
|
9
|
+
mediaType: string;
|
|
10
|
+
/** `uploading` until the platform has it and has checked it; `refused` with `error` when it will not take it. */
|
|
11
|
+
status: 'uploading' | 'ready' | 'refused';
|
|
12
|
+
/** 0 to 1 while uploading. */
|
|
13
|
+
progress: number;
|
|
14
|
+
/** Set once it is ready: what the message carries. */
|
|
15
|
+
ref?: AttachmentRef;
|
|
16
|
+
/** Why it was refused, in words the person reads. */
|
|
17
|
+
error?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface ComposerAttachmentsState {
|
|
20
|
+
/** Whether the platform takes files at all. */
|
|
21
|
+
enabled: boolean;
|
|
22
|
+
items: ComposerAttachment[];
|
|
23
|
+
/** True while any file is still uploading: Send waits for it. */
|
|
24
|
+
uploading: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* True from Send until the files it waits for have finished uploading. A
|
|
27
|
+
* second Send meanwhile is refused (`notSent: 'waiting'`); Stop, or
|
|
28
|
+
* `cancelWaitingSend`, gives the send up and keeps the draft.
|
|
29
|
+
*/
|
|
30
|
+
waitingToSend: boolean;
|
|
31
|
+
/** Attach files: each is checked against the limits, then uploaded at once. */
|
|
32
|
+
attach: (files: Iterable<File> | ArrayLike<File>) => void;
|
|
33
|
+
/** Take a file off the message: an upload is cancelled, an uploaded file is removed from the file area. */
|
|
34
|
+
remove: (key: string) => void;
|
|
35
|
+
/** Give up a send that waits for uploads: nothing is sent, and the files stay on the message. */
|
|
36
|
+
cancelWaitingSend: () => void;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Why a message was not sent. The person's text is handed back with it
|
|
40
|
+
* (`sendMessage` → `notSent.content`), so the composer keeps the draft.
|
|
41
|
+
* - `waiting`: a send is already waiting for its files.
|
|
42
|
+
* - `file_refused`: a file on the message was refused; it stays there with
|
|
43
|
+
* why, until it is taken off.
|
|
44
|
+
* - `conversation_changed`: the conversation changed while the send waited
|
|
45
|
+
* for its files.
|
|
46
|
+
* - `cancelled`: the person gave the waiting send up.
|
|
47
|
+
*/
|
|
48
|
+
export type NotSentReason = 'waiting' | 'file_refused' | 'conversation_changed' | 'cancelled';
|
|
49
|
+
export type TakeForSend = {
|
|
50
|
+
refs: AttachmentRef[];
|
|
51
|
+
} | {
|
|
52
|
+
notSent: NotSentReason;
|
|
53
|
+
};
|
|
54
|
+
interface Deps {
|
|
55
|
+
config: () => AgentClientConfig;
|
|
56
|
+
/** The conversation's id, made now if there is none yet: a file is uploaded into its conversation. */
|
|
57
|
+
ensureConversation: () => Promise<string>;
|
|
58
|
+
/** The open conversation's id, or null before it is made. */
|
|
59
|
+
conversationId: () => string | null;
|
|
60
|
+
/** The messages on screen, to count the conversation's files. */
|
|
61
|
+
messages: () => readonly AgentMessage[];
|
|
62
|
+
log: (level: 'info' | 'warn', message: string, data?: Record<string, unknown>) => void;
|
|
63
|
+
}
|
|
64
|
+
export declare function useComposerAttachments({ config, ensureConversation, conversationId, messages, log }: Deps): ComposerAttachmentsState & {
|
|
65
|
+
/**
|
|
66
|
+
* What a Send takes: the references of the ready files, at once when no
|
|
67
|
+
* upload is running, else once the running ones have finished. Only what
|
|
68
|
+
* it took leaves the composer. Nothing is taken, and the message is not to
|
|
69
|
+
* be sent, when a file is refused, when a send already waits, or when the
|
|
70
|
+
* conversation changes or the send is given up while it waits.
|
|
71
|
+
*/
|
|
72
|
+
takeForSend: () => TakeForSend | Promise<TakeForSend>;
|
|
73
|
+
/** Clear the composer without sending (another conversation): uploads stop, uploaded files are removed. */
|
|
74
|
+
clear: () => void;
|
|
75
|
+
};
|
|
76
|
+
export {};
|
|
77
|
+
//# sourceMappingURL=attachments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attachments.d.ts","sourceRoot":"","sources":["../../src/provider/attachments.ts"],"names":[],"mappings":"AAWA,OAAO,EAIL,KAAK,iBAAiB,EAEtB,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,6CAA6C;AAC7C,MAAM,WAAW,kBAAkB;IACjC,uDAAuD;IACvD,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,iHAAiH;IACjH,MAAM,EAAE,WAAW,GAAG,OAAO,GAAG,SAAS,CAAC;IAC1C,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,sDAAsD;IACtD,GAAG,CAAC,EAAE,aAAa,CAAC;IACpB,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACvC,+CAA+C;IAC/C,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,iEAAiE;IACjE,SAAS,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,aAAa,EAAE,OAAO,CAAC;IACvB,+EAA+E;IAC/E,MAAM,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAC1D,2GAA2G;IAC3G,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,iGAAiG;IACjG,iBAAiB,EAAE,MAAM,IAAI,CAAC;CAC/B;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,cAAc,GAAG,sBAAsB,GAAG,WAAW,CAAC;AAE9F,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,aAAa,EAAE,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,aAAa,CAAA;CAAE,CAAC;AAEjF,UAAU,IAAI;IACZ,MAAM,EAAE,MAAM,iBAAiB,CAAC;IAChC,sGAAsG;IACtG,kBAAkB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,6DAA6D;IAC7D,cAAc,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACpC,iEAAiE;IACjE,QAAQ,EAAE,MAAM,SAAS,YAAY,EAAE,CAAC;IACxC,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CACxF;AAaD,wBAAgB,sBAAsB,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,wBAAwB,GAAG;IACtI;;;;;;OAMG;IACH,WAAW,EAAE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACtD,2GAA2G;IAC3G,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAmNA"}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The composer's files (ADR-0252 §2.14): what the person attached to the
|
|
3
|
+
* message they are writing, each uploaded as soon as it is attached.
|
|
4
|
+
*
|
|
5
|
+
* Headless: the SDK holds the state and the platform's seam does the work
|
|
6
|
+
* (`AgentClientConfig.attachments`). A file is refused before it is uploaded
|
|
7
|
+
* when it breaks the platform's limits, and the reason stays on its item.
|
|
8
|
+
* Sending waits for the uploads still running and sends the references of
|
|
9
|
+
* the files that are ready.
|
|
10
|
+
*/
|
|
11
|
+
import { useCallback, useRef, useState } from 'react';
|
|
12
|
+
import { DEFAULT_ATTACHMENT_LIMITS, attachmentKindOf, attachmentRefusal, } from '@ouispec/agent-core';
|
|
13
|
+
let keys = 0;
|
|
14
|
+
/** A file's chip, when it went to a conversation other than the one open now. */
|
|
15
|
+
const OTHER_CONVERSATION = 'This file was attached in another conversation. Take it off and attach it here again.';
|
|
16
|
+
export function useComposerAttachments({ config, ensureConversation, conversationId, messages, log }) {
|
|
17
|
+
const [items, setItems] = useState([]);
|
|
18
|
+
const [waitingToSend, setWaitingToSend] = useState(false);
|
|
19
|
+
const itemsRef = useRef([]);
|
|
20
|
+
const running = useRef(new Map());
|
|
21
|
+
/** The conversation each file went to: where it is removed from. */
|
|
22
|
+
const uploadedTo = useRef(new Map());
|
|
23
|
+
const limitsRef = useRef(null);
|
|
24
|
+
/** The send waiting for its files, and how to give it up. */
|
|
25
|
+
const waitRef = useRef(null);
|
|
26
|
+
/** Moves on each time the composer is cleared for another conversation. */
|
|
27
|
+
const epochRef = useRef(0);
|
|
28
|
+
const set = useCallback((next) => {
|
|
29
|
+
itemsRef.current = next(itemsRef.current);
|
|
30
|
+
setItems(itemsRef.current);
|
|
31
|
+
}, []);
|
|
32
|
+
const update = useCallback((key, patch) => set(prev => prev.map(item => (item.key === key ? { ...item, ...patch } : item))), [set]);
|
|
33
|
+
const limits = useCallback(async () => {
|
|
34
|
+
if (limitsRef.current)
|
|
35
|
+
return limitsRef.current;
|
|
36
|
+
const given = config().attachments?.limits;
|
|
37
|
+
const resolved = typeof given === 'function' ? await given() : (given ?? DEFAULT_ATTACHMENT_LIMITS);
|
|
38
|
+
limitsRef.current = resolved;
|
|
39
|
+
return resolved;
|
|
40
|
+
}, [config]);
|
|
41
|
+
/** Remove an uploaded file from the file area it went to; a failure is logged, never thrown. */
|
|
42
|
+
const removeUploaded = useCallback((ref, to, why) => {
|
|
43
|
+
const seam = config().attachments;
|
|
44
|
+
if (!seam?.remove || !to)
|
|
45
|
+
return;
|
|
46
|
+
void seam
|
|
47
|
+
.remove(ref, { conversationId: to })
|
|
48
|
+
.catch(err => log('warn', 'A file could not be deleted from the file area', { attachmentId: ref.id, why, reason: String(err) }));
|
|
49
|
+
}, [config, log]);
|
|
50
|
+
const attach = useCallback((files) => {
|
|
51
|
+
const seam = config().attachments;
|
|
52
|
+
if (!seam)
|
|
53
|
+
return;
|
|
54
|
+
const list = Array.from(files);
|
|
55
|
+
const added = list.map(file => ({
|
|
56
|
+
key: `att_local_${++keys}`,
|
|
57
|
+
name: file.name,
|
|
58
|
+
bytes: file.size,
|
|
59
|
+
mediaType: file.type || 'application/octet-stream',
|
|
60
|
+
status: 'uploading',
|
|
61
|
+
progress: 0,
|
|
62
|
+
}));
|
|
63
|
+
set(prev => [...prev, ...added]);
|
|
64
|
+
void (async () => {
|
|
65
|
+
const lim = await limits();
|
|
66
|
+
// What the conversation already holds: the files on its messages, and on this one.
|
|
67
|
+
const onScreen = messages().flatMap(m => m.attachments ?? []).filter(ref => !ref.removed);
|
|
68
|
+
let onMessage = itemsRef.current.filter(i => i.status !== 'refused' && !added.some(a => a.key === i.key)).length;
|
|
69
|
+
let inConversation = onScreen.length + onMessage;
|
|
70
|
+
let bytesInConversation = onScreen.reduce((sum, ref) => sum + ref.bytes, 0) +
|
|
71
|
+
itemsRef.current.filter(i => i.status !== 'refused' && !added.some(a => a.key === i.key)).reduce((sum, i) => sum + i.bytes, 0);
|
|
72
|
+
for (const [index, file] of list.entries()) {
|
|
73
|
+
const item = added[index];
|
|
74
|
+
// Taken off the message, or the composer cleared, while the limits were read.
|
|
75
|
+
if (!itemsRef.current.some(i => i.key === item.key))
|
|
76
|
+
continue;
|
|
77
|
+
const refusal = attachmentRefusal({ name: file.name, size: file.size, type: file.type || 'application/octet-stream' }, { onMessage, inConversation, bytesInConversation }, lim);
|
|
78
|
+
if (refusal) {
|
|
79
|
+
update(item.key, { status: 'refused', error: refusal });
|
|
80
|
+
log('info', 'A file was refused before upload', { name: file.name, bytes: file.size, reason: refusal });
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
onMessage += 1;
|
|
84
|
+
inConversation += 1;
|
|
85
|
+
bytesInConversation += file.size;
|
|
86
|
+
const controller = new AbortController();
|
|
87
|
+
const aborted = new Promise(resolve => controller.signal.addEventListener('abort', () => resolve(), { once: true }));
|
|
88
|
+
const work = (async () => {
|
|
89
|
+
let to;
|
|
90
|
+
try {
|
|
91
|
+
to = await ensureConversation();
|
|
92
|
+
uploadedTo.current.set(item.key, to);
|
|
93
|
+
const ref = await seam.upload(file, {
|
|
94
|
+
conversationId: to,
|
|
95
|
+
signal: controller.signal,
|
|
96
|
+
onProgress: fraction => update(item.key, { progress: Math.max(0, Math.min(1, fraction)) }),
|
|
97
|
+
});
|
|
98
|
+
if (controller.signal.aborted) {
|
|
99
|
+
// Taken off, or cleared, after the platform had it: it must not stay in the file area.
|
|
100
|
+
removeUploaded(ref, to, 'its upload was cancelled after it finished');
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
update(item.key, { status: 'ready', progress: 1, ref });
|
|
104
|
+
log('info', 'A file was attached', { attachmentId: ref.id, kind: ref.kind ?? attachmentKindOf(ref.mediaType), bytes: ref.bytes });
|
|
105
|
+
}
|
|
106
|
+
catch (err) {
|
|
107
|
+
if (controller.signal.aborted)
|
|
108
|
+
return;
|
|
109
|
+
const reason = err instanceof Error && err.message ? err.message : 'The file could not be uploaded.';
|
|
110
|
+
update(item.key, { status: 'refused', error: reason });
|
|
111
|
+
log('warn', 'A file could not be attached', { name: file.name, reason });
|
|
112
|
+
}
|
|
113
|
+
})();
|
|
114
|
+
const done = Promise.race([work, aborted]).finally(() => running.current.delete(item.key));
|
|
115
|
+
running.current.set(item.key, { controller, done });
|
|
116
|
+
}
|
|
117
|
+
})();
|
|
118
|
+
}, [config, ensureConversation, limits, log, messages, removeUploaded, set, update]);
|
|
119
|
+
const remove = useCallback((key) => {
|
|
120
|
+
const item = itemsRef.current.find(i => i.key === key);
|
|
121
|
+
if (!item)
|
|
122
|
+
return;
|
|
123
|
+
running.current.get(key)?.controller.abort();
|
|
124
|
+
running.current.delete(key);
|
|
125
|
+
set(prev => prev.filter(i => i.key !== key));
|
|
126
|
+
if (item.ref)
|
|
127
|
+
removeUploaded(item.ref, uploadedTo.current.get(key), 'it was taken off the message');
|
|
128
|
+
uploadedTo.current.delete(key);
|
|
129
|
+
}, [removeUploaded, set]);
|
|
130
|
+
const takeForSend = useCallback(() => {
|
|
131
|
+
if (waitRef.current)
|
|
132
|
+
return { notSent: 'waiting' };
|
|
133
|
+
// What this Send is of: the files on the message now. A file attached while it waits stays for the next.
|
|
134
|
+
const sentKeys = new Set(itemsRef.current.map(i => i.key));
|
|
135
|
+
const epoch = epochRef.current;
|
|
136
|
+
const take = () => {
|
|
137
|
+
const mine = itemsRef.current.filter(i => sentKeys.has(i.key));
|
|
138
|
+
// A refused file stays on the message with why, and holds the message until it is taken off.
|
|
139
|
+
if (mine.some(i => i.status === 'refused'))
|
|
140
|
+
return { notSent: 'file_refused' };
|
|
141
|
+
const ready = mine.filter(i => i.status === 'ready' && i.ref);
|
|
142
|
+
// Each file belongs to the conversation it was uploaded into: one that went elsewhere
|
|
143
|
+
// cannot go with a message to this one. It says so on its chip, and holds the message
|
|
144
|
+
// until it is taken off (which removes it from the conversation it went to).
|
|
145
|
+
const now = conversationId();
|
|
146
|
+
const elsewhere = new Set(ready.filter(i => uploadedTo.current.get(i.key) !== now).map(i => i.key));
|
|
147
|
+
if (elsewhere.size > 0) {
|
|
148
|
+
set(prev => prev.map(i => elsewhere.has(i.key)
|
|
149
|
+
? { ...i, status: 'refused', error: OTHER_CONVERSATION }
|
|
150
|
+
: i));
|
|
151
|
+
return { notSent: 'conversation_changed' };
|
|
152
|
+
}
|
|
153
|
+
const taken = new Set(ready.map(i => i.key));
|
|
154
|
+
if (taken.size > 0)
|
|
155
|
+
set(prev => prev.filter(i => !taken.has(i.key)));
|
|
156
|
+
for (const key of taken)
|
|
157
|
+
uploadedTo.current.delete(key);
|
|
158
|
+
return { refs: ready.map(i => i.ref) };
|
|
159
|
+
};
|
|
160
|
+
const waitingFor = [...running.current.entries()].filter(([key]) => sentKeys.has(key)).map(([, r]) => r.done);
|
|
161
|
+
// Nothing still uploading: the message goes now, as a message with no files always has.
|
|
162
|
+
if (waitingFor.length === 0)
|
|
163
|
+
return take();
|
|
164
|
+
setWaitingToSend(true);
|
|
165
|
+
return new Promise(resolve => {
|
|
166
|
+
let settled = false;
|
|
167
|
+
const finish = (result) => {
|
|
168
|
+
if (settled)
|
|
169
|
+
return;
|
|
170
|
+
settled = true;
|
|
171
|
+
waitRef.current = null;
|
|
172
|
+
setWaitingToSend(false);
|
|
173
|
+
resolve(result);
|
|
174
|
+
};
|
|
175
|
+
waitRef.current = { cancel: reason => finish({ notSent: reason }) };
|
|
176
|
+
void Promise.all(waitingFor).then(() => {
|
|
177
|
+
// The composer was cleared for another conversation while it waited. Otherwise `take`
|
|
178
|
+
// checks each file against the conversation open now.
|
|
179
|
+
if (epochRef.current !== epoch)
|
|
180
|
+
finish({ notSent: 'conversation_changed' });
|
|
181
|
+
else
|
|
182
|
+
finish(take());
|
|
183
|
+
});
|
|
184
|
+
});
|
|
185
|
+
}, [conversationId, set]);
|
|
186
|
+
const cancelWaitingSend = useCallback(() => waitRef.current?.cancel('cancelled'), []);
|
|
187
|
+
const clear = useCallback(() => {
|
|
188
|
+
epochRef.current += 1;
|
|
189
|
+
waitRef.current?.cancel('conversation_changed');
|
|
190
|
+
for (const r of running.current.values())
|
|
191
|
+
r.controller.abort();
|
|
192
|
+
running.current.clear();
|
|
193
|
+
// Files uploaded for a message that will not be sent: out of the file area, so they do not count against it.
|
|
194
|
+
for (const item of itemsRef.current) {
|
|
195
|
+
if (item.ref)
|
|
196
|
+
removeUploaded(item.ref, uploadedTo.current.get(item.key), 'the message they were on was given up');
|
|
197
|
+
}
|
|
198
|
+
uploadedTo.current.clear();
|
|
199
|
+
set(() => []);
|
|
200
|
+
}, [removeUploaded, set]);
|
|
201
|
+
return {
|
|
202
|
+
enabled: !!config().attachments,
|
|
203
|
+
items,
|
|
204
|
+
uploading: items.some(i => i.status === 'uploading'),
|
|
205
|
+
waitingToSend,
|
|
206
|
+
attach,
|
|
207
|
+
remove,
|
|
208
|
+
cancelWaitingSend,
|
|
209
|
+
takeForSend,
|
|
210
|
+
clear,
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=attachments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attachments.js","sourceRoot":"","sources":["../../src/provider/attachments.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stored-messages.d.ts","sourceRoot":"","sources":["../../src/provider/stored-messages.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"stored-messages.d.ts","sourceRoot":"","sources":["../../src/provider/stored-messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAClG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAY/C;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,kBAAkB,EAAE,GAAG,YAAY,EAAE,CA8C3F"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { displayedToolCall } from '@ouispec/agent-core';
|
|
1
|
+
import { displayedToolCall, turnStoppedNote } from '@ouispec/agent-core';
|
|
2
2
|
/** A stored tool result as the live stream carried it: parsed JSON when it is JSON. */
|
|
3
3
|
function parseResult(content) {
|
|
4
4
|
if (content == null)
|
|
@@ -29,8 +29,21 @@ export function storedToAgentMessages(stored) {
|
|
|
29
29
|
for (const m of stored) {
|
|
30
30
|
const timestamp = Date.parse(m.createdAt) || 0;
|
|
31
31
|
if (m.role === 'user' || m.role === 'assistant') {
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
// A stopped turn's last message keeps its mark; one that has only the mark
|
|
33
|
+
// (the turn was stopped before it said anything) shows as stopped, with no text.
|
|
34
|
+
const stopped = m.role === 'assistant' && m.stopped ? m.stopped.reason : undefined;
|
|
35
|
+
const onlyTheMark = stopped !== undefined && m.content === turnStoppedNote({ reason: stopped });
|
|
36
|
+
// A message may be files with no text.
|
|
37
|
+
const attachments = m.role === 'user' && m.attachments?.length ? m.attachments : undefined;
|
|
38
|
+
if (m.content || stopped || attachments) {
|
|
39
|
+
messages.push({
|
|
40
|
+
id: m.id,
|
|
41
|
+
role: m.role === 'user' ? 'user' : 'assistant',
|
|
42
|
+
content: onlyTheMark ? '' : (m.content ?? ''),
|
|
43
|
+
timestamp,
|
|
44
|
+
...(stopped ? { stopped } : {}),
|
|
45
|
+
...(attachments ? { attachments } : {}),
|
|
46
|
+
});
|
|
34
47
|
}
|
|
35
48
|
for (const call of m.toolCalls ?? []) {
|
|
36
49
|
const shown = displayedToolCall(call);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stored-messages.js","sourceRoot":"","sources":["../../src/provider/stored-messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAA2B,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"stored-messages.js","sourceRoot":"","sources":["../../src/provider/stored-messages.ts"],"names":[],"mappings":"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"}
|
package/dist/provider/types.d.ts
CHANGED
|
@@ -2,13 +2,25 @@
|
|
|
2
2
|
* Re-export the config type for convenience.
|
|
3
3
|
*/
|
|
4
4
|
export type { AgentClientConfig } from '@ouispec/agent-core';
|
|
5
|
-
import type {
|
|
5
|
+
import type { AttachmentRef } from '@ouispec/agent-core';
|
|
6
|
+
import type { ComposerAttachmentsState, NotSentReason } from './attachments.js';
|
|
7
|
+
/** What `sendMessage` did: the turn it started, or why nothing was sent. */
|
|
8
|
+
export interface SendMessageResult {
|
|
9
|
+
/** Empty when nothing was sent. */
|
|
10
|
+
turnId: string;
|
|
11
|
+
notSent?: {
|
|
12
|
+
reason: NotSentReason;
|
|
13
|
+
content: string;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
import type { ApprovalRequiredProtocolEvent, SocketLike, AgentConversationChanges, AgentConversationFilter, AgentConversationSummary, TurnStoppedReason } from '@ouispec/agent-core';
|
|
6
17
|
export interface AgentToolCallState {
|
|
7
18
|
id: string;
|
|
8
19
|
name: string;
|
|
9
20
|
/** What the assistant called it with: a session's record can be replayed from it (ADR-0244 §2.7). */
|
|
10
21
|
arguments?: Record<string, unknown>;
|
|
11
|
-
|
|
22
|
+
/** `stopped`: the turn was stopped before this call's result arrived here. */
|
|
23
|
+
status: 'running' | 'complete' | 'error' | 'stopped';
|
|
12
24
|
result?: unknown;
|
|
13
25
|
}
|
|
14
26
|
export interface AgentMessage {
|
|
@@ -18,6 +30,13 @@ export interface AgentMessage {
|
|
|
18
30
|
timestamp: number;
|
|
19
31
|
toolCall?: AgentToolCallState;
|
|
20
32
|
isStreaming?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Set on the assistant message of a turn that was stopped (ADR-0252): by
|
|
35
|
+
* the person, or by a newer message. What it had said is kept.
|
|
36
|
+
*/
|
|
37
|
+
stopped?: TurnStoppedReason;
|
|
38
|
+
/** The files the person attached to this message (ADR-0252 §2.8), by reference. */
|
|
39
|
+
attachments?: AttachmentRef[];
|
|
21
40
|
}
|
|
22
41
|
export type DebugLogLevel = 'info' | 'warn' | 'error' | 'event' | 'socket';
|
|
23
42
|
/**
|
|
@@ -164,9 +183,40 @@ export interface AgentContextValue {
|
|
|
164
183
|
toggle: () => void;
|
|
165
184
|
open: () => void;
|
|
166
185
|
close: () => void;
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
186
|
+
/**
|
|
187
|
+
* Sends the person's message. While a turn is running this is a barge-in
|
|
188
|
+
* (ADR-0252 §2.5): the platform stops the running turn and this message
|
|
189
|
+
* runs next. The tab's turn is the new one from this call on.
|
|
190
|
+
*
|
|
191
|
+
* The message carries the composer's ready files (`attachments`), after
|
|
192
|
+
* waiting for any still uploading, unless references are given here.
|
|
193
|
+
*
|
|
194
|
+
* It is not sent, and `notSent` says why and hands back `content` for the
|
|
195
|
+
* composer to keep as the draft, when a file on it is refused, when a send
|
|
196
|
+
* already waits for its files, or when the conversation changes or the
|
|
197
|
+
* person gives the send up (Stop) while it waits.
|
|
198
|
+
*/
|
|
199
|
+
sendMessage: (content: string, attachments?: AttachmentRef[]) => Promise<SendMessageResult>;
|
|
200
|
+
/**
|
|
201
|
+
* The files on the message being written (ADR-0252 §2.14): attach, watch
|
|
202
|
+
* each upload, remove. `enabled` is false when the platform takes no files.
|
|
203
|
+
*/
|
|
204
|
+
attachments: ComposerAttachmentsState;
|
|
205
|
+
/**
|
|
206
|
+
* Stops the turn in progress (ADR-0252 §2.14). What it had produced is
|
|
207
|
+
* kept. Does nothing when no turn is running or a stop is already asked.
|
|
208
|
+
*/
|
|
209
|
+
stopTurn: () => Promise<void>;
|
|
210
|
+
/** True from the person's Stop until the turn's end arrives. */
|
|
211
|
+
isStopping: boolean;
|
|
212
|
+
/**
|
|
213
|
+
* The turn whose UI requests this tab runs now, or null: read when a request
|
|
214
|
+
* arrives, not at render. Null while no turn runs, while a new turn has no
|
|
215
|
+
* id yet, and from the moment a stop is asked, so a request a stopped or
|
|
216
|
+
* superseded turn sends late is refused. Give it to the tab's OUI runtime:
|
|
217
|
+
* `accept: acceptCurrentTurn(agent.acceptedTurnId)`.
|
|
218
|
+
*/
|
|
219
|
+
acceptedTurnId: () => string | null;
|
|
170
220
|
messages: AgentMessage[];
|
|
171
221
|
isStreaming: boolean;
|
|
172
222
|
currentTurnId: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/provider/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EACV,6BAA6B,EAC7B,UAAU,EACV,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/provider/types.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
package/dist/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ouispec/agent-react",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "React bindings — view annotations, execution engine, agent UI components",
|
|
5
5
|
"homepage": "https://github.com/wesreid/oui/tree/main/packages/agent-react#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"socket.io-client": "^4.7.0",
|
|
35
|
-
"@ouispec/agent-core": "^0.
|
|
35
|
+
"@ouispec/agent-core": "^0.8.0"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@testing-library/react": "^16",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"react-dom": "^19.0.0",
|
|
43
43
|
"typescript": "^5.8.0",
|
|
44
44
|
"vitest": "^3.2.0",
|
|
45
|
-
"oui-spec": "0.
|
|
45
|
+
"oui-spec": "0.11.0"
|
|
46
46
|
},
|
|
47
47
|
"publishConfig": {
|
|
48
48
|
"access": "public",
|