@memberjunction/ai-agents 6.2.0-edge.3 → 6.2.0-edge.4
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 +6 -0
- package/dist/AgentRunner.d.ts +49 -2
- package/dist/AgentRunner.d.ts.map +1 -1
- package/dist/AgentRunner.js +114 -21
- package/dist/AgentRunner.js.map +1 -1
- package/dist/ConversationCompactionManager.d.ts +2 -0
- package/dist/ConversationCompactionManager.d.ts.map +1 -1
- package/dist/ConversationCompactionManager.js +2 -2
- package/dist/ConversationCompactionManager.js.map +1 -1
- package/dist/ConversationToolManager.d.ts +13 -2
- package/dist/ConversationToolManager.d.ts.map +1 -1
- package/dist/ConversationToolManager.js +19 -3
- package/dist/ConversationToolManager.js.map +1 -1
- package/dist/KnowledgeAgent.d.ts.map +1 -1
- package/dist/KnowledgeAgent.js +6 -1
- package/dist/KnowledgeAgent.js.map +1 -1
- package/dist/MJAIAgentRequestEntityServer.d.ts +6 -0
- package/dist/MJAIAgentRequestEntityServer.d.ts.map +1 -1
- package/dist/MJAIAgentRequestEntityServer.js +26 -1
- package/dist/MJAIAgentRequestEntityServer.js.map +1 -1
- package/dist/agent-run-watchdog.d.ts +65 -5
- package/dist/agent-run-watchdog.d.ts.map +1 -1
- package/dist/agent-run-watchdog.js +143 -28
- package/dist/agent-run-watchdog.js.map +1 -1
- package/dist/agent-types/loop-agent-prompt-params.d.ts +7 -0
- package/dist/agent-types/loop-agent-prompt-params.d.ts.map +1 -1
- package/dist/agent-types/loop-agent-prompt-params.js +1 -0
- package/dist/agent-types/loop-agent-prompt-params.js.map +1 -1
- package/dist/artifact-tools/SearchResultSetToolLibrary.js +4 -4
- package/dist/artifact-tools/SearchResultSetToolLibrary.js.map +1 -1
- package/dist/base-agent.d.ts +275 -18
- package/dist/base-agent.d.ts.map +1 -1
- package/dist/base-agent.js +761 -216
- package/dist/base-agent.js.map +1 -1
- package/dist/client-tool-results.d.ts +45 -0
- package/dist/client-tool-results.d.ts.map +1 -0
- package/dist/client-tool-results.js +94 -0
- package/dist/client-tool-results.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/prior-turn-tool-result-cache.d.ts +31 -12
- package/dist/prior-turn-tool-result-cache.d.ts.map +1 -1
- package/dist/prior-turn-tool-result-cache.js +59 -16
- package/dist/prior-turn-tool-result-cache.js.map +1 -1
- package/dist/realtime/bridge-realtime-session-factory.d.ts +44 -2
- package/dist/realtime/bridge-realtime-session-factory.d.ts.map +1 -1
- package/dist/realtime/bridge-realtime-session-factory.js +68 -20
- package/dist/realtime/bridge-realtime-session-factory.js.map +1 -1
- package/dist/realtime/bridge-realtime-usage-recorder.d.ts +81 -0
- package/dist/realtime/bridge-realtime-usage-recorder.d.ts.map +1 -0
- package/dist/realtime/bridge-realtime-usage-recorder.js +194 -0
- package/dist/realtime/bridge-realtime-usage-recorder.js.map +1 -0
- package/dist/realtime/client-only-channel-server.d.ts +83 -0
- package/dist/realtime/client-only-channel-server.d.ts.map +1 -0
- package/dist/realtime/client-only-channel-server.js +107 -0
- package/dist/realtime/client-only-channel-server.js.map +1 -0
- package/dist/realtime/identity-verification-channel-server.d.ts +50 -0
- package/dist/realtime/identity-verification-channel-server.d.ts.map +1 -0
- package/dist/realtime/identity-verification-channel-server.js +66 -0
- package/dist/realtime/identity-verification-channel-server.js.map +1 -0
- package/dist/realtime/interactive-component-channel-server.d.ts +39 -0
- package/dist/realtime/interactive-component-channel-server.d.ts.map +1 -0
- package/dist/realtime/interactive-component-channel-server.js +55 -0
- package/dist/realtime/interactive-component-channel-server.js.map +1 -0
- package/dist/realtime/realtime-avatar-resolution.d.ts +194 -0
- package/dist/realtime/realtime-avatar-resolution.d.ts.map +1 -0
- package/dist/realtime/realtime-avatar-resolution.js +208 -0
- package/dist/realtime/realtime-avatar-resolution.js.map +1 -0
- package/dist/realtime/realtime-channel-policy.d.ts +81 -0
- package/dist/realtime/realtime-channel-policy.d.ts.map +1 -0
- package/dist/realtime/realtime-channel-policy.js +91 -0
- package/dist/realtime/realtime-channel-policy.js.map +1 -0
- package/dist/realtime/realtime-channel-server-host.d.ts +14 -0
- package/dist/realtime/realtime-channel-server-host.d.ts.map +1 -1
- package/dist/realtime/realtime-channel-server-host.js +35 -0
- package/dist/realtime/realtime-channel-server-host.js.map +1 -1
- package/dist/realtime/realtime-client-session-service.d.ts +430 -30
- package/dist/realtime/realtime-client-session-service.d.ts.map +1 -1
- package/dist/realtime/realtime-client-session-service.js +766 -111
- package/dist/realtime/realtime-client-session-service.js.map +1 -1
- package/dist/realtime/realtime-coagent-config.d.ts +94 -15
- package/dist/realtime/realtime-coagent-config.d.ts.map +1 -1
- package/dist/realtime/realtime-coagent-config.js +109 -4
- package/dist/realtime/realtime-coagent-config.js.map +1 -1
- package/dist/realtime/realtime-recording-store.d.ts +136 -16
- package/dist/realtime/realtime-recording-store.d.ts.map +1 -1
- package/dist/realtime/realtime-recording-store.js +505 -39
- package/dist/realtime/realtime-recording-store.js.map +1 -1
- package/dist/realtime/realtime-session-runner.js +4 -4
- package/dist/realtime/realtime-session-runner.js.map +1 -1
- package/dist/realtime/realtime-vendor-resolution.d.ts +9 -0
- package/dist/realtime/realtime-vendor-resolution.d.ts.map +1 -1
- package/dist/realtime/realtime-vendor-resolution.js +16 -5
- package/dist/realtime/realtime-vendor-resolution.js.map +1 -1
- package/dist/realtime/realtime-video-output-gate.d.ts +83 -0
- package/dist/realtime/realtime-video-output-gate.d.ts.map +1 -0
- package/dist/realtime/realtime-video-output-gate.js +79 -0
- package/dist/realtime/realtime-video-output-gate.js.map +1 -0
- package/dist/tool-result-format.d.ts +14 -0
- package/dist/tool-result-format.d.ts.map +1 -1
- package/dist/tool-result-format.js.map +1 -1
- package/package.json +19 -19
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { AgentChatMessage, ClientToolResultSummary } from '@memberjunction/ai-core-plus';
|
|
2
|
+
import type { ChatMessageContent, ChatMessageContentBlock } from '@memberjunction/ai';
|
|
3
|
+
/** Expiration for a client tool result message without images: it is removed after 3 turns. */
|
|
4
|
+
export declare const CLIENT_TOOL_RESULT_EXPIRATION: {
|
|
5
|
+
readonly expirationTurns: 3;
|
|
6
|
+
readonly expirationMode: "Remove";
|
|
7
|
+
};
|
|
8
|
+
/** Expiration for a client tool result message with images: it is removed after 2 turns, so screenshots leave the context soon. */
|
|
9
|
+
export declare const CLIENT_TOOL_IMAGE_RESULT_EXPIRATION: {
|
|
10
|
+
readonly expirationTurns: 2;
|
|
11
|
+
readonly expirationMode: "Remove";
|
|
12
|
+
};
|
|
13
|
+
/** The token estimate for one image block: a high estimate of what vision models charge for a 1280×800 image. */
|
|
14
|
+
export declare const IMAGE_BLOCK_TOKEN_ESTIMATE = 1600;
|
|
15
|
+
/** A content block type that carries media: every type other than text and tool results. */
|
|
16
|
+
type MediaBlockType = Exclude<ChatMessageContentBlock['type'], 'text' | 'tool_result'>;
|
|
17
|
+
/**
|
|
18
|
+
* The character cap for one client tool result from the agent type prompt params.
|
|
19
|
+
* -1 means no cap. Anything that is not a positive integer means no cap.
|
|
20
|
+
*/
|
|
21
|
+
export declare function ResolveClientToolResultMaxChars(promptParams: Record<string, unknown> | undefined): number;
|
|
22
|
+
/**
|
|
23
|
+
* Markdown summary of client tool results for the conversation. Each successful result is
|
|
24
|
+
* included in full, or cut to `maxChars` with a note that says how much was cut. A `maxChars`
|
|
25
|
+
* that is not a positive integer, such as -1 or 0, means no cap.
|
|
26
|
+
*/
|
|
27
|
+
export declare function FormatClientToolResults(results: ClientToolResultSummary[], maxChars: number): string;
|
|
28
|
+
/**
|
|
29
|
+
* The conversation message for client tool results. Images come first as `image_url` blocks and
|
|
30
|
+
* the markdown summary follows as a text block, so a vision model sees both. Only successful
|
|
31
|
+
* results contribute images, and each image block carries its tool's name as `fileName`.
|
|
32
|
+
* Without images the content is the plain markdown string.
|
|
33
|
+
*/
|
|
34
|
+
export declare function BuildClientToolResultMessage(results: ClientToolResultSummary[], turnAdded: number, maxChars: number): AgentChatMessage;
|
|
35
|
+
/** Whether a content block carries an image, audio, video or file rather than text or a tool result. */
|
|
36
|
+
export declare function IsMediaBlock(block: ChatMessageContentBlock): block is ChatMessageContentBlock & {
|
|
37
|
+
type: MediaBlockType;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* The text of a message with every media block replaced by a stub that names its kind, such as
|
|
41
|
+
* `[image omitted]` or `[file omitted]`. Text and tool result blocks keep their content.
|
|
42
|
+
*/
|
|
43
|
+
export declare function ReplaceMediaBlocksWithStubs(content: ChatMessageContent): string;
|
|
44
|
+
export {};
|
|
45
|
+
//# sourceMappingURL=client-tool-results.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-tool-results.d.ts","sourceRoot":"","sources":["../src/client-tool-results.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAuB,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACnH,OAAO,KAAK,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAEtF,+FAA+F;AAC/F,eAAO,MAAM,6BAA6B;;;CAA4D,CAAC;AAEvG,mIAAmI;AACnI,eAAO,MAAM,mCAAmC;;;CAA4D,CAAC;AAE7G,iHAAiH;AACjH,eAAO,MAAM,0BAA0B,OAAO,CAAC;AAE/C,4FAA4F;AAC5F,KAAK,cAAc,GAAG,OAAO,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC;AAUvF;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,MAAM,CAGzG;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,uBAAuB,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAiBpG;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,uBAAuB,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAWtI;AAED,wGAAwG;AACxG,wBAAgB,YAAY,CAAC,KAAK,EAAE,uBAAuB,GAAG,KAAK,IAAI,uBAAuB,GAAG;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,CAExH;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAG/E"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/** Expiration for a client tool result message without images: it is removed after 3 turns. */
|
|
2
|
+
export const CLIENT_TOOL_RESULT_EXPIRATION = { expirationTurns: 3, expirationMode: 'Remove' };
|
|
3
|
+
/** Expiration for a client tool result message with images: it is removed after 2 turns, so screenshots leave the context soon. */
|
|
4
|
+
export const CLIENT_TOOL_IMAGE_RESULT_EXPIRATION = { expirationTurns: 2, expirationMode: 'Remove' };
|
|
5
|
+
/** The token estimate for one image block: a high estimate of what vision models charge for a 1280×800 image. */
|
|
6
|
+
export const IMAGE_BLOCK_TOKEN_ESTIMATE = 1600;
|
|
7
|
+
/** The stub that replaces each kind of media block in text. */
|
|
8
|
+
const MEDIA_BLOCK_STUBS = {
|
|
9
|
+
image_url: '[image omitted]',
|
|
10
|
+
file_url: '[file omitted]',
|
|
11
|
+
audio_url: '[audio omitted]',
|
|
12
|
+
video_url: '[video omitted]',
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* The character cap for one client tool result from the agent type prompt params.
|
|
16
|
+
* -1 means no cap. Anything that is not a positive integer means no cap.
|
|
17
|
+
*/
|
|
18
|
+
export function ResolveClientToolResultMaxChars(promptParams) {
|
|
19
|
+
const raw = promptParams?.['clientToolResultMaxChars'];
|
|
20
|
+
return typeof raw === 'number' && Number.isInteger(raw) && raw > 0 ? raw : -1;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Markdown summary of client tool results for the conversation. Each successful result is
|
|
24
|
+
* included in full, or cut to `maxChars` with a note that says how much was cut. A `maxChars`
|
|
25
|
+
* that is not a positive integer, such as -1 or 0, means no cap.
|
|
26
|
+
*/
|
|
27
|
+
export function FormatClientToolResults(results, maxChars) {
|
|
28
|
+
const failedCount = results.filter(r => !r.Success).length;
|
|
29
|
+
const header = failedCount > 0
|
|
30
|
+
? `${failedCount} of ${results.length} client tool(s) failed:`
|
|
31
|
+
: 'Client tool results:';
|
|
32
|
+
const lines = results.map(r => {
|
|
33
|
+
const icon = r.Success ? '✓' : '✗';
|
|
34
|
+
let line = `${icon} **${r.ToolName}**: ${r.Success ? 'succeeded' : 'failed'}`;
|
|
35
|
+
if (r.ErrorMessage)
|
|
36
|
+
line += ` — ${r.ErrorMessage}`;
|
|
37
|
+
if (r.Success && r.Result != null) {
|
|
38
|
+
line += `\n Result: ${capResult(r.Result, maxChars)}`;
|
|
39
|
+
}
|
|
40
|
+
return line;
|
|
41
|
+
});
|
|
42
|
+
return `${header}\n${lines.join('\n')}`;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* The conversation message for client tool results. Images come first as `image_url` blocks and
|
|
46
|
+
* the markdown summary follows as a text block, so a vision model sees both. Only successful
|
|
47
|
+
* results contribute images, and each image block carries its tool's name as `fileName`.
|
|
48
|
+
* Without images the content is the plain markdown string.
|
|
49
|
+
*/
|
|
50
|
+
export function BuildClientToolResultMessage(results, turnAdded, maxChars) {
|
|
51
|
+
const text = FormatClientToolResults(results, maxChars);
|
|
52
|
+
const imageBlocks = results.flatMap(r => (r.Success && r.Media) ? r.Media.map(m => toImageBlock(m, r.ToolName)) : []);
|
|
53
|
+
if (imageBlocks.length === 0) {
|
|
54
|
+
return { role: 'user', content: text, metadata: { turnAdded, messageType: 'client-tool-result', ...CLIENT_TOOL_RESULT_EXPIRATION } };
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
role: 'user',
|
|
58
|
+
content: [...imageBlocks, { type: 'text', content: text }],
|
|
59
|
+
metadata: { turnAdded, messageType: 'client-tool-result', ...CLIENT_TOOL_IMAGE_RESULT_EXPIRATION },
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
/** Whether a content block carries an image, audio, video or file rather than text or a tool result. */
|
|
63
|
+
export function IsMediaBlock(block) {
|
|
64
|
+
return block.type !== 'text' && block.type !== 'tool_result';
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* The text of a message with every media block replaced by a stub that names its kind, such as
|
|
68
|
+
* `[image omitted]` or `[file omitted]`. Text and tool result blocks keep their content.
|
|
69
|
+
*/
|
|
70
|
+
export function ReplaceMediaBlocksWithStubs(content) {
|
|
71
|
+
if (typeof content === 'string')
|
|
72
|
+
return content;
|
|
73
|
+
return content.map(block => IsMediaBlock(block) ? MEDIA_BLOCK_STUBS[block.type] : block.content).join('\n');
|
|
74
|
+
}
|
|
75
|
+
/** An `image_url` block for one client tool image, with the tool's name as its file name. */
|
|
76
|
+
function toImageBlock(media, toolName) {
|
|
77
|
+
return { type: 'image_url', content: `data:${media.MimeType};base64,${media.Base64}`, mimeType: media.MimeType, fileName: toolName };
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* The result as text. When `maxChars` is a positive integer and the text is longer, the text is
|
|
81
|
+
* cut to `maxChars` and a note says how much was cut. The cut never splits a surrogate pair.
|
|
82
|
+
*/
|
|
83
|
+
function capResult(result, maxChars) {
|
|
84
|
+
const text = typeof result === 'string' ? result : JSON.stringify(result);
|
|
85
|
+
if (!Number.isInteger(maxChars) || maxChars <= 0 || text.length <= maxChars)
|
|
86
|
+
return text;
|
|
87
|
+
const keep = isHighSurrogate(text.charCodeAt(maxChars - 1)) ? maxChars - 1 : maxChars;
|
|
88
|
+
return `${text.slice(0, keep)} [truncated ${text.length - keep} of ${text.length} chars]`;
|
|
89
|
+
}
|
|
90
|
+
/** Whether a UTF-16 code unit is the first half of a surrogate pair (U+D800 to U+DBFF). */
|
|
91
|
+
function isHighSurrogate(codeUnit) {
|
|
92
|
+
return codeUnit >= 0xd800 && codeUnit <= 0xdbff;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=client-tool-results.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-tool-results.js","sourceRoot":"","sources":["../src/client-tool-results.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -71,13 +71,18 @@ export { RealtimeToolBroker, RealtimeToolBrokerDeps, ExecutedToolCall, Delegated
|
|
|
71
71
|
export * from './realtime/realtime-client-session-service.js';
|
|
72
72
|
export * from './realtime/realtime-coagent-config.js';
|
|
73
73
|
export * from './realtime/realtime-vendor-resolution.js';
|
|
74
|
+
export * from './realtime/realtime-video-output-gate.js';
|
|
74
75
|
export * from './realtime/realtime-narration.js';
|
|
75
76
|
export * from './realtime/realtime-delegation-narrator.js';
|
|
76
77
|
export * from './realtime/realtime-coagent-resolution.js';
|
|
77
78
|
export * from './realtime/bridge-host-params.js';
|
|
78
79
|
export * from './realtime/realtime-channel-server-host.js';
|
|
80
|
+
export * from './realtime/realtime-channel-policy.js';
|
|
79
81
|
export * from './realtime/whiteboard-channel-server.js';
|
|
82
|
+
export * from './realtime/client-only-channel-server.js';
|
|
80
83
|
export * from './realtime/client-context-channel-server.js';
|
|
84
|
+
export * from './realtime/identity-verification-channel-server.js';
|
|
85
|
+
export * from './realtime/interactive-component-channel-server.js';
|
|
81
86
|
export * from './realtime/meeting-controls-state.js';
|
|
82
87
|
export * from './realtime/meeting-controls-channel-server.js';
|
|
83
88
|
export * from './realtime/media-channel-server.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -76,13 +76,18 @@ export { RealtimeToolBroker } from './realtime/realtime-tool-broker.js';
|
|
|
76
76
|
export * from './realtime/realtime-client-session-service.js';
|
|
77
77
|
export * from './realtime/realtime-coagent-config.js';
|
|
78
78
|
export * from './realtime/realtime-vendor-resolution.js';
|
|
79
|
+
export * from './realtime/realtime-video-output-gate.js';
|
|
79
80
|
export * from './realtime/realtime-narration.js';
|
|
80
81
|
export * from './realtime/realtime-delegation-narrator.js';
|
|
81
82
|
export * from './realtime/realtime-coagent-resolution.js';
|
|
82
83
|
export * from './realtime/bridge-host-params.js';
|
|
83
84
|
export * from './realtime/realtime-channel-server-host.js';
|
|
85
|
+
export * from './realtime/realtime-channel-policy.js';
|
|
84
86
|
export * from './realtime/whiteboard-channel-server.js';
|
|
87
|
+
export * from './realtime/client-only-channel-server.js';
|
|
85
88
|
export * from './realtime/client-context-channel-server.js';
|
|
89
|
+
export * from './realtime/identity-verification-channel-server.js';
|
|
90
|
+
export * from './realtime/interactive-component-channel-server.js';
|
|
86
91
|
export * from './realtime/meeting-controls-state.js';
|
|
87
92
|
export * from './realtime/meeting-controls-channel-server.js';
|
|
88
93
|
export * from './realtime/media-channel-server.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,13 @@ import { CarryForwardStepRecord } from './tool-result-format.js';
|
|
|
20
20
|
* - Entries are keyed by conversation AND agent, mirroring the DB path's `AgentID`
|
|
21
21
|
* filter — in a multi-agent conversation, agent B must never inherit agent A's
|
|
22
22
|
* results labeled "your previous turn".
|
|
23
|
+
* - Entries are also keyed by branch, mirroring the DB path's branch-path filter — a
|
|
24
|
+
* run never inherits results from a run whose reply row is off its path. A branch with
|
|
25
|
+
* no entry yet falls back to the DB path, which can return a trunk run from before the fork.
|
|
26
|
+
* - Entries carry the reply row of the run that stored them. When a save on this server
|
|
27
|
+
* marks that row replaced (`ReplacedAt` set by an in-place rerun of its turn), the entry
|
|
28
|
+
* is no longer served, just as the DB path leaves out runs whose reply row is replaced:
|
|
29
|
+
* a replaced answer's tool results are never carried forward.
|
|
23
30
|
* - Values are the raw completed-`Tool`-step `OutputData` projections; eligibility is
|
|
24
31
|
* still decided downstream by `BuildPriorTurnToolResultsMessage` via `toolFamily`,
|
|
25
32
|
* identical for cached and DB-loaded records.
|
|
@@ -38,9 +45,14 @@ import { CarryForwardStepRecord } from './tool-result-format.js';
|
|
|
38
45
|
* the TTL bounds the staleness window, and each node self-heals on its next completed
|
|
39
46
|
* run for that conversation — so the fallback keeps the default single-node deployment
|
|
40
47
|
* exact while multi-node degrades gracefully rather than paying the queries every turn.
|
|
48
|
+
* The replaced-row rule has the same limit: a replacement saved on another server is not
|
|
49
|
+
* seen here, so this node can still serve that run's entry until it expires or is replaced.
|
|
41
50
|
*/
|
|
42
51
|
export declare class PriorTurnToolResultCache extends BaseSingleton<PriorTurnToolResultCache> {
|
|
43
|
-
/**
|
|
52
|
+
/**
|
|
53
|
+
* Protected per the {@link BaseSingleton} contract — obtain via {@link Instance}. Listens for
|
|
54
|
+
* entity saves on this server to learn which conversation details were replaced.
|
|
55
|
+
*/
|
|
44
56
|
protected constructor();
|
|
45
57
|
/** Process-wide singleton accessor (Global Object Store backed, bundler-duplication safe). */
|
|
46
58
|
static get Instance(): PriorTurnToolResultCache;
|
|
@@ -51,21 +63,28 @@ export declare class PriorTurnToolResultCache extends BaseSingleton<PriorTurnToo
|
|
|
51
63
|
* bounding the multi-node staleness window described above.
|
|
52
64
|
*/
|
|
53
65
|
private cache;
|
|
54
|
-
/**
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
*/
|
|
66
|
+
/** Normalized ids of conversation details replaced by an in-place rerun, seen on this server. */
|
|
67
|
+
private replacedDetails;
|
|
68
|
+
/** Key: conversation, agent and branch ('trunk' when none), so an entry serves only runs on the branch that stored it. */
|
|
58
69
|
private static buildKey;
|
|
59
70
|
/**
|
|
60
71
|
* Returns the carry-forward records of this agent's most recent settled root run in
|
|
61
|
-
* the conversation on this node
|
|
62
|
-
*
|
|
63
|
-
* database".
|
|
72
|
+
* the conversation on this node, on one branch path (`branchId` null is the trunk) —
|
|
73
|
+
* `[]` means "settled with no tool results" (a valid, query-skipping answer);
|
|
74
|
+
* `undefined` means "not known here, ask the database". An entry whose run's reply row
|
|
75
|
+
* was replaced is dropped and reads as `undefined`.
|
|
76
|
+
*/
|
|
77
|
+
Get(conversationId: string, agentId: string, branchId: string | null): CarryForwardStepRecord[] | undefined;
|
|
78
|
+
/**
|
|
79
|
+
* Records a settled root run's carry-forward projections (empty array included) for one branch path.
|
|
80
|
+
* `sourceDetailId` is the run's reply row; the entry is not served once that row is replaced.
|
|
64
81
|
*/
|
|
65
|
-
|
|
66
|
-
/** Records a
|
|
67
|
-
|
|
68
|
-
/** Drops every entry — test isolation hook. */
|
|
82
|
+
Set(conversationId: string, agentId: string, branchId: string | null, steps: CarryForwardStepRecord[], sourceDetailId?: string | null): void;
|
|
83
|
+
/** Records that an in-place rerun replaced a conversation detail; entries whose run replied with it are no longer served. */
|
|
84
|
+
MarkDetailReplaced(detailId: string): void;
|
|
85
|
+
/** Drops every entry and every replaced-detail mark — test isolation hook. */
|
|
69
86
|
Clear(): void;
|
|
87
|
+
/** Marks a conversation detail replaced when a save on this server leaves its `ReplacedAt` set. */
|
|
88
|
+
private onGlobalEvent;
|
|
70
89
|
}
|
|
71
90
|
//# sourceMappingURL=prior-turn-tool-result-cache.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prior-turn-tool-result-cache.d.ts","sourceRoot":"","sources":["../src/prior-turn-tool-result-cache.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prior-turn-tool-result-cache.d.ts","sourceRoot":"","sources":["../src/prior-turn-tool-result-cache.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAkE,MAAM,wBAAwB,CAAC;AACvH,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAS9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,qBAAa,wBAAyB,SAAQ,aAAa,CAAC,wBAAwB,CAAC;IACjF;;;OAGG;IACH,SAAS;IAKT,8FAA8F;IAC9F,WAAkB,QAAQ,IAAI,wBAAwB,CAErD;IAED;;;;;OAKG;IACH,OAAO,CAAC,KAAK,CAGV;IAEH,iGAAiG;IACjG,OAAO,CAAC,eAAe,CAAmD;IAE1E,0HAA0H;IAC1H,OAAO,CAAC,MAAM,CAAC,QAAQ;IAIvB;;;;;;OAMG;IACI,GAAG,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,sBAAsB,EAAE,GAAG,SAAS;IAalH;;;OAGG;IACI,GAAG,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE,cAAc,GAAE,MAAM,GAAG,IAAW,GAAG,IAAI;IAIzJ,6HAA6H;IACtH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIjD,8EAA8E;IACvE,KAAK,IAAI,IAAI;IAKpB,mGAAmG;IACnG,OAAO,CAAC,aAAa;CAUxB"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BaseEntity } from '@memberjunction/core';
|
|
2
|
+
import { ConversationEngine, MJConversationDetailEntity } from '@memberjunction/core-entities';
|
|
3
|
+
import { BaseSingleton, MJEventType, MJGlobal, MJLruCache, NormalizeUUID } from '@memberjunction/global';
|
|
2
4
|
/**
|
|
3
5
|
* Process-wide cache of the most recent settled root run's Tool-step results per
|
|
4
6
|
* conversation + agent, keeping the prior-turn carry-forward check off the database on
|
|
@@ -19,6 +21,13 @@ import { BaseSingleton, MJLruCache, NormalizeUUID } from '@memberjunction/global
|
|
|
19
21
|
* - Entries are keyed by conversation AND agent, mirroring the DB path's `AgentID`
|
|
20
22
|
* filter — in a multi-agent conversation, agent B must never inherit agent A's
|
|
21
23
|
* results labeled "your previous turn".
|
|
24
|
+
* - Entries are also keyed by branch, mirroring the DB path's branch-path filter — a
|
|
25
|
+
* run never inherits results from a run whose reply row is off its path. A branch with
|
|
26
|
+
* no entry yet falls back to the DB path, which can return a trunk run from before the fork.
|
|
27
|
+
* - Entries carry the reply row of the run that stored them. When a save on this server
|
|
28
|
+
* marks that row replaced (`ReplacedAt` set by an in-place rerun of its turn), the entry
|
|
29
|
+
* is no longer served, just as the DB path leaves out runs whose reply row is replaced:
|
|
30
|
+
* a replaced answer's tool results are never carried forward.
|
|
22
31
|
* - Values are the raw completed-`Tool`-step `OutputData` projections; eligibility is
|
|
23
32
|
* still decided downstream by `BuildPriorTurnToolResultsMessage` via `toolFamily`,
|
|
24
33
|
* identical for cached and DB-loaded records.
|
|
@@ -37,9 +46,14 @@ import { BaseSingleton, MJLruCache, NormalizeUUID } from '@memberjunction/global
|
|
|
37
46
|
* the TTL bounds the staleness window, and each node self-heals on its next completed
|
|
38
47
|
* run for that conversation — so the fallback keeps the default single-node deployment
|
|
39
48
|
* exact while multi-node degrades gracefully rather than paying the queries every turn.
|
|
49
|
+
* The replaced-row rule has the same limit: a replacement saved on another server is not
|
|
50
|
+
* seen here, so this node can still serve that run's entry until it expires or is replaced.
|
|
40
51
|
*/
|
|
41
52
|
export class PriorTurnToolResultCache extends BaseSingleton {
|
|
42
|
-
/**
|
|
53
|
+
/**
|
|
54
|
+
* Protected per the {@link BaseSingleton} contract — obtain via {@link Instance}. Listens for
|
|
55
|
+
* entity saves on this server to learn which conversation details were replaced.
|
|
56
|
+
*/
|
|
43
57
|
constructor() {
|
|
44
58
|
super();
|
|
45
59
|
/**
|
|
@@ -52,34 +66,63 @@ export class PriorTurnToolResultCache extends BaseSingleton {
|
|
|
52
66
|
maxSize: 500,
|
|
53
67
|
ttlMs: 30 * 60 * 1000
|
|
54
68
|
});
|
|
69
|
+
/** Normalized ids of conversation details replaced by an in-place rerun, seen on this server. */
|
|
70
|
+
this.replacedDetails = new MJLruCache({ maxSize: 5000 });
|
|
71
|
+
MJGlobal.Instance.GetEventListener(false).subscribe(event => this.onGlobalEvent(event));
|
|
55
72
|
}
|
|
56
73
|
/** Process-wide singleton accessor (Global Object Store backed, bundler-duplication safe). */
|
|
57
74
|
static get Instance() {
|
|
58
75
|
return super.getInstance();
|
|
59
76
|
}
|
|
77
|
+
/** Key: conversation, agent and branch ('trunk' when none), so an entry serves only runs on the branch that stored it. */
|
|
78
|
+
static buildKey(conversationId, agentId, branchId) {
|
|
79
|
+
return `${NormalizeUUID(conversationId)}::${NormalizeUUID(agentId)}::${branchId ? NormalizeUUID(branchId) : 'trunk'}`;
|
|
80
|
+
}
|
|
60
81
|
/**
|
|
61
|
-
*
|
|
62
|
-
*
|
|
82
|
+
* Returns the carry-forward records of this agent's most recent settled root run in
|
|
83
|
+
* the conversation on this node, on one branch path (`branchId` null is the trunk) —
|
|
84
|
+
* `[]` means "settled with no tool results" (a valid, query-skipping answer);
|
|
85
|
+
* `undefined` means "not known here, ask the database". An entry whose run's reply row
|
|
86
|
+
* was replaced is dropped and reads as `undefined`.
|
|
63
87
|
*/
|
|
64
|
-
|
|
65
|
-
|
|
88
|
+
Get(conversationId, agentId, branchId) {
|
|
89
|
+
const key = PriorTurnToolResultCache.buildKey(conversationId, agentId, branchId);
|
|
90
|
+
const entry = this.cache.Get(key);
|
|
91
|
+
if (!entry) {
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
if (entry.SourceDetailID && this.replacedDetails.Has(NormalizeUUID(entry.SourceDetailID))) {
|
|
95
|
+
this.cache.Delete(key);
|
|
96
|
+
return undefined;
|
|
97
|
+
}
|
|
98
|
+
return entry.Steps;
|
|
66
99
|
}
|
|
67
100
|
/**
|
|
68
|
-
*
|
|
69
|
-
* the
|
|
70
|
-
* valid, query-skipping answer); `undefined` means "not known here, ask the
|
|
71
|
-
* database".
|
|
101
|
+
* Records a settled root run's carry-forward projections (empty array included) for one branch path.
|
|
102
|
+
* `sourceDetailId` is the run's reply row; the entry is not served once that row is replaced.
|
|
72
103
|
*/
|
|
73
|
-
|
|
74
|
-
|
|
104
|
+
Set(conversationId, agentId, branchId, steps, sourceDetailId = null) {
|
|
105
|
+
this.cache.Set(PriorTurnToolResultCache.buildKey(conversationId, agentId, branchId), { Steps: steps, SourceDetailID: sourceDetailId });
|
|
75
106
|
}
|
|
76
|
-
/** Records a
|
|
77
|
-
|
|
78
|
-
this.
|
|
107
|
+
/** Records that an in-place rerun replaced a conversation detail; entries whose run replied with it are no longer served. */
|
|
108
|
+
MarkDetailReplaced(detailId) {
|
|
109
|
+
this.replacedDetails.Set(NormalizeUUID(detailId), true);
|
|
79
110
|
}
|
|
80
|
-
/** Drops every entry — test isolation hook. */
|
|
111
|
+
/** Drops every entry and every replaced-detail mark — test isolation hook. */
|
|
81
112
|
Clear() {
|
|
82
113
|
this.cache.Clear();
|
|
114
|
+
this.replacedDetails.Clear();
|
|
115
|
+
}
|
|
116
|
+
/** Marks a conversation detail replaced when a save on this server leaves its `ReplacedAt` set. */
|
|
117
|
+
onGlobalEvent(event) {
|
|
118
|
+
if (event.event !== MJEventType.ComponentEvent || event.eventCode !== BaseEntity.BaseEventCode) {
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
const entityEvent = event.args;
|
|
122
|
+
const detail = entityEvent?.baseEntity;
|
|
123
|
+
if (entityEvent?.type === 'save' && detail instanceof MJConversationDetailEntity && ConversationEngine.IsReplacedRow(detail)) {
|
|
124
|
+
this.MarkDetailReplaced(detail.ID);
|
|
125
|
+
}
|
|
83
126
|
}
|
|
84
127
|
}
|
|
85
128
|
//# sourceMappingURL=prior-turn-tool-result-cache.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prior-turn-tool-result-cache.js","sourceRoot":"","sources":["../src/prior-turn-tool-result-cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"prior-turn-tool-result-cache.js","sourceRoot":"","sources":["../src/prior-turn-tool-result-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
*/
|
|
19
19
|
import { IRealtimeSession, ChatMessage, RealtimeVoiceOption, RealtimeToolDefinition, AIAPIKeyResolver } from '@memberjunction/ai';
|
|
20
20
|
import { IMetadataProvider, UserInfo } from '@memberjunction/core';
|
|
21
|
+
import { RealtimeHostToolsResolver } from './realtime-client-session-service.js';
|
|
21
22
|
/**
|
|
22
23
|
* The context a bridge passes to {@link CreateBridgeRealtimeSession}. Structurally compatible with the
|
|
23
24
|
* LiveKit coordinator's `RealtimeSessionStartContext` (and any future bridge's equivalent) so this factory
|
|
@@ -70,6 +71,11 @@ export interface BridgeRealtimeSessionContext {
|
|
|
70
71
|
* (see `GetBridgeRealtimeRuntime`).
|
|
71
72
|
*/
|
|
72
73
|
HostTools?: RealtimeToolDefinition[];
|
|
74
|
+
/**
|
|
75
|
+
* Optional callback that allows the host to resolve host tools dynamically based on
|
|
76
|
+
* the model, vendor, and driver actually resolved for the session, before session opening.
|
|
77
|
+
*/
|
|
78
|
+
ResolveHostTools?: RealtimeHostToolsResolver;
|
|
73
79
|
/** Host-authored instructions appended to the system prompt (e.g. the phone-call and caller framing). */
|
|
74
80
|
HostFraming?: string;
|
|
75
81
|
/**
|
|
@@ -82,6 +88,17 @@ export interface BridgeRealtimeSessionContext {
|
|
|
82
88
|
ConversationMessages?: ChatMessage[];
|
|
83
89
|
/** The `MJ: Conversations` row the session writes to — stamped on the co-agent observability run. */
|
|
84
90
|
ConversationID?: string;
|
|
91
|
+
/**
|
|
92
|
+
* `'room'` when the bridge's bot can publish the agent's avatar into the room (the LiveKit coordinator asks its native
|
|
93
|
+
* module first). Flows to the session's avatar request, so the driver may render it. Absent: audio only.
|
|
94
|
+
*/
|
|
95
|
+
AvatarDelivery?: 'room';
|
|
96
|
+
/**
|
|
97
|
+
* `true` when the session is a phone call (a carrier call, or a SIP call in a LiveKit room). Flows to
|
|
98
|
+
* `params.data.realtimePhoneCall`: the session then asks the driver for no avatar (the caller sees no video) and
|
|
99
|
+
* reports `phone` as its avatar status.
|
|
100
|
+
*/
|
|
101
|
+
PhoneCall?: boolean;
|
|
85
102
|
}
|
|
86
103
|
/**
|
|
87
104
|
* Opens a raw {@link IRealtimeSession} for the agent named in `ctx`. Bind this onto a bridge's
|
|
@@ -106,20 +123,45 @@ export declare function CreateBridgeRealtimeSession(ctx: BridgeRealtimeSessionCo
|
|
|
106
123
|
* @param provider The metadata provider (required — skipped without it).
|
|
107
124
|
*/
|
|
108
125
|
export declare function FinalizeBridgeCoAgentRuns(agentSessionID: string, success: boolean, contextUser?: UserInfo, provider?: IMetadataProvider): Promise<void>;
|
|
126
|
+
/**
|
|
127
|
+
* A voice the dev model/voice picker offers: one per persona, or one per voice only the driver declares. Two personas can
|
|
128
|
+
* share a voice `ID` (a voice, and the same voice with a face), so {@link PersonaID} tells them apart. A persona voice also
|
|
129
|
+
* carries the avatar that comes with it and the persona's preview image; a voice only the driver declares carries none of
|
|
130
|
+
* the three.
|
|
131
|
+
*/
|
|
132
|
+
export interface RealtimeModelVoiceOption extends RealtimeVoiceOption {
|
|
133
|
+
/** The persona this voice belongs to (`MJ: AI Personas.ID`). Absent for a voice only the driver declares. */
|
|
134
|
+
PersonaID?: string;
|
|
135
|
+
/**
|
|
136
|
+
* The avatar that comes with this voice: the `APIName` of the persona's preset Video binding on the model's vendor,
|
|
137
|
+
* which is what `realtime.video.avatarId` takes. Absent when the persona has no such binding there, or only a custom
|
|
138
|
+
* one (custom avatars are not supported), and on a model that shows no avatar there (its Video/Output row turns
|
|
139
|
+
* video off, or its driver renders none on that vendor's endpoint).
|
|
140
|
+
*/
|
|
141
|
+
AvatarID?: string;
|
|
142
|
+
/** The persona's preview image (`MJ: AI Personas.PreviewImageURL`), when it has one. */
|
|
143
|
+
PreviewImageURL?: string;
|
|
144
|
+
}
|
|
109
145
|
/** An active Realtime model paired with the voices its driver supports — for the dev model/voice picker. */
|
|
110
146
|
export interface RealtimeModelVoices {
|
|
111
147
|
/** The `MJ: AI Models` row id. */
|
|
112
148
|
ModelID: string;
|
|
113
149
|
/** The model's display name. */
|
|
114
150
|
ModelName: string;
|
|
115
|
-
/** The
|
|
116
|
-
Voices:
|
|
151
|
+
/** The model's persona voices on its vendor, then the driver's other voices (empty when there are none). */
|
|
152
|
+
Voices: RealtimeModelVoiceOption[];
|
|
117
153
|
}
|
|
118
154
|
/**
|
|
119
155
|
* Enumerates the active Realtime models with each driver's supported voices — the source for the dev
|
|
120
156
|
* model/voice picker. Only models with an Active vendor + resolvable API key + ClassFactory driver are
|
|
121
157
|
* returned (a model you can't actually run isn't worth offering). Voices come from the driver
|
|
122
158
|
* ({@link BaseRealtimeModel.SupportedVoices}) — the near-term, driver-owned source of truth.
|
|
159
|
+
* A persona voice whose persona also has a preset Video binding on the same vendor names that avatar
|
|
160
|
+
* ({@link RealtimeModelVoiceOption.AvatarID}), when the model shows avatars on that vendor
|
|
161
|
+
* ({@link RealtimeModelShowsAvatar}: its Video/Output row allows video or it has none, and the driver
|
|
162
|
+
* renders avatars on its endpoint); driver voices never do. So the picker marks a voice "Comes with an
|
|
163
|
+
* avatar" only where a call can show one. A persona with a face doesn't stand in for its plain voice, so
|
|
164
|
+
* the plain voice is listed too.
|
|
123
165
|
*
|
|
124
166
|
* @param contextUser The user the engine config runs as (server-side).
|
|
125
167
|
* @param provider The request-scoped metadata provider (multi-provider safe).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge-realtime-session-factory.d.ts","sourceRoot":"","sources":["../../src/realtime/bridge-realtime-session-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAqB,mBAAmB,EAAE,sBAAsB,EAAE,gBAAgB,EAAwB,MAAM,oBAAoB,CAAC;AAC3K,OAAO,EAAE,iBAAiB,EAAY,QAAQ,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"bridge-realtime-session-factory.d.ts","sourceRoot":"","sources":["../../src/realtime/bridge-realtime-session-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAqB,mBAAmB,EAAE,sBAAsB,EAAE,gBAAgB,EAAwB,MAAM,oBAAoB,CAAC;AAC3K,OAAO,EAAE,iBAAiB,EAAY,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAM7E,OAAO,EAAgC,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAI5G;;;;GAIG;AACH,MAAM,WAAW,4BAA4B;IACzC,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oGAAoG;IACpG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6DAA6D;IAC7D,WAAW,CAAC,EAAE,QAAQ,CAAC;IACvB,oGAAoG;IACpG,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;IACrC;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,sGAAsG;IACtG,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB;;;;OAIG;IACH,SAAS,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACrC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,yBAAyB,CAAC;IAC7C,yGAAyG;IACzG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iGAAiG;IACjG,oBAAoB,CAAC,EAAE,WAAW,EAAE,CAAC;IACrC,qGAAqG;IACrG,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,wBAAsB,2BAA2B,CAAC,GAAG,EAAE,4BAA4B,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA+E9G;AAmDD;;;;;;;;;;;GAWG;AACH,wBAAsB,yBAAyB,CAC3C,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,OAAO,EAChB,WAAW,CAAC,EAAE,QAAQ,EACtB,QAAQ,CAAC,EAAE,iBAAiB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;;;;GAKG;AACH,MAAM,WAAW,wBAAyB,SAAQ,mBAAmB;IACjE,6GAA6G;IAC7G,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wFAAwF;IACxF,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,4GAA4G;AAC5G,MAAM,WAAW,mBAAmB;IAChC,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,4GAA4G;IAC5G,MAAM,EAAE,wBAAwB,EAAE,CAAC;CACtC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,sBAAsB,CACxC,WAAW,CAAC,EAAE,QAAQ,EACtB,QAAQ,CAAC,EAAE,iBAAiB,EAC5B,aAAa,GAAE,gBAAyC,GACzD,OAAO,CAAC,mBAAmB,EAAE,CAAC,CA+BhC"}
|