@agentshouse/mdruntime 0.1.0-cc294e382554d → 0.1.0-cc56db96f86ae

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.
Files changed (125) hide show
  1. package/AGENTS.md +28 -23
  2. package/README.md +9 -8
  3. package/dist/adapter.d.ts +11 -10
  4. package/dist/adapter.d.ts.map +1 -1
  5. package/dist/bootstrap.d.ts.map +1 -1
  6. package/dist/bootstrap.js +60 -29
  7. package/dist/change-set.d.ts.map +1 -1
  8. package/dist/change-set.js +2 -6
  9. package/dist/change.d.ts +31 -1
  10. package/dist/change.d.ts.map +1 -1
  11. package/dist/change.js +10 -1
  12. package/dist/chat/house.d.ts +25 -0
  13. package/dist/chat/house.d.ts.map +1 -0
  14. package/dist/chat/house.js +38 -0
  15. package/dist/chat/input.d.ts +3 -1
  16. package/dist/chat/input.d.ts.map +1 -1
  17. package/dist/chat/input.js +11 -18
  18. package/dist/chat/message.d.ts.map +1 -1
  19. package/dist/chat/message.js +45 -10
  20. package/dist/chat/messages.d.ts +6 -1
  21. package/dist/chat/messages.d.ts.map +1 -1
  22. package/dist/chat/messages.js +14 -11
  23. package/dist/chat/name.d.ts +1 -0
  24. package/dist/chat/name.d.ts.map +1 -1
  25. package/dist/chat/name.js +1 -1
  26. package/dist/chat/opened.d.ts +1 -0
  27. package/dist/chat/opened.d.ts.map +1 -1
  28. package/dist/chat/opened.js +2 -0
  29. package/dist/chat/overlay.d.ts.map +1 -1
  30. package/dist/chat/overlay.js +1 -5
  31. package/dist/chat/parts.d.ts +1 -0
  32. package/dist/chat/parts.d.ts.map +1 -1
  33. package/dist/chat/parts.js +3 -2
  34. package/dist/chat/provider.d.ts +5 -1
  35. package/dist/chat/provider.d.ts.map +1 -1
  36. package/dist/chat/provider.js +58 -77
  37. package/dist/chat/ready.d.ts +4 -1
  38. package/dist/chat/ready.d.ts.map +1 -1
  39. package/dist/chat/ready.js +7 -5
  40. package/dist/chat/room-file.d.ts +8 -0
  41. package/dist/chat/room-file.d.ts.map +1 -0
  42. package/dist/chat/room-file.js +67 -0
  43. package/dist/chat/style.d.ts.map +1 -1
  44. package/dist/chat/style.js +4 -0
  45. package/dist/chat.d.ts +1 -0
  46. package/dist/chat.d.ts.map +1 -1
  47. package/dist/client.d.ts +4 -1
  48. package/dist/client.d.ts.map +1 -1
  49. package/dist/client.js +2 -0
  50. package/dist/collection.d.ts +2 -2
  51. package/dist/collection.d.ts.map +1 -1
  52. package/dist/collection.js +56 -40
  53. package/dist/connection.d.ts +5 -1
  54. package/dist/connection.d.ts.map +1 -1
  55. package/dist/connection.js +723 -158
  56. package/dist/conversation.d.ts +2 -2
  57. package/dist/conversation.d.ts.map +1 -1
  58. package/dist/conversation.js +18 -29
  59. package/dist/digest.d.ts +2 -0
  60. package/dist/digest.d.ts.map +1 -0
  61. package/dist/digest.js +100 -0
  62. package/dist/durability.d.ts +1 -1
  63. package/dist/file.d.ts +2 -10
  64. package/dist/file.d.ts.map +1 -1
  65. package/dist/file.js +3 -120
  66. package/dist/host.d.ts +1 -1
  67. package/dist/host.d.ts.map +1 -1
  68. package/dist/host.js +7 -3
  69. package/dist/index.d.ts +6 -4
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +2 -0
  72. package/dist/memory.d.ts.map +1 -1
  73. package/dist/memory.js +9 -5
  74. package/dist/outcome.d.ts +20 -1
  75. package/dist/outcome.d.ts.map +1 -1
  76. package/dist/outcome.js +22 -0
  77. package/dist/overlay.d.ts +1 -1
  78. package/dist/overlay.d.ts.map +1 -1
  79. package/dist/overlay.js +27 -3
  80. package/dist/query.d.ts +2 -1
  81. package/dist/query.d.ts.map +1 -1
  82. package/dist/query.js +1 -0
  83. package/dist/reach.d.ts +5 -1
  84. package/dist/reach.d.ts.map +1 -1
  85. package/dist/reach.js +144 -39
  86. package/dist/read-side.d.ts +4 -4
  87. package/dist/read-side.d.ts.map +1 -1
  88. package/dist/read-side.js +585 -232
  89. package/dist/readiness.d.ts +1 -1
  90. package/dist/readiness.d.ts.map +1 -1
  91. package/dist/recovery.d.ts +2 -2
  92. package/dist/recovery.d.ts.map +1 -1
  93. package/dist/recovery.js +8 -7
  94. package/dist/refresh.js +8 -8
  95. package/dist/replica.d.ts +1 -2
  96. package/dist/replica.d.ts.map +1 -1
  97. package/dist/replica.js +69 -48
  98. package/dist/room-draft.d.ts +3 -1
  99. package/dist/room-draft.d.ts.map +1 -1
  100. package/dist/room-draft.js +21 -13
  101. package/dist/save.d.ts +43 -7
  102. package/dist/save.d.ts.map +1 -1
  103. package/dist/save.js +329 -77
  104. package/dist/search.d.ts +1 -1
  105. package/dist/search.d.ts.map +1 -1
  106. package/dist/search.js +61 -10
  107. package/dist/shared.d.ts +5 -1
  108. package/dist/shared.d.ts.map +1 -1
  109. package/dist/shared.js +72 -9
  110. package/dist/store.d.ts +8 -13
  111. package/dist/store.d.ts.map +1 -1
  112. package/dist/store.js +189 -230
  113. package/dist/tables.d.ts +181 -0
  114. package/dist/tables.d.ts.map +1 -0
  115. package/dist/tables.js +309 -0
  116. package/dist/turn.d.ts +1 -1
  117. package/dist/turn.d.ts.map +1 -1
  118. package/dist/turn.js +9 -6
  119. package/dist/windows.d.ts +0 -5
  120. package/dist/windows.d.ts.map +1 -1
  121. package/dist/windows.js +0 -9
  122. package/dist/wire.d.ts +8 -0
  123. package/dist/wire.d.ts.map +1 -1
  124. package/dist/wire.js +2 -0
  125. package/package.json +6 -2
@@ -0,0 +1,38 @@
1
+ import { record, text } from './read.js';
2
+ function requestOf(source) {
3
+ const request = text(source, 'request');
4
+ const routine = record(source.routine);
5
+ const name = text(routine, 'name');
6
+ const version = routine.version;
7
+ const requester = record(source.requester);
8
+ const by = text(requester, 'name');
9
+ const room = record(source.room);
10
+ const ref = text(room, 'ref');
11
+ const called = text(room, 'name');
12
+ if (request === null ||
13
+ name === null ||
14
+ typeof version !== 'number' ||
15
+ by === null ||
16
+ ref === null ||
17
+ called === null)
18
+ return null;
19
+ return {
20
+ kind: 'request',
21
+ request,
22
+ routine: name,
23
+ version,
24
+ requester: { name: by, room: text(requester, 'room') !== null },
25
+ room: { ref, name: called },
26
+ approved: text(source, 'approved_at'),
27
+ };
28
+ }
29
+ export function sourceOf(value) {
30
+ const source = record(value);
31
+ if (source.kind === 'request')
32
+ return requestOf(source);
33
+ if (source.kind !== 'mail')
34
+ return null;
35
+ const agent = text(record(source.agent), 'name');
36
+ const owner = text(record(source.owner), 'name');
37
+ return agent === null || owner === null ? null : { kind: 'mail', agent, owner };
38
+ }
@@ -1,9 +1,11 @@
1
1
  import { type ReactElement, type ReactNode } from 'react';
2
+ import type { ChatRequest } from './house.js';
2
3
  import { type ChatNoteProps } from './kit.js';
3
4
  export type ChatInputProps = {
4
5
  readonly messageLength?: number;
5
6
  readonly note?: (note: ChatNoteProps) => ReactNode;
6
7
  readonly autoFocus?: boolean;
8
+ readonly decision?: (request: ChatRequest) => ReactNode;
7
9
  };
8
- export declare function ChatInput({ messageLength, note, autoFocus, }: ChatInputProps): ReactElement;
10
+ export declare function ChatInput({ messageLength, note, autoFocus, decision, }: ChatInputProps): ReactElement;
9
11
  //# sourceMappingURL=input.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/chat/input.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA0C,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAqBlG,OAAO,EAAsD,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AAMlG,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,SAAS,CAAC;IACnD,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AAiGF,wBAAgB,SAAS,CAAC,EACxB,aAAa,EACb,IAAY,EACZ,SAAiB,GAClB,EAAE,cAAc,GAAG,YAAY,CA+K/B"}
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/chat/input.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA0C,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAmBlG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAsD,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AAMlG,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,SAAS,CAAC;IACnD,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,SAAS,CAAC;CACzD,CAAC;AAgFF,wBAAgB,SAAS,CAAC,EACxB,aAAa,EACb,IAAY,EACZ,SAAiB,EACjB,QAAQ,GACT,EAAE,cAAc,GAAG,YAAY,CA4K/B"}
@@ -1,13 +1,12 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useContext, useEffect, useMemo, useRef } from 'react';
3
- import { ComposerPrimitive, useAui, useAuiState, } from '@assistant-ui/react';
3
+ import { ComposerPrimitive, useAuiState, } from '@assistant-ui/react';
4
4
  import { DropdownMenu } from 'radix-ui';
5
5
  import ArrowUp from 'lucide-react/dist/esm/icons/arrow-up.mjs';
6
6
  import Check from 'lucide-react/dist/esm/icons/check.mjs';
7
7
  import ChevronDown from 'lucide-react/dist/esm/icons/chevron-down.mjs';
8
8
  import CornerDownRight from 'lucide-react/dist/esm/icons/corner-down-right.mjs';
9
9
  import ListEnd from 'lucide-react/dist/esm/icons/list-end.mjs';
10
- import Paperclip from 'lucide-react/dist/esm/icons/paperclip.mjs';
11
10
  import Pencil from 'lucide-react/dist/esm/icons/pencil.mjs';
12
11
  import Plus from 'lucide-react/dist/esm/icons/plus.mjs';
13
12
  import Square from 'lucide-react/dist/esm/icons/square.mjs';
@@ -42,10 +41,6 @@ function commandsFound(commands, query) {
42
41
  const within = commands.filter((one) => !named.includes(one) && one.name.toLowerCase().includes(asked));
43
42
  return [...named, ...within].map(commandItem);
44
43
  }
45
- function Attached({ id, name }) {
46
- const aui = useAui();
47
- return (_jsxs("span", { className: "ahc-chip ahc-chip--removable", children: [_jsx(Paperclip, { "aria-hidden": "true" }), _jsx(Name, { text: name }), _jsx(IconButton, { label: `Remove ${name}`, compact: true, onClick: () => void aui.composer().attachment({ id }).remove(), children: _jsx(X, { "aria-hidden": "true" }) })] }));
48
- }
49
44
  function Picker({ option, choose, }) {
50
45
  const container = useContext(Portal);
51
46
  return (_jsxs(DropdownMenu.Root, { modal: false, children: [_jsxs(DropdownMenu.Trigger, { className: "ahc-btn ahc-picker", "aria-label": option.name, title: option.name, children: [_jsx(Name, { text: option.values.find((one) => one.value === option.value)?.name ?? option.value }), _jsx(ChevronDown, { "aria-hidden": "true" })] }), _jsx(DropdownMenu.Portal, { container: container, children: _jsxs(DropdownMenu.Content, { className: "ahc-menu", side: "top", align: "start", children: [_jsx(DropdownMenu.Label, { className: "ahc-menu__heading", children: option.name }), _jsx(DropdownMenu.RadioGroup, { value: option.value, onValueChange: (value) => {
@@ -56,10 +51,10 @@ function Picker({ option, choose, }) {
56
51
  function noted(note) {
57
52
  return _jsx(ChatNote, { ...note });
58
53
  }
59
- export function ChatInput({ messageLength, note = noted, autoFocus = false, }) {
54
+ export function ChatInput({ messageLength, note = noted, autoFocus = false, decision, }) {
60
55
  const chat = useChat();
56
+ const { attach } = chat;
61
57
  const { client } = useChatScope();
62
- const aui = useAui();
63
58
  const opened = useOpened();
64
59
  const { lone, commands, context, queued, running } = opened;
65
60
  const conversation = chat.conversation ?? '';
@@ -71,7 +66,6 @@ export function ChatInput({ messageLength, note = noted, autoFocus = false, }) {
71
66
  input.current?.focus();
72
67
  }, [autoFocus, thread]);
73
68
  const typed = useAuiState((s) => s.composer.text);
74
- const attached = useAuiState((s) => s.composer.attachments.length > 0);
75
69
  const fault = messageLength !== undefined && typed.length > messageLength
76
70
  ? `Keep it to ${messageLength} characters.`
77
71
  : null;
@@ -88,12 +82,11 @@ export function ChatInput({ messageLength, note = noted, autoFocus = false, }) {
88
82
  chat.edit(id);
89
83
  input.current?.focus();
90
84
  };
91
- const drafted = typed.trim() !== '' || attached;
92
- const readOnly = opened.deleted;
93
- return (_jsx(Scoped, { children: _jsxs("div", { className: "ahc-input-area", children: [readOnly || queued.length === 0 ? null : (_jsxs("div", { role: "group", "aria-label": "Queued messages", className: "ahc-queue", children: [_jsxs("div", { className: "ahc-queue__head", children: [_jsx(ListEnd, { "aria-hidden": "true" }), _jsx("span", { className: "ahc-queue__said", children: `${queued.length} ${queued.length === 1 ? 'message waits' : 'messages wait'} for ${opened.name} to finish` }), running ? (_jsx(Button, { variant: "outline", compact: true, onClick: interrupt, children: "Send now" })) : null] }), queued.map((item) => (_jsxs("div", { className: "ahc-queue-row", children: [_jsx(CornerDownRight, { "aria-hidden": "true", className: "ahc-muted" }), _jsx("span", { className: "ahc-queue-row__text", children: item.text }), _jsx(IconButton, { label: "Edit queued message", compact: true, onClick: () => edit(item.id), children: _jsx(Pencil, { "aria-hidden": "true" }) }), _jsx(IconButton, { label: "Remove queued message", compact: true, onClick: () => chat.unqueue(item.id), children: _jsx(X, { "aria-hidden": "true" }) })] }, item.id)))] })), readOnly ? null : (_jsx(ComposerPrimitive.Root, { className: "ahc-composer", children: _jsxs(ComposerPrimitive.Unstable_TriggerPopoverRoot, { children: [commands.length === 0 ? null : (_jsxs(ComposerPrimitive.Unstable_TriggerPopover, { char: COMMAND, matcher: atStart, adapter: listed, "aria-label": "Commands", className: "ahc-menu ahc-commands", children: [_jsx(ComposerPrimitive.Unstable_TriggerPopover.Directive, { formatter: commanded }), _jsx(ComposerPrimitive.Unstable_TriggerPopoverItems, { children: (items) => items.map((item, index) => (_jsx(ComposerPrimitive.Unstable_TriggerPopoverItem, { item: item, index: index, className: "ahc-row ahc-row--two", children: _jsxs("span", { className: "ahc-row__label", children: [_jsx("span", { className: "ahc-row__title ahc-mono", children: item.label }), _jsx("span", { className: "ahc-row__sub", children: item.description })] }) }, item.id))) })] })), attached ? (_jsx("div", { className: "ahc-chips", children: _jsx(ComposerPrimitive.Attachments, { children: ({ attachment }) => _jsx(Attached, { id: attachment.id, name: attachment.name }) }) })) : null, _jsx(ComposerPrimitive.Input, { asChild: true, "aria-label": "Message", placeholder: lone === null ? `Message ${opened.name}` : lone.field.prompt, submitMode: fault === null ? 'enter' : 'none', children: _jsx("textarea", { ref: input, className: "ahc-composer__input", rows: 1 }) }), _jsxs("div", { className: "ahc-composer__bar", children: [_jsx(IconButton, { label: "Add files", onClick: () => picker.current?.click(), children: _jsx(Plus, { size: 20, "aria-hidden": "true" }) }), _jsx("input", { ref: picker, type: "file", multiple: true, hidden: true, onChange: (event) => {
94
- const chosen = [...(event.target.files ?? [])];
95
- event.target.value = '';
96
- for (const file of chosen)
97
- void aui.composer().addAttachment(file);
98
- } }), opened.options.map((option) => (_jsx(Picker, { option: option, choose: chat.choose }, option.id))), _jsx("span", { className: "ahc-spacer" }), context === null ? null : (_jsx("span", { title: "Context in use", className: "ahc-meta", children: contextText(context) })), running ? (_jsx("button", { type: "button", className: `ahc-btn ahc-btn--icon ${drafted ? 'ahc-btn--outline' : 'ahc-btn--ink'}`, "aria-label": "Stop", title: "Stop", onClick: interrupt, children: _jsx(Square, { "aria-hidden": "true" }) })) : null, running && !drafted ? null : (_jsx(ComposerPrimitive.Send, { className: "ahc-btn ahc-btn--icon ahc-btn--ink", "aria-label": running ? 'Queue message' : 'Send', disabled: fault !== null, children: _jsx(ArrowUp, { size: 20, "aria-hidden": "true" }) }))] })] }) })), fault === null ? null : (_jsx("p", { className: "ahc-note", role: "status", "data-state": "refused", children: fault })), note({ outcome: chat.acting.outcome }), note({ outcome: chat.sending.outcome, again: chat.sending.again ?? undefined })] }) }));
85
+ const drafted = typed.trim() !== '';
86
+ const readOnly = opened.deleted || opened.waits;
87
+ return (_jsx(Scoped, { children: _jsxs("div", { className: "ahc-input-area", children: [readOnly || queued.length === 0 ? null : (_jsxs("div", { role: "group", "aria-label": "Queued messages", className: "ahc-queue", children: [_jsxs("div", { className: "ahc-queue__head", children: [_jsx(ListEnd, { "aria-hidden": "true" }), _jsx("span", { className: "ahc-queue__said", children: `${queued.length} ${queued.length === 1 ? 'message waits' : 'messages wait'} for ${opened.name} to finish` }), running ? (_jsx(Button, { variant: "outline", compact: true, onClick: interrupt, children: "Send now" })) : null] }), queued.map((item) => (_jsxs("div", { className: "ahc-queue-row", children: [_jsx(CornerDownRight, { "aria-hidden": "true", className: "ahc-muted" }), _jsx("span", { className: "ahc-queue-row__text", children: item.text }), _jsx(IconButton, { label: "Edit queued message", compact: true, onClick: () => edit(item.id), children: _jsx(Pencil, { "aria-hidden": "true" }) }), _jsx(IconButton, { label: "Remove queued message", compact: true, onClick: () => chat.unqueue(item.id), children: _jsx(X, { "aria-hidden": "true" }) })] }, item.id)))] })), readOnly ? null : (_jsx(ComposerPrimitive.Root, { className: "ahc-composer", children: _jsxs(ComposerPrimitive.Unstable_TriggerPopoverRoot, { children: [commands.length === 0 ? null : (_jsxs(ComposerPrimitive.Unstable_TriggerPopover, { char: COMMAND, matcher: atStart, adapter: listed, "aria-label": "Commands", className: "ahc-menu ahc-commands", children: [_jsx(ComposerPrimitive.Unstable_TriggerPopover.Directive, { formatter: commanded }), _jsx(ComposerPrimitive.Unstable_TriggerPopoverItems, { children: (items) => items.map((item, index) => (_jsx(ComposerPrimitive.Unstable_TriggerPopoverItem, { item: item, index: index, className: "ahc-row ahc-row--two", children: _jsxs("span", { className: "ahc-row__label", children: [_jsx("span", { className: "ahc-row__title ahc-mono", children: item.label }), _jsx("span", { className: "ahc-row__sub", children: item.description })] }) }, item.id))) })] })), _jsx(ComposerPrimitive.Input, { asChild: true, "aria-label": "Message", placeholder: lone === null ? `Message ${opened.name}` : lone.field.prompt, submitMode: fault === null ? 'enter' : 'none', children: _jsx("textarea", { ref: input, className: "ahc-composer__input", rows: 1 }) }), _jsxs("div", { className: "ahc-composer__bar", children: [attach === null ? null : (_jsxs(_Fragment, { children: [_jsx(IconButton, { label: "Add files", onClick: () => picker.current?.click(), children: _jsx(Plus, { size: 20, "aria-hidden": "true" }) }), _jsx("input", { ref: picker, type: "file", multiple: true, hidden: true, onChange: (event) => {
88
+ const chosen = [...(event.target.files ?? [])];
89
+ event.target.value = '';
90
+ void attach(chosen);
91
+ } })] })), opened.options.map((option) => (_jsx(Picker, { option: option, choose: chat.choose }, option.id))), _jsx("span", { className: "ahc-spacer" }), context === null ? null : (_jsx("span", { title: "Context in use", className: "ahc-meta", children: contextText(context) })), running ? (_jsx("button", { type: "button", className: `ahc-btn ahc-btn--icon ${drafted ? 'ahc-btn--outline' : 'ahc-btn--ink'}`, "aria-label": "Stop", title: "Stop", onClick: interrupt, children: _jsx(Square, { "aria-hidden": "true" }) })) : null, running && !drafted ? null : (_jsx(ComposerPrimitive.Send, { className: "ahc-btn ahc-btn--icon ahc-btn--ink", "aria-label": running ? 'Queue message' : 'Send', disabled: fault !== null, children: _jsx(ArrowUp, { size: 20, "aria-hidden": "true" }) }))] })] }) })), opened.deleted || opened.waiting === null ? null : decision?.(opened.waiting), fault === null ? null : (_jsx("p", { className: "ahc-note", role: "status", "data-state": "refused", children: fault })), note({ outcome: chat.acting.outcome }), note({ outcome: chat.sending.outcome, again: chat.sending.again ?? undefined })] }) }));
99
92
  }
@@ -1 +1 @@
1
- {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/chat/message.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,YAAY,EAElB,MAAM,OAAO,CAAC;AAoCf,eAAO,MAAM,MAAM,kCAAyB,MAAM,KAAK,IAAI,SAAe,CAAC;AA2O3E,wBAAgB,WAAW,IAAI,YAAY,CA+B1C;AAED,wBAAgB,YAAY,IAAI,YAAY,CAM3C;AAmBD,wBAAgB,WAAW,IAAI,YAAY,CAE1C;AAED,wBAAgB,gBAAgB,IAAI,YAAY,CA0F/C"}
1
+ {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/chat/message.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,YAAY,EAElB,MAAM,OAAO,CAAC;AAqCf,eAAO,MAAM,MAAM,kCAAyB,MAAM,KAAK,IAAI,SAAe,CAAC;AA+P3E,wBAAgB,WAAW,IAAI,YAAY,CAkB1C;AAuCD,wBAAgB,YAAY,IAAI,YAAY,CAW3C;AAmBD,wBAAgB,WAAW,IAAI,YAAY,CAE1C;AAED,wBAAgB,gBAAgB,IAAI,YAAY,CAgG/C"}
@@ -1,6 +1,6 @@
1
1
  import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { createContext, useContext, } from 'react';
3
- import { ActionBarPrimitive, AuiIf, ErrorPrimitive, MessagePartPrimitive, MessagePrimitive, groupPartByType, useAuiState, } from '@assistant-ui/react';
3
+ import { ActionBarPrimitive, AuiIf, ErrorPrimitive, MessagePrimitive, groupPartByType, useAuiState, } from '@assistant-ui/react';
4
4
  import { MarkdownTextPrimitive } from '@assistant-ui/react-markdown';
5
5
  import { Collapsible } from 'radix-ui';
6
6
  import remarkGfm from 'remark-gfm';
@@ -15,15 +15,16 @@ import ImageGlyph from 'lucide-react/dist/esm/icons/image.mjs';
15
15
  import Layers from 'lucide-react/dist/esm/icons/layers.mjs';
16
16
  import ListChecks from 'lucide-react/dist/esm/icons/list-checks.mjs';
17
17
  import ListTodo from 'lucide-react/dist/esm/icons/list-todo.mjs';
18
- import Paperclip from 'lucide-react/dist/esm/icons/paperclip.mjs';
19
18
  import RotateCw from 'lucide-react/dist/esm/icons/rotate-cw.mjs';
20
19
  import Send from 'lucide-react/dist/esm/icons/send.mjs';
21
20
  import SlidersHorizontal from 'lucide-react/dist/esm/icons/sliders-horizontal.mjs';
22
21
  import Terminal from 'lucide-react/dist/esm/icons/terminal.mjs';
23
22
  import { SESSION_STARTED } from '../conversation.js';
24
- import { buttonClass, Name, Working } from './kit.js';
23
+ import { buttonClass, Working } from './kit.js';
25
24
  import { StillRunning } from './lasting.js';
25
+ import { stamp } from './name.js';
26
26
  import { useChat } from './provider.js';
27
+ import { isRoomPath, RoomFile } from './room-file.js';
27
28
  import { list, record, text } from './read.js';
28
29
  export const Linked = createContext(null);
29
30
  const groupBy = groupPartByType({
@@ -137,7 +138,11 @@ function Thought({ indices, active, children, }) {
137
138
  return (_jsx(Toggle, { icon: active ? now.icon : _jsx(ListChecks, { "aria-hidden": "true" }), label: active ? now.title : workedOf(calls), detail: active ? now.detail : '', active: active, children: children }));
138
139
  }
139
140
  const SCHEME = /^[a-z][a-z0-9+.-]*:/i;
140
- function Anchor({ node: _node, href = '', ...rest }) {
141
+ const ROOM_LINK = /\[([^\]]*)\]\((\/rooms\/[^)\s]+)\)/gu;
142
+ function nameOf(href) {
143
+ return href.slice(href.lastIndexOf('/') + 1);
144
+ }
145
+ function Linking({ href, ...rest }) {
141
146
  const onLink = useContext(Linked);
142
147
  if (SCHEME.test(href) || onLink === null)
143
148
  return _jsx("a", { ...rest, href: href, rel: "noreferrer" });
@@ -146,24 +151,54 @@ function Anchor({ node: _node, href = '', ...rest }) {
146
151
  onLink(href);
147
152
  } }));
148
153
  }
154
+ function Anchor({ node: _node, href = '', ...rest }) {
155
+ const link = _jsx(Linking, { ...rest, href: href });
156
+ return isRoomPath(href) ? _jsx(RoomFile, { href: href, name: nameOf(href), otherwise: link }) : link;
157
+ }
149
158
  const LINKED = { a: Anchor };
150
159
  const THOUGHT = { className: 'ahc-thought' };
151
160
  function Said({ thought = false }) {
152
161
  return (_jsx(MarkdownTextPrimitive, { className: "ahc-text ahc-markdown", containerProps: thought ? THOUGHT : undefined, remarkPlugins: GFM, components: LINKED, smooth: false }));
153
162
  }
154
- function UserText() {
155
- return _jsx(MessagePartPrimitive.Text, { className: "ahc-said" });
163
+ function UserText({ text: said }) {
164
+ const pieces = [];
165
+ let from = 0;
166
+ for (const found of said.matchAll(ROOM_LINK)) {
167
+ const [whole, , href] = found;
168
+ pieces.push(said.slice(from, found.index));
169
+ pieces.push(_jsx(RoomFile, { href: href, name: nameOf(href), otherwise: whole }, found.index));
170
+ from = found.index + whole.length;
171
+ }
172
+ pieces.push(said.slice(from));
173
+ return _jsx("span", { className: "ahc-said", children: pieces });
156
174
  }
157
175
  export function UserMessage() {
158
176
  const said = useAuiState((s) => s.message.parts.some((one) => one.type === 'text' && one.text !== ''));
159
- const attached = useAuiState((s) => (s.message.attachments?.length ?? 0) > 0);
160
177
  const undelivered = useAuiState((s) => s.message.metadata.custom.undelivered === true);
161
178
  const unknown = useAuiState((s) => s.message.metadata.custom.unknown === true);
162
179
  const id = useAuiState((s) => s.message.id);
163
- return (_jsxs(MessagePrimitive.Root, { role: "group", "aria-label": "You", className: "ahc-you", children: [said ? (_jsx("div", { className: "ahc-bubble", children: _jsx(MessagePrimitive.Parts, { components: { Text: UserText } }) })) : null, attached ? (_jsx("div", { className: "ahc-chips", children: _jsx(MessagePrimitive.Attachments, { children: ({ attachment }) => (_jsxs("span", { className: "ahc-chip", children: [_jsx(Paperclip, { "aria-hidden": "true" }), _jsx(Name, { text: attachment.name })] })) }) })) : null, undelivered ? _jsx(Undelivered, {}) : null, unknown ? _jsx(DeliveryUnknown, { message: id }) : null] }));
180
+ return (_jsxs(MessagePrimitive.Root, { role: "group", "aria-label": "You", className: "ahc-you", children: [said ? (_jsx("div", { className: "ahc-bubble", children: _jsx(MessagePrimitive.Parts, { components: { Text: UserText } }) })) : null, undelivered ? _jsx(Undelivered, {}) : null, unknown ? _jsx(DeliveryUnknown, { message: id }) : null] }));
181
+ }
182
+ function From({ source }) {
183
+ if (source.kind === 'mail') {
184
+ return (_jsxs("div", { className: "ahc-house__from", children: [_jsx("span", { className: "ahc-house__title", children: "House \u00B7 Mail" }), _jsx("span", { className: "ahc-meta", children: `From ${source.agent} of ${source.owner}` })] }));
185
+ }
186
+ const { requester, room } = source;
187
+ return (_jsxs("div", { className: "ahc-house__from", children: [_jsx("span", { className: "ahc-house__title", children: `House · ${source.routine} v${source.version}` }), _jsx("span", { className: "ahc-meta", children: requester.room ? `From ${requester.name}` : `From ${requester.name} in ${room.name}` })] }));
188
+ }
189
+ function Decided({ source, waiting, }) {
190
+ if (source.kind !== 'request')
191
+ return null;
192
+ if (waiting)
193
+ return _jsx("span", { className: "ahc-meta", children: "Waits for your approval" });
194
+ if (source.approved === null)
195
+ return null;
196
+ return (_jsxs("span", { className: "ahc-meta", children: ["Approved ", _jsx("time", { dateTime: source.approved, children: stamp(source.approved) })] }));
164
197
  }
165
198
  export function HouseMessage() {
166
- return (_jsx(MessagePrimitive.Root, { role: "group", "aria-label": "House", className: "ahc-house", children: _jsx(MessagePrimitive.Parts, { components: { Text: UserText } }) }));
199
+ const custom = useAuiState((s) => s.message.metadata.custom);
200
+ const source = (custom.source ?? null);
201
+ return (_jsxs(MessagePrimitive.Root, { role: "group", "aria-label": "House", className: "ahc-house", children: [source === null ? null : _jsx(From, { source: source }), _jsx(MessagePrimitive.Parts, { components: { Text: UserText } }), source === null ? null : _jsx(Decided, { source: source, waiting: custom.waiting === true }), custom.undelivered === true ? _jsx(Undelivered, {}) : null] }));
167
202
  }
168
203
  function DeliveryUnknown({ message }) {
169
204
  const chat = useChat();
@@ -192,7 +227,7 @@ export function AssistantMessage() {
192
227
  case 'tool-call':
193
228
  return _jsx(ToolCall, { call: part, active: part.status.type === 'running' });
194
229
  case 'file':
195
- return (_jsxs("div", { className: "ahc-toolline ahc-quiet", children: [_jsx(ImageGlyph, { "aria-hidden": "true" }), _jsx("span", { className: "ahc-clipped", children: part.filename })] }));
230
+ return (_jsx(RoomFile, { href: part.data, name: part.filename ?? nameOf(part.data), otherwise: _jsxs("div", { className: "ahc-toolline ahc-quiet", children: [_jsx(ImageGlyph, { "aria-hidden": "true" }), _jsx("span", { className: "ahc-clipped", children: part.filename })] }) }));
196
231
  case 'indicator':
197
232
  return _jsx(Working, { step: started ? SESSION_STARTED : undefined });
198
233
  default:
@@ -1,22 +1,27 @@
1
1
  import type { ThreadMessageLike } from '@assistant-ui/react';
2
2
  import type { TurnContext } from '../adapter.js';
3
3
  import type { ConversationView } from '../conversation.js';
4
+ import { type ChatRequest, type HouseSource } from './house.js';
4
5
  import { type Part } from './parts.js';
5
6
  type Entry = ConversationView['messages'][number];
6
7
  export type Said = {
7
8
  readonly turn: string;
8
9
  readonly user: boolean;
9
10
  readonly house: boolean;
11
+ readonly source: HouseSource | null;
10
12
  readonly waiting: boolean;
11
13
  readonly text: string;
12
14
  readonly parts: readonly Part[];
13
15
  readonly context: TurnContext | null;
14
16
  readonly failure: string | null;
15
17
  readonly undelivered: boolean;
16
- readonly files: readonly string[];
17
18
  };
18
19
  export declare function saidOf(entry: Entry): Said;
19
20
  export declare function awaitsTurn(view: ConversationView | null): boolean;
21
+ export declare function requestIn(view: ConversationView | null): {
22
+ readonly request: ChatRequest;
23
+ readonly waiting: boolean;
24
+ } | null;
20
25
  export declare function askedBefore(view: ConversationView | null, id: string | null): string | null;
21
26
  export declare function chatMessages(view: ConversationView | null): ThreadMessageLike[];
22
27
  export declare function contextOf(view: ConversationView | null): TurnContext | null;
@@ -1 +1 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/chat/messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAA0D,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAO/F,KAAK,KAAK,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAElD,MAAM,MAAM,IAAI,GAAG;IACjB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC,CAAC;AAaF,wBAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAkBzC;AAiGD,wBAAgB,UAAU,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,GAAG,OAAO,CAKjE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAO3F;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,GAAG,iBAAiB,EAAE,CA0D/E;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,CAS3E"}
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/chat/messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAY,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EAA0D,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAO/F,KAAK,KAAK,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAElD,MAAM,MAAM,IAAI,GAAG;IACjB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B,CAAC;AAaF,wBAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAmBzC;AAiGD,wBAAgB,UAAU,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,GAAG,OAAO,CAKjE;AAED,wBAAgB,SAAS,CACvB,IAAI,EAAE,gBAAgB,GAAG,IAAI,GAC5B;IAAE,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAOrE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAO3F;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,GAAG,iBAAiB,EAAE,CAmD/E;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,CAS3E"}
@@ -1,3 +1,4 @@
1
+ import { sourceOf } from './house.js';
1
2
  import { contextIn, jobOf, partsOf, stillRunning } from './parts.js';
2
3
  import { list, record, text } from './read.js';
3
4
  const SAID = new WeakMap();
@@ -7,17 +8,18 @@ export function saidOf(entry) {
7
8
  if (held !== undefined)
8
9
  return held;
9
10
  const message = record(entry.message);
11
+ const house = text(message, 'role') === 'house';
10
12
  const said = {
11
13
  turn: text(message, 'turn_id') ?? entry.turn,
12
14
  user: text(message, 'role') === 'user',
13
- house: text(message, 'role') === 'house',
15
+ house,
16
+ source: house ? sourceOf(message.source) : null,
14
17
  waiting: message.waiting === true,
15
18
  text: text(message, 'text') ?? '',
16
19
  parts: partsOf(list(message, 'parts')),
17
20
  context: contextIn(message.context),
18
21
  failure: text(message, 'failure'),
19
22
  undelivered: message.telegram_undelivered === true,
20
- files: list(message, 'files').flatMap((one) => text(record(one), 'name') ?? []),
21
23
  };
22
24
  SAID.set(entry, said);
23
25
  return said;
@@ -83,7 +85,7 @@ function contentOf(id, parts, live) {
83
85
  args: { steps: part.steps.map((step) => ({ ...step })) },
84
86
  };
85
87
  case 'image':
86
- return { type: 'file', filename: part.name, mimeType: part.mediaType, data: '' };
88
+ return { type: 'file', filename: part.name, mimeType: part.mediaType, data: part.path };
87
89
  }
88
90
  });
89
91
  }
@@ -105,6 +107,14 @@ export function awaitsTurn(view) {
105
107
  const said = saidOf(newest);
106
108
  return said.user || (said.house && !said.waiting);
107
109
  }
110
+ export function requestIn(view) {
111
+ for (const entry of view?.messages ?? []) {
112
+ const { waiting, source } = saidOf(entry);
113
+ if (source?.kind === 'request')
114
+ return { request: { request: source.request, room: source.room.ref }, waiting };
115
+ }
116
+ return null;
117
+ }
108
118
  export function askedBefore(view, id) {
109
119
  const said = (view?.messages ?? []).map((entry) => ({ ...saidOf(entry), id: entry.identity }));
110
120
  const asked = said
@@ -125,7 +135,7 @@ export function chatMessages(view) {
125
135
  id: entry.identity,
126
136
  role: 'system',
127
137
  content: [{ type: 'text', text: one.text }],
128
- metadata: { custom },
138
+ metadata: { custom: { ...custom, source: one.source, waiting: one.waiting } },
129
139
  }));
130
140
  if (one.user) {
131
141
  const unknown = view.deliveryUnknown.includes(entry.identity);
@@ -133,13 +143,6 @@ export function chatMessages(view) {
133
143
  id: entry.identity,
134
144
  role: 'user',
135
145
  content: [{ type: 'text', text: one.text }],
136
- attachments: one.files.map((name, at) => ({
137
- id: `${entry.identity}:${at}`,
138
- type: 'file',
139
- name,
140
- status: { type: 'complete' },
141
- content: [],
142
- })),
143
146
  metadata: { custom: { ...custom, unknown } },
144
147
  }));
145
148
  }
@@ -1,4 +1,5 @@
1
1
  import type { ReactElement } from 'react';
2
+ export declare function stamp(at: string): string;
2
3
  export declare function readable(name: string): string;
3
4
  export declare function ChatName({ name }: {
4
5
  readonly name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"name.d.ts","sourceRoot":"","sources":["../../src/chat/name.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAgC1C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAI7C;AAED,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,YAAY,CAc1E"}
1
+ {"version":3,"file":"name.d.ts","sourceRoot":"","sources":["../../src/chat/name.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAM1C,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAUxC;AAgBD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAI7C;AAED,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,YAAY,CAc1E"}
package/dist/chat/name.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
2
2
  const INSTANT = /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?(?:Z|[+-]\d{2}:\d{2})/g;
3
- function stamp(at) {
3
+ export function stamp(at) {
4
4
  const time = new Date(at);
5
5
  return Number.isNaN(time.getTime())
6
6
  ? ''
@@ -6,6 +6,7 @@ export type Opened = ChatState & {
6
6
  readonly name: string;
7
7
  readonly deleted: boolean;
8
8
  readonly busy: boolean;
9
+ readonly waits: boolean;
9
10
  };
10
11
  export declare function useOpened(): Opened;
11
12
  //# sourceMappingURL=opened.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"opened.d.ts","sourceRoot":"","sources":["../../src/chat/opened.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAyB,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAEtE,MAAM,MAAM,MAAM,GAAG,SAAS,GAAG;IAC/B,QAAQ,CAAC,KAAK,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,wBAAgB,SAAS,IAAI,MAAM,CAelC"}
1
+ {"version":3,"file":"opened.d.ts","sourceRoot":"","sources":["../../src/chat/opened.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,OAAO,EAAyB,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAEtE,MAAM,MAAM,MAAM,GAAG,SAAS,GAAG;IAC/B,QAAQ,CAAC,KAAK,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,wBAAgB,SAAS,IAAI,MAAM,CAgBlC"}
@@ -1,3 +1,4 @@
1
+ import { requestIn } from './messages.js';
1
2
  import { useChat, useChatScope } from './provider.js';
2
3
  export function useOpened() {
3
4
  const chat = useChat();
@@ -13,5 +14,6 @@ export function useOpened() {
13
14
  name: live?.name ?? entry?.agent.name ?? '',
14
15
  deleted: known && chat.conversation !== null && by !== null && live === undefined,
15
16
  busy: chat.running || asks,
17
+ waits: requestIn(chat.view)?.waiting ?? entry?.waiting === true,
16
18
  };
17
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../src/chat/overlay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACzF,OAAO,EAAa,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG/E,KAAK,OAAO,GAAG,SAAS,iBAAiB,EAAE,CAAC;AAE5C,MAAM,MAAM,WAAW,GACnB;IACE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,IAAI,CAAC,IAAI,EAAE,gBAAgB,GAAG,gBAAgB,CAAC;IAC/C,KAAK,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC;CACxC,GACD;IACE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IAC7B,KAAK,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;CAC/B,CAAC;AAEN,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;AAE/C,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC,GAAG;IACjF,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC9C,KAAK,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACpC,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/B,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,gBAAgB,CAAC;IACvD,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;CACvC,CAAC;AAEF,wBAAgB,OAAO,IAAI,OAAO,CAiBjC;AAED,wBAAgB,WAAW,CACzB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,MAAM,GAAG,IAAI,GAClB,WAAW,CA2Bb;AAED,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAkB7F;AAED,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,WAAW,CAWvF;AAED,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,CAUlF;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,WAAW,CAQxE;AAED,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,EAC9D,KAAK,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,OAAO,GAC3C,WAAW,CAQb;AAED,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,WAAW,CAQlE"}
1
+ {"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../src/chat/overlay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACzF,OAAO,EAAa,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG/E,KAAK,OAAO,GAAG,SAAS,iBAAiB,EAAE,CAAC;AAE5C,MAAM,MAAM,WAAW,GACnB;IACE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,IAAI,CAAC,IAAI,EAAE,gBAAgB,GAAG,gBAAgB,CAAC;IAC/C,KAAK,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC;CACxC,GACD;IACE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IAC7B,KAAK,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;CAC/B,CAAC;AAEN,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;AAE/C,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC,GAAG;IACjF,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC9C,KAAK,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACpC,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/B,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,gBAAgB,CAAC;IACvD,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;CACvC,CAAC;AAEF,wBAAgB,OAAO,IAAI,OAAO,CAiBjC;AAED,wBAAgB,WAAW,CACzB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,MAAM,GAAG,IAAI,GAClB,WAAW,CAuBb;AAED,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAkB7F;AAED,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,WAAW,CAWvF;AAED,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,CAUlF;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,WAAW,CAQxE;AAED,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,EAC9D,KAAK,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,OAAO,GAC3C,WAAW,CAQb;AAED,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,WAAW,CAQlE"}
@@ -31,11 +31,7 @@ export function sentMessage(key, into, said, turn) {
31
31
  identity: key,
32
32
  turn: turn ?? key,
33
33
  text: said.text,
34
- message: {
35
- role: 'user',
36
- text: said.text,
37
- files: said.files.map((file) => ({ name: file.name })),
38
- },
34
+ message: { role: 'user', text: said.text },
39
35
  },
40
36
  ],
41
37
  },
@@ -24,6 +24,7 @@ export type Part = {
24
24
  readonly target: string | null;
25
25
  } | {
26
26
  readonly type: 'image';
27
+ readonly path: string;
27
28
  readonly name: string;
28
29
  readonly mediaType: string;
29
30
  } | {
@@ -1 +1 @@
1
- {"version":3,"file":"parts.d.ts","sourceRoot":"","sources":["../../src/chat/parts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjD,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,YAAY,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC;AAEvE,MAAM,MAAM,IAAI,GACZ;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChD;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACrD;IACE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACtF;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC7E;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC3E;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAA;CAAE,CAAC;AAmDnE,wBAAgB,OAAO,CAAC,GAAG,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,IAAI,EAAE,CAEhE;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,CAK1D;AAED,MAAM,MAAM,IAAI,GAAG;IACjB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,UAAU,GAAG,UAAU,CAAC;IAC/C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,GAAG,GAAG;IAChB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;IACjD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,CAAC;AAIF,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CASvC;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,CAAC,CA0C7F"}
1
+ {"version":3,"file":"parts.d.ts","sourceRoot":"","sources":["../../src/chat/parts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjD,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,YAAY,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC;AAEvE,MAAM,MAAM,IAAI,GACZ;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChD;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACrD;IACE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACtF;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC3E;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAA;CAAE,CAAC;AAoDnE,wBAAgB,OAAO,CAAC,GAAG,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,IAAI,EAAE,CAEhE;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,CAK1D;AAED,MAAM,MAAM,IAAI,GAAG;IACjB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,UAAU,GAAG,UAAU,CAAC;IAC/C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,GAAG,GAAG;IAChB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;IACjD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,CAAC;AAIF,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CASvC;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,CAAC,CA0C7F"}
@@ -22,10 +22,11 @@ function partOf(raw) {
22
22
  return command === null ? null : { type: 'message', command, target: text(part, 'target') };
23
23
  }
24
24
  case 'image': {
25
+ const path = text(part, 'file');
25
26
  const name = text(part, 'name');
26
- return name === null
27
+ return path === null || name === null
27
28
  ? null
28
- : { type: 'image', name, mediaType: text(part, 'media_type') ?? '' };
29
+ : { type: 'image', path, name, mediaType: text(part, 'media_type') ?? '' };
29
30
  }
30
31
  case 'marker': {
31
32
  const marker = text(part, 'marker');
@@ -3,6 +3,7 @@ import type { TurnContext } from '../adapter.js';
3
3
  import type { MdRuntimeClient } from '../client.js';
4
4
  import { type ChatDraft, type ConversationAgent, type ConversationEntry, type ConversationView } from '../conversation.js';
5
5
  import { type ChatOutcome } from './acts.js';
6
+ import type { ChatRequest } from './house.js';
6
7
  import { type ChatCommand, type ChatOption } from './process.js';
7
8
  import { type ChatLone, type ChatQuestion } from './questions.js';
8
9
  export type ChatOpened = {
@@ -21,6 +22,7 @@ export type ChatState = ChatOpened & {
21
22
  readonly conversations: readonly ConversationEntry[];
22
23
  readonly agents: readonly ConversationAgent[];
23
24
  readonly view: ConversationView | null;
25
+ readonly waiting: ChatRequest | null;
24
26
  readonly running: boolean;
25
27
  readonly questions: readonly ChatQuestion[];
26
28
  readonly lone: ChatLone | null;
@@ -35,6 +37,7 @@ export type ChatState = ChatOpened & {
35
37
  open(conversation: string): void;
36
38
  start(agent: string): void;
37
39
  send(draft: ChatDraft): void;
40
+ attach: ((files: readonly File[]) => Promise<boolean>) | null;
38
41
  answer(question: ChatQuestion, response: unknown): Promise<boolean>;
39
42
  choose(option: string, value: string): Promise<boolean>;
40
43
  stop(): Promise<boolean>;
@@ -50,6 +53,7 @@ export type ChatProviderProps = {
50
53
  readonly client: MdRuntimeClient;
51
54
  readonly conversation?: string | null;
52
55
  readonly agent?: string | null;
56
+ readonly attachTo?: string | null;
53
57
  readonly onOpen?: (opened: ChatOpened) => void;
54
58
  readonly children?: ReactNode;
55
59
  };
@@ -59,6 +63,6 @@ type Scope = {
59
63
  };
60
64
  export declare function useChatScope(): Scope;
61
65
  export declare function useChat(): ChatState;
62
- export declare function ChatProvider({ client, conversation, agent, onOpen, children, }: ChatProviderProps): ReactElement;
66
+ export declare function ChatProvider({ client, conversation, agent, attachTo, onOpen, children, }: ChatProviderProps): ReactElement;
63
67
  export {};
64
68
  //# sourceMappingURL=provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/chat/provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/chat/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAWL,KAAK,YAAY,EACjB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAUf,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACtB,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EAML,KAAK,WAAW,EAGjB,MAAM,WAAW,CAAC;AAEnB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAe9C,OAAO,EAAoC,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AACnG,OAAO,EAAuB,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGvF,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG;IACnC,QAAQ,CAAC,aAAa,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACrD,QAAQ,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC9C,QAAQ,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,SAAS,YAAY,EAAE,CAAC;IAC5C,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG;QAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAA;KAAE,CAAC;IACvE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAC9D,MAAM,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACxD,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACzB,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACzB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACzB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3B,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IAC/C,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;CAC/B,CAAC;AAkJF,KAAK,KAAK,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AAI3E,wBAAgB,YAAY,IAAI,KAAK,CAIpC;AAED,wBAAgB,OAAO,IAAI,SAAS,CAInC;AAED,wBAAgB,YAAY,CAAC,EAC3B,MAAM,EACN,YAAmB,EACnB,KAAY,EACZ,QAAe,EACf,MAAM,EACN,QAAQ,GACT,EAAE,iBAAiB,GAAG,YAAY,CAgkBlC"}