@zhin.js/client 1.1.4 → 1.1.6
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 +94 -432
- package/client/agent-stream.ts +121 -0
- package/client/app.test.ts +37 -0
- package/client/app.ts +130 -138
- package/client/bootstrap/loadConsoleEntries.test.ts +23 -12
- package/client/bootstrap/loadConsoleEntries.ts +40 -27
- package/client/console-client-context.ts +24 -0
- package/client/console-client.test.ts +46 -0
- package/client/console-client.ts +70 -0
- package/client/console-events.ts +38 -0
- package/client/console-utils/remoteApi.test.ts +91 -0
- package/client/console-utils/remoteApi.ts +47 -9
- package/client/index.ts +92 -28
- package/client/mediaSrc.test.ts +49 -0
- package/client/mediaSrc.ts +84 -11
- package/client/message-content/MarkdownContent.tsx +128 -0
- package/client/message-content/markdown.test.ts +48 -0
- package/client/message-content/markdown.ts +247 -0
- package/client/persistence/idb-store.test.ts +121 -0
- package/client/persistence/idb-store.ts +40 -21
- package/client/segments.test.ts +16 -0
- package/client/segments.ts +39 -0
- package/client/transport/console-transport.test.ts +394 -0
- package/client/transport/console-transport.ts +676 -0
- package/client/transport/hooks.test.ts +21 -0
- package/client/transport/hooks.ts +535 -0
- package/client/transport/index.ts +23 -0
- package/client/{websocket → transport}/types.ts +16 -17
- package/client/types.ts +5 -8
- package/client/workroom/WorkroomRunsPage.tsx +355 -0
- package/client/workroom/registerWorkroomConsole.test.ts +25 -0
- package/client/workroom/registerWorkroomConsole.ts +17 -0
- package/dist/agent-stream.d.ts +17 -0
- package/dist/agent-stream.d.ts.map +1 -0
- package/dist/agent-stream.js +73 -0
- package/dist/agent-stream.js.map +1 -0
- package/dist/app.d.ts +17 -52
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +110 -95
- package/dist/app.js.map +1 -1
- package/dist/bootstrap/loadConsoleEntries.d.ts +10 -7
- package/dist/bootstrap/loadConsoleEntries.d.ts.map +1 -1
- package/dist/bootstrap/loadConsoleEntries.js +37 -11
- package/dist/bootstrap/loadConsoleEntries.js.map +1 -1
- package/dist/console-client-context.d.ts +9 -0
- package/dist/console-client-context.d.ts.map +1 -0
- package/dist/console-client-context.js +13 -0
- package/dist/console-client-context.js.map +1 -0
- package/dist/console-client.d.ts +25 -0
- package/dist/console-client.d.ts.map +1 -0
- package/dist/console-client.js +45 -0
- package/dist/console-client.js.map +1 -0
- package/dist/console-events.d.ts +8 -0
- package/dist/console-events.d.ts.map +1 -0
- package/dist/console-events.js +26 -0
- package/dist/console-events.js.map +1 -0
- package/dist/console-utils/remoteApi.d.ts +2 -1
- package/dist/console-utils/remoteApi.d.ts.map +1 -1
- package/dist/console-utils/remoteApi.js +46 -8
- package/dist/console-utils/remoteApi.js.map +1 -1
- package/dist/index.d.ts +14 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -8
- package/dist/index.js.map +1 -1
- package/dist/mediaSrc.d.ts +1 -1
- package/dist/mediaSrc.d.ts.map +1 -1
- package/dist/mediaSrc.js +91 -11
- package/dist/mediaSrc.js.map +1 -1
- package/dist/message-content/MarkdownContent.d.ts +11 -0
- package/dist/message-content/MarkdownContent.d.ts.map +1 -0
- package/dist/message-content/MarkdownContent.js +68 -0
- package/dist/message-content/MarkdownContent.js.map +1 -0
- package/dist/message-content/markdown.d.ts +47 -0
- package/dist/message-content/markdown.d.ts.map +1 -0
- package/dist/message-content/markdown.js +219 -0
- package/dist/message-content/markdown.js.map +1 -0
- package/dist/persistence/idb-store.d.ts +5 -2
- package/dist/persistence/idb-store.d.ts.map +1 -1
- package/dist/persistence/idb-store.js +29 -20
- package/dist/persistence/idb-store.js.map +1 -1
- package/dist/segments.d.ts +9 -0
- package/dist/segments.d.ts.map +1 -0
- package/dist/segments.js +35 -0
- package/dist/segments.js.map +1 -0
- package/dist/transport/console-transport.d.ts +217 -0
- package/dist/transport/console-transport.d.ts.map +1 -0
- package/dist/transport/console-transport.js +563 -0
- package/dist/transport/console-transport.js.map +1 -0
- package/dist/transport/hooks.d.ts +253 -0
- package/dist/transport/hooks.d.ts.map +1 -0
- package/dist/transport/hooks.js +483 -0
- package/dist/transport/hooks.js.map +1 -0
- package/dist/transport/index.d.ts +4 -0
- package/dist/transport/index.d.ts.map +1 -0
- package/dist/transport/index.js +4 -0
- package/dist/transport/index.js.map +1 -0
- package/dist/{websocket → transport}/types.d.ts +14 -13
- package/dist/transport/types.d.ts.map +1 -0
- package/dist/{websocket → transport}/types.js +4 -9
- package/dist/transport/types.js.map +1 -0
- package/dist/types.d.ts +4 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/workroom/WorkroomRunsPage.d.ts +2 -0
- package/dist/workroom/WorkroomRunsPage.d.ts.map +1 -0
- package/dist/workroom/WorkroomRunsPage.js +111 -0
- package/dist/workroom/WorkroomRunsPage.js.map +1 -0
- package/dist/workroom/registerWorkroomConsole.d.ts +4 -0
- package/dist/workroom/registerWorkroomConsole.d.ts.map +1 -0
- package/dist/workroom/registerWorkroomConsole.js +16 -0
- package/dist/workroom/registerWorkroomConsole.js.map +1 -0
- package/package.json +18 -8
- package/client/runtime/index.ts +0 -12
- package/client/websocket/hooks.ts +0 -289
- package/client/websocket/index.ts +0 -6
- package/client/websocket/instance.ts +0 -24
- package/client/websocket/manager.ts +0 -426
- package/client/websocket/remote-settings.ts +0 -25
- package/dist/bootstrap/loadConsoleEntries.test.d.ts +0 -2
- package/dist/bootstrap/loadConsoleEntries.test.d.ts.map +0 -1
- package/dist/bootstrap/loadConsoleEntries.test.js +0 -27
- package/dist/bootstrap/loadConsoleEntries.test.js.map +0 -1
- package/dist/runtime/index.d.ts +0 -6
- package/dist/runtime/index.d.ts.map +0 -1
- package/dist/runtime/index.js +0 -10
- package/dist/runtime/index.js.map +0 -1
- package/dist/websocket/hooks.d.ts +0 -105
- package/dist/websocket/hooks.d.ts.map +0 -1
- package/dist/websocket/hooks.js +0 -247
- package/dist/websocket/hooks.js.map +0 -1
- package/dist/websocket/index.d.ts +0 -7
- package/dist/websocket/index.d.ts.map +0 -1
- package/dist/websocket/index.js +0 -7
- package/dist/websocket/index.js.map +0 -1
- package/dist/websocket/instance.d.ts +0 -5
- package/dist/websocket/instance.d.ts.map +0 -1
- package/dist/websocket/instance.js +0 -21
- package/dist/websocket/instance.js.map +0 -1
- package/dist/websocket/manager.d.ts +0 -113
- package/dist/websocket/manager.d.ts.map +0 -1
- package/dist/websocket/manager.js +0 -403
- package/dist/websocket/manager.js.map +0 -1
- package/dist/websocket/remote-settings.d.ts +0 -5
- package/dist/websocket/remote-settings.d.ts.map +0 -1
- package/dist/websocket/remote-settings.js +0 -23
- package/dist/websocket/remote-settings.js.map +0 -1
- package/dist/websocket/types.d.ts.map +0 -1
- package/dist/websocket/types.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remoteApi.js","sourceRoot":"","sources":["../../client/console-utils/remoteApi.ts"],"names":[],"mappings":"AAAA,MAAM,SAAS,GAAG,gBAAgB,CAAC;AACnC,MAAM,YAAY,GAAG,eAAe,CAAC;AAErC,MAAM,UAAU,UAAU;IACxB,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;IAC1D,IAAI,MAAM;QAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"remoteApi.js","sourceRoot":"","sources":["../../client/console-utils/remoteApi.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
export * from "./types";
|
|
2
|
+
export { ENDPOINT_RPC, CONSOLE_EVENT_RECOVERY_GAP_EVENT, ENDPOINT_MANAGEMENT_CAPABILITIES, INBOX_RPC, SIDE_EVENT_PUSH, SIDE_EVENT_RPC, parseConsoleInboxEvent, type ConsoleInboxEvent, type ConsoleInboxEventKind, type ConsoleInboxMessageRow, type ConsoleInboxNoticeRow, type ConsoleInboxNoticesQuery, type ConsoleInboxNoticesResult, type ConsoleInboxRequestRow, type ConsoleEndpointPhase, type ConsoleEndpointSummary, type ConsoleEventActor, type ConsoleEventChannel, type ConsoleEventParent, type EndpointManagementCapability, parseConsoleSseFrame, type ConsoleEventDelivery, type ConsoleEventData, type ConsoleEndpointEventData, type ConsoleEventEnvelope, type ConsoleEventHistoryPage, type ConsoleEventHistoryQuery, type ConsoleEventPayloadMap, type ConsoleMessageEventData, type ConsoleNoticeEventData, type ConsoleRequestEventData, type KnownConsoleEventType, type KnownConsoleEventEnvelope, type ParsedConsoleSseFrame, } from "@zhin.js/console-protocol";
|
|
3
|
+
export { fetchConsoleEventHistory, type FetchConsoleEventHistoryOptions, } from './console-events.js';
|
|
2
4
|
export { resolveMediaSrc, pickMediaRawUrl, type MediaKind } from "./mediaSrc";
|
|
3
|
-
export {
|
|
4
|
-
export
|
|
5
|
-
export
|
|
6
|
-
export {
|
|
7
|
-
export {
|
|
5
|
+
export { MarkdownContent, CodeBlock, type MarkdownContentProps, } from "./message-content/MarkdownContent.js";
|
|
6
|
+
export { parseMarkdown, parseMarkdownInline, highlightCodeLine, isSafeMarkdownHref, type MarkdownBlock, type MarkdownInline, type CodeToken, type CodeTokenKind, } from "./message-content/markdown.js";
|
|
7
|
+
export { segmentsForImDelivery, segmentsForAgentPanel } from "./segments.js";
|
|
8
|
+
export { ConsoleApp, createConsoleApp, type AddRouteInput, type AddToolInput, type ConsoleRouteRecord, type RouteTreeNode, type ToolTreeNode, type SidebarRenderer, type ToolbarRenderer, type ConsoleRouteRenderer, } from "./app.js";
|
|
9
|
+
export { ConsoleClient, createConsoleClient, type ConsoleClientOptions, } from './console-client.js';
|
|
10
|
+
export { ConsoleClientProvider, useConsoleClient, type ConsoleClientProviderProps, } from './console-client-context.js';
|
|
11
|
+
export * from "./transport/index.js";
|
|
8
12
|
export { createRegistryStore, useRegistry, type RegistryStore, } from "./store/createRegistryStore.js";
|
|
9
13
|
export { cn } from "./console-utils/cn.js";
|
|
10
|
-
export { apiFetch, getApiBase, getToken, resolveApiUrl,
|
|
11
|
-
export { fetchConsoleEntries,
|
|
14
|
+
export { apiFetch, getApiBase, getToken, resolveApiUrl, } from "./console-utils/remoteApi.js";
|
|
15
|
+
export { fetchConsoleEntries, getRegisterFn, loadConsoleEntries, registerConsolePluginsFromEntries, resolveEntryRegister, type FetchConsoleEntriesOptions, type LoadConsoleEntriesOptions, } from "./bootstrap/loadConsoleEntries.js";
|
|
16
|
+
export { registerWorkroomConsole } from "./workroom/registerWorkroomConsole.js";
|
|
17
|
+
export { default as WorkroomRunsPage } from "./workroom/WorkroomRunsPage.js";
|
|
18
|
+
export { startAgentSession, continueAgentSession, subscribeAgentStream, iterateAgentStreamNdjson, foldAgentStreamNdjson, type AgentStreamClientOptions, type SubscribeAgentStreamOptions, } from "./agent-stream.js";
|
|
12
19
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../client/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../client/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AACxB,OAAO,EACL,YAAY,EACZ,gCAAgC,EAChC,gCAAgC,EAChC,SAAS,EACT,eAAe,EACf,cAAc,EACd,sBAAsB,EACtB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,4BAA4B,EACjC,oBAAoB,EACpB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,GAC3B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,wBAAwB,EACxB,KAAK,+BAA+B,GACrC,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAG9E,OAAO,EACL,eAAe,EACf,SAAS,EACT,KAAK,oBAAoB,GAC1B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,aAAa,GACnB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAG7E,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,oBAAoB,GAC1B,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,KAAK,oBAAoB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,KAAK,0BAA0B,GAChC,MAAM,6BAA6B,CAAC;AAGrC,cAAc,sBAAsB,CAAC;AAErC,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,KAAK,aAAa,GACnB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAC;AAE3C,OAAO,EACL,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,aAAa,GACd,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EAClB,iCAAiC,EACjC,oBAAoB,EACpB,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,GAC/B,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAE7E,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACrB,KAAK,wBAAwB,EAC7B,KAAK,2BAA2B,GACjC,MAAM,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,15 +1,25 @@
|
|
|
1
1
|
// Types
|
|
2
2
|
export * from "./types";
|
|
3
|
+
export { ENDPOINT_RPC, CONSOLE_EVENT_RECOVERY_GAP_EVENT, ENDPOINT_MANAGEMENT_CAPABILITIES, INBOX_RPC, SIDE_EVENT_PUSH, SIDE_EVENT_RPC, parseConsoleInboxEvent, parseConsoleSseFrame, } from "@zhin.js/console-protocol";
|
|
4
|
+
export { fetchConsoleEventHistory, } from './console-events.js';
|
|
3
5
|
// Media URL resolution
|
|
4
6
|
export { resolveMediaSrc, pickMediaRawUrl } from "./mediaSrc";
|
|
5
|
-
//
|
|
6
|
-
export {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
export {
|
|
10
|
-
|
|
7
|
+
// Safe rich message rendering (Markdown + code blocks; no raw HTML execution)
|
|
8
|
+
export { MarkdownContent, CodeBlock, } from "./message-content/MarkdownContent.js";
|
|
9
|
+
export { parseMarkdown, parseMarkdownInline, highlightCodeLine, isSafeMarkdownHref, } from "./message-content/markdown.js";
|
|
10
|
+
// Segment IM visibility (inbox vs agent panel)
|
|
11
|
+
export { segmentsForImDelivery, segmentsForAgentPanel } from "./segments.js";
|
|
12
|
+
// Owner-scoped Console client and application registry
|
|
13
|
+
export { ConsoleApp, createConsoleApp, } from "./app.js";
|
|
14
|
+
export { ConsoleClient, createConsoleClient, } from './console-client.js';
|
|
15
|
+
export { ConsoleClientProvider, useConsoleClient, } from './console-client-context.js';
|
|
16
|
+
// Owner-scoped REST/SSE transport
|
|
17
|
+
export * from "./transport/index.js";
|
|
11
18
|
export { createRegistryStore, useRegistry, } from "./store/createRegistryStore.js";
|
|
12
19
|
export { cn } from "./console-utils/cn.js";
|
|
13
|
-
export { apiFetch, getApiBase, getToken, resolveApiUrl,
|
|
14
|
-
export { fetchConsoleEntries,
|
|
20
|
+
export { apiFetch, getApiBase, getToken, resolveApiUrl, } from "./console-utils/remoteApi.js";
|
|
21
|
+
export { fetchConsoleEntries, getRegisterFn, loadConsoleEntries, registerConsolePluginsFromEntries, resolveEntryRegister, } from "./bootstrap/loadConsoleEntries.js";
|
|
22
|
+
export { registerWorkroomConsole } from "./workroom/registerWorkroomConsole.js";
|
|
23
|
+
export { default as WorkroomRunsPage } from "./workroom/WorkroomRunsPage.js";
|
|
24
|
+
export { startAgentSession, continueAgentSession, subscribeAgentStream, iterateAgentStreamNdjson, foldAgentStreamNdjson, } from "./agent-stream.js";
|
|
15
25
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../client/index.ts"],"names":[],"mappings":"AAAA,QAAQ;AACR,cAAc,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../client/index.ts"],"names":[],"mappings":"AAAA,QAAQ;AACR,cAAc,SAAS,CAAC;AACxB,OAAO,EACL,YAAY,EACZ,gCAAgC,EAChC,gCAAgC,EAChC,SAAS,EACT,eAAe,EACf,cAAc,EACd,sBAAsB,EActB,oBAAoB,GAcrB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,wBAAwB,GAEzB,MAAM,qBAAqB,CAAC;AAE7B,uBAAuB;AACvB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAkB,MAAM,YAAY,CAAC;AAE9E,8EAA8E;AAC9E,OAAO,EACL,eAAe,EACf,SAAS,GAEV,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,GAKnB,MAAM,+BAA+B,CAAC;AAEvC,+CAA+C;AAC/C,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAE7E,uDAAuD;AACvD,OAAO,EACL,UAAU,EACV,gBAAgB,GASjB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,aAAa,EACb,mBAAmB,GAEpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,qBAAqB,EACrB,gBAAgB,GAEjB,MAAM,6BAA6B,CAAC;AAErC,kCAAkC;AAClC,cAAc,sBAAsB,CAAC;AAErC,OAAO,EACL,mBAAmB,EACnB,WAAW,GAEZ,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAC;AAE3C,OAAO,EACL,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,aAAa,GACd,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EAClB,iCAAiC,EACjC,oBAAoB,GAGrB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAE7E,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,GAGtB,MAAM,mBAAmB,CAAC"}
|
package/dist/mediaSrc.d.ts
CHANGED
|
@@ -11,6 +11,6 @@ export type MediaKind = 'image' | 'video' | 'audio';
|
|
|
11
11
|
* 与群内日报、html-test 等插件生成的 `base64://${buffer.toString('base64')}` 一致。
|
|
12
12
|
*/
|
|
13
13
|
export declare function resolveMediaSrc(raw: string | undefined | null, kind?: MediaKind): string | undefined;
|
|
14
|
-
/** 从 segment.data
|
|
14
|
+
/** 从 segment.data 取常见媒体字段(优先 canonical MediaRef) */
|
|
15
15
|
export declare function pickMediaRawUrl(data: Record<string, unknown> | undefined): string | undefined;
|
|
16
16
|
//# sourceMappingURL=mediaSrc.d.ts.map
|
package/dist/mediaSrc.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mediaSrc.d.ts","sourceRoot":"","sources":["../client/mediaSrc.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"mediaSrc.d.ts","sourceRoot":"","sources":["../client/mediaSrc.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAA;AAsDnD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EAC9B,IAAI,GAAE,SAAmB,GACxB,MAAM,GAAG,SAAS,CA4BpB;AAED,oDAAoD;AACpD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAwB7F"}
|
package/dist/mediaSrc.js
CHANGED
|
@@ -1,4 +1,58 @@
|
|
|
1
1
|
const BASE64_PROTO = 'base64://';
|
|
2
|
+
const SAFE_DATA_MIME = Object.freeze({
|
|
3
|
+
image: new Set(['image/avif', 'image/gif', 'image/jpeg', 'image/png', 'image/webp']),
|
|
4
|
+
video: new Set(['video/mp4', 'video/ogg', 'video/webm']),
|
|
5
|
+
audio: new Set(['audio/mpeg', 'audio/mp4', 'audio/ogg', 'audio/wav', 'audio/webm']),
|
|
6
|
+
});
|
|
7
|
+
function resolveSafeRemoteUrl(value) {
|
|
8
|
+
try {
|
|
9
|
+
const parsed = new URL(value);
|
|
10
|
+
if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:' && parsed.protocol !== 'blob:') {
|
|
11
|
+
return undefined;
|
|
12
|
+
}
|
|
13
|
+
if (parsed.username || parsed.password)
|
|
14
|
+
return undefined;
|
|
15
|
+
return parsed.href;
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function resolveSafeDataUrl(value, kind) {
|
|
22
|
+
if (!value.startsWith('data:'))
|
|
23
|
+
return undefined;
|
|
24
|
+
const separator = value.indexOf(',');
|
|
25
|
+
if (separator < 0)
|
|
26
|
+
return undefined;
|
|
27
|
+
const header = value.slice('data:'.length, separator).toLowerCase();
|
|
28
|
+
if (!header.endsWith(';base64'))
|
|
29
|
+
return undefined;
|
|
30
|
+
const mime = header.slice(0, -';base64'.length);
|
|
31
|
+
if (!SAFE_DATA_MIME[kind].has(mime))
|
|
32
|
+
return undefined;
|
|
33
|
+
const payload = compactBase64(value.slice(separator + 1));
|
|
34
|
+
return payload ? `data:${mime};base64,${payload}` : undefined;
|
|
35
|
+
}
|
|
36
|
+
function compactBase64(value) {
|
|
37
|
+
let compact = '';
|
|
38
|
+
for (const character of value) {
|
|
39
|
+
if (character === ' ' || character === '\n' || character === '\r' || character === '\t')
|
|
40
|
+
continue;
|
|
41
|
+
const code = character.charCodeAt(0);
|
|
42
|
+
const allowed = (code >= 48 && code <= 57)
|
|
43
|
+
|| (code >= 65 && code <= 90)
|
|
44
|
+
|| (code >= 97 && code <= 122)
|
|
45
|
+
|| character === '+' || character === '/' || character === '=';
|
|
46
|
+
if (!allowed)
|
|
47
|
+
return undefined;
|
|
48
|
+
compact += character;
|
|
49
|
+
}
|
|
50
|
+
const padding = compact.indexOf('=');
|
|
51
|
+
if (padding >= 0 && (compact.length - padding > 2 || compact.slice(padding).replace(/=/g, '') !== '')) {
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
return compact || undefined;
|
|
55
|
+
}
|
|
2
56
|
/**
|
|
3
57
|
* 将消息段中的 url/file 等转为浏览器可用的媒体地址。
|
|
4
58
|
*
|
|
@@ -15,28 +69,54 @@ export function resolveMediaSrc(raw, kind = 'image') {
|
|
|
15
69
|
const s = raw.trim();
|
|
16
70
|
if (!s)
|
|
17
71
|
return undefined;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
72
|
+
const dataUrl = resolveSafeDataUrl(s, kind);
|
|
73
|
+
if (dataUrl)
|
|
74
|
+
return dataUrl;
|
|
75
|
+
const remoteUrl = resolveSafeRemoteUrl(s);
|
|
76
|
+
if (remoteUrl)
|
|
77
|
+
return remoteUrl;
|
|
21
78
|
if (!s.startsWith(BASE64_PROTO)) {
|
|
22
|
-
return
|
|
79
|
+
return undefined;
|
|
23
80
|
}
|
|
24
|
-
const payload = s.slice(BASE64_PROTO.length).
|
|
81
|
+
const payload = s.slice(BASE64_PROTO.length).trimStart();
|
|
25
82
|
if (!payload)
|
|
26
83
|
return undefined;
|
|
27
84
|
// 已是 type/subtype;base64, 片段(不含 data: 前缀)
|
|
28
|
-
|
|
29
|
-
|
|
85
|
+
const declared = resolveSafeDataUrl(`data:${payload}`, kind);
|
|
86
|
+
if (declared) {
|
|
87
|
+
return declared;
|
|
30
88
|
}
|
|
31
89
|
const defaultMime = kind === 'image' ? 'image/png' : kind === 'video' ? 'video/mp4' : 'audio/mpeg';
|
|
32
|
-
const b64 = payload
|
|
33
|
-
return `data:${defaultMime};base64,${b64}
|
|
90
|
+
const b64 = compactBase64(payload);
|
|
91
|
+
return b64 ? `data:${defaultMime};base64,${b64}` : undefined;
|
|
34
92
|
}
|
|
35
|
-
/** 从 segment.data
|
|
93
|
+
/** 从 segment.data 取常见媒体字段(优先 canonical MediaRef) */
|
|
36
94
|
export function pickMediaRawUrl(data) {
|
|
37
95
|
if (!data)
|
|
38
96
|
return undefined;
|
|
97
|
+
const media = data.media;
|
|
98
|
+
if (media && typeof media === 'object' && media !== null) {
|
|
99
|
+
const value = media.value;
|
|
100
|
+
if (typeof value === 'string' && value.trim())
|
|
101
|
+
return value.trim();
|
|
102
|
+
}
|
|
39
103
|
const v = data.url ?? data.file ?? data.src ?? data.href;
|
|
40
|
-
|
|
104
|
+
if (typeof v === 'string' && v.trim())
|
|
105
|
+
return v.trim();
|
|
106
|
+
// agent 出站媒体段(media-publisher)直接携带纯 base64,无 url/file;
|
|
107
|
+
// 有 mime 时拼成 data: URL 透传,否则走 base64:// 让 resolveMediaSrc 按 kind 补默认 MIME
|
|
108
|
+
const b64 = data.base64;
|
|
109
|
+
if (typeof b64 === 'string' && b64.trim()) {
|
|
110
|
+
const payload = b64.trim();
|
|
111
|
+
if (payload.startsWith('data:') || payload.startsWith('base64://')
|
|
112
|
+
|| payload.startsWith('http://') || payload.startsWith('https://')) {
|
|
113
|
+
return payload;
|
|
114
|
+
}
|
|
115
|
+
const mime = typeof data.mime === 'string' && data.mime.trim() ? data.mime.trim() : '';
|
|
116
|
+
return mime
|
|
117
|
+
? `data:${mime};base64,${payload.replace(/\s/g, '')}`
|
|
118
|
+
: `base64://${payload}`;
|
|
119
|
+
}
|
|
120
|
+
return undefined;
|
|
41
121
|
}
|
|
42
122
|
//# sourceMappingURL=mediaSrc.js.map
|
package/dist/mediaSrc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mediaSrc.js","sourceRoot":"","sources":["../client/mediaSrc.ts"],"names":[],"mappings":"AAGA,MAAM,YAAY,GAAG,WAAW,CAAA;AAEhC
|
|
1
|
+
{"version":3,"file":"mediaSrc.js","sourceRoot":"","sources":["../client/mediaSrc.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface MarkdownContentProps {
|
|
2
|
+
readonly text: string;
|
|
3
|
+
readonly className?: string;
|
|
4
|
+
}
|
|
5
|
+
export declare function CodeBlock({ code, language, closed }: {
|
|
6
|
+
readonly code: string;
|
|
7
|
+
readonly language?: string;
|
|
8
|
+
readonly closed?: boolean;
|
|
9
|
+
}): import("react").JSX.Element;
|
|
10
|
+
export declare function MarkdownContent({ text, className }: MarkdownContentProps): import("react").JSX.Element;
|
|
11
|
+
//# sourceMappingURL=MarkdownContent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MarkdownContent.d.ts","sourceRoot":"","sources":["../../client/message-content/MarkdownContent.tsx"],"names":[],"mappings":"AAOA,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAwBD,wBAAgB,SAAS,CAAC,EAAE,IAAI,EAAE,QAAa,EAAE,MAAa,EAAE,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,+BAkDjJ;AAED,wBAAgB,eAAe,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,oBAAoB,+BAyCxE"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { Fragment, useMemo, useState } from 'react';
|
|
3
|
+
import { highlightCodeLine, parseMarkdown, } from './markdown.js';
|
|
4
|
+
function InlineContent({ content }) {
|
|
5
|
+
const nodes = [];
|
|
6
|
+
content.forEach((token, index) => {
|
|
7
|
+
const key = `${token.type}-${index}`;
|
|
8
|
+
const value = token.value.split('\n').map((line, lineIndex, lines) => (_jsxs(Fragment, { children: [line, lineIndex < lines.length - 1 ? _jsx("br", {}) : null] }, `${key}-line-${lineIndex}`)));
|
|
9
|
+
if (token.type === 'strong')
|
|
10
|
+
nodes.push(_jsx("strong", { children: value }, key));
|
|
11
|
+
else if (token.type === 'emphasis')
|
|
12
|
+
nodes.push(_jsx("em", { children: value }, key));
|
|
13
|
+
else if (token.type === 'strike')
|
|
14
|
+
nodes.push(_jsx("del", { children: value }, key));
|
|
15
|
+
else if (token.type === 'code')
|
|
16
|
+
nodes.push(_jsx("code", { className: "im-inline-code", children: token.value }, key));
|
|
17
|
+
else if (token.type === 'link')
|
|
18
|
+
nodes.push(_jsx("a", { href: token.href, target: token.href.startsWith('#') ? undefined : '_blank', rel: "noreferrer", className: "im-message-link", children: value }, key));
|
|
19
|
+
else
|
|
20
|
+
nodes.push(_jsx(Fragment, { children: value }, key));
|
|
21
|
+
});
|
|
22
|
+
return _jsx(_Fragment, { children: nodes });
|
|
23
|
+
}
|
|
24
|
+
export function CodeBlock({ code, language = '', closed = true }) {
|
|
25
|
+
const [copied, setCopied] = useState(false);
|
|
26
|
+
const [wrapped, setWrapped] = useState(false);
|
|
27
|
+
const [expanded, setExpanded] = useState(false);
|
|
28
|
+
const lines = useMemo(() => code.split('\n'), [code]);
|
|
29
|
+
const isLong = lines.length > 18 || code.length > 1800;
|
|
30
|
+
const visibleLines = isLong && !expanded ? lines.slice(0, 18) : lines;
|
|
31
|
+
const copy = async () => {
|
|
32
|
+
try {
|
|
33
|
+
await navigator.clipboard.writeText(code);
|
|
34
|
+
setCopied(true);
|
|
35
|
+
window.setTimeout(() => setCopied(false), 1600);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
setCopied(false);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
return (_jsxs("figure", { className: "zhin-code-block", children: [_jsxs("figcaption", { className: "zhin-code-toolbar", children: [_jsx("span", { className: "zhin-code-language", children: language || 'plain text' }), !closed ? _jsx("span", { className: "zhin-code-streaming", children: "\u751F\u6210\u4E2D" }) : null, _jsxs("span", { className: "zhin-code-actions", children: [_jsx("button", { type: "button", onClick: () => setWrapped((value) => !value), "aria-pressed": wrapped, children: wrapped ? '不折行' : '折行' }), _jsx("button", { type: "button", onClick: () => void copy(), children: copied ? '已复制' : '复制' })] })] }), _jsx("pre", { className: wrapped ? 'zhin-code-pre zhin-code-pre--wrap' : 'zhin-code-pre', children: _jsx("code", { children: visibleLines.map((line, lineIndex) => (_jsxs("span", { className: "zhin-code-line", children: [_jsx("span", { className: "zhin-code-line-number", "aria-hidden": "true", children: lineIndex + 1 }), _jsxs("span", { className: "zhin-code-line-content", children: [highlightCodeLine(line, language).map((token, tokenIndex) => (_jsx("span", { className: `zhin-code-token zhin-code-token--${token.kind}`, children: token.value }, `${token.kind}-${tokenIndex}`))), '\n'] })] }, `${lineIndex}-${line}`))) }) }), isLong ? (_jsx("button", { type: "button", className: "zhin-code-expand", onClick: () => setExpanded((value) => !value), children: expanded ? '收起代码' : `展开其余 ${lines.length - visibleLines.length} 行` })) : null] }));
|
|
42
|
+
}
|
|
43
|
+
export function MarkdownContent({ text, className }) {
|
|
44
|
+
const blocks = useMemo(() => parseMarkdown(text), [text]);
|
|
45
|
+
return (_jsx("div", { className: ['im-markdown-body', 'zhin-markdown', className].filter(Boolean).join(' '), children: blocks.map((block, index) => {
|
|
46
|
+
if (block.type === 'heading') {
|
|
47
|
+
const Heading = `h${block.level}`;
|
|
48
|
+
return _jsx(Heading, { className: `im-markdown-heading im-markdown-heading-${block.level}`, children: _jsx(InlineContent, { content: block.content }) }, index);
|
|
49
|
+
}
|
|
50
|
+
if (block.type === 'paragraph')
|
|
51
|
+
return _jsx("p", { className: "im-markdown-paragraph", children: _jsx(InlineContent, { content: block.content }) }, index);
|
|
52
|
+
if (block.type === 'quote')
|
|
53
|
+
return _jsx("blockquote", { className: "im-markdown-quote", children: _jsx(InlineContent, { content: block.content }) }, index);
|
|
54
|
+
if (block.type === 'rule')
|
|
55
|
+
return _jsx("hr", { className: "zhin-markdown-rule" }, index);
|
|
56
|
+
if (block.type === 'code')
|
|
57
|
+
return _jsx(CodeBlock, { code: block.value, language: block.language, closed: block.closed }, index);
|
|
58
|
+
if (block.type === 'list') {
|
|
59
|
+
const List = block.ordered ? 'ol' : 'ul';
|
|
60
|
+
return (_jsx(List, { className: `im-markdown-list${block.ordered ? ' im-markdown-list-ordered' : ''}`, children: block.items.map((item, itemIndex) => (_jsxs("li", { className: item.checked === undefined ? undefined : 'zhin-markdown-task', children: [item.checked === undefined ? null : _jsx("input", { type: "checkbox", checked: item.checked, readOnly: true, "aria-label": item.checked ? '已完成' : '未完成' }), _jsx(InlineContent, { content: item.content })] }, itemIndex))) }, index));
|
|
61
|
+
}
|
|
62
|
+
if (block.type === 'table') {
|
|
63
|
+
return (_jsx("div", { className: "zhin-markdown-table-wrap", children: _jsxs("table", { className: "zhin-markdown-table", children: [_jsx("thead", { children: _jsx("tr", { children: block.header.map((cell, cellIndex) => _jsx("th", { children: _jsx(InlineContent, { content: cell }) }, cellIndex)) }) }), _jsx("tbody", { children: block.rows.map((row, rowIndex) => _jsx("tr", { children: row.map((cell, cellIndex) => _jsx("td", { children: _jsx(InlineContent, { content: cell }) }, cellIndex)) }, rowIndex)) })] }) }, index));
|
|
64
|
+
}
|
|
65
|
+
return null;
|
|
66
|
+
}) }));
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=MarkdownContent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MarkdownContent.js","sourceRoot":"","sources":["../../client/message-content/MarkdownContent.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export type MarkdownInline = {
|
|
2
|
+
readonly type: 'text';
|
|
3
|
+
readonly value: string;
|
|
4
|
+
} | {
|
|
5
|
+
readonly type: 'strong' | 'emphasis' | 'strike' | 'code';
|
|
6
|
+
readonly value: string;
|
|
7
|
+
} | {
|
|
8
|
+
readonly type: 'link';
|
|
9
|
+
readonly value: string;
|
|
10
|
+
readonly href: string;
|
|
11
|
+
};
|
|
12
|
+
export type MarkdownBlock = {
|
|
13
|
+
readonly type: 'heading';
|
|
14
|
+
readonly level: number;
|
|
15
|
+
readonly content: MarkdownInline[];
|
|
16
|
+
} | {
|
|
17
|
+
readonly type: 'paragraph' | 'quote';
|
|
18
|
+
readonly content: MarkdownInline[];
|
|
19
|
+
} | {
|
|
20
|
+
readonly type: 'list';
|
|
21
|
+
readonly ordered: boolean;
|
|
22
|
+
readonly items: ReadonlyArray<{
|
|
23
|
+
readonly content: MarkdownInline[];
|
|
24
|
+
readonly checked?: boolean;
|
|
25
|
+
}>;
|
|
26
|
+
} | {
|
|
27
|
+
readonly type: 'code';
|
|
28
|
+
readonly language: string;
|
|
29
|
+
readonly value: string;
|
|
30
|
+
readonly closed: boolean;
|
|
31
|
+
} | {
|
|
32
|
+
readonly type: 'table';
|
|
33
|
+
readonly header: ReadonlyArray<MarkdownInline[]>;
|
|
34
|
+
readonly rows: ReadonlyArray<ReadonlyArray<MarkdownInline[]>>;
|
|
35
|
+
} | {
|
|
36
|
+
readonly type: 'rule';
|
|
37
|
+
};
|
|
38
|
+
export type CodeTokenKind = 'plain' | 'comment' | 'string' | 'number' | 'keyword' | 'literal';
|
|
39
|
+
export interface CodeToken {
|
|
40
|
+
readonly kind: CodeTokenKind;
|
|
41
|
+
readonly value: string;
|
|
42
|
+
}
|
|
43
|
+
export declare function isSafeMarkdownHref(href: string): boolean;
|
|
44
|
+
export declare function parseMarkdownInline(value: string): MarkdownInline[];
|
|
45
|
+
export declare function parseMarkdown(value: string): MarkdownBlock[];
|
|
46
|
+
export declare function highlightCodeLine(line: string, language?: string): CodeToken[];
|
|
47
|
+
//# sourceMappingURL=markdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../client/message-content/markdown.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GACtB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACpF;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7E,MAAM,MAAM,aAAa,GACrB;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,cAAc,EAAE,CAAA;CAAE,GACxF;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,cAAc,EAAE,CAAA;CAAE,GAC5E;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,OAAO,EAAE,cAAc,EAAE,CAAC;QAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;CAAE,GACvJ;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GACtG;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,cAAc,EAAE,CAAC,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC,CAAC,CAAA;CAAE,GAC3I;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9B,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAE9F,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAOD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAKxD;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,EAAE,CAyCnE;AAiBD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,EAAE,CA+F5D;AAgBD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAK,GAAG,SAAS,EAAE,CA6C1E"}
|