@mlpal/yodex-ui 0.2.2 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,12 @@
1
1
  import type { AskQuestion, Author, ContentBlock, PendingApproval, ResultEvent, ServerCapability, ServerMessage, SessionSummary, ToolResultBlocks, Usage } from "@mlpal/harness-protocol";
2
2
  export type { AskAnswer, AskOption, AskOutcome, AskQuestion, PendingApproval, ServerCapability } from "@mlpal/harness-protocol";
3
3
  /** One rendered row of a session's transcript. Built by the reducer from the wire events. */
4
+ /** `id` is a render key, fresh per replay; `messageUuid` is the conversation entry's uuid from the
5
+ * server (yodex/2), stable across reloads: key a turn or a checkpoint by it. */
4
6
  export type TranscriptItem = {
5
7
  kind: "user";
6
8
  id: string;
9
+ messageUuid?: string;
7
10
  text: string;
8
11
  author: Author;
9
12
  ts: string;
@@ -11,12 +14,14 @@ export type TranscriptItem = {
11
14
  } | {
12
15
  kind: "assistant";
13
16
  id: string;
17
+ messageUuid?: string;
14
18
  text: string;
15
19
  ts: string;
16
20
  live: boolean;
17
21
  } | {
18
22
  kind: "tool";
19
23
  id: string;
24
+ messageUuid?: string;
20
25
  name: string;
21
26
  input: Record<string, unknown>;
22
27
  ts: string;
@@ -25,6 +25,9 @@ export interface ComposerProps {
25
25
  * Force one behaviour with true / false. */
26
26
  submitOnEnter?: boolean;
27
27
  hideAttach?: boolean;
28
+ /** Text shown on the send button beside the arrow, e.g. "Send when ready" while a workspace
29
+ * wakes and the prompt will be queued. Also its accessible name. */
30
+ submitLabel?: string;
28
31
  disabled?: boolean;
29
32
  /** Shown as a placeholder reason while disabled, e.g. "Workspace is waking up". */
30
33
  disabledReason?: string;
@@ -38,4 +41,4 @@ export interface ComposerProps {
38
41
  className?: string;
39
42
  autoFocus?: boolean;
40
43
  }
41
- export declare function Composer({ onSubmit, running, onStop, onSteer, value, onChange, initialValue, submitOnEnter, hideAttach, disabled, disabledReason, placeholder, hopOptions, hop, onHopChange, leading, maxAttachmentBytes, className, autoFocus }: ComposerProps): import("react").JSX.Element;
44
+ export declare function Composer({ onSubmit, running, onStop, onSteer, value, onChange, initialValue, submitOnEnter, hideAttach, submitLabel, disabled, disabledReason, placeholder, hopOptions, hop, onHopChange, leading, maxAttachmentBytes, className, autoFocus }: ComposerProps): import("react").JSX.Element;
package/dist/index.js CHANGED
@@ -209,13 +209,25 @@ function applyEvent(state, ev, live) {
209
209
  case "system":
210
210
  return { ...state, sessionId: ev.sessionId, model: state.model ?? ev.model, cwd: ev.cwd };
211
211
  case "user": {
212
- if (live && ev.author.type === "human")
213
- return state;
212
+ if (live && ev.author.type === "human") {
213
+ if (!ev.uuid)
214
+ return state;
215
+ const items = state.items.slice();
216
+ for (let i = items.length - 1;i >= 0; i--) {
217
+ const it = items[i];
218
+ if (it.kind === "user" && it.author.type === "human") {
219
+ if (!it.messageUuid)
220
+ items[i] = { ...it, messageUuid: ev.uuid };
221
+ break;
222
+ }
223
+ }
224
+ return { ...state, items };
225
+ }
214
226
  const text = textOf(ev.message.content);
215
227
  const blocks = Array.isArray(ev.message.content) ? ev.message.content.filter((b) => b.type !== "text") : undefined;
216
228
  return {
217
229
  ...state,
218
- items: [...dropDraft(state.items), { kind: "user", id: nextId("u"), text, author: ev.author, ts: ev.ts, ...blocks?.length ? { blocks } : {} }]
230
+ items: [...dropDraft(state.items), { kind: "user", id: nextId("u"), ...ev.uuid ? { messageUuid: ev.uuid } : {}, text, author: ev.author, ts: ev.ts, ...blocks?.length ? { blocks } : {} }]
219
231
  };
220
232
  }
221
233
  case "text_delta": {
@@ -237,7 +249,7 @@ function applyEvent(state, ev, live) {
237
249
  let items = dropDraft(state.items);
238
250
  const text = textOf(ev.message.content);
239
251
  if (text.trim())
240
- items = [...items, { kind: "assistant", id: nextId("a"), text, ts: ev.ts, live: false }];
252
+ items = [...items, { kind: "assistant", id: nextId("a"), ...ev.uuid ? { messageUuid: ev.uuid } : {}, text, ts: ev.ts, live: false }];
241
253
  let plan = currentPlan(items);
242
254
  let planChanged = false;
243
255
  if (Array.isArray(ev.message.content)) {
@@ -256,7 +268,7 @@ function applyEvent(state, ev, live) {
256
268
  }
257
269
  continue;
258
270
  }
259
- items = [...items, { kind: "tool", id: b.id, name: b.name, input, ts: ev.ts }];
271
+ items = [...items, { kind: "tool", id: b.id, ...ev.uuid ? { messageUuid: ev.uuid } : {}, name: b.name, input, ts: ev.ts }];
260
272
  }
261
273
  }
262
274
  if (planChanged)
@@ -1551,7 +1563,7 @@ async function fileToAttachment(f) {
1551
1563
  function coarsePointer() {
1552
1564
  return typeof window !== "undefined" && typeof window.matchMedia === "function" && window.matchMedia("(pointer: coarse)").matches;
1553
1565
  }
1554
- function Composer({ onSubmit, running, onStop, onSteer, value, onChange, initialValue, submitOnEnter, hideAttach, disabled, disabledReason, placeholder = "Ask yodex to do something…", hopOptions, hop, onHopChange, leading, maxAttachmentBytes = 8 * 1024 * 1024, className, autoFocus }) {
1566
+ function Composer({ onSubmit, running, onStop, onSteer, value, onChange, initialValue, submitOnEnter, hideAttach, submitLabel, disabled, disabledReason, placeholder = "Ask yodex to do something…", hopOptions, hop, onHopChange, leading, maxAttachmentBytes = 8 * 1024 * 1024, className, autoFocus }) {
1555
1567
  const [own, setOwn] = useState5(initialValue ?? "");
1556
1568
  const text = value ?? own;
1557
1569
  const setText = (t) => {
@@ -1733,16 +1745,21 @@ function Composer({ onSubmit, running, onStop, onSteer, value, onChange, initial
1733
1745
  className: "h-4 w-4",
1734
1746
  "aria-hidden": true
1735
1747
  })
1736
- }) : /* @__PURE__ */ jsx11("button", {
1748
+ }) : /* @__PURE__ */ jsxs10("button", {
1737
1749
  type: "button",
1738
1750
  onClick: submit,
1739
1751
  disabled: !canSend,
1740
- "aria-label": "Send",
1741
- className: "flex h-11 w-11 items-center justify-center rounded-md bg-primary text-primary-foreground disabled:opacity-40",
1742
- children: /* @__PURE__ */ jsx11(ArrowUp, {
1743
- className: "h-4 w-4",
1744
- "aria-hidden": true
1745
- })
1752
+ "aria-label": submitLabel ?? "Send",
1753
+ className: cn("flex h-11 items-center justify-center gap-1 rounded-md bg-primary text-primary-foreground disabled:opacity-40", submitLabel ? "px-3 text-[13px] font-medium" : "w-11"),
1754
+ children: [
1755
+ submitLabel && /* @__PURE__ */ jsx11("span", {
1756
+ children: submitLabel
1757
+ }),
1758
+ /* @__PURE__ */ jsx11(ArrowUp, {
1759
+ className: "h-4 w-4",
1760
+ "aria-hidden": true
1761
+ })
1762
+ ]
1746
1763
  })
1747
1764
  ]
1748
1765
  })
@@ -1782,5 +1799,5 @@ export {
1782
1799
  ApprovalPrompt
1783
1800
  };
1784
1801
 
1785
- //# debugId=2F1B2145F90EDF3464756E2164756E21
1802
+ //# debugId=5FADBD2ECF14426A64756E2164756E21
1786
1803
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -3,7 +3,7 @@
3
3
  "sources": ["../src/client/client.ts", "../src/client/reducer.ts", "../src/client/useYodexSession.ts", "../src/client/rules.ts", "../src/components/Transcript.tsx", "../src/components/AssistantMessage.tsx", "../src/components/cn.ts", "../src/components/PlanChecklist.tsx", "../src/components/ToolCall.tsx", "../src/components/DiffView.tsx", "../src/components/PermissionPrompt.tsx", "../src/components/ApprovalPrompt.tsx", "../src/components/QuestionForm.tsx", "../src/components/RunStatus.tsx", "../src/components/SessionList.tsx", "../src/components/Composer.tsx"],
4
4
  "sourcesContent": [
5
5
  "import type { ClientMessage, ContentBlock, ServerMessage } from \"@mlpal/harness-protocol\";\nimport type { AskOutcome, ConnectionState, IncomingMessage } from \"./types\";\n\n/** The subset of the WebSocket API the client uses, so tests can inject a fake. */\nexport interface SocketLike {\n readyState: number;\n send(data: string): void;\n close(): void;\n onopen: ((ev: unknown) => void) | null;\n onclose: ((ev: unknown) => void) | null;\n onerror: ((ev: unknown) => void) | null;\n onmessage: ((ev: { data: unknown }) => void) | null;\n}\nexport type SocketFactory = (url: string) => SocketLike;\n\nexport interface RunOptions {\n sessionId?: string;\n model?: string;\n mode?: string;\n /** yodex/2: the HOP for this run (must be the server's own unless it claims \"hop_per_run\"),\n * the working directory under the workspace root, and attachments (\"attachments\"). */\n hop?: string;\n cwd?: string;\n blocks?: ContentBlock[];\n}\n\n/** Outgoing messages: the protocol's ClientMessage (yodex/2, additive over yodex/1). */\nexport type OutgoingMessage = ClientMessage;\n\nexport interface YodexClientOptions {\n /** ws:// or wss:// URL of `yodex serve`'s /ws endpoint. */\n url: string;\n /** Appended as ?token= when the proxy does not inject Authorization on the upgrade. */\n token?: string;\n onMessage: (m: IncomingMessage) => void;\n onState?: (s: ConnectionState) => void;\n socketFactory?: SocketFactory;\n /** Reconnect backoff bounds, ms. */\n backoffMs?: { min: number; max: number };\n requestTimeoutMs?: number;\n /** Injected for deterministic tests. */\n setTimer?: (fn: () => void, ms: number) => unknown;\n clearTimer?: (h: unknown) => void;\n random?: () => number;\n}\n\ninterface Pending {\n resolve: (m: ServerMessage) => void;\n reject: (e: Error) => void;\n timer: unknown;\n}\n\n/**\n * A yodex serve client: one socket per session view, reconnect with jittered exponential\n * backoff, and request-id correlation for the list_* / load_session round-trips. Everything\n * streamed (events, permission and question requests, done, error) goes to `onMessage`;\n * the reducer in ./reducer turns it into view state.\n */\nexport class YodexClient {\n private socket: SocketLike | null = null;\n private closedByUser = false;\n private attempt = 0;\n private reconnectHandle: unknown = null;\n private readonly pending = new Map<string, Pending>();\n private readonly opts: Required<Pick<YodexClientOptions, \"backoffMs\" | \"requestTimeoutMs\" | \"socketFactory\" | \"setTimer\" | \"clearTimer\" | \"random\">> & YodexClientOptions;\n private seq = 0;\n state: ConnectionState = \"closed\";\n\n constructor(options: YodexClientOptions) {\n // An option passed as `undefined` (a hook forwarding an unset prop) must not erase a default.\n const given = Object.fromEntries(Object.entries(options).filter(([, v]) => v !== undefined)) as YodexClientOptions;\n this.opts = {\n backoffMs: { min: 500, max: 10_000 },\n requestTimeoutMs: 15_000,\n socketFactory: (url) => new WebSocket(url) as unknown as SocketLike,\n setTimer: (fn, ms) => setTimeout(fn, ms),\n clearTimer: (h) => clearTimeout(h as ReturnType<typeof setTimeout>),\n random: Math.random,\n ...given,\n };\n }\n\n get url(): string {\n const u = this.opts.url;\n if (!this.opts.token) return u;\n return `${u}${u.includes(\"?\") ? \"&\" : \"?\"}token=${encodeURIComponent(this.opts.token)}`;\n }\n\n connect(): void {\n this.closedByUser = false;\n this.open();\n }\n\n close(): void {\n this.closedByUser = true;\n if (this.reconnectHandle) this.opts.clearTimer(this.reconnectHandle);\n this.reconnectHandle = null;\n this.socket?.close();\n this.socket = null;\n this.failPending(new Error(\"client closed\"));\n this.setState(\"closed\");\n }\n\n private setState(s: ConnectionState): void {\n if (this.state === s) return;\n this.state = s;\n this.opts.onState?.(s);\n }\n\n private open(): void {\n this.setState(this.attempt === 0 ? \"connecting\" : \"reconnecting\");\n const ws = this.opts.socketFactory(this.url);\n this.socket = ws;\n ws.onopen = () => {\n this.attempt = 0;\n };\n ws.onmessage = (ev) => {\n let m: IncomingMessage;\n try {\n m = JSON.parse(String(ev.data)) as IncomingMessage;\n } catch {\n return;\n }\n if (m.type === \"ready\") this.setState(\"connected\");\n const rid = (m as { requestId?: string }).requestId;\n if (rid && this.pending.has(rid) && m.type !== \"done\") {\n const p = this.pending.get(rid)!;\n this.pending.delete(rid);\n this.opts.clearTimer(p.timer);\n p.resolve(m as ServerMessage);\n }\n this.opts.onMessage(m);\n };\n ws.onerror = () => {\n // onclose follows; the reconnect decision lives there.\n };\n ws.onclose = () => {\n if (this.socket !== ws) return;\n this.socket = null;\n this.failPending(new Error(\"connection lost\"));\n if (this.closedByUser) return;\n this.scheduleReconnect();\n };\n }\n\n private scheduleReconnect(): void {\n const { min, max } = this.opts.backoffMs;\n const base = Math.min(max, min * 2 ** this.attempt);\n const delay = Math.round(base * (0.5 + this.opts.random() * 0.5));\n this.attempt += 1;\n this.setState(\"reconnecting\");\n this.reconnectHandle = this.opts.setTimer(() => {\n this.reconnectHandle = null;\n if (!this.closedByUser) this.open();\n }, delay);\n }\n\n private failPending(e: Error): void {\n for (const p of this.pending.values()) {\n this.opts.clearTimer(p.timer);\n p.reject(e);\n }\n this.pending.clear();\n }\n\n get connected(): boolean {\n return this.state === \"connected\" && this.socket !== null;\n }\n\n send(m: OutgoingMessage): void {\n if (!this.socket || this.state !== \"connected\") throw new Error(\"not connected\");\n this.socket.send(JSON.stringify(m));\n }\n\n private requestId(): string {\n return `${Date.now().toString(36)}-${(++this.seq).toString(36)}`;\n }\n\n /** Send a request carrying a requestId and resolve with the server's correlated reply. */\n request<T extends ServerMessage[\"type\"]>(m: OutgoingMessage & { requestId: string }, _expect: T): Promise<Extract<ServerMessage, { type: T }>> {\n return new Promise((resolve, reject) => {\n const timer = this.opts.setTimer(() => {\n this.pending.delete(m.requestId);\n reject(new Error(`${m.type}: no reply within ${this.opts.requestTimeoutMs} ms`));\n }, this.opts.requestTimeoutMs);\n this.pending.set(m.requestId, { resolve: (r) => resolve(r as Extract<ServerMessage, { type: T }>), reject, timer });\n try {\n this.send(m);\n } catch (e) {\n this.pending.delete(m.requestId);\n this.opts.clearTimer(timer);\n reject(e as Error);\n }\n });\n }\n\n /** Start a turn. Returns the requestId the matching `done` will carry. */\n run(prompt: string, options: RunOptions = {}): string {\n const requestId = this.requestId();\n this.send({ type: \"run\", requestId, prompt, ...options });\n return requestId;\n }\n\n interrupt(): void {\n this.send({ type: \"interrupt\" });\n }\n\n sendPeer(sessionId: string, text: string): void {\n this.send({ type: \"send\", sessionId, text });\n }\n\n respondPermission(id: string, decision: \"allow\" | \"deny\", reason?: string): void {\n this.send({ type: \"permission_response\", id, decision, ...(reason ? { reason } : {}) });\n }\n\n respondQuestion(id: string, outcome: AskOutcome): void {\n this.send({ type: \"question_response\", id, outcome });\n }\n\n respondApproval(sessionId: string, decision: \"allow\" | \"deny\", reason?: string): void {\n this.send({ type: \"approval_response\", sessionId, decision, ...(reason ? { reason } : {}) });\n }\n\n listSessions() {\n return this.request({ type: \"list_sessions\", requestId: this.requestId() }, \"sessions\");\n }\n listModels() {\n return this.request({ type: \"list_models\", requestId: this.requestId() }, \"models\");\n }\n listSkills() {\n return this.request({ type: \"list_skills\", requestId: this.requestId() }, \"skills\");\n }\n loadSession(sessionId: string) {\n return this.request({ type: \"load_session\", requestId: this.requestId(), sessionId }, \"session_history\");\n }\n}\n",
6
- "import type { EngineEvent, ResultEvent, Usage } from \"@mlpal/harness-protocol\";\nimport { addUsage, emptyUsage, HUMAN } from \"@mlpal/harness-protocol\";\nimport type { PlanItem, PlanStatus, SessionAction, SessionState, TranscriptItem } from \"./types\";\n\nexport function initialState(): SessionState {\n return {\n connection: \"connecting\",\n capabilities: [],\n items: [],\n running: false,\n usageTotal: emptyUsage(),\n pendingPermissions: [],\n sessions: [],\n models: [],\n skills: [],\n };\n}\n\nconst TASK_TOOLS = new Set([\"TaskCreate\", \"TaskUpdate\", \"TaskList\"]);\nlet seq = 0;\nconst nextId = (prefix: string) => `${prefix}-${++seq}`;\n\nfunction textOf(content: unknown): string {\n if (typeof content === \"string\") return content;\n if (!Array.isArray(content)) return \"\";\n return content\n .map((b) => (b && typeof b === \"object\" && (b as { type?: string }).type === \"text\" ? String((b as { text?: string }).text ?? \"\") : \"\"))\n .filter(Boolean)\n .join(\"\\n\");\n}\n\nfunction replaceOrAppendPlan(items: TranscriptItem[], plan: PlanItem[]): TranscriptItem[] {\n const idx = items.findIndex((i) => i.kind === \"plan\");\n const row: TranscriptItem = { kind: \"plan\", id: \"plan\", items: plan };\n if (idx === -1) return [...items, row];\n const out = items.slice();\n out[idx] = row;\n return out;\n}\n\nfunction currentPlan(items: TranscriptItem[]): PlanItem[] {\n const row = items.find((i) => i.kind === \"plan\");\n return row && row.kind === \"plan\" ? row.items : [];\n}\n\nfunction dropDraft(items: TranscriptItem[]): TranscriptItem[] {\n const last = items[items.length - 1];\n return last && last.kind === \"assistant\" && last.live ? items.slice(0, -1) : items;\n}\n\n/**\n * Apply one engine event. `live` distinguishes the running stream from a history replay:\n * a human turn on the live stream was already echoed locally by `local_user`, so it is\n * skipped there and rendered only from history.\n */\nexport function applyEvent(state: SessionState, ev: EngineEvent, live: boolean): SessionState {\n switch (ev.type) {\n case \"system\":\n return { ...state, sessionId: ev.sessionId, model: state.model ?? ev.model, cwd: ev.cwd };\n case \"user\": {\n if (live && ev.author.type === \"human\") return state;\n const text = textOf(ev.message.content);\n const blocks = Array.isArray(ev.message.content) ? ev.message.content.filter((b) => b.type !== \"text\") : undefined;\n return {\n ...state,\n items: [...dropDraft(state.items), { kind: \"user\", id: nextId(\"u\"), text, author: ev.author, ts: ev.ts, ...(blocks?.length ? { blocks } : {}) }],\n };\n }\n case \"text_delta\": {\n const items = state.items.slice();\n const last = items[items.length - 1];\n if (last && last.kind === \"assistant\" && last.live) items[items.length - 1] = { ...last, text: last.text + ev.text };\n else items.push({ kind: \"assistant\", id: nextId(\"a\"), text: ev.text, ts: new Date().toISOString(), live: true });\n return { ...state, items, activity: \"Responding\" };\n }\n case \"thinking_delta\":\n return state.activity === \"Thinking\" ? state : { ...state, activity: \"Thinking\" };\n case \"tool_use_start\":\n return { ...state, activity: ev.name };\n case \"reset\":\n return { ...state, items: dropDraft(state.items) };\n case \"assistant\": {\n let items = dropDraft(state.items);\n const text = textOf(ev.message.content);\n if (text.trim()) items = [...items, { kind: \"assistant\", id: nextId(\"a\"), text, ts: ev.ts, live: false }];\n let plan = currentPlan(items);\n let planChanged = false;\n if (Array.isArray(ev.message.content)) {\n for (const b of ev.message.content) {\n if (b.type !== \"tool_use\") continue;\n const input = (b.input ?? {}) as Record<string, unknown>;\n if (TASK_TOOLS.has(b.name)) {\n if (b.name === \"TaskCreate\") {\n plan = [...plan, { id: b.id, subject: String(input.subject ?? \"\"), ...(input.description ? { description: String(input.description) } : {}), status: (input.status as PlanStatus) ?? \"pending\" }];\n planChanged = true;\n } else if (b.name === \"TaskUpdate\") {\n const id = String(input.id ?? \"\");\n plan = plan.map((p) =>\n p.id === id\n ? { ...p, ...(input.status ? { status: input.status as PlanStatus } : {}), ...(input.subject ? { subject: String(input.subject) } : {}), ...(input.description ? { description: String(input.description) } : {}) }\n : p,\n );\n planChanged = true;\n }\n continue;\n }\n items = [...items, { kind: \"tool\", id: b.id, name: b.name, input, ts: ev.ts }];\n }\n }\n if (planChanged) items = replaceOrAppendPlan(items, plan);\n return { ...state, items, usageTotal: addUsage(state.usageTotal, ev.usage), activity: undefined };\n }\n case \"tool_result\": {\n const idx = state.items.findIndex((i) => i.kind === \"tool\" && i.id === ev.toolUseId);\n if (idx !== -1) {\n const items = state.items.slice();\n const t = items[idx] as Extract<TranscriptItem, { kind: \"tool\" }>;\n items[idx] = { ...t, result: { content: ev.content, isError: ev.isError, ...(ev.diff ? { diff: ev.diff } : {}), ...(ev.blocks ? { blocks: ev.blocks } : {}) } };\n return { ...state, items };\n }\n // A TaskCreate result names the tracker id its plan row goes by from now on.\n const m = /^#(\\d+) created:/.exec(ev.content);\n if (m && ev.toolName === \"TaskCreate\") {\n const plan = currentPlan(state.items).map((p) => (p.id === ev.toolUseId ? { ...p, id: m[1]! } : p));\n return { ...state, items: replaceOrAppendPlan(state.items, plan) };\n }\n return state;\n }\n case \"result\":\n return {\n ...state,\n running: false,\n activity: undefined,\n lastResult: ev,\n items: [...dropDraft(state.items), { kind: \"result\", id: nextId(\"r\"), result: ev }],\n };\n case \"error\":\n return { ...state, items: [...dropDraft(state.items), { kind: \"error\", id: nextId(\"e\"), message: ev.message, ts: ev.ts }] };\n case \"compact\":\n return { ...state, items: [...state.items, { kind: \"compact\", id: nextId(\"c\"), replacedMessages: ev.replacedMessages, ts: ev.ts }] };\n case \"rewind\":\n return state;\n }\n}\n\nexport function reduce(state: SessionState, action: SessionAction): SessionState {\n switch (action.type) {\n case \"connection\": {\n if (action.state === \"connected\" || !state.running) return { ...state, connection: action.state };\n // The socket is gone mid-run: the server aborts and no `done` will come. Settle the run so\n // the composer and status recover; the transcript keeps what streamed.\n return {\n ...state,\n connection: action.state,\n running: false,\n activity: undefined,\n pendingPermissions: [],\n pendingQuestion: undefined,\n items: [...dropDraft(state.items), { kind: \"error\", id: nextId(\"e\"), message: \"Connection lost while the agent was working; what streamed so far was kept.\", ts: new Date().toISOString() }],\n };\n }\n case \"clear\":\n return { ...initialState(), connection: state.connection, protocol: state.protocol, capabilities: state.capabilities, hop: state.hop, rootCwd: state.rootCwd, sessions: state.sessions, models: state.models, skills: state.skills };\n case \"error\":\n return { ...state, error: action.message };\n case \"local_user\":\n return {\n ...state,\n items: [...state.items, { kind: \"user\", id: nextId(\"u\"), text: action.text, author: HUMAN, ts: action.ts, ...(action.blocks?.length ? { blocks: action.blocks } : {}) }],\n };\n case \"run_started\":\n return { ...state, running: true, runStartedAt: action.at, activity: \"Thinking\", error: undefined, lastResult: undefined, pendingApproval: undefined, ...(action.sessionId ? { sessionId: action.sessionId } : {}) };\n case \"permission_answered\":\n return { ...state, pendingPermissions: state.pendingPermissions.filter((p) => p.id !== action.id) };\n case \"question_answered\":\n return state.pendingQuestion?.id === action.id ? { ...state, pendingQuestion: undefined } : state;\n case \"history\": {\n let s: SessionState = { ...state, items: [], sessionId: action.sessionId, usageTotal: emptyUsage(), lastResult: undefined };\n for (const m of action.messages) s = applyEvent(s, m as EngineEvent, false);\n return { ...s, running: state.running };\n }\n case \"server\": {\n const m = action.message;\n switch (m.type) {\n case \"ready\":\n return { ...state, connection: \"connected\", protocol: m.protocol, capabilities: m.capabilities ?? [], hop: m.hop, rootCwd: m.cwd };\n case \"event\":\n if (state.sessionId && m.sessionId !== state.sessionId) return state; // another session on this socket\n return applyEvent(state.sessionId ? state : { ...state, sessionId: m.sessionId }, m.event, true);\n case \"permission_request\":\n if (state.sessionId && m.sessionId !== state.sessionId) return state;\n return { ...state, pendingPermissions: [...state.pendingPermissions, { id: m.id, sessionId: m.sessionId, toolName: m.toolName, input: m.input, ...(m.reason ? { reason: m.reason } : {}), ...(m.safetyReason ? { safetyReason: m.safetyReason } : {}) }] };\n case \"question_request\":\n if (state.sessionId && m.sessionId !== state.sessionId) return state;\n return { ...state, pendingQuestion: { id: m.id, sessionId: m.sessionId, questions: m.questions } };\n case \"sessions\":\n return { ...state, sessions: m.sessions };\n case \"models\":\n return { ...state, models: m.models };\n case \"skills\":\n return { ...state, skills: m.skills };\n case \"session_history\": {\n const s = reduce(state, { type: \"history\", sessionId: m.sessionId, messages: m.messages });\n return {\n ...s,\n pendingQuestion: m.pendingQuestion ? { id: m.pendingQuestion.id, sessionId: m.sessionId, questions: m.pendingQuestion.questions } : undefined,\n pendingApproval: m.pendingApproval,\n liveElsewhere: m.live ?? false,\n };\n }\n case \"done\":\n if (state.sessionId && m.sessionId !== state.sessionId) return state;\n return {\n ...state,\n running: false,\n activity: undefined,\n pendingPermissions: [],\n sessionId: m.sessionId,\n ...(m.pendingApproval ? { pendingApproval: m.pendingApproval } : {}),\n ...(m.usage && !state.lastResult ? { usageTotal: addUsage(state.usageTotal, m.usage) } : {}),\n };\n case \"error\":\n return { ...state, error: m.message, items: [...dropDraft(state.items), { kind: \"error\", id: nextId(\"e\"), message: m.message, ts: new Date().toISOString() }] };\n default:\n return state;\n }\n }\n }\n}\n\nexport function elapsedLabel(ms: number): string {\n const s = Math.max(0, Math.floor(ms / 1000));\n return s < 60 ? `${s}s` : `${Math.floor(s / 60)}m ${s % 60}s`;\n}\n\nexport function resultLabel(r: ResultEvent): { label: string; tone: \"ok\" | \"bad\" | \"warn\" | \"muted\" } {\n switch (r.subtype) {\n case \"success\":\n return { label: \"Done\", tone: \"ok\" };\n case \"cancelled\":\n return { label: \"Interrupted\", tone: \"muted\" };\n case \"needs_approval\":\n return { label: \"Needs your approval\", tone: \"warn\" };\n case \"max_turns\":\n return { label: \"Stopped at the turn limit\", tone: \"warn\" };\n case \"error\":\n return { label: r.reason ? `Failed: ${r.reason}` : \"Failed\", tone: \"bad\" };\n default:\n return { label: String((r as { subtype: string }).subtype).replace(/_/g, \" \"), tone: \"warn\" };\n }\n}\n\nexport function formatTokens(u: Usage): string {\n const k = (n: number) => (n >= 10_000 ? `${(n / 1000).toFixed(1)}k` : String(n));\n return `${k(u.input_tokens)}↑ ${k(u.output_tokens)}↓`;\n}\n",
6
+ "import type { EngineEvent, ResultEvent, Usage } from \"@mlpal/harness-protocol\";\nimport { addUsage, emptyUsage, HUMAN } from \"@mlpal/harness-protocol\";\nimport type { PlanItem, PlanStatus, SessionAction, SessionState, TranscriptItem } from \"./types\";\n\nexport function initialState(): SessionState {\n return {\n connection: \"connecting\",\n capabilities: [],\n items: [],\n running: false,\n usageTotal: emptyUsage(),\n pendingPermissions: [],\n sessions: [],\n models: [],\n skills: [],\n };\n}\n\nconst TASK_TOOLS = new Set([\"TaskCreate\", \"TaskUpdate\", \"TaskList\"]);\nlet seq = 0;\nconst nextId = (prefix: string) => `${prefix}-${++seq}`;\n\nfunction textOf(content: unknown): string {\n if (typeof content === \"string\") return content;\n if (!Array.isArray(content)) return \"\";\n return content\n .map((b) => (b && typeof b === \"object\" && (b as { type?: string }).type === \"text\" ? String((b as { text?: string }).text ?? \"\") : \"\"))\n .filter(Boolean)\n .join(\"\\n\");\n}\n\nfunction replaceOrAppendPlan(items: TranscriptItem[], plan: PlanItem[]): TranscriptItem[] {\n const idx = items.findIndex((i) => i.kind === \"plan\");\n const row: TranscriptItem = { kind: \"plan\", id: \"plan\", items: plan };\n if (idx === -1) return [...items, row];\n const out = items.slice();\n out[idx] = row;\n return out;\n}\n\nfunction currentPlan(items: TranscriptItem[]): PlanItem[] {\n const row = items.find((i) => i.kind === \"plan\");\n return row && row.kind === \"plan\" ? row.items : [];\n}\n\nfunction dropDraft(items: TranscriptItem[]): TranscriptItem[] {\n const last = items[items.length - 1];\n return last && last.kind === \"assistant\" && last.live ? items.slice(0, -1) : items;\n}\n\n/**\n * Apply one engine event. `live` distinguishes the running stream from a history replay:\n * a human turn on the live stream was already echoed locally by `local_user`, so it is\n * skipped there and rendered only from history.\n */\nexport function applyEvent(state: SessionState, ev: EngineEvent, live: boolean): SessionState {\n switch (ev.type) {\n case \"system\":\n return { ...state, sessionId: ev.sessionId, model: state.model ?? ev.model, cwd: ev.cwd };\n case \"user\": {\n if (live && ev.author.type === \"human\") {\n // Already echoed locally; the engine's copy brings the entry uuid the echo lacked.\n if (!ev.uuid) return state;\n const items = state.items.slice();\n for (let i = items.length - 1; i >= 0; i--) {\n const it = items[i]!;\n if (it.kind === \"user\" && it.author.type === \"human\") {\n if (!it.messageUuid) items[i] = { ...it, messageUuid: ev.uuid };\n break;\n }\n }\n return { ...state, items };\n }\n const text = textOf(ev.message.content);\n const blocks = Array.isArray(ev.message.content) ? ev.message.content.filter((b) => b.type !== \"text\") : undefined;\n return {\n ...state,\n items: [...dropDraft(state.items), { kind: \"user\", id: nextId(\"u\"), ...(ev.uuid ? { messageUuid: ev.uuid } : {}), text, author: ev.author, ts: ev.ts, ...(blocks?.length ? { blocks } : {}) }],\n };\n }\n case \"text_delta\": {\n const items = state.items.slice();\n const last = items[items.length - 1];\n if (last && last.kind === \"assistant\" && last.live) items[items.length - 1] = { ...last, text: last.text + ev.text };\n else items.push({ kind: \"assistant\", id: nextId(\"a\"), text: ev.text, ts: new Date().toISOString(), live: true });\n return { ...state, items, activity: \"Responding\" };\n }\n case \"thinking_delta\":\n return state.activity === \"Thinking\" ? state : { ...state, activity: \"Thinking\" };\n case \"tool_use_start\":\n return { ...state, activity: ev.name };\n case \"reset\":\n return { ...state, items: dropDraft(state.items) };\n case \"assistant\": {\n let items = dropDraft(state.items);\n const text = textOf(ev.message.content);\n if (text.trim()) items = [...items, { kind: \"assistant\", id: nextId(\"a\"), ...(ev.uuid ? { messageUuid: ev.uuid } : {}), text, ts: ev.ts, live: false }];\n let plan = currentPlan(items);\n let planChanged = false;\n if (Array.isArray(ev.message.content)) {\n for (const b of ev.message.content) {\n if (b.type !== \"tool_use\") continue;\n const input = (b.input ?? {}) as Record<string, unknown>;\n if (TASK_TOOLS.has(b.name)) {\n if (b.name === \"TaskCreate\") {\n plan = [...plan, { id: b.id, subject: String(input.subject ?? \"\"), ...(input.description ? { description: String(input.description) } : {}), status: (input.status as PlanStatus) ?? \"pending\" }];\n planChanged = true;\n } else if (b.name === \"TaskUpdate\") {\n const id = String(input.id ?? \"\");\n plan = plan.map((p) =>\n p.id === id\n ? { ...p, ...(input.status ? { status: input.status as PlanStatus } : {}), ...(input.subject ? { subject: String(input.subject) } : {}), ...(input.description ? { description: String(input.description) } : {}) }\n : p,\n );\n planChanged = true;\n }\n continue;\n }\n items = [...items, { kind: \"tool\", id: b.id, ...(ev.uuid ? { messageUuid: ev.uuid } : {}), name: b.name, input, ts: ev.ts }];\n }\n }\n if (planChanged) items = replaceOrAppendPlan(items, plan);\n return { ...state, items, usageTotal: addUsage(state.usageTotal, ev.usage), activity: undefined };\n }\n case \"tool_result\": {\n const idx = state.items.findIndex((i) => i.kind === \"tool\" && i.id === ev.toolUseId);\n if (idx !== -1) {\n const items = state.items.slice();\n const t = items[idx] as Extract<TranscriptItem, { kind: \"tool\" }>;\n items[idx] = { ...t, result: { content: ev.content, isError: ev.isError, ...(ev.diff ? { diff: ev.diff } : {}), ...(ev.blocks ? { blocks: ev.blocks } : {}) } };\n return { ...state, items };\n }\n // A TaskCreate result names the tracker id its plan row goes by from now on.\n const m = /^#(\\d+) created:/.exec(ev.content);\n if (m && ev.toolName === \"TaskCreate\") {\n const plan = currentPlan(state.items).map((p) => (p.id === ev.toolUseId ? { ...p, id: m[1]! } : p));\n return { ...state, items: replaceOrAppendPlan(state.items, plan) };\n }\n return state;\n }\n case \"result\":\n return {\n ...state,\n running: false,\n activity: undefined,\n lastResult: ev,\n items: [...dropDraft(state.items), { kind: \"result\", id: nextId(\"r\"), result: ev }],\n };\n case \"error\":\n return { ...state, items: [...dropDraft(state.items), { kind: \"error\", id: nextId(\"e\"), message: ev.message, ts: ev.ts }] };\n case \"compact\":\n return { ...state, items: [...state.items, { kind: \"compact\", id: nextId(\"c\"), replacedMessages: ev.replacedMessages, ts: ev.ts }] };\n case \"rewind\":\n return state;\n }\n}\n\nexport function reduce(state: SessionState, action: SessionAction): SessionState {\n switch (action.type) {\n case \"connection\": {\n if (action.state === \"connected\" || !state.running) return { ...state, connection: action.state };\n // The socket is gone mid-run: the server aborts and no `done` will come. Settle the run so\n // the composer and status recover; the transcript keeps what streamed.\n return {\n ...state,\n connection: action.state,\n running: false,\n activity: undefined,\n pendingPermissions: [],\n pendingQuestion: undefined,\n items: [...dropDraft(state.items), { kind: \"error\", id: nextId(\"e\"), message: \"Connection lost while the agent was working; what streamed so far was kept.\", ts: new Date().toISOString() }],\n };\n }\n case \"clear\":\n return { ...initialState(), connection: state.connection, protocol: state.protocol, capabilities: state.capabilities, hop: state.hop, rootCwd: state.rootCwd, sessions: state.sessions, models: state.models, skills: state.skills };\n case \"error\":\n return { ...state, error: action.message };\n case \"local_user\":\n return {\n ...state,\n items: [...state.items, { kind: \"user\", id: nextId(\"u\"), text: action.text, author: HUMAN, ts: action.ts, ...(action.blocks?.length ? { blocks: action.blocks } : {}) }],\n };\n case \"run_started\":\n return { ...state, running: true, runStartedAt: action.at, activity: \"Thinking\", error: undefined, lastResult: undefined, pendingApproval: undefined, ...(action.sessionId ? { sessionId: action.sessionId } : {}) };\n case \"permission_answered\":\n return { ...state, pendingPermissions: state.pendingPermissions.filter((p) => p.id !== action.id) };\n case \"question_answered\":\n return state.pendingQuestion?.id === action.id ? { ...state, pendingQuestion: undefined } : state;\n case \"history\": {\n let s: SessionState = { ...state, items: [], sessionId: action.sessionId, usageTotal: emptyUsage(), lastResult: undefined };\n for (const m of action.messages) s = applyEvent(s, m as EngineEvent, false);\n return { ...s, running: state.running };\n }\n case \"server\": {\n const m = action.message;\n switch (m.type) {\n case \"ready\":\n return { ...state, connection: \"connected\", protocol: m.protocol, capabilities: m.capabilities ?? [], hop: m.hop, rootCwd: m.cwd };\n case \"event\":\n if (state.sessionId && m.sessionId !== state.sessionId) return state; // another session on this socket\n return applyEvent(state.sessionId ? state : { ...state, sessionId: m.sessionId }, m.event, true);\n case \"permission_request\":\n if (state.sessionId && m.sessionId !== state.sessionId) return state;\n return { ...state, pendingPermissions: [...state.pendingPermissions, { id: m.id, sessionId: m.sessionId, toolName: m.toolName, input: m.input, ...(m.reason ? { reason: m.reason } : {}), ...(m.safetyReason ? { safetyReason: m.safetyReason } : {}) }] };\n case \"question_request\":\n if (state.sessionId && m.sessionId !== state.sessionId) return state;\n return { ...state, pendingQuestion: { id: m.id, sessionId: m.sessionId, questions: m.questions } };\n case \"sessions\":\n return { ...state, sessions: m.sessions };\n case \"models\":\n return { ...state, models: m.models };\n case \"skills\":\n return { ...state, skills: m.skills };\n case \"session_history\": {\n const s = reduce(state, { type: \"history\", sessionId: m.sessionId, messages: m.messages });\n return {\n ...s,\n pendingQuestion: m.pendingQuestion ? { id: m.pendingQuestion.id, sessionId: m.sessionId, questions: m.pendingQuestion.questions } : undefined,\n pendingApproval: m.pendingApproval,\n liveElsewhere: m.live ?? false,\n };\n }\n case \"done\":\n if (state.sessionId && m.sessionId !== state.sessionId) return state;\n return {\n ...state,\n running: false,\n activity: undefined,\n pendingPermissions: [],\n sessionId: m.sessionId,\n ...(m.pendingApproval ? { pendingApproval: m.pendingApproval } : {}),\n ...(m.usage && !state.lastResult ? { usageTotal: addUsage(state.usageTotal, m.usage) } : {}),\n };\n case \"error\":\n return { ...state, error: m.message, items: [...dropDraft(state.items), { kind: \"error\", id: nextId(\"e\"), message: m.message, ts: new Date().toISOString() }] };\n default:\n return state;\n }\n }\n }\n}\n\nexport function elapsedLabel(ms: number): string {\n const s = Math.max(0, Math.floor(ms / 1000));\n return s < 60 ? `${s}s` : `${Math.floor(s / 60)}m ${s % 60}s`;\n}\n\nexport function resultLabel(r: ResultEvent): { label: string; tone: \"ok\" | \"bad\" | \"warn\" | \"muted\" } {\n switch (r.subtype) {\n case \"success\":\n return { label: \"Done\", tone: \"ok\" };\n case \"cancelled\":\n return { label: \"Interrupted\", tone: \"muted\" };\n case \"needs_approval\":\n return { label: \"Needs your approval\", tone: \"warn\" };\n case \"max_turns\":\n return { label: \"Stopped at the turn limit\", tone: \"warn\" };\n case \"error\":\n return { label: r.reason ? `Failed: ${r.reason}` : \"Failed\", tone: \"bad\" };\n default:\n return { label: String((r as { subtype: string }).subtype).replace(/_/g, \" \"), tone: \"warn\" };\n }\n}\n\nexport function formatTokens(u: Usage): string {\n const k = (n: number) => (n >= 10_000 ? `${(n / 1000).toFixed(1)}k` : String(n));\n return `${k(u.input_tokens)}↑ ${k(u.output_tokens)}↓`;\n}\n",
7
7
  "import { useCallback, useEffect, useMemo, useReducer, useRef } from \"react\";\nimport type { ContentBlock } from \"@mlpal/harness-protocol\";\nimport { type RunOptions, type SocketFactory, YodexClient } from \"./client\";\nimport { initialState, reduce } from \"./reducer\";\nimport { revokeRules, ruleAnswers, ruleFor, type SessionRule, switchesSession } from \"./rules\";\nimport type { AskOutcome, SessionState } from \"./types\";\n\nexport interface UseYodexSessionOptions {\n url: string;\n token?: string;\n /** Load this session's history on connect and run turns against it. */\n sessionId?: string;\n /** Default run options (model, mode, hop, cwd) applied to every turn. */\n run?: RunOptions;\n autoConnect?: boolean;\n socketFactory?: SocketFactory;\n}\n\nexport interface Attachment {\n name: string;\n mediaType: string;\n /** base64 payload, no data: prefix. */\n data: string;\n}\n\nexport interface YodexSession {\n state: SessionState;\n client: YodexClient;\n /** Send a turn. Attachments ride as image blocks once the server speaks yodex/2. */\n run: (text: string, attachments?: Attachment[], options?: RunOptions) => void;\n stop: () => void;\n allow: (permissionId: string) => void;\n deny: (permissionId: string, reason?: string) => void;\n answer: (questionId: string, outcome: AskOutcome) => void;\n approve: (decision: \"allow\" | \"deny\", reason?: string) => void;\n /** Allow this tool (and, for Bash, this exact command) without asking again while this hook lives.\n * A later ask that carries a safety reason is never answered by such a rule: it is shown. */\n allowForSession: (permissionId: string) => void;\n /** Drop session rules: one tool's, or all of them, without remounting (no reconnect, no replay). */\n revokeSessionRule: (toolName: string) => void;\n clearSessionRules: () => void;\n /** Steer a running session: the text reaches the agent at its next turn boundary. */\n steer: (text: string) => void;\n /** What the run is waiting on, for the status row. */\n waitingOn?: \"permission\" | \"question\";\n loadSession: (sessionId: string) => Promise<void>;\n refreshSessions: () => Promise<void>;\n refreshModels: () => Promise<void>;\n newSession: () => void;\n}\n\n/** One session view over one socket: connect, replay, stream, answer. */\nexport function useYodexSession(options: UseYodexSessionOptions): YodexSession {\n const [state, dispatch] = useReducer(reduce, undefined, initialState);\n const sessionIdRef = useRef<string | undefined>(options.sessionId);\n /** Session-scoped allow rules (see rules.ts); never applied to a safety-flagged ask. */\n const allowed = useRef<Set<SessionRule>>(new Set());\n const client = useMemo(\n () =>\n new YodexClient({\n url: options.url,\n token: options.token,\n socketFactory: options.socketFactory,\n onState: (s) => dispatch({ type: \"connection\", state: s }),\n onMessage: (m) => {\n if (m.type === \"permission_request\" && ruleAnswers(allowed.current, m)) {\n client.respondPermission(m.id, \"allow\");\n return;\n }\n dispatch({ type: \"server\", message: m });\n if (m.type === \"ready\" && sessionIdRef.current) {\n client.loadSession(sessionIdRef.current).catch((e: Error) => dispatch({ type: \"error\", message: e.message }));\n }\n },\n }),\n // The socket outlives renders; a URL or token change means a new client.\n [options.url, options.token, options.socketFactory],\n );\n\n useEffect(() => {\n if (options.autoConnect === false) return;\n client.connect();\n return () => client.close();\n }, [client, options.autoConnect]);\n\n useEffect(() => {\n sessionIdRef.current = state.sessionId ?? options.sessionId;\n }, [state.sessionId, options.sessionId]);\n\n // A new sessionId prop switches the view: clear and replay that session on the same socket.\n // Naming the session this hook already owns (a host passing back the id a new session was given\n // on system.init / done) is a no-op, so a running stream is never dropped.\n const lastRequested = useRef(options.sessionId);\n useEffect(() => {\n const switching = switchesSession(options.sessionId, lastRequested.current, sessionIdRef.current);\n lastRequested.current = options.sessionId;\n if (!switching) return;\n sessionIdRef.current = options.sessionId;\n dispatch({ type: \"clear\" });\n if (options.sessionId && client.connected) client.loadSession(options.sessionId).catch((e: Error) => dispatch({ type: \"error\", message: e.message }));\n }, [options.sessionId, client]);\n\n const guard = useCallback(\n (fn: () => void) => {\n try {\n fn();\n } catch (e) {\n dispatch({ type: \"error\", message: (e as Error).message });\n }\n },\n [],\n );\n\n const run = useCallback(\n (text: string, attachments: Attachment[] = [], runOptions: RunOptions = {}) => {\n const blocks: ContentBlock[] = attachments.map((a) => ({ type: \"image\", source: { type: \"base64\", media_type: a.mediaType, data: a.data } }));\n if (blocks.length && !state.capabilities.includes(\"attachments\")) {\n dispatch({ type: \"error\", message: \"This server does not accept image attachments; the message was not sent.\" });\n return;\n }\n guard(() => {\n const sessionId = sessionIdRef.current;\n dispatch({ type: \"local_user\", text, ts: new Date().toISOString(), blocks });\n dispatch({ type: \"run_started\", sessionId, at: Date.now() });\n client.run(text, { ...(sessionId ? { sessionId } : {}), ...options.run, ...runOptions, ...(blocks.length ? { blocks } : {}) });\n });\n },\n [client, guard, options.run, state.capabilities],\n );\n\n const stop = useCallback(() => guard(() => client.interrupt()), [client, guard]);\n const allow = useCallback(\n (id: string) =>\n guard(() => {\n client.respondPermission(id, \"allow\");\n dispatch({ type: \"permission_answered\", id });\n }),\n [client, guard],\n );\n const deny = useCallback(\n (id: string, reason?: string) =>\n guard(() => {\n client.respondPermission(id, \"deny\", reason);\n dispatch({ type: \"permission_answered\", id });\n }),\n [client, guard],\n );\n const answer = useCallback(\n (id: string, outcome: AskOutcome) =>\n guard(() => {\n client.respondQuestion(id, outcome);\n dispatch({ type: \"question_answered\", id });\n }),\n [client, guard],\n );\n const approve = useCallback(\n (decision: \"allow\" | \"deny\", reason?: string) =>\n guard(() => {\n const sessionId = sessionIdRef.current;\n if (!sessionId) throw new Error(\"no session to approve\");\n dispatch({ type: \"run_started\", sessionId, at: Date.now() });\n client.respondApproval(sessionId, decision, reason);\n }),\n [client, guard],\n );\n const allowForSession = useCallback(\n (id: string) => {\n const p = state.pendingPermissions.find((x) => x.id === id);\n if (p) allowed.current.add(ruleFor(p));\n guard(() => {\n client.respondPermission(id, \"allow\");\n dispatch({ type: \"permission_answered\", id });\n });\n },\n [client, guard, state.pendingPermissions],\n );\n const revokeSessionRule = useCallback((toolName: string) => revokeRules(allowed.current, toolName), []);\n const clearSessionRules = useCallback(() => allowed.current.clear(), []);\n const steer = useCallback(\n (text: string) =>\n guard(() => {\n const sessionId = sessionIdRef.current;\n if (!sessionId) throw new Error(\"no session to steer\");\n client.sendPeer(sessionId, text);\n dispatch({ type: \"local_user\", text, ts: new Date().toISOString() });\n }),\n [client, guard],\n );\n const waitingOn = state.pendingQuestion ? \"question\" : state.pendingPermissions.length ? \"permission\" : undefined;\n const loadSession = useCallback(\n async (sessionId: string) => {\n sessionIdRef.current = sessionId;\n dispatch({ type: \"clear\" });\n try {\n await client.loadSession(sessionId);\n } catch (e) {\n dispatch({ type: \"error\", message: (e as Error).message });\n }\n },\n [client],\n );\n const refreshSessions = useCallback(async () => {\n try {\n await client.listSessions();\n } catch (e) {\n dispatch({ type: \"error\", message: (e as Error).message });\n }\n }, [client]);\n const refreshModels = useCallback(async () => {\n try {\n await client.listModels();\n } catch (e) {\n dispatch({ type: \"error\", message: (e as Error).message });\n }\n }, [client]);\n const newSession = useCallback(() => {\n sessionIdRef.current = undefined;\n dispatch({ type: \"clear\" });\n }, []);\n\n return { state, client, run, stop, allow, deny, answer, approve, allowForSession, revokeSessionRule, clearSessionRules, steer, waitingOn, loadSession, refreshSessions, refreshModels, newSession };\n}\n",
8
8
  "import type { PendingPermission } from \"./types\";\n\n/** The hook's session-scoped allow rules: a tool name plus, for commands, the exact command. */\nexport type SessionRule = string;\n\nexport function ruleFor(p: Pick<PendingPermission, \"toolName\" | \"input\">): SessionRule {\n return `${p.toolName}\\u0000${typeof p.input.command === \"string\" ? p.input.command : \"\"}`;\n}\n\n/** Whether a session rule may answer this ask. A safety-flagged ask is never a rule's to answer:\n * the person sees it, every time. */\nexport function ruleAnswers(rules: ReadonlySet<SessionRule>, ask: Pick<PendingPermission, \"toolName\" | \"input\" | \"safetyReason\">): boolean {\n if (ask.safetyReason) return false;\n return rules.has(ruleFor(ask));\n}\n\nexport function revokeRules(rules: Set<SessionRule>, toolName: string): void {\n for (const rule of rules) if (rule.startsWith(`${toolName}\\u0000`)) rules.delete(rule);\n}\n\n/** A changed sessionId prop switches the view only when it names a session other than the one\n * the hook already owns: a host passing back the id a new session was given on system.init is\n * not a switch, and must not drop the running stream. */\nexport function switchesSession(nextProp: string | undefined, lastProp: string | undefined, owned: string | undefined): boolean {\n if (nextProp === lastProp) return false;\n return nextProp !== owned;\n}\n",
9
9
  "import { useEffect, useRef } from \"react\";\nimport type { TranscriptItem } from \"../client/types\";\nimport { AssistantMessage } from \"./AssistantMessage\";\nimport { cn } from \"./cn\";\nimport { PlanChecklist } from \"./PlanChecklist\";\nimport { ToolCall } from \"./ToolCall\";\nimport { resultLabel, formatTokens } from \"../client/reducer\";\n\nexport interface TranscriptProps {\n items: TranscriptItem[];\n /** Keep the view pinned to the bottom while new rows arrive, unless the reader scrolled up. */\n autoScroll?: boolean;\n onOpenFile?: (path: string) => void;\n /** Rendered after the last row: pending prompts, the status line. */\n footer?: React.ReactNode;\n emptyState?: React.ReactNode;\n className?: string;\n}\n\n/** One transcript row. Exported so a host that virtualizes the list renders the same markup. */\nexport function TranscriptRow({ item, onOpenFile }: { item: TranscriptItem; onOpenFile?: (path: string) => void }) {\n const it = item;\n switch (it.kind) {\n case \"user\":\n return (\n <div className={cn(\"flex\", it.author.type === \"human\" ? \"justify-end\" : \"justify-start\")} data-author={it.author.type}>\n <div className={cn(\"max-w-[85%] whitespace-pre-wrap break-words rounded-2xl px-4 py-2 text-[15px] leading-6\", it.author.type === \"human\" ? \"rounded-br-md bg-primary text-primary-foreground\" : \"rounded-bl-md border border-border bg-card\")}>\n {it.author.type !== \"human\" && <div className=\"mb-1 text-[11px] text-muted-foreground\">{it.author.displayName ?? it.author.type}</div>}\n {it.blocks?.some((b) => b.type === \"image\") && <div className=\"mb-1 text-[11px] opacity-80\">[image]</div>}\n {it.text}\n </div>\n </div>\n );\n case \"assistant\":\n return <AssistantMessage text={it.text} live={it.live} />;\n case \"tool\":\n return <ToolCall item={it} onOpenFile={onOpenFile} />;\n case \"plan\":\n return <PlanChecklist items={it.items} />;\n case \"result\": {\n const { label, tone } = resultLabel(it.result);\n return (\n <div className={cn(\"flex items-center gap-2 text-[12px] text-muted-foreground\", tone === \"bad\" && \"text-destructive\")} data-subtype={it.result.subtype}>\n <span>{label}</span>\n <span>·</span>\n <span className=\"font-mono tabular-nums\">\n {it.result.numTurns} step{it.result.numTurns === 1 ? \"\" : \"s\"} · {formatTokens(it.result.usage)}\n </span>\n </div>\n );\n }\n case \"error\":\n return (\n <div role=\"alert\" className=\"rounded-md border border-destructive/40 bg-destructive/5 px-3 py-2 text-[13px] text-destructive\">\n {it.message}\n </div>\n );\n case \"compact\":\n return (\n <div className=\"text-center text-[11px] text-muted-foreground\">\n — context compacted ({it.replacedMessages} earlier messages summarised) —\n </div>\n );\n }\n}\n\n/** The whole transcript in a scrolling column. For long sessions a host may virtualize with\n * TranscriptRow instead; announcements belong to RunStatus, not to the log itself. */\nexport function Transcript({ items, autoScroll = true, onOpenFile, footer, emptyState, className }: TranscriptProps) {\n const ref = useRef<HTMLDivElement>(null);\n const pinned = useRef(true);\n useEffect(() => {\n const el = ref.current;\n if (!el) return;\n const onScroll = () => {\n pinned.current = el.scrollHeight - el.scrollTop - el.clientHeight < 48;\n };\n el.addEventListener(\"scroll\", onScroll, { passive: true });\n return () => el.removeEventListener(\"scroll\", onScroll);\n }, []);\n useEffect(() => {\n const el = ref.current;\n if (el && autoScroll && pinned.current) el.scrollTop = el.scrollHeight;\n });\n return (\n <div ref={ref} className={cn(\"yx-transcript flex-1 overflow-y-auto px-4 py-3\", className)} role=\"log\">\n <div className=\"mx-auto flex w-full max-w-3xl flex-col gap-3\">\n {items.length === 0 && emptyState}\n {items.map((it) => (\n <TranscriptRow key={it.id} item={it} onOpenFile={onOpenFile} />\n ))}\n {footer}\n </div>\n </div>\n );\n}\n",
@@ -17,9 +17,9 @@
17
17
  "import { useState } from \"react\";\nimport { HelpCircle, X } from \"lucide-react\";\nimport type { AskOutcome, AskQuestion, PendingQuestion } from \"../client/types\";\nimport { cn } from \"./cn\";\n\n/** What the person has picked or typed so far, per question index. */\nexport interface QuestionDraft {\n selected: string[][];\n notes: string[];\n}\n\nexport function emptyDraft(questions: AskQuestion[]): QuestionDraft {\n return { selected: questions.map(() => []), notes: questions.map(() => \"\") };\n}\n\n/** The ask.ts outcome: labels and free text per question; a closed form is `declined`. */\nexport function buildOutcome(questions: AskQuestion[], draft: QuestionDraft, declined = false): AskOutcome {\n if (declined) return { declined: true, answers: [] };\n return {\n declined: false,\n answers: questions.map((q, i) => {\n const picked = draft.selected[i] ?? [];\n const note = (draft.notes[i] ?? \"\").trim();\n const answers = picked.length ? picked : note ? [note] : [];\n return { question: q.question, answers, ...(picked.length && note ? { note } : {}) };\n }),\n };\n}\n\nfunction chip(q: AskQuestion, i: number): string {\n const h = (q.header ?? \"\").trim();\n return h || `Q${i + 1}`;\n}\n\n/**\n * AskUserQuestion as a form: one tab per question, single or multi select with optional\n * previews, free text, Submit or close-to-decline. The outcome shape mirrors harness ask.ts.\n */\nexport function QuestionForm({ request, onSubmit, onDecline, className }: { request: PendingQuestion; onSubmit: (id: string, outcome: AskOutcome) => void; onDecline: (id: string) => void; className?: string }) {\n const qs = request.questions;\n const [tab, setTab] = useState(0);\n const [draft, setDraft] = useState<QuestionDraft>(() => emptyDraft(qs));\n const q = qs[tab];\n if (!q) return null;\n const picked = draft.selected[tab] ?? [];\n const toggle = (label: string) => {\n setDraft((d) => {\n const selected = d.selected.slice();\n const cur = selected[tab] ?? [];\n selected[tab] = q.multiSelect ? (cur.includes(label) ? cur.filter((l) => l !== label) : [...cur, label]) : cur[0] === label ? [] : [label];\n return { ...d, selected };\n });\n };\n const setNote = (v: string) =>\n setDraft((d) => {\n const notes = d.notes.slice();\n notes[tab] = v;\n return { ...d, notes };\n });\n const answered = qs.map((_, i) => (draft.selected[i]?.length ?? 0) > 0 || (draft.notes[i] ?? \"\").trim().length > 0);\n const previewOf = (q.options ?? []).find((o) => picked[0] === o.label)?.preview;\n return (\n <div role=\"dialog\" aria-label=\"The agent has a question\" className={cn(\"yx-question rounded-md border border-info/50 bg-card text-sm\", className)}>\n <div className=\"flex items-center gap-2 border-b border-border px-3 py-2\">\n <HelpCircle className=\"h-4 w-4 text-info\" aria-hidden />\n <span className=\"font-medium\">The agent needs your input</span>\n <button type=\"button\" onClick={() => onDecline(request.id)} aria-label=\"Close and keep talking\" className=\"ml-auto flex h-11 w-11 items-center justify-center rounded-md text-muted-foreground hover:bg-muted\">\n <X className=\"h-4 w-4\" aria-hidden />\n </button>\n </div>\n {qs.length > 1 && (\n <div role=\"tablist\" className=\"flex gap-1 overflow-x-auto border-b border-border px-2 py-1\">\n {qs.map((qq, i) => (\n <button key={i} role=\"tab\" type=\"button\" aria-selected={i === tab} onClick={() => setTab(i)} className={cn(\"min-h-9 shrink-0 rounded-md px-3 text-[12px]\", i === tab ? \"bg-primary text-primary-foreground\" : \"bg-muted text-muted-foreground hover:bg-muted/70\", answered[i] && i !== tab && \"ring-1 ring-success\")}>\n {chip(qq, i)}\n </button>\n ))}\n </div>\n )}\n <div className=\"space-y-3 p-3\">\n <p className=\"font-medium\">{q.question}</p>\n {(q.options ?? []).length > 0 && (\n <div role={q.multiSelect ? \"group\" : \"radiogroup\"} className=\"space-y-2\">\n {(q.options ?? []).map((o) => {\n const on = picked.includes(o.label);\n return (\n <button key={o.label} type=\"button\" role={q.multiSelect ? \"checkbox\" : \"radio\"} aria-checked={on} onClick={() => toggle(o.label)} className={cn(\"flex min-h-11 w-full items-start gap-3 rounded-md border px-3 py-2 text-left hover:bg-muted/60\", on ? \"border-primary bg-muted\" : \"border-border\")}>\n <span className={cn(\"mt-1 h-4 w-4 shrink-0 border\", q.multiSelect ? \"rounded\" : \"rounded-full\", on ? \"border-primary bg-primary\" : \"border-muted-foreground\")} aria-hidden />\n <span className=\"min-w-0\">\n <span className=\"block font-medium\">{o.label}</span>\n {o.description && <span className=\"block text-muted-foreground\">{o.description}</span>}\n </span>\n </button>\n );\n })}\n </div>\n )}\n {previewOf && <pre className=\"overflow-x-auto rounded-md border border-border bg-muted p-2 font-mono text-[12px] leading-5\">{previewOf}</pre>}\n <label className=\"block\">\n <span className=\"mb-1 block text-[12px] text-muted-foreground\">{(q.options ?? []).length ? \"Add a note (optional)\" : \"Your answer\"}</span>\n <textarea value={draft.notes[tab] ?? \"\"} onChange={(e) => setNote(e.target.value)} rows={2} className=\"w-full rounded-md border border-border bg-input-background px-3 py-2 text-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\" />\n </label>\n <div className=\"flex gap-2\">\n {tab < qs.length - 1 ? (\n <button type=\"button\" onClick={() => setTab(tab + 1)} className=\"min-h-11 flex-1 rounded-md border border-border px-4 font-medium hover:bg-muted\">\n Next\n </button>\n ) : null}\n <button type=\"button\" onClick={() => onSubmit(request.id, buildOutcome(qs, draft))} disabled={!answered.some(Boolean)} className=\"min-h-11 flex-1 rounded-md bg-primary px-4 font-medium text-primary-foreground hover:opacity-90 disabled:opacity-50\">\n Submit\n </button>\n </div>\n </div>\n </div>\n );\n}\n",
18
18
  "import { useEffect, useState } from \"react\";\nimport { AlertTriangle, Check, Loader2, Square } from \"lucide-react\";\nimport type { ResultEvent, Usage } from \"@mlpal/harness-protocol\";\nimport type { ConnectionState } from \"../client/types\";\nimport { elapsedLabel, formatTokens, resultLabel } from \"../client/reducer\";\nimport { ApprovalPrompt } from \"./ApprovalPrompt\";\nimport { cn } from \"./cn\";\n\nexport interface RunStatusProps {\n running: boolean;\n startedAt?: number;\n activity?: string;\n /** The run is waiting on the person; shown instead of the activity. */\n waitingOn?: \"permission\" | \"question\";\n lastResult?: ResultEvent;\n usageTotal?: Usage;\n connection?: ConnectionState;\n onStop?: () => void;\n onApprove?: (decision: \"allow\" | \"deny\") => void;\n className?: string;\n /** Injected clock for deterministic rendering. */\n now?: () => number;\n}\n\n/** One row: what the agent is doing with elapsed time while running; the result line after. */\nexport function RunStatus({ running, startedAt, activity, waitingOn, lastResult, usageTotal, connection, onStop, onApprove, className, now = Date.now }: RunStatusProps) {\n const [, tick] = useState(0);\n useEffect(() => {\n if (!running) return;\n const h = setInterval(() => tick((n) => n + 1), 1000);\n return () => clearInterval(h);\n }, [running]);\n if (connection && connection !== \"connected\") {\n return (\n <div className={cn(\"yx-status flex min-h-9 items-center gap-2 text-[12.5px] text-muted-foreground\", className)} role=\"status\">\n <Loader2 className=\"h-3.5 w-3.5 animate-spin\" aria-hidden />\n {connection === \"closed\" ? \"Disconnected\" : connection === \"reconnecting\" ? \"Reconnecting…\" : \"Connecting…\"}\n </div>\n );\n }\n if (running) {\n const label = waitingOn === \"permission\" ? \"Waiting for your approval\" : waitingOn === \"question\" ? \"Waiting for your answer\" : (activity ?? \"Working\");\n return (\n <div className={cn(\"yx-status flex min-h-11 items-center gap-2 text-[12.5px] text-muted-foreground\", className)}>\n <Loader2 className={cn(\"h-3.5 w-3.5 animate-spin\", waitingOn ? \"text-warning\" : \"text-accent\")} aria-hidden />\n {/* Only the label is announced; the ticking clock stays out of the live region. */}\n <span role=\"status\" aria-live=\"polite\">\n {label}\n </span>\n {startedAt !== undefined && (\n <span className=\"font-mono tabular-nums\" aria-hidden>\n · {elapsedLabel(now() - startedAt)}\n </span>\n )}\n {onStop && (\n <button type=\"button\" onClick={onStop} className=\"ml-auto flex min-h-11 items-center gap-1 rounded-md px-3 hover:bg-muted\" aria-label=\"Stop\">\n <Square className=\"h-3.5 w-3.5\" aria-hidden /> Stop\n </button>\n )}\n </div>\n );\n }\n if (!lastResult) return null;\n const { label, tone } = resultLabel(lastResult);\n const needsApproval = lastResult.subtype === \"needs_approval\";\n return (\n <div className={cn(\"yx-status flex min-h-9 flex-wrap items-center gap-2 text-[12.5px]\", className)} role=\"status\" data-subtype={lastResult.subtype}>\n {tone === \"ok\" ? <Check className=\"h-3.5 w-3.5 text-success\" aria-hidden /> : tone === \"bad\" ? <AlertTriangle className=\"h-3.5 w-3.5 text-destructive\" aria-hidden /> : <AlertTriangle className={cn(\"h-3.5 w-3.5\", tone === \"warn\" ? \"text-warning\" : \"text-muted-foreground\")} aria-hidden />}\n <span className={cn(tone === \"ok\" && \"text-success\", tone === \"bad\" && \"text-destructive\", tone === \"warn\" && \"text-warning\", tone === \"muted\" && \"text-muted-foreground\")}>{label}</span>\n <span className=\"text-muted-foreground\">·</span>\n <span className=\"font-mono tabular-nums text-muted-foreground\">\n {lastResult.numTurns} step{lastResult.numTurns === 1 ? \"\" : \"s\"} · {formatTokens(usageTotal ?? lastResult.usage)}\n </span>\n {needsApproval && lastResult.pendingApproval && onApprove && (\n <div className=\"basis-full\">\n <ApprovalPrompt approval={lastResult.pendingApproval} onDecide={onApprove} />\n </div>\n )}\n </div>\n );\n}\n",
19
19
  "import { Plus } from \"lucide-react\";\nimport type { SessionSummary } from \"@mlpal/harness-protocol\";\nimport { cn } from \"./cn\";\n\n/** A SessionSummary; the yodex/2 fields (hop, relCwd, projectName, …) are present when the\n * server claims \"sessions_v2\". */\nexport type SessionRow = SessionSummary;\n\nexport function groupSessions(rows: SessionRow[]): Array<{ project: string; rows: SessionRow[] }> {\n const groups = new Map<string, SessionRow[]>();\n for (const r of rows) {\n const key = r.projectName ?? \"\";\n if (!groups.has(key)) groups.set(key, []);\n groups.get(key)!.push(r);\n }\n return [...groups.entries()].map(([project, rows]) => ({ project, rows }));\n}\n\nfunction when(iso: string): string {\n const t = Date.parse(iso);\n if (Number.isNaN(t)) return \"\";\n const d = new Date(t);\n return `${d.toLocaleDateString(undefined, { month: \"short\", day: \"numeric\" })} ${d.toLocaleTimeString(undefined, { hour: \"2-digit\", minute: \"2-digit\" })}`;\n}\n\nexport function SessionList({ sessions, selectedId, onSelect, onNew, className }: { sessions: SessionRow[]; selectedId?: string; onSelect: (sessionId: string) => void; onNew?: () => void; className?: string }) {\n const groups = groupSessions(sessions);\n return (\n <nav className={cn(\"yx-sessions text-sm\", className)} aria-label=\"Sessions\">\n {onNew && (\n <button type=\"button\" onClick={onNew} className=\"mb-2 flex min-h-11 w-full items-center gap-2 rounded-md border border-dashed border-border px-3 text-left hover:bg-muted\">\n <Plus className=\"h-4 w-4\" aria-hidden /> New session\n </button>\n )}\n {sessions.length === 0 && <p className=\"px-3 py-2 text-muted-foreground\">No sessions yet.</p>}\n {groups.map((g) => (\n <div key={g.project} className=\"mb-2\">\n {g.project && <div className=\"px-3 py-1 text-[11px] uppercase tracking-wide text-muted-foreground\">{g.project}</div>}\n <ul>\n {g.rows.map((s) => {\n const on = s.sessionId === selectedId;\n const title = s.name || s.title || s.lastMessagePreview || s.sessionId.slice(0, 8);\n return (\n <li key={s.sessionId}>\n <button type=\"button\" onClick={() => onSelect(s.sessionId)} aria-current={on ? \"true\" : undefined} className={cn(\"flex min-h-11 w-full flex-col gap-0.5 rounded-md px-3 py-2 text-left hover:bg-muted\", on && \"bg-muted\")} data-status={s.status}>\n <span className=\"flex items-center gap-2\">\n {/* live = a run is streaming right now (sessions_v2); the record's status otherwise. */}\n <span\n className={cn(\"h-2 w-2 shrink-0 rounded-full\", s.live ? \"animate-pulse bg-accent\" : s.status === \"active\" ? \"bg-success\" : s.status === \"listening\" ? \"bg-info\" : s.status === \"error\" ? \"bg-destructive\" : \"bg-muted-foreground/40\")}\n aria-label={s.live ? \"working\" : s.status}\n data-live={s.live ? \"true\" : undefined}\n />\n <span className=\"min-w-0 flex-1 truncate font-medium\">{title}</span>\n {s.pendingQuestion && <span className=\"shrink-0 rounded-full bg-warning px-1.5 text-[10px] font-medium text-warning-foreground\">question</span>}\n </span>\n <span className=\"flex gap-2 truncate text-[11.5px] text-muted-foreground\">\n {s.hop && <span className=\"truncate\">{s.hop}</span>}\n {s.relCwd && <span className=\"truncate\">{s.relCwd}</span>}\n <span className=\"ml-auto shrink-0 tabular-nums\">{when(s.updatedAt)}</span>\n </span>\n </button>\n </li>\n );\n })}\n </ul>\n </div>\n ))}\n </nav>\n );\n}\n",
20
- "import { type ClipboardEvent, type DragEvent, type KeyboardEvent, useCallback, useEffect, useRef, useState } from \"react\";\nimport { ArrowUp, ImagePlus, Square, X } from \"lucide-react\";\nimport { cn } from \"./cn\";\n\nexport interface ComposerAttachment {\n name: string;\n mediaType: string;\n /** base64 payload, no data: prefix. */\n data: string;\n /** object URL for the thumbnail; revoked when removed. */\n previewUrl?: string;\n}\n\nexport interface HopOption {\n value: string;\n label: string;\n description?: string;\n}\n\nexport interface ComposerProps {\n onSubmit: (text: string, attachments: ComposerAttachment[]) => void;\n /** While a run is live the send button becomes Stop; with `onSteer`, typed text sends as a steer instead. */\n running?: boolean;\n onStop?: () => void;\n onSteer?: (text: string) => void;\n /** Controlled text (with onChange), or `initialValue` to prefill once. */\n value?: string;\n onChange?: (text: string) => void;\n initialValue?: string;\n /** Enter sends on keyboards; on touch devices the send button does (Shift+Enter always breaks a line).\n * Force one behaviour with true / false. */\n submitOnEnter?: boolean;\n hideAttach?: boolean;\n disabled?: boolean;\n /** Shown as a placeholder reason while disabled, e.g. \"Workspace is waking up\". */\n disabledReason?: string;\n placeholder?: string;\n hopOptions?: HopOption[];\n hop?: string;\n onHopChange?: (hop: string) => void;\n /** A slot beside the HOP picker (model picker, mode pill). */\n leading?: React.ReactNode;\n maxAttachmentBytes?: number;\n className?: string;\n autoFocus?: boolean;\n}\n\nconst ACCEPT = [\"image/png\", \"image/jpeg\", \"image/gif\", \"image/webp\"];\n\nasync function fileToAttachment(f: File): Promise<ComposerAttachment> {\n const buf = new Uint8Array(await f.arrayBuffer());\n let bin = \"\";\n for (let i = 0; i < buf.length; i += 0x8000) bin += String.fromCharCode(...buf.subarray(i, i + 0x8000));\n return { name: f.name || \"image\", mediaType: f.type, data: btoa(bin), previewUrl: URL.createObjectURL(f) };\n}\n\n/**\n * The input: a growing textarea, Enter sends and Shift+Enter breaks a line, images paste or\n * drop in as attachments, a HOP picker slot, Stop while running, and an outside-controlled\n * disabled state for a sleeping workspace.\n */\nfunction coarsePointer(): boolean {\n return typeof window !== \"undefined\" && typeof window.matchMedia === \"function\" && window.matchMedia(\"(pointer: coarse)\").matches;\n}\n\nexport function Composer({ onSubmit, running, onStop, onSteer, value, onChange, initialValue, submitOnEnter, hideAttach, disabled, disabledReason, placeholder = \"Ask yodex to do something…\", hopOptions, hop, onHopChange, leading, maxAttachmentBytes = 8 * 1024 * 1024, className, autoFocus }: ComposerProps) {\n const [own, setOwn] = useState(initialValue ?? \"\");\n const text = value ?? own;\n const setText = (t: string) => {\n if (value === undefined) setOwn(t);\n onChange?.(t);\n };\n const [attachments, setAttachments] = useState<ComposerAttachment[]>([]);\n const [note, setNote] = useState<string | null>(null);\n const ref = useRef<HTMLTextAreaElement>(null);\n\n // Autosize on text and on width (a panel resize would otherwise leave a stale height).\n useEffect(() => {\n const el = ref.current;\n if (!el) return;\n const fit = () => {\n el.style.height = \"0px\";\n el.style.height = `${Math.min(el.scrollHeight, 240)}px`;\n };\n fit();\n if (typeof ResizeObserver === \"undefined\") return;\n const ro = new ResizeObserver(fit);\n ro.observe(el);\n return () => ro.disconnect();\n }, [text]);\n\n const addFiles = useCallback(\n async (files: FileList | File[]) => {\n const list = [...files].filter((f) => ACCEPT.includes(f.type));\n if (!list.length) return;\n const big = list.find((f) => f.size > maxAttachmentBytes);\n if (big) {\n setNote(`${big.name} is larger than ${Math.round(maxAttachmentBytes / 1024 / 1024)} MB`);\n return;\n }\n const next = await Promise.all(list.map(fileToAttachment));\n setAttachments((a) => [...a, ...next]);\n setNote(null);\n },\n [maxAttachmentBytes],\n );\n\n const remove = (i: number) =>\n setAttachments((a) => {\n const gone = a[i];\n if (gone?.previewUrl) URL.revokeObjectURL(gone.previewUrl);\n return a.filter((_, j) => j !== i);\n });\n\n const steering = Boolean(running && onSteer);\n const canSend = !disabled && (steering ? text.trim().length > 0 : !running && (text.trim().length > 0 || attachments.length > 0));\n const submit = () => {\n if (!canSend) return;\n if (steering) {\n onSteer!(text.trim());\n setText(\"\");\n return;\n }\n onSubmit(text.trim(), attachments);\n setText(\"\");\n for (const a of attachments) if (a.previewUrl) URL.revokeObjectURL(a.previewUrl);\n setAttachments([]);\n };\n\n const onKey = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key !== \"Enter\" || e.shiftKey || e.nativeEvent.isComposing) return;\n const enterSends = submitOnEnter ?? !coarsePointer();\n if (!enterSends) return;\n e.preventDefault();\n submit();\n };\n const onPaste = (e: ClipboardEvent<HTMLTextAreaElement>) => {\n const files = [...e.clipboardData.files];\n if (files.length) {\n e.preventDefault();\n void addFiles(files);\n }\n };\n const onDrop = (e: DragEvent<HTMLDivElement>) => {\n if (e.dataTransfer.files.length) {\n e.preventDefault();\n void addFiles(e.dataTransfer.files);\n }\n };\n\n return (\n <div className={cn(\"yx-composer rounded-lg border border-border bg-card shadow-sm\", disabled && \"opacity-70\", className)} onDrop={onDrop} onDragOver={(e) => e.preventDefault()} data-disabled={disabled ? \"true\" : undefined}>\n {attachments.length > 0 && (\n <ul className=\"flex flex-wrap gap-2 px-3 pt-3\" aria-label=\"attachments\">\n {attachments.map((a, i) => (\n <li key={`${a.name}-${i}`} className=\"relative\">\n {a.previewUrl ? <img src={a.previewUrl} alt={a.name} className=\"h-14 w-14 rounded-md border border-border object-cover\" /> : <span className=\"block h-14 w-14 rounded-md border border-border bg-muted\" />}\n <button type=\"button\" onClick={() => remove(i)} aria-label={`Remove ${a.name}`} className=\"absolute -right-4 -top-4 flex h-11 w-11 items-center justify-center rounded-full\">\n <span className=\"flex h-6 w-6 items-center justify-center rounded-full border border-border bg-background\">\n <X className=\"h-3 w-3\" aria-hidden />\n </span>\n </button>\n </li>\n ))}\n </ul>\n )}\n <textarea\n ref={ref}\n value={text}\n onChange={(e) => setText(e.target.value)}\n onKeyDown={onKey}\n onPaste={onPaste}\n disabled={disabled}\n autoFocus={autoFocus}\n rows={1}\n placeholder={disabled && disabledReason ? disabledReason : steering ? \"Steer the agent (it reads this at its next step)…\" : placeholder}\n aria-label={steering ? \"Steer\" : \"Message\"}\n className=\"block w-full resize-none bg-transparent px-3 py-3 text-[16px] leading-6 placeholder:text-muted-foreground focus-visible:outline-none\"\n />\n <div className=\"flex items-center gap-1 px-2 pb-2\">\n {leading}\n {hopOptions && hopOptions.length > 0 && (\n <select value={hop ?? \"\"} onChange={(e) => onHopChange?.(e.target.value)} disabled={disabled} aria-label=\"HOP\" className=\"min-h-9 max-w-[45%] rounded-md border border-border bg-background px-2 text-[12.5px]\">\n {hopOptions.map((o) => (\n <option key={o.value} value={o.value} title={o.description}>\n {o.label}\n </option>\n ))}\n </select>\n )}\n {!hideAttach && (\n <label className={cn(\"flex h-11 w-11 cursor-pointer items-center justify-center rounded-md text-muted-foreground hover:bg-muted\", disabled && \"pointer-events-none\")} aria-label=\"Attach image\">\n <ImagePlus className=\"h-4 w-4\" aria-hidden />\n <input type=\"file\" accept={ACCEPT.join(\",\")} multiple className=\"sr-only\" disabled={disabled} onChange={(e) => e.target.files && void addFiles(e.target.files)} />\n </label>\n )}\n {note && <span className=\"truncate text-[12px] text-destructive\">{note}</span>}\n <span className=\"flex-1\" />\n {running && onStop && !(steering && text.trim()) ? (\n <button type=\"button\" onClick={onStop} aria-label=\"Stop\" className=\"flex h-11 w-11 items-center justify-center rounded-md bg-destructive text-destructive-foreground\">\n <Square className=\"h-4 w-4\" aria-hidden />\n </button>\n ) : (\n <button type=\"button\" onClick={submit} disabled={!canSend} aria-label=\"Send\" className=\"flex h-11 w-11 items-center justify-center rounded-md bg-primary text-primary-foreground disabled:opacity-40\">\n <ArrowUp className=\"h-4 w-4\" aria-hidden />\n </button>\n )}\n </div>\n </div>\n );\n}\n"
20
+ "import { type ClipboardEvent, type DragEvent, type KeyboardEvent, useCallback, useEffect, useRef, useState } from \"react\";\nimport { ArrowUp, ImagePlus, Square, X } from \"lucide-react\";\nimport { cn } from \"./cn\";\n\nexport interface ComposerAttachment {\n name: string;\n mediaType: string;\n /** base64 payload, no data: prefix. */\n data: string;\n /** object URL for the thumbnail; revoked when removed. */\n previewUrl?: string;\n}\n\nexport interface HopOption {\n value: string;\n label: string;\n description?: string;\n}\n\nexport interface ComposerProps {\n onSubmit: (text: string, attachments: ComposerAttachment[]) => void;\n /** While a run is live the send button becomes Stop; with `onSteer`, typed text sends as a steer instead. */\n running?: boolean;\n onStop?: () => void;\n onSteer?: (text: string) => void;\n /** Controlled text (with onChange), or `initialValue` to prefill once. */\n value?: string;\n onChange?: (text: string) => void;\n initialValue?: string;\n /** Enter sends on keyboards; on touch devices the send button does (Shift+Enter always breaks a line).\n * Force one behaviour with true / false. */\n submitOnEnter?: boolean;\n hideAttach?: boolean;\n /** Text shown on the send button beside the arrow, e.g. \"Send when ready\" while a workspace\n * wakes and the prompt will be queued. Also its accessible name. */\n submitLabel?: string;\n disabled?: boolean;\n /** Shown as a placeholder reason while disabled, e.g. \"Workspace is waking up\". */\n disabledReason?: string;\n placeholder?: string;\n hopOptions?: HopOption[];\n hop?: string;\n onHopChange?: (hop: string) => void;\n /** A slot beside the HOP picker (model picker, mode pill). */\n leading?: React.ReactNode;\n maxAttachmentBytes?: number;\n className?: string;\n autoFocus?: boolean;\n}\n\nconst ACCEPT = [\"image/png\", \"image/jpeg\", \"image/gif\", \"image/webp\"];\n\nasync function fileToAttachment(f: File): Promise<ComposerAttachment> {\n const buf = new Uint8Array(await f.arrayBuffer());\n let bin = \"\";\n for (let i = 0; i < buf.length; i += 0x8000) bin += String.fromCharCode(...buf.subarray(i, i + 0x8000));\n return { name: f.name || \"image\", mediaType: f.type, data: btoa(bin), previewUrl: URL.createObjectURL(f) };\n}\n\n/**\n * The input: a growing textarea, Enter sends and Shift+Enter breaks a line, images paste or\n * drop in as attachments, a HOP picker slot, Stop while running, and an outside-controlled\n * disabled state for a sleeping workspace.\n */\nfunction coarsePointer(): boolean {\n return typeof window !== \"undefined\" && typeof window.matchMedia === \"function\" && window.matchMedia(\"(pointer: coarse)\").matches;\n}\n\nexport function Composer({ onSubmit, running, onStop, onSteer, value, onChange, initialValue, submitOnEnter, hideAttach, submitLabel, disabled, disabledReason, placeholder = \"Ask yodex to do something…\", hopOptions, hop, onHopChange, leading, maxAttachmentBytes = 8 * 1024 * 1024, className, autoFocus }: ComposerProps) {\n const [own, setOwn] = useState(initialValue ?? \"\");\n const text = value ?? own;\n const setText = (t: string) => {\n if (value === undefined) setOwn(t);\n onChange?.(t);\n };\n const [attachments, setAttachments] = useState<ComposerAttachment[]>([]);\n const [note, setNote] = useState<string | null>(null);\n const ref = useRef<HTMLTextAreaElement>(null);\n\n // Autosize on text and on width (a panel resize would otherwise leave a stale height).\n useEffect(() => {\n const el = ref.current;\n if (!el) return;\n const fit = () => {\n el.style.height = \"0px\";\n el.style.height = `${Math.min(el.scrollHeight, 240)}px`;\n };\n fit();\n if (typeof ResizeObserver === \"undefined\") return;\n const ro = new ResizeObserver(fit);\n ro.observe(el);\n return () => ro.disconnect();\n }, [text]);\n\n const addFiles = useCallback(\n async (files: FileList | File[]) => {\n const list = [...files].filter((f) => ACCEPT.includes(f.type));\n if (!list.length) return;\n const big = list.find((f) => f.size > maxAttachmentBytes);\n if (big) {\n setNote(`${big.name} is larger than ${Math.round(maxAttachmentBytes / 1024 / 1024)} MB`);\n return;\n }\n const next = await Promise.all(list.map(fileToAttachment));\n setAttachments((a) => [...a, ...next]);\n setNote(null);\n },\n [maxAttachmentBytes],\n );\n\n const remove = (i: number) =>\n setAttachments((a) => {\n const gone = a[i];\n if (gone?.previewUrl) URL.revokeObjectURL(gone.previewUrl);\n return a.filter((_, j) => j !== i);\n });\n\n const steering = Boolean(running && onSteer);\n const canSend = !disabled && (steering ? text.trim().length > 0 : !running && (text.trim().length > 0 || attachments.length > 0));\n const submit = () => {\n if (!canSend) return;\n if (steering) {\n onSteer!(text.trim());\n setText(\"\");\n return;\n }\n onSubmit(text.trim(), attachments);\n setText(\"\");\n for (const a of attachments) if (a.previewUrl) URL.revokeObjectURL(a.previewUrl);\n setAttachments([]);\n };\n\n const onKey = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key !== \"Enter\" || e.shiftKey || e.nativeEvent.isComposing) return;\n const enterSends = submitOnEnter ?? !coarsePointer();\n if (!enterSends) return;\n e.preventDefault();\n submit();\n };\n const onPaste = (e: ClipboardEvent<HTMLTextAreaElement>) => {\n const files = [...e.clipboardData.files];\n if (files.length) {\n e.preventDefault();\n void addFiles(files);\n }\n };\n const onDrop = (e: DragEvent<HTMLDivElement>) => {\n if (e.dataTransfer.files.length) {\n e.preventDefault();\n void addFiles(e.dataTransfer.files);\n }\n };\n\n return (\n <div className={cn(\"yx-composer rounded-lg border border-border bg-card shadow-sm\", disabled && \"opacity-70\", className)} onDrop={onDrop} onDragOver={(e) => e.preventDefault()} data-disabled={disabled ? \"true\" : undefined}>\n {attachments.length > 0 && (\n <ul className=\"flex flex-wrap gap-2 px-3 pt-3\" aria-label=\"attachments\">\n {attachments.map((a, i) => (\n <li key={`${a.name}-${i}`} className=\"relative\">\n {a.previewUrl ? <img src={a.previewUrl} alt={a.name} className=\"h-14 w-14 rounded-md border border-border object-cover\" /> : <span className=\"block h-14 w-14 rounded-md border border-border bg-muted\" />}\n <button type=\"button\" onClick={() => remove(i)} aria-label={`Remove ${a.name}`} className=\"absolute -right-4 -top-4 flex h-11 w-11 items-center justify-center rounded-full\">\n <span className=\"flex h-6 w-6 items-center justify-center rounded-full border border-border bg-background\">\n <X className=\"h-3 w-3\" aria-hidden />\n </span>\n </button>\n </li>\n ))}\n </ul>\n )}\n <textarea\n ref={ref}\n value={text}\n onChange={(e) => setText(e.target.value)}\n onKeyDown={onKey}\n onPaste={onPaste}\n disabled={disabled}\n autoFocus={autoFocus}\n rows={1}\n placeholder={disabled && disabledReason ? disabledReason : steering ? \"Steer the agent (it reads this at its next step)…\" : placeholder}\n aria-label={steering ? \"Steer\" : \"Message\"}\n className=\"block w-full resize-none bg-transparent px-3 py-3 text-[16px] leading-6 placeholder:text-muted-foreground focus-visible:outline-none\"\n />\n <div className=\"flex items-center gap-1 px-2 pb-2\">\n {leading}\n {hopOptions && hopOptions.length > 0 && (\n <select value={hop ?? \"\"} onChange={(e) => onHopChange?.(e.target.value)} disabled={disabled} aria-label=\"HOP\" className=\"min-h-9 max-w-[45%] rounded-md border border-border bg-background px-2 text-[12.5px]\">\n {hopOptions.map((o) => (\n <option key={o.value} value={o.value} title={o.description}>\n {o.label}\n </option>\n ))}\n </select>\n )}\n {!hideAttach && (\n <label className={cn(\"flex h-11 w-11 cursor-pointer items-center justify-center rounded-md text-muted-foreground hover:bg-muted\", disabled && \"pointer-events-none\")} aria-label=\"Attach image\">\n <ImagePlus className=\"h-4 w-4\" aria-hidden />\n <input type=\"file\" accept={ACCEPT.join(\",\")} multiple className=\"sr-only\" disabled={disabled} onChange={(e) => e.target.files && void addFiles(e.target.files)} />\n </label>\n )}\n {note && <span className=\"truncate text-[12px] text-destructive\">{note}</span>}\n <span className=\"flex-1\" />\n {running && onStop && !(steering && text.trim()) ? (\n <button type=\"button\" onClick={onStop} aria-label=\"Stop\" className=\"flex h-11 w-11 items-center justify-center rounded-md bg-destructive text-destructive-foreground\">\n <Square className=\"h-4 w-4\" aria-hidden />\n </button>\n ) : (\n <button type=\"button\" onClick={submit} disabled={!canSend} aria-label={submitLabel ?? \"Send\"} className={cn(\"flex h-11 items-center justify-center gap-1 rounded-md bg-primary text-primary-foreground disabled:opacity-40\", submitLabel ? \"px-3 text-[13px] font-medium\" : \"w-11\")}>\n {submitLabel && <span>{submitLabel}</span>}\n <ArrowUp className=\"h-4 w-4\" aria-hidden />\n </button>\n )}\n </div>\n </div>\n );\n}\n"
21
21
  ],
22
- "mappings": ";AA0DO,MAAM,YAAY;AAAA,EACf,SAA4B;AAAA,EAC5B,eAAe;AAAA,EACf,UAAU;AAAA,EACV,kBAA2B;AAAA,EAClB,UAAU,IAAI;AAAA,EACd;AAAA,EACT,MAAM;AAAA,EACd,QAAyB;AAAA,EAEzB,WAAW,CAAC,SAA6B;AAAA,IAEvC,MAAM,QAAQ,OAAO,YAAY,OAAO,QAAQ,OAAO,EAAE,OAAO,IAAI,OAAO,MAAM,SAAS,CAAC;AAAA,IAC3F,KAAK,OAAO;AAAA,MACV,WAAW,EAAE,KAAK,KAAK,KAAK,IAAO;AAAA,MACnC,kBAAkB;AAAA,MAClB,eAAe,CAAC,QAAQ,IAAI,UAAU,GAAG;AAAA,MACzC,UAAU,CAAC,IAAI,OAAO,WAAW,IAAI,EAAE;AAAA,MACvC,YAAY,CAAC,MAAM,aAAa,CAAkC;AAAA,MAClE,QAAQ,KAAK;AAAA,SACV;AAAA,IACL;AAAA;AAAA,MAGE,GAAG,GAAW;AAAA,IAChB,MAAM,IAAI,KAAK,KAAK;AAAA,IACpB,IAAI,CAAC,KAAK,KAAK;AAAA,MAAO,OAAO;AAAA,IAC7B,OAAO,GAAG,IAAI,EAAE,SAAS,GAAG,IAAI,MAAM,YAAY,mBAAmB,KAAK,KAAK,KAAK;AAAA;AAAA,EAGtF,OAAO,GAAS;AAAA,IACd,KAAK,eAAe;AAAA,IACpB,KAAK,KAAK;AAAA;AAAA,EAGZ,KAAK,GAAS;AAAA,IACZ,KAAK,eAAe;AAAA,IACpB,IAAI,KAAK;AAAA,MAAiB,KAAK,KAAK,WAAW,KAAK,eAAe;AAAA,IACnE,KAAK,kBAAkB;AAAA,IACvB,KAAK,QAAQ,MAAM;AAAA,IACnB,KAAK,SAAS;AAAA,IACd,KAAK,YAAY,IAAI,MAAM,eAAe,CAAC;AAAA,IAC3C,KAAK,SAAS,QAAQ;AAAA;AAAA,EAGhB,QAAQ,CAAC,GAA0B;AAAA,IACzC,IAAI,KAAK,UAAU;AAAA,MAAG;AAAA,IACtB,KAAK,QAAQ;AAAA,IACb,KAAK,KAAK,UAAU,CAAC;AAAA;AAAA,EAGf,IAAI,GAAS;AAAA,IACnB,KAAK,SAAS,KAAK,YAAY,IAAI,eAAe,cAAc;AAAA,IAChE,MAAM,KAAK,KAAK,KAAK,cAAc,KAAK,GAAG;AAAA,IAC3C,KAAK,SAAS;AAAA,IACd,GAAG,SAAS,MAAM;AAAA,MAChB,KAAK,UAAU;AAAA;AAAA,IAEjB,GAAG,YAAY,CAAC,OAAO;AAAA,MACrB,IAAI;AAAA,MACJ,IAAI;AAAA,QACF,IAAI,KAAK,MAAM,OAAO,GAAG,IAAI,CAAC;AAAA,QAC9B,MAAM;AAAA,QACN;AAAA;AAAA,MAEF,IAAI,EAAE,SAAS;AAAA,QAAS,KAAK,SAAS,WAAW;AAAA,MACjD,MAAM,MAAO,EAA6B;AAAA,MAC1C,IAAI,OAAO,KAAK,QAAQ,IAAI,GAAG,KAAK,EAAE,SAAS,QAAQ;AAAA,QACrD,MAAM,IAAI,KAAK,QAAQ,IAAI,GAAG;AAAA,QAC9B,KAAK,QAAQ,OAAO,GAAG;AAAA,QACvB,KAAK,KAAK,WAAW,EAAE,KAAK;AAAA,QAC5B,EAAE,QAAQ,CAAkB;AAAA,MAC9B;AAAA,MACA,KAAK,KAAK,UAAU,CAAC;AAAA;AAAA,IAEvB,GAAG,UAAU,MAAM;AAAA,IAGnB,GAAG,UAAU,MAAM;AAAA,MACjB,IAAI,KAAK,WAAW;AAAA,QAAI;AAAA,MACxB,KAAK,SAAS;AAAA,MACd,KAAK,YAAY,IAAI,MAAM,iBAAiB,CAAC;AAAA,MAC7C,IAAI,KAAK;AAAA,QAAc;AAAA,MACvB,KAAK,kBAAkB;AAAA;AAAA;AAAA,EAInB,iBAAiB,GAAS;AAAA,IAChC,QAAQ,KAAK,QAAQ,KAAK,KAAK;AAAA,IAC/B,MAAM,OAAO,KAAK,IAAI,KAAK,MAAM,KAAK,KAAK,OAAO;AAAA,IAClD,MAAM,QAAQ,KAAK,MAAM,QAAQ,MAAM,KAAK,KAAK,OAAO,IAAI,IAAI;AAAA,IAChE,KAAK,WAAW;AAAA,IAChB,KAAK,SAAS,cAAc;AAAA,IAC5B,KAAK,kBAAkB,KAAK,KAAK,SAAS,MAAM;AAAA,MAC9C,KAAK,kBAAkB;AAAA,MACvB,IAAI,CAAC,KAAK;AAAA,QAAc,KAAK,KAAK;AAAA,OACjC,KAAK;AAAA;AAAA,EAGF,WAAW,CAAC,GAAgB;AAAA,IAClC,WAAW,KAAK,KAAK,QAAQ,OAAO,GAAG;AAAA,MACrC,KAAK,KAAK,WAAW,EAAE,KAAK;AAAA,MAC5B,EAAE,OAAO,CAAC;AAAA,IACZ;AAAA,IACA,KAAK,QAAQ,MAAM;AAAA;AAAA,MAGjB,SAAS,GAAY;AAAA,IACvB,OAAO,KAAK,UAAU,eAAe,KAAK,WAAW;AAAA;AAAA,EAGvD,IAAI,CAAC,GAA0B;AAAA,IAC7B,IAAI,CAAC,KAAK,UAAU,KAAK,UAAU;AAAA,MAAa,MAAM,IAAI,MAAM,eAAe;AAAA,IAC/E,KAAK,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC;AAAA;AAAA,EAG5B,SAAS,GAAW;AAAA,IAC1B,OAAO,GAAG,KAAK,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,KAAK,SAAS,EAAE;AAAA;AAAA,EAI/D,OAAwC,CAAC,GAA4C,SAA0D;AAAA,IAC7I,OAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAAA,MACtC,MAAM,QAAQ,KAAK,KAAK,SAAS,MAAM;AAAA,QACrC,KAAK,QAAQ,OAAO,EAAE,SAAS;AAAA,QAC/B,OAAO,IAAI,MAAM,GAAG,EAAE,yBAAyB,KAAK,KAAK,qBAAqB,CAAC;AAAA,SAC9E,KAAK,KAAK,gBAAgB;AAAA,MAC7B,KAAK,QAAQ,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC,MAAM,QAAQ,CAAwC,GAAG,QAAQ,MAAM,CAAC;AAAA,MAClH,IAAI;AAAA,QACF,KAAK,KAAK,CAAC;AAAA,QACX,OAAO,GAAG;AAAA,QACV,KAAK,QAAQ,OAAO,EAAE,SAAS;AAAA,QAC/B,KAAK,KAAK,WAAW,KAAK;AAAA,QAC1B,OAAO,CAAU;AAAA;AAAA,KAEpB;AAAA;AAAA,EAIH,GAAG,CAAC,QAAgB,UAAsB,CAAC,GAAW;AAAA,IACpD,MAAM,YAAY,KAAK,UAAU;AAAA,IACjC,KAAK,KAAK,EAAE,MAAM,OAAO,WAAW,WAAW,QAAQ,CAAC;AAAA,IACxD,OAAO;AAAA;AAAA,EAGT,SAAS,GAAS;AAAA,IAChB,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAAA;AAAA,EAGjC,QAAQ,CAAC,WAAmB,MAAoB;AAAA,IAC9C,KAAK,KAAK,EAAE,MAAM,QAAQ,WAAW,KAAK,CAAC;AAAA;AAAA,EAG7C,iBAAiB,CAAC,IAAY,UAA4B,QAAuB;AAAA,IAC/E,KAAK,KAAK,EAAE,MAAM,uBAAuB,IAAI,aAAc,SAAS,EAAE,OAAO,IAAI,CAAC,EAAG,CAAC;AAAA;AAAA,EAGxF,eAAe,CAAC,IAAY,SAA2B;AAAA,IACrD,KAAK,KAAK,EAAE,MAAM,qBAAqB,IAAI,QAAQ,CAAC;AAAA;AAAA,EAGtD,eAAe,CAAC,WAAmB,UAA4B,QAAuB;AAAA,IACpF,KAAK,KAAK,EAAE,MAAM,qBAAqB,WAAW,aAAc,SAAS,EAAE,OAAO,IAAI,CAAC,EAAG,CAAC;AAAA;AAAA,EAG7F,YAAY,GAAG;AAAA,IACb,OAAO,KAAK,QAAQ,EAAE,MAAM,iBAAiB,WAAW,KAAK,UAAU,EAAE,GAAG,UAAU;AAAA;AAAA,EAExF,UAAU,GAAG;AAAA,IACX,OAAO,KAAK,QAAQ,EAAE,MAAM,eAAe,WAAW,KAAK,UAAU,EAAE,GAAG,QAAQ;AAAA;AAAA,EAEpF,UAAU,GAAG;AAAA,IACX,OAAO,KAAK,QAAQ,EAAE,MAAM,eAAe,WAAW,KAAK,UAAU,EAAE,GAAG,QAAQ;AAAA;AAAA,EAEpF,WAAW,CAAC,WAAmB;AAAA,IAC7B,OAAO,KAAK,QAAQ,EAAE,MAAM,gBAAgB,WAAW,KAAK,UAAU,GAAG,UAAU,GAAG,iBAAiB;AAAA;AAE3G;;AC1OA;AAGO,SAAS,YAAY,GAAiB;AAAA,EAC3C,OAAO;AAAA,IACL,YAAY;AAAA,IACZ,cAAc,CAAC;AAAA,IACf,OAAO,CAAC;AAAA,IACR,SAAS;AAAA,IACT,YAAY,WAAW;AAAA,IACvB,oBAAoB,CAAC;AAAA,IACrB,UAAU,CAAC;AAAA,IACX,QAAQ,CAAC;AAAA,IACT,QAAQ,CAAC;AAAA,EACX;AAAA;AAGF,IAAM,aAAa,IAAI,IAAI,CAAC,cAAc,cAAc,UAAU,CAAC;AACnE,IAAI,MAAM;AACV,IAAM,SAAS,CAAC,WAAmB,GAAG,UAAU,EAAE;AAElD,SAAS,MAAM,CAAC,SAA0B;AAAA,EACxC,IAAI,OAAO,YAAY;AAAA,IAAU,OAAO;AAAA,EACxC,IAAI,CAAC,MAAM,QAAQ,OAAO;AAAA,IAAG,OAAO;AAAA,EACpC,OAAO,QACJ,IAAI,CAAC,MAAO,KAAK,OAAO,MAAM,YAAa,EAAwB,SAAS,SAAS,OAAQ,EAAwB,QAAQ,EAAE,IAAI,EAAG,EACtI,OAAO,OAAO,EACd,KAAK;AAAA,CAAI;AAAA;AAGd,SAAS,mBAAmB,CAAC,OAAyB,MAAoC;AAAA,EACxF,MAAM,MAAM,MAAM,UAAU,CAAC,MAAM,EAAE,SAAS,MAAM;AAAA,EACpD,MAAM,MAAsB,EAAE,MAAM,QAAQ,IAAI,QAAQ,OAAO,KAAK;AAAA,EACpE,IAAI,QAAQ;AAAA,IAAI,OAAO,CAAC,GAAG,OAAO,GAAG;AAAA,EACrC,MAAM,MAAM,MAAM,MAAM;AAAA,EACxB,IAAI,OAAO;AAAA,EACX,OAAO;AAAA;AAGT,SAAS,WAAW,CAAC,OAAqC;AAAA,EACxD,MAAM,MAAM,MAAM,KAAK,CAAC,MAAM,EAAE,SAAS,MAAM;AAAA,EAC/C,OAAO,OAAO,IAAI,SAAS,SAAS,IAAI,QAAQ,CAAC;AAAA;AAGnD,SAAS,SAAS,CAAC,OAA2C;AAAA,EAC5D,MAAM,OAAO,MAAM,MAAM,SAAS;AAAA,EAClC,OAAO,QAAQ,KAAK,SAAS,eAAe,KAAK,OAAO,MAAM,MAAM,GAAG,EAAE,IAAI;AAAA;AAQxE,SAAS,UAAU,CAAC,OAAqB,IAAiB,MAA6B;AAAA,EAC5F,QAAQ,GAAG;AAAA,SACJ;AAAA,MACH,OAAO,KAAK,OAAO,WAAW,GAAG,WAAW,OAAO,MAAM,SAAS,GAAG,OAAO,KAAK,GAAG,IAAI;AAAA,SACrF,QAAQ;AAAA,MACX,IAAI,QAAQ,GAAG,OAAO,SAAS;AAAA,QAAS,OAAO;AAAA,MAC/C,MAAM,OAAO,OAAO,GAAG,QAAQ,OAAO;AAAA,MACtC,MAAM,SAAS,MAAM,QAAQ,GAAG,QAAQ,OAAO,IAAI,GAAG,QAAQ,QAAQ,OAAO,CAAC,MAAM,EAAE,SAAS,MAAM,IAAI;AAAA,MACzG,OAAO;AAAA,WACF;AAAA,QACH,OAAO,CAAC,GAAG,UAAU,MAAM,KAAK,GAAG,EAAE,MAAM,QAAQ,IAAI,OAAO,GAAG,GAAG,MAAM,QAAQ,GAAG,QAAQ,IAAI,GAAG,OAAQ,QAAQ,SAAS,EAAE,OAAO,IAAI,CAAC,EAAG,CAAC;AAAA,MACjJ;AAAA,IACF;AAAA,SACK,cAAc;AAAA,MACjB,MAAM,QAAQ,MAAM,MAAM,MAAM;AAAA,MAChC,MAAM,OAAO,MAAM,MAAM,SAAS;AAAA,MAClC,IAAI,QAAQ,KAAK,SAAS,eAAe,KAAK;AAAA,QAAM,MAAM,MAAM,SAAS,KAAK,KAAK,MAAM,MAAM,KAAK,OAAO,GAAG,KAAK;AAAA,MAC9G;AAAA,cAAM,KAAK,EAAE,MAAM,aAAa,IAAI,OAAO,GAAG,GAAG,MAAM,GAAG,MAAM,IAAI,IAAI,KAAK,EAAE,YAAY,GAAG,MAAM,KAAK,CAAC;AAAA,MAC/G,OAAO,KAAK,OAAO,OAAO,UAAU,aAAa;AAAA,IACnD;AAAA,SACK;AAAA,MACH,OAAO,MAAM,aAAa,aAAa,QAAQ,KAAK,OAAO,UAAU,WAAW;AAAA,SAC7E;AAAA,MACH,OAAO,KAAK,OAAO,UAAU,GAAG,KAAK;AAAA,SAClC;AAAA,MACH,OAAO,KAAK,OAAO,OAAO,UAAU,MAAM,KAAK,EAAE;AAAA,SAC9C,aAAa;AAAA,MAChB,IAAI,QAAQ,UAAU,MAAM,KAAK;AAAA,MACjC,MAAM,OAAO,OAAO,GAAG,QAAQ,OAAO;AAAA,MACtC,IAAI,KAAK,KAAK;AAAA,QAAG,QAAQ,CAAC,GAAG,OAAO,EAAE,MAAM,aAAa,IAAI,OAAO,GAAG,GAAG,MAAM,IAAI,GAAG,IAAI,MAAM,MAAM,CAAC;AAAA,MACxG,IAAI,OAAO,YAAY,KAAK;AAAA,MAC5B,IAAI,cAAc;AAAA,MAClB,IAAI,MAAM,QAAQ,GAAG,QAAQ,OAAO,GAAG;AAAA,QACrC,WAAW,KAAK,GAAG,QAAQ,SAAS;AAAA,UAClC,IAAI,EAAE,SAAS;AAAA,YAAY;AAAA,UAC3B,MAAM,QAAS,EAAE,SAAS,CAAC;AAAA,UAC3B,IAAI,WAAW,IAAI,EAAE,IAAI,GAAG;AAAA,YAC1B,IAAI,EAAE,SAAS,cAAc;AAAA,cAC3B,OAAO,CAAC,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,SAAS,OAAO,MAAM,WAAW,EAAE,MAAO,MAAM,cAAc,EAAE,aAAa,OAAO,MAAM,WAAW,EAAE,IAAI,CAAC,GAAI,QAAS,MAAM,UAAyB,UAAU,CAAC;AAAA,cAChM,cAAc;AAAA,YAChB,EAAO,SAAI,EAAE,SAAS,cAAc;AAAA,cAClC,MAAM,KAAK,OAAO,MAAM,MAAM,EAAE;AAAA,cAChC,OAAO,KAAK,IAAI,CAAC,MACf,EAAE,OAAO,KACL,KAAK,MAAO,MAAM,SAAS,EAAE,QAAQ,MAAM,OAAqB,IAAI,CAAC,MAAQ,MAAM,UAAU,EAAE,SAAS,OAAO,MAAM,OAAO,EAAE,IAAI,CAAC,MAAQ,MAAM,cAAc,EAAE,aAAa,OAAO,MAAM,WAAW,EAAE,IAAI,CAAC,EAAG,IAChN,CACN;AAAA,cACA,cAAc;AAAA,YAChB;AAAA,YACA;AAAA,UACF;AAAA,UACA,QAAQ,CAAC,GAAG,OAAO,EAAE,MAAM,QAAQ,IAAI,EAAE,IAAI,MAAM,EAAE,MAAM,OAAO,IAAI,GAAG,GAAG,CAAC;AAAA,QAC/E;AAAA,MACF;AAAA,MACA,IAAI;AAAA,QAAa,QAAQ,oBAAoB,OAAO,IAAI;AAAA,MACxD,OAAO,KAAK,OAAO,OAAO,YAAY,SAAS,MAAM,YAAY,GAAG,KAAK,GAAG,UAAU,UAAU;AAAA,IAClG;AAAA,SACK,eAAe;AAAA,MAClB,MAAM,MAAM,MAAM,MAAM,UAAU,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,OAAO,GAAG,SAAS;AAAA,MACnF,IAAI,QAAQ,IAAI;AAAA,QACd,MAAM,QAAQ,MAAM,MAAM,MAAM;AAAA,QAChC,MAAM,IAAI,MAAM;AAAA,QAChB,MAAM,OAAO,KAAK,GAAG,QAAQ,EAAE,SAAS,GAAG,SAAS,SAAS,GAAG,YAAa,GAAG,OAAO,EAAE,MAAM,GAAG,KAAK,IAAI,CAAC,MAAQ,GAAG,SAAS,EAAE,QAAQ,GAAG,OAAO,IAAI,CAAC,EAAG,EAAE;AAAA,QAC9J,OAAO,KAAK,OAAO,MAAM;AAAA,MAC3B;AAAA,MAEA,MAAM,IAAI,mBAAmB,KAAK,GAAG,OAAO;AAAA,MAC5C,IAAI,KAAK,GAAG,aAAa,cAAc;AAAA,QACrC,MAAM,OAAO,YAAY,MAAM,KAAK,EAAE,IAAI,CAAC,MAAO,EAAE,OAAO,GAAG,YAAY,KAAK,GAAG,IAAI,EAAE,GAAI,IAAI,CAAE;AAAA,QAClG,OAAO,KAAK,OAAO,OAAO,oBAAoB,MAAM,OAAO,IAAI,EAAE;AAAA,MACnE;AAAA,MACA,OAAO;AAAA,IACT;AAAA,SACK;AAAA,MACH,OAAO;AAAA,WACF;AAAA,QACH,SAAS;AAAA,QACT,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,OAAO,CAAC,GAAG,UAAU,MAAM,KAAK,GAAG,EAAE,MAAM,UAAU,IAAI,OAAO,GAAG,GAAG,QAAQ,GAAG,CAAC;AAAA,MACpF;AAAA,SACG;AAAA,MACH,OAAO,KAAK,OAAO,OAAO,CAAC,GAAG,UAAU,MAAM,KAAK,GAAG,EAAE,MAAM,SAAS,IAAI,OAAO,GAAG,GAAG,SAAS,GAAG,SAAS,IAAI,GAAG,GAAG,CAAC,EAAE;AAAA,SACvH;AAAA,MACH,OAAO,KAAK,OAAO,OAAO,CAAC,GAAG,MAAM,OAAO,EAAE,MAAM,WAAW,IAAI,OAAO,GAAG,GAAG,kBAAkB,GAAG,kBAAkB,IAAI,GAAG,GAAG,CAAC,EAAE;AAAA,SAChI;AAAA,MACH,OAAO;AAAA;AAAA;AAIN,SAAS,MAAM,CAAC,OAAqB,QAAqC;AAAA,EAC/E,QAAQ,OAAO;AAAA,SACR,cAAc;AAAA,MACjB,IAAI,OAAO,UAAU,eAAe,CAAC,MAAM;AAAA,QAAS,OAAO,KAAK,OAAO,YAAY,OAAO,MAAM;AAAA,MAGhG,OAAO;AAAA,WACF;AAAA,QACH,YAAY,OAAO;AAAA,QACnB,SAAS;AAAA,QACT,UAAU;AAAA,QACV,oBAAoB,CAAC;AAAA,QACrB,iBAAiB;AAAA,QACjB,OAAO,CAAC,GAAG,UAAU,MAAM,KAAK,GAAG,EAAE,MAAM,SAAS,IAAI,OAAO,GAAG,GAAG,SAAS,+EAA+E,IAAI,IAAI,KAAK,EAAE,YAAY,EAAE,CAAC;AAAA,MAC7L;AAAA,IACF;AAAA,SACK;AAAA,MACH,OAAO,KAAK,aAAa,GAAG,YAAY,MAAM,YAAY,UAAU,MAAM,UAAU,cAAc,MAAM,cAAc,KAAK,MAAM,KAAK,SAAS,MAAM,SAAS,UAAU,MAAM,UAAU,QAAQ,MAAM,QAAQ,QAAQ,MAAM,OAAO;AAAA,SAChO;AAAA,MACH,OAAO,KAAK,OAAO,OAAO,OAAO,QAAQ;AAAA,SACtC;AAAA,MACH,OAAO;AAAA,WACF;AAAA,QACH,OAAO,CAAC,GAAG,MAAM,OAAO,EAAE,MAAM,QAAQ,IAAI,OAAO,GAAG,GAAG,MAAM,OAAO,MAAM,QAAQ,OAAO,IAAI,OAAO,OAAQ,OAAO,QAAQ,SAAS,EAAE,QAAQ,OAAO,OAAO,IAAI,CAAC,EAAG,CAAC;AAAA,MACzK;AAAA,SACG;AAAA,MACH,OAAO,KAAK,OAAO,SAAS,MAAM,cAAc,OAAO,IAAI,UAAU,YAAY,OAAO,WAAW,YAAY,WAAW,iBAAiB,cAAe,OAAO,YAAY,EAAE,WAAW,OAAO,UAAU,IAAI,CAAC,EAAG;AAAA,SAChN;AAAA,MACH,OAAO,KAAK,OAAO,oBAAoB,MAAM,mBAAmB,OAAO,CAAC,MAAM,EAAE,OAAO,OAAO,EAAE,EAAE;AAAA,SAC/F;AAAA,MACH,OAAO,MAAM,iBAAiB,OAAO,OAAO,KAAK,KAAK,OAAO,iBAAiB,UAAU,IAAI;AAAA,SACzF,WAAW;AAAA,MACd,IAAI,IAAkB,KAAK,OAAO,OAAO,CAAC,GAAG,WAAW,OAAO,WAAW,YAAY,WAAW,GAAG,YAAY,UAAU;AAAA,MAC1H,WAAW,KAAK,OAAO;AAAA,QAAU,IAAI,WAAW,GAAG,GAAkB,KAAK;AAAA,MAC1E,OAAO,KAAK,GAAG,SAAS,MAAM,QAAQ;AAAA,IACxC;AAAA,SACK,UAAU;AAAA,MACb,MAAM,IAAI,OAAO;AAAA,MACjB,QAAQ,EAAE;AAAA,aACH;AAAA,UACH,OAAO,KAAK,OAAO,YAAY,aAAa,UAAU,EAAE,UAAU,cAAc,EAAE,gBAAgB,CAAC,GAAG,KAAK,EAAE,KAAK,SAAS,EAAE,IAAI;AAAA,aAC9H;AAAA,UACH,IAAI,MAAM,aAAa,EAAE,cAAc,MAAM;AAAA,YAAW,OAAO;AAAA,UAC/D,OAAO,WAAW,MAAM,YAAY,QAAQ,KAAK,OAAO,WAAW,EAAE,UAAU,GAAG,EAAE,OAAO,IAAI;AAAA,aAC5F;AAAA,UACH,IAAI,MAAM,aAAa,EAAE,cAAc,MAAM;AAAA,YAAW,OAAO;AAAA,UAC/D,OAAO,KAAK,OAAO,oBAAoB,CAAC,GAAG,MAAM,oBAAoB,EAAE,IAAI,EAAE,IAAI,WAAW,EAAE,WAAW,UAAU,EAAE,UAAU,OAAO,EAAE,UAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,IAAI,CAAC,MAAQ,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,IAAI,CAAC,EAAG,CAAC,EAAE;AAAA,aACtP;AAAA,UACH,IAAI,MAAM,aAAa,EAAE,cAAc,MAAM;AAAA,YAAW,OAAO;AAAA,UAC/D,OAAO,KAAK,OAAO,iBAAiB,EAAE,IAAI,EAAE,IAAI,WAAW,EAAE,WAAW,WAAW,EAAE,UAAU,EAAE;AAAA,aAC9F;AAAA,UACH,OAAO,KAAK,OAAO,UAAU,EAAE,SAAS;AAAA,aACrC;AAAA,UACH,OAAO,KAAK,OAAO,QAAQ,EAAE,OAAO;AAAA,aACjC;AAAA,UACH,OAAO,KAAK,OAAO,QAAQ,EAAE,OAAO;AAAA,aACjC,mBAAmB;AAAA,UACtB,MAAM,IAAI,OAAO,OAAO,EAAE,MAAM,WAAW,WAAW,EAAE,WAAW,UAAU,EAAE,SAAS,CAAC;AAAA,UACzF,OAAO;AAAA,eACF;AAAA,YACH,iBAAiB,EAAE,kBAAkB,EAAE,IAAI,EAAE,gBAAgB,IAAI,WAAW,EAAE,WAAW,WAAW,EAAE,gBAAgB,UAAU,IAAI;AAAA,YACpI,iBAAiB,EAAE;AAAA,YACnB,eAAe,EAAE,QAAQ;AAAA,UAC3B;AAAA,QACF;AAAA,aACK;AAAA,UACH,IAAI,MAAM,aAAa,EAAE,cAAc,MAAM;AAAA,YAAW,OAAO;AAAA,UAC/D,OAAO;AAAA,eACF;AAAA,YACH,SAAS;AAAA,YACT,UAAU;AAAA,YACV,oBAAoB,CAAC;AAAA,YACrB,WAAW,EAAE;AAAA,eACT,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,IAAI,CAAC;AAAA,eAC9D,EAAE,SAAS,CAAC,MAAM,aAAa,EAAE,YAAY,SAAS,MAAM,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC;AAAA,UAC5F;AAAA,aACG;AAAA,UACH,OAAO,KAAK,OAAO,OAAO,EAAE,SAAS,OAAO,CAAC,GAAG,UAAU,MAAM,KAAK,GAAG,EAAE,MAAM,SAAS,IAAI,OAAO,GAAG,GAAG,SAAS,EAAE,SAAS,IAAI,IAAI,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE;AAAA;AAAA,UAE9J,OAAO;AAAA;AAAA,IAEb;AAAA;AAAA;AAIG,SAAS,YAAY,CAAC,IAAoB;AAAA,EAC/C,MAAM,IAAI,KAAK,IAAI,GAAG,KAAK,MAAM,KAAK,IAAI,CAAC;AAAA,EAC3C,OAAO,IAAI,KAAK,GAAG,OAAO,GAAG,KAAK,MAAM,IAAI,EAAE,MAAM,IAAI;AAAA;AAGnD,SAAS,WAAW,CAAC,GAA0E;AAAA,EACpG,QAAQ,EAAE;AAAA,SACH;AAAA,MACH,OAAO,EAAE,OAAO,QAAQ,MAAM,KAAK;AAAA,SAChC;AAAA,MACH,OAAO,EAAE,OAAO,eAAe,MAAM,QAAQ;AAAA,SAC1C;AAAA,MACH,OAAO,EAAE,OAAO,uBAAuB,MAAM,OAAO;AAAA,SACjD;AAAA,MACH,OAAO,EAAE,OAAO,6BAA6B,MAAM,OAAO;AAAA,SACvD;AAAA,MACH,OAAO,EAAE,OAAO,EAAE,SAAS,WAAW,EAAE,WAAW,UAAU,MAAM,MAAM;AAAA;AAAA,MAEzE,OAAO,EAAE,OAAO,OAAQ,EAA0B,OAAO,EAAE,QAAQ,MAAM,GAAG,GAAG,MAAM,OAAO;AAAA;AAAA;AAI3F,SAAS,YAAY,CAAC,GAAkB;AAAA,EAC7C,MAAM,IAAI,CAAC,MAAe,KAAK,MAAS,IAAI,IAAI,MAAM,QAAQ,CAAC,OAAO,OAAO,CAAC;AAAA,EAC9E,OAAO,GAAG,EAAE,EAAE,YAAY,MAAK,EAAE,EAAE,aAAa;AAAA;;AC9PlD;;;ACKO,SAAS,OAAO,CAAC,GAA+D;AAAA,EACrF,OAAO,GAAG,EAAE,eAAiB,OAAO,EAAE,MAAM,YAAY,WAAW,EAAE,MAAM,UAAU;AAAA;AAKhF,SAAS,WAAW,CAAC,OAAiC,KAA8E;AAAA,EACzI,IAAI,IAAI;AAAA,IAAc,OAAO;AAAA,EAC7B,OAAO,MAAM,IAAI,QAAQ,GAAG,CAAC;AAAA;AAGxB,SAAS,WAAW,CAAC,OAAyB,UAAwB;AAAA,EAC3E,WAAW,QAAQ;AAAA,IAAO,IAAI,KAAK,WAAW,GAAG,cAAgB;AAAA,MAAG,MAAM,OAAO,IAAI;AAAA;AAMhF,SAAS,eAAe,CAAC,UAA8B,UAA8B,OAAoC;AAAA,EAC9H,IAAI,aAAa;AAAA,IAAU,OAAO;AAAA,EAClC,OAAO,aAAa;AAAA;;;AD2Bf,SAAS,eAAe,CAAC,SAA+C;AAAA,EAC7E,OAAO,OAAO,YAAY,WAAW,QAAQ,WAAW,YAAY;AAAA,EACpE,MAAM,eAAe,OAA2B,QAAQ,SAAS;AAAA,EAEjE,MAAM,UAAU,OAAyB,IAAI,GAAK;AAAA,EAClD,MAAM,SAAS,QACb,MACE,IAAI,YAAY;AAAA,IACd,KAAK,QAAQ;AAAA,IACb,OAAO,QAAQ;AAAA,IACf,eAAe,QAAQ;AAAA,IACvB,SAAS,CAAC,MAAM,SAAS,EAAE,MAAM,cAAc,OAAO,EAAE,CAAC;AAAA,IACzD,WAAW,CAAC,MAAM;AAAA,MAChB,IAAI,EAAE,SAAS,wBAAwB,YAAY,QAAQ,SAAS,CAAC,GAAG;AAAA,QACtE,OAAO,kBAAkB,EAAE,IAAI,OAAO;AAAA,QACtC;AAAA,MACF;AAAA,MACA,SAAS,EAAE,MAAM,UAAU,SAAS,EAAE,CAAC;AAAA,MACvC,IAAI,EAAE,SAAS,WAAW,aAAa,SAAS;AAAA,QAC9C,OAAO,YAAY,aAAa,OAAO,EAAE,MAAM,CAAC,MAAa,SAAS,EAAE,MAAM,SAAS,SAAS,EAAE,QAAQ,CAAC,CAAC;AAAA,MAC9G;AAAA;AAAA,EAEJ,CAAC,GAEH,CAAC,QAAQ,KAAK,QAAQ,OAAO,QAAQ,aAAa,CACpD;AAAA,EAEA,UAAU,MAAM;AAAA,IACd,IAAI,QAAQ,gBAAgB;AAAA,MAAO;AAAA,IACnC,OAAO,QAAQ;AAAA,IACf,OAAO,MAAM,OAAO,MAAM;AAAA,KACzB,CAAC,QAAQ,QAAQ,WAAW,CAAC;AAAA,EAEhC,UAAU,MAAM;AAAA,IACd,aAAa,UAAU,MAAM,aAAa,QAAQ;AAAA,KACjD,CAAC,MAAM,WAAW,QAAQ,SAAS,CAAC;AAAA,EAKvC,MAAM,gBAAgB,OAAO,QAAQ,SAAS;AAAA,EAC9C,UAAU,MAAM;AAAA,IACd,MAAM,YAAY,gBAAgB,QAAQ,WAAW,cAAc,SAAS,aAAa,OAAO;AAAA,IAChG,cAAc,UAAU,QAAQ;AAAA,IAChC,IAAI,CAAC;AAAA,MAAW;AAAA,IAChB,aAAa,UAAU,QAAQ;AAAA,IAC/B,SAAS,EAAE,MAAM,QAAQ,CAAC;AAAA,IAC1B,IAAI,QAAQ,aAAa,OAAO;AAAA,MAAW,OAAO,YAAY,QAAQ,SAAS,EAAE,MAAM,CAAC,MAAa,SAAS,EAAE,MAAM,SAAS,SAAS,EAAE,QAAQ,CAAC,CAAC;AAAA,KACnJ,CAAC,QAAQ,WAAW,MAAM,CAAC;AAAA,EAE9B,MAAM,QAAQ,YACZ,CAAC,OAAmB;AAAA,IAClB,IAAI;AAAA,MACF,GAAG;AAAA,MACH,OAAO,GAAG;AAAA,MACV,SAAS,EAAE,MAAM,SAAS,SAAU,EAAY,QAAQ,CAAC;AAAA;AAAA,KAG7D,CAAC,CACH;AAAA,EAEA,MAAM,MAAM,YACV,CAAC,MAAc,cAA4B,CAAC,GAAG,aAAyB,CAAC,MAAM;AAAA,IAC7E,MAAM,SAAyB,YAAY,IAAI,CAAC,OAAO,EAAE,MAAM,SAAS,QAAQ,EAAE,MAAM,UAAU,YAAY,EAAE,WAAW,MAAM,EAAE,KAAK,EAAE,EAAE;AAAA,IAC5I,IAAI,OAAO,UAAU,CAAC,MAAM,aAAa,SAAS,aAAa,GAAG;AAAA,MAChE,SAAS,EAAE,MAAM,SAAS,SAAS,2EAA2E,CAAC;AAAA,MAC/G;AAAA,IACF;AAAA,IACA,MAAM,MAAM;AAAA,MACV,MAAM,YAAY,aAAa;AAAA,MAC/B,SAAS,EAAE,MAAM,cAAc,MAAM,IAAI,IAAI,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC;AAAA,MAC3E,SAAS,EAAE,MAAM,eAAe,WAAW,IAAI,KAAK,IAAI,EAAE,CAAC;AAAA,MAC3D,OAAO,IAAI,MAAM,KAAM,YAAY,EAAE,UAAU,IAAI,CAAC,MAAO,QAAQ,QAAQ,eAAgB,OAAO,SAAS,EAAE,OAAO,IAAI,CAAC,EAAG,CAAC;AAAA,KAC9H;AAAA,KAEH,CAAC,QAAQ,OAAO,QAAQ,KAAK,MAAM,YAAY,CACjD;AAAA,EAEA,MAAM,OAAO,YAAY,MAAM,MAAM,MAAM,OAAO,UAAU,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC;AAAA,EAC/E,MAAM,QAAQ,YACZ,CAAC,OACC,MAAM,MAAM;AAAA,IACV,OAAO,kBAAkB,IAAI,OAAO;AAAA,IACpC,SAAS,EAAE,MAAM,uBAAuB,GAAG,CAAC;AAAA,GAC7C,GACH,CAAC,QAAQ,KAAK,CAChB;AAAA,EACA,MAAM,OAAO,YACX,CAAC,IAAY,WACX,MAAM,MAAM;AAAA,IACV,OAAO,kBAAkB,IAAI,QAAQ,MAAM;AAAA,IAC3C,SAAS,EAAE,MAAM,uBAAuB,GAAG,CAAC;AAAA,GAC7C,GACH,CAAC,QAAQ,KAAK,CAChB;AAAA,EACA,MAAM,SAAS,YACb,CAAC,IAAY,YACX,MAAM,MAAM;AAAA,IACV,OAAO,gBAAgB,IAAI,OAAO;AAAA,IAClC,SAAS,EAAE,MAAM,qBAAqB,GAAG,CAAC;AAAA,GAC3C,GACH,CAAC,QAAQ,KAAK,CAChB;AAAA,EACA,MAAM,UAAU,YACd,CAAC,UAA4B,WAC3B,MAAM,MAAM;AAAA,IACV,MAAM,YAAY,aAAa;AAAA,IAC/B,IAAI,CAAC;AAAA,MAAW,MAAM,IAAI,MAAM,uBAAuB;AAAA,IACvD,SAAS,EAAE,MAAM,eAAe,WAAW,IAAI,KAAK,IAAI,EAAE,CAAC;AAAA,IAC3D,OAAO,gBAAgB,WAAW,UAAU,MAAM;AAAA,GACnD,GACH,CAAC,QAAQ,KAAK,CAChB;AAAA,EACA,MAAM,kBAAkB,YACtB,CAAC,OAAe;AAAA,IACd,MAAM,IAAI,MAAM,mBAAmB,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE;AAAA,IAC1D,IAAI;AAAA,MAAG,QAAQ,QAAQ,IAAI,QAAQ,CAAC,CAAC;AAAA,IACrC,MAAM,MAAM;AAAA,MACV,OAAO,kBAAkB,IAAI,OAAO;AAAA,MACpC,SAAS,EAAE,MAAM,uBAAuB,GAAG,CAAC;AAAA,KAC7C;AAAA,KAEH,CAAC,QAAQ,OAAO,MAAM,kBAAkB,CAC1C;AAAA,EACA,MAAM,oBAAoB,YAAY,CAAC,aAAqB,YAAY,QAAQ,SAAS,QAAQ,GAAG,CAAC,CAAC;AAAA,EACtG,MAAM,oBAAoB,YAAY,MAAM,QAAQ,QAAQ,MAAM,GAAG,CAAC,CAAC;AAAA,EACvE,MAAM,QAAQ,YACZ,CAAC,SACC,MAAM,MAAM;AAAA,IACV,MAAM,YAAY,aAAa;AAAA,IAC/B,IAAI,CAAC;AAAA,MAAW,MAAM,IAAI,MAAM,qBAAqB;AAAA,IACrD,OAAO,SAAS,WAAW,IAAI;AAAA,IAC/B,SAAS,EAAE,MAAM,cAAc,MAAM,IAAI,IAAI,KAAK,EAAE,YAAY,EAAE,CAAC;AAAA,GACpE,GACH,CAAC,QAAQ,KAAK,CAChB;AAAA,EACA,MAAM,YAAY,MAAM,kBAAkB,aAAa,MAAM,mBAAmB,SAAS,eAAe;AAAA,EACxG,MAAM,cAAc,YAClB,OAAO,cAAsB;AAAA,IAC3B,aAAa,UAAU;AAAA,IACvB,SAAS,EAAE,MAAM,QAAQ,CAAC;AAAA,IAC1B,IAAI;AAAA,MACF,MAAM,OAAO,YAAY,SAAS;AAAA,MAClC,OAAO,GAAG;AAAA,MACV,SAAS,EAAE,MAAM,SAAS,SAAU,EAAY,QAAQ,CAAC;AAAA;AAAA,KAG7D,CAAC,MAAM,CACT;AAAA,EACA,MAAM,kBAAkB,YAAY,YAAY;AAAA,IAC9C,IAAI;AAAA,MACF,MAAM,OAAO,aAAa;AAAA,MAC1B,OAAO,GAAG;AAAA,MACV,SAAS,EAAE,MAAM,SAAS,SAAU,EAAY,QAAQ,CAAC;AAAA;AAAA,KAE1D,CAAC,MAAM,CAAC;AAAA,EACX,MAAM,gBAAgB,YAAY,YAAY;AAAA,IAC5C,IAAI;AAAA,MACF,MAAM,OAAO,WAAW;AAAA,MACxB,OAAO,GAAG;AAAA,MACV,SAAS,EAAE,MAAM,SAAS,SAAU,EAAY,QAAQ,CAAC;AAAA;AAAA,KAE1D,CAAC,MAAM,CAAC;AAAA,EACX,MAAM,aAAa,YAAY,MAAM;AAAA,IACnC,aAAa,UAAU;AAAA,IACvB,SAAS,EAAE,MAAM,QAAQ,CAAC;AAAA,KACzB,CAAC,CAAC;AAAA,EAEL,OAAO,EAAE,OAAO,QAAQ,KAAK,MAAM,OAAO,MAAM,QAAQ,SAAS,iBAAiB,mBAAmB,mBAAmB,OAAO,WAAW,aAAa,iBAAiB,eAAe,WAAW;AAAA;;AE5NpM,sBAAS,sBAAW;;;ACApB;AACA;;;ACDA;AACA;AAEO,SAAS,EAAE,IAAI,QAA8B;AAAA,EAClD,OAAO,QAAQ,KAAK,MAAM,CAAC;AAAA;;;;ADA7B,IAAM,UAAU,CAAC,SAAS;AAMnB,SAAS,gBAAgB,GAAG,MAAM,MAAM,aAAmE;AAAA,EAChH,uBACE,KA2BE,OA3BF;AAAA,IAAK,WAAW,GAAG,6EAA6E,SAAS;AAAA,IAAG,aAAW,OAAO,SAAS;AAAA,IAAvI,UA2BE;AAAA,sBA1BA,IAoBE,UApBF;AAAA,QACE,eAAe;AAAA,QACf,UAAQ;AAAA,QACR,YAAY;AAAA,UACV,GAAG,GAAG,MAAM,OAAO,4BAAY,IAAC,KAAD;AAAA,eAAO;AAAA,YAAO,QAAO;AAAA,YAAS,KAAI;AAAA,YAAsB,WAAU;AAAA,WAAyC;AAAA,UAC1I,KAAK,GAAG,MAAM,OAAO,4BAAY,IAAC,OAAD;AAAA,eAAS;AAAA,YAAO,WAAU;AAAA,WAAgG;AAAA,UAC3J,MAAM,GAAG,MAAM,IAAI,WAAW,QAAQ,YACpC,sBAAM,IAAC,QAAD;AAAA,eAAU;AAAA,YAAO,WAAW;AAAA,WAAK,oBAAK,IAAC,QAAD;AAAA,eAAU;AAAA,YAAO,WAAU;AAAA,WAAsD;AAAA,UAC/H,OAAO,GAAG,MAAM,OAAO,4BACrB,IAEE,OAFF;AAAA,YAAK,WAAU;AAAA,YAAf,0BACE,IAAC,SAAD;AAAA,iBAAW;AAAA,cAAO,WAAU;AAAA,aAAsC;AAAA,WAClE;AAAA,UAEJ,IAAI,GAAG,MAAM,OAAO,4BAAY,IAAC,MAAD;AAAA,eAAQ;AAAA,YAAO,WAAU;AAAA,WAAgF;AAAA,UACzI,QAAQ,GAAG,MAAM,OAAO,4BAAY,IAAC,UAAD;AAAA,eAAY;AAAA,YAAO,WAAU;AAAA,WAAgC;AAAA,UACjG,YAAY,GAAG,MAAM,OAAO,4BAAY,IAAC,cAAD;AAAA,eAAgB;AAAA,YAAO,WAAU;AAAA,WAAsD;AAAA,UAC/H,IAAI,GAAG,MAAM,OAAO,4BAAY,IAAC,MAAD;AAAA,eAAQ;AAAA,YAAO,WAAU;AAAA,WAA2C;AAAA,QACtG;AAAA,QAjBF,UAmBG;AAAA,OACD;AAAA,MACD,wBACC,IAEE,QAFF;AAAA,QAAM,WAAU;AAAA,QAAW,eAAW;AAAA,QAAtC;AAAA,OAEE;AAAA;AAAA,GAEJ;AAAA;;;AEvCN;;AAKO,SAAS,aAAa,GAAG,OAAO,aAAwD;AAAA,EAC7F,IAAI,CAAC,MAAM;AAAA,IAAQ,OAAO;AAAA,EAC1B,MAAM,OAAO,MAAM,OAAO,CAAC,MAAM,EAAE,WAAW,WAAW,EAAE;AAAA,EAC3D,uBACE,MAeE,OAfF;AAAA,IAAK,WAAW,GAAG,+DAA+D,SAAS;AAAA,IAAG,cAAW;AAAA,IAAzG,UAeE;AAAA,sBAdA,MAKE,OALF;AAAA,QAAK,WAAU;AAAA,QAAf,UAKE;AAAA,0BAJA,KAAoC,QAApC;AAAA,YAAM,WAAU;AAAA,YAAhB;AAAA,WAAoC;AAAA,0BACpC,MAEE,QAFF;AAAA,YAAM,WAAU;AAAA,YAAhB,UAEE;AAAA,cADC;AAAA,cADH;AAAA,cACY,MAAM;AAAA;AAAA,WAChB;AAAA;AAAA,OACF;AAAA,sBACF,KAOE,MAPF;AAAA,QAAI,WAAU;AAAA,QAAd,UACG,MAAM,IAAI,CAAC,sBACV,MAGE,MAHF;AAAA,UAAe,WAAW,GAAG,0BAA0B,EAAE,WAAW,eAAe,oCAAoC;AAAA,UAAG,eAAa,EAAE;AAAA,UAAzI,UAGE;AAAA,YAFC,EAAE,WAAW,8BAAc,KAAC,OAAD;AAAA,cAAO,WAAU;AAAA,cAAuC,cAAW;AAAA,aAAY,IAAK,EAAE,WAAW,gCAAgB,KAAC,SAAD;AAAA,cAAS,WAAU;AAAA,cAAiD,cAAW;AAAA,aAAc,oBAAK,KAAC,QAAD;AAAA,cAAQ,WAAU;AAAA,cAAgD,cAAW;AAAA,aAAU;AAAA,4BACtU,KAAmB,QAAnB;AAAA,wBAAO,EAAE;AAAA,aAAU;AAAA;AAAA,WAFZ,EAAE,EAGT,CACH;AAAA,OACD;AAAA;AAAA,GACF;AAAA;;;ACxBN;AACA,+BAAsB,2CAA+B;;;;ACC9C,SAAS,UAAU,CAAC,MAAkD;AAAA,EAC3E,IAAI,QAAQ;AAAA,EACZ,IAAI,UAAU;AAAA,EACd,WAAW,QAAQ,KAAK,MAAM;AAAA,CAAI,GAAG;AAAA,IACnC,IAAI,KAAK,WAAW,KAAK,KAAK,KAAK,WAAW,KAAK;AAAA,MAAG;AAAA,IACtD,IAAI,KAAK,WAAW,GAAG;AAAA,MAAG,SAAS;AAAA,IAC9B,SAAI,KAAK,WAAW,GAAG;AAAA,MAAG,WAAW;AAAA,EAC5C;AAAA,EACA,OAAO,EAAE,OAAO,QAAQ;AAAA;AAInB,SAAS,QAAQ,GAAG,MAAM,aAAmD;AAAA,EAClF,MAAM,QAAQ,KAAK,MAAM;AAAA,CAAI;AAAA,EAC7B,uBACE,KAkBE,OAlBF;AAAA,IAAK,WAAW,GAAG,mGAAmG,SAAS;AAAA,IAAG,cAAW;AAAA,IAA7I,UACG,MAAM,IAAI,CAAC,MAAM,MAAM;AAAA,MACtB,MAAM,OAAO,KAAK,WAAW,KAAK,KAAK,KAAK,WAAW,KAAK,IAAI,SAAS,KAAK,WAAW,IAAI,IAAI,SAAS,KAAK,WAAW,GAAG,IAAI,QAAQ,KAAK,WAAW,GAAG,IAAI,QAAQ;AAAA,MACxK,uBACE,KAWE,OAXF;AAAA,QAEE,WAAW,GACT,uBACA,SAAS,SAAS,8BAClB,SAAS,SAAS,sCAClB,SAAS,UAAU,aACnB,SAAS,UAAU,uBACrB;AAAA,QARF,UAUG,QAAQ;AAAA,SATJ,CAUL;AAAA,KAEL;AAAA,GACD;AAAA;;;;AD1BC,SAAS,WAAW,CAAC,MAAc,OAAwC;AAAA,EAChF,MAAM,OAAO,IAAI,SAAmB;AAAA,IAClC,WAAW,KAAK,MAAM;AAAA,MACpB,MAAM,IAAI,MAAM;AAAA,MAChB,IAAI,OAAO,MAAM,YAAY,EAAE,KAAK;AAAA,QAAG,OAAO,EAAE,KAAK;AAAA,IACvD;AAAA,IACA,OAAO;AAAA;AAAA,EAET,QAAQ;AAAA,SACD;AAAA,MACH,OAAO,KAAK,SAAS;AAAA,SAClB;AAAA,SACA;AAAA,SACA;AAAA,SACA;AAAA,MACH,OAAO,KAAK,aAAa,MAAM;AAAA,SAC5B;AAAA,SACA;AAAA,MACH,OAAO,KAAK,SAAS;AAAA,SAClB;AAAA,SACA;AAAA,MACH,OAAO,KAAK,eAAe,QAAQ;AAAA,SAChC;AAAA,MACH,OAAO,KAAK,KAAK;AAAA,SACd;AAAA,MACH,OAAO,KAAK,OAAO;AAAA,SAChB;AAAA,MACH,OAAO,KAAK,QAAQ,OAAO;AAAA;AAAA,MAE3B,OAAO,KAAK,WAAW,QAAQ,aAAa,WAAW,SAAS,eAAe,MAAM,KAAK;AAAA;AAAA;AAIhG,SAAS,IAAI,CAAC,GAAW,IAAI,KAAa;AAAA,EACxC,OAAO,EAAE,SAAS,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,OAAM;AAAA;AAGjD,IAAM,aAAa;AAGZ,SAAS,QAAQ,GAAG,MAAM,cAAc,OAAO,cAA8F;AAAA,EAClJ,OAAO,MAAM,WAAW,SAAS,WAAW;AAAA,EAC5C,MAAM,UAAU,YAAY,KAAK,MAAM,KAAK,KAAK;AAAA,EACjD,MAAM,IAAI,KAAK;AAAA,EACf,MAAM,SAAS,CAAC,IAAI,YAAY,EAAE,UAAU,UAAU;AAAA,EACtD,MAAM,SAAS,GAAG,OAAO,WAAW,EAAE,IAAI,IAAI;AAAA,EAC9C,MAAM,OAAO,OAAO,KAAK,MAAM,cAAc,WAAW,KAAK,MAAM,YAAY,OAAO,KAAK,MAAM,SAAS,WAAW,KAAK,MAAM,OAAO;AAAA,EACvI,MAAM,OAAO,GAAG,OAAO,WAAW,KAAK,SAAS,SAAS,WAAW;AAAA,EACpE,uBACE,MA6CE,OA7CF;AAAA,IAAK,WAAW,GAAG,2DAA2D,WAAW,WAAW,uBAAuB;AAAA,IAAG,aAAW,KAAK;AAAA,IAAM,eAAa;AAAA,IAAjK,UA6CE;AAAA,sBA5CA,MAkBE,UAlBF;AAAA,QACE,MAAK;AAAA,QACL,SAAS,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;AAAA,QAChC,iBAAe;AAAA,QACf,WAAU;AAAA,QAJZ,UAkBE;AAAA,0BAZA,KAAC,cAAD;AAAA,YAAc,WAAW,GAAG,+DAA+D,QAAQ,WAAW;AAAA,YAAG,eAAW;AAAA,WAAC;AAAA,0BAC7H,KAAC,MAAD;AAAA,YAAM,WAAU;AAAA,YAAyC,eAAW;AAAA,WAAC;AAAA,0BACrE,KAA2C,QAA3C;AAAA,YAAM,WAAU;AAAA,YAAhB,UAA+B,KAAK;AAAA,WAAO;AAAA,UAC1C,2BAAW,KAAyG,QAAzG;AAAA,YAAM,WAAU;AAAA,YAAhB,UAAyF,KAAK,OAAO;AAAA,WAAI;AAAA,UACpH,0BACC,MAEE,QAFF;AAAA,YAAM,WAAU;AAAA,YAAhB,UAEE;AAAA,8BADA,MAAgD,QAAhD;AAAA,gBAAM,WAAU;AAAA,gBAAhB,UAAgD;AAAA,kBAAhD;AAAA,kBAAiC,OAAO;AAAA;AAAA,eAAQ;AAAA,cADlD;AAAA,8BACwD,MAAqD,QAArD;AAAA,gBAAM,WAAU;AAAA,gBAAhB,UAAqD;AAAA,kBAArD;AAAA,kBAAoC,OAAO;AAAA;AAAA,eAAU;AAAA;AAAA,WAC3G;AAAA,UAEH,WAAW,6BAAa,KAAC,UAAD;AAAA,YAAS,WAAU;AAAA,YAAsD,cAAW;AAAA,WAAU;AAAA,UACtH,WAAW,wBAAQ,KAAC,QAAD;AAAA,YAAO,WAAU;AAAA,YAAgC,cAAW;AAAA,WAAK;AAAA,UACpF,WAAW,2BAAW,KAAC,aAAD;AAAA,YAAa,WAAU;AAAA,YAAoC,cAAW;AAAA,WAAQ;AAAA;AAAA,OACrG;AAAA,MACD,wBACC,MAsBE,OAtBF;AAAA,QAAK,WAAU;AAAA,QAAf,UAsBE;AAAA,0BArBA,KAAuF,OAAvF;AAAA,YAAK,WAAU;AAAA,YAAf;AAAA,WAAuF;AAAA,0BACvF,KAAoM,OAApM;AAAA,YAAK,WAAU;AAAA,YAAf,UAAkG,WAAW,OAAO,KAAK,KAAK,KAAK,EAAE,WAAW,IAAI,UAAU,KAAK,UAAU,KAAK,OAAO,MAAM,CAAC;AAAA,WAAI;AAAA,UACnM,qBACC;AAAA,sBAgBE;AAAA,8BAfA,MAOE,OAPF;AAAA,gBAAK,WAAU;AAAA,gBAAf,UAOE;AAAA,kCANA,KAAwC,QAAxC;AAAA,8BAAO,EAAE,UAAU,UAAU;AAAA,mBAAW;AAAA,kBACvC,QAAQ,8BACP,KAEE,UAFF;AAAA,oBAAQ,MAAK;AAAA,oBAAS,SAAS,MAAM,WAAW,IAAI;AAAA,oBAAG,WAAU;AAAA,oBAAjE;AAAA,mBAEE;AAAA;AAAA,eAEJ;AAAA,cACD,EAAE,uBACD,KAAC,UAAD;AAAA,gBAAU,MAAM,EAAE;AAAA,eAAM,oBAExB,KAEE,OAFF;AAAA,gBAAK,WAAW,GAAG,0FAA0F,EAAE,WAAW,kBAAkB;AAAA,gBAA5I,UACG,EAAE,QAAQ,SAAS,aAAa,GAAG,EAAE,QAAQ,MAAM,GAAG,UAAU;AAAA,KAAQ,EAAE,QAAQ,SAAS,gCAAgC,EAAE,WAAW;AAAA,eACzI;AAAA;AAAA,WAEJ;AAAA;AAAA,OAEJ;AAAA;AAAA,GAEJ;AAAA;;;;AJnFC,SAAS,aAAa,GAAG,MAAM,cAA6E;AAAA,EACjH,MAAM,KAAK;AAAA,EACX,QAAQ,GAAG;AAAA,SACJ;AAAA,MACH,uBACE,KAME,OANF;AAAA,QAAK,WAAW,GAAG,QAAQ,GAAG,OAAO,SAAS,UAAU,gBAAgB,eAAe;AAAA,QAAG,eAAa,GAAG,OAAO;AAAA,QAAjH,0BACE,MAIE,OAJF;AAAA,UAAK,WAAW,GAAG,2FAA2F,GAAG,OAAO,SAAS,UAAU,qDAAqD,4CAA4C;AAAA,UAA5O,UAIE;AAAA,YAHC,GAAG,OAAO,SAAS,2BAAW,KAAmG,OAAnG;AAAA,cAAK,WAAU;AAAA,cAAf,UAAyD,GAAG,OAAO,eAAe,GAAG,OAAO;AAAA,aAAO;AAAA,YACjI,GAAG,QAAQ,KAAK,CAAC,MAAM,EAAE,SAAS,OAAO,qBAAK,KAAsD,OAAtD;AAAA,cAAK,WAAU;AAAA,cAAf;AAAA,aAAsD;AAAA,YACpG,GAAG;AAAA;AAAA,SACJ;AAAA,OACF;AAAA,SAED;AAAA,MACH,uBAAO,KAAC,kBAAD;AAAA,QAAkB,MAAM,GAAG;AAAA,QAAM,MAAM,GAAG;AAAA,OAAM;AAAA,SACpD;AAAA,MACH,uBAAO,KAAC,UAAD;AAAA,QAAU,MAAM;AAAA,QAAI;AAAA,OAAwB;AAAA,SAChD;AAAA,MACH,uBAAO,KAAC,eAAD;AAAA,QAAe,OAAO,GAAG;AAAA,OAAO;AAAA,SACpC,UAAU;AAAA,MACb,QAAQ,OAAO,SAAS,YAAY,GAAG,MAAM;AAAA,MAC7C,uBACE,MAME,OANF;AAAA,QAAK,WAAW,GAAG,6DAA6D,SAAS,SAAS,kBAAkB;AAAA,QAAG,gBAAc,GAAG,OAAO;AAAA,QAA/I,UAME;AAAA,0BALA,KAAe,QAAf;AAAA,sBAAO;AAAA,WAAQ;AAAA,0BACf,KAAQ,QAAR;AAAA;AAAA,WAAQ;AAAA,0BACR,MAEE,QAFF;AAAA,YAAM,WAAU;AAAA,YAAhB,UAEE;AAAA,cADC,GAAG,OAAO;AAAA,cADb;AAAA,cAC4B,GAAG,OAAO,aAAa,IAAI,KAAK;AAAA,cAD5D;AAAA,cACmE,aAAa,GAAG,OAAO,KAAK;AAAA;AAAA,WAC7F;AAAA;AAAA,OACF;AAAA,IAEN;AAAA,SACK;AAAA,MACH,uBACE,KAEE,OAFF;AAAA,QAAK,MAAK;AAAA,QAAQ,WAAU;AAAA,QAA5B,UACG,GAAG;AAAA,OACJ;AAAA,SAED;AAAA,MACH,uBACE,MAEE,OAFF;AAAA,QAAK,WAAU;AAAA,QAAf,UAEE;AAAA,UAFF;AAAA,UACuB,GAAG;AAAA,UAD1B;AAAA;AAAA,OAEE;AAAA;AAAA;AAOH,SAAS,UAAU,GAAG,OAAO,aAAa,MAAM,YAAY,QAAQ,YAAY,aAA8B;AAAA,EACnH,MAAM,MAAM,QAAuB,IAAI;AAAA,EACvC,MAAM,SAAS,QAAO,IAAI;AAAA,EAC1B,WAAU,MAAM;AAAA,IACd,MAAM,KAAK,IAAI;AAAA,IACf,IAAI,CAAC;AAAA,MAAI;AAAA,IACT,MAAM,WAAW,MAAM;AAAA,MACrB,OAAO,UAAU,GAAG,eAAe,GAAG,YAAY,GAAG,eAAe;AAAA;AAAA,IAEtE,GAAG,iBAAiB,UAAU,UAAU,EAAE,SAAS,KAAK,CAAC;AAAA,IACzD,OAAO,MAAM,GAAG,oBAAoB,UAAU,QAAQ;AAAA,KACrD,CAAC,CAAC;AAAA,EACL,WAAU,MAAM;AAAA,IACd,MAAM,KAAK,IAAI;AAAA,IACf,IAAI,MAAM,cAAc,OAAO;AAAA,MAAS,GAAG,YAAY,GAAG;AAAA,GAC3D;AAAA,EACD,uBACE,KAQE,OARF;AAAA,IAAK;AAAA,IAAU,WAAW,GAAG,kDAAkD,SAAS;AAAA,IAAG,MAAK;AAAA,IAAhG,0BACE,MAME,OANF;AAAA,MAAK,WAAU;AAAA,MAAf,UAME;AAAA,QALC,MAAM,WAAW,KAAK;AAAA,QACtB,MAAM,IAAI,CAAC,uBACV,KAAC,eAAD;AAAA,UAA2B,MAAM;AAAA,UAAI;AAAA,WAAjB,GAAG,EAAsC,CAC9D;AAAA,QACA;AAAA;AAAA,KACD;AAAA,GACF;AAAA;;AM7FN,sBAAS,wBAAW;AACpB;;AAIO,SAAS,iBAAiB,CAAC,GAA8B;AAAA,EAC9D,MAAM,IAAI,EAAE,MAAM,WAAW,EAAE,MAAM,aAAa,EAAE,MAAM,QAAQ,EAAE,MAAM;AAAA,EAC1E,IAAI,OAAO,MAAM;AAAA,IAAU,OAAO;AAAA,EAClC,MAAM,IAAI,KAAK,UAAU,EAAE,KAAK;AAAA,EAChC,OAAO,EAAE,SAAS,MAAM,GAAG,EAAE,MAAM,GAAG,GAAG,OAAM;AAAA;AAe1C,SAAS,gBAAgB,GAAG,SAAS,SAAS,QAAQ,gBAAgB,UAAU,OAAO,aAAoC;AAAA,EAChI,OAAO,YAAY,iBAAiB,UAAS,KAAK;AAAA,EAClD,OAAO,QAAQ,aAAa,UAAS,EAAE;AAAA,EACvC,WAAU,MAAM;AAAA,IACd,IAAI,CAAC;AAAA,MAAS;AAAA,IACd,MAAM,MAAM,CAAC,MAAqB;AAAA,MAChC,MAAM,IAAI,EAAE;AAAA,MACZ,IAAI,MAAM,EAAE,YAAY,cAAc,EAAE,YAAY,WAAW,EAAE;AAAA,QAAoB;AAAA,MACrF,IAAI,EAAE,QAAQ;AAAA,QAAK,QAAQ,QAAQ,EAAE;AAAA,MAChC,SAAI,EAAE,QAAQ;AAAA,QAAK,OAAO,QAAQ,EAAE;AAAA;AAAA,IAE3C,SAAS,iBAAiB,WAAW,GAAG;AAAA,IACxC,OAAO,MAAM,SAAS,oBAAoB,WAAW,GAAG;AAAA,KACvD,CAAC,SAAS,QAAQ,IAAI,SAAS,MAAM,CAAC;AAAA,EACzC,MAAM,MAAM,CAAC,MAAe,0BAAU,KAAgE,OAAhE;AAAA,IAAK,WAAU;AAAA,IAAf,UAA4D;AAAA,GAAI,IAAO;AAAA,EAC7G,uBACE,MA8BE,OA9BF;AAAA,IAAK,MAAK;AAAA,IAAc,mBAAiB,QAAQ,QAAQ;AAAA,IAAM,WAAW,GAAG,yEAAyE,SAAS;AAAA,IAA/J,UA8BE;AAAA,sBA7BA,MAGE,OAHF;AAAA,QAAK,IAAI,QAAQ,QAAQ;AAAA,QAAM,WAAU;AAAA,QAAzC,UAGE;AAAA,0BAFA,KAAC,aAAD;AAAA,YAAa,WAAU;AAAA,YAAuB,eAAW;AAAA,WAAC;AAAA,UAD5D;AAAA,0BAEM,KAAgD,QAAhD;AAAA,YAAM,WAAU;AAAA,YAAhB,UAA6B,QAAQ;AAAA,WAAW;AAAA,UAFtD;AAAA;AAAA,OAGE;AAAA,OACA,QAAQ,gBAAgB,QAAQ,2BAAW,KAAkG,OAAlG;AAAA,QAAK,WAAU;AAAA,QAAf,UAAyD,QAAQ,gBAAgB,QAAQ;AAAA,OAAS;AAAA,sBAC/I,KAA2J,OAA3J;AAAA,QAAK,WAAU;AAAA,QAAf,UAA8H,kBAAkB,OAAO;AAAA,OAAI;AAAA,sBAC3J,MAYE,OAZF;AAAA,QAAK,WAAU;AAAA,QAAf,UAYE;AAAA,0BAXA,MAEE,UAFF;AAAA,YAAQ,MAAK;AAAA,YAAS,SAAS,MAAM,QAAQ,QAAQ,EAAE;AAAA,YAAG,WAAU;AAAA,YAApE,UAEE;AAAA,cAFF;AAAA,cACS,IAAI,GAAG;AAAA;AAAA,WACd;AAAA,UACD,kCACC,KAEE,UAFF;AAAA,YAAQ,MAAK;AAAA,YAAS,SAAS,MAAM,eAAe,QAAQ,EAAE;AAAA,YAAG,WAAU;AAAA,YAA3E;AAAA,WAEE;AAAA,0BAEJ,MAEE,UAFF;AAAA,YAAQ,MAAK;AAAA,YAAS,SAAS,MAAO,aAAa,OAAO,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,OAAO,QAAQ,EAAE;AAAA,YAAI,WAAU;AAAA,YAAnI,UAEE;AAAA,cAFF;AAAA,cACQ,IAAI,GAAG;AAAA;AAAA,WACb;AAAA;AAAA,OACF;AAAA,MACD,6BACC,MAGE,SAHF;AAAA,QAAO,WAAU;AAAA,QAAjB,UAGE;AAAA,0BAFA,KAA0G,QAA1G;AAAA,YAAM,WAAU;AAAA,YAAhB;AAAA,WAA0G;AAAA,0BAC1G,KAAC,SAAD;AAAA,YAAO,OAAO;AAAA,YAAQ,UAAU,CAAC,MAAM,UAAU,EAAE,OAAO,KAAK;AAAA,YAAG,WAAU;AAAA,WAAuF;AAAA;AAAA,OACnK,oBAEF,KAEE,UAFF;AAAA,QAAQ,MAAK;AAAA,QAAS,SAAS,MAAM,cAAc,IAAI;AAAA,QAAG,WAAU;AAAA,QAApE;AAAA,OAEE;AAAA;AAAA,GAEJ;AAAA;;ACtEN,wBAAS;;AAKF,SAAS,cAAc,GAAG,UAAU,UAAU,aAAiI;AAAA,EACpL,uBACE,MAeE,OAfF;AAAA,IAAK,MAAK;AAAA,IAAc,cAAW;AAAA,IAAkB,WAAW,GAAG,uEAAuE,SAAS;AAAA,IAAnJ,UAeE;AAAA,sBAdA,MAGE,OAHF;AAAA,QAAK,WAAU;AAAA,QAAf,UAGE;AAAA,0BAFA,KAAC,cAAD;AAAA,YAAa,WAAU;AAAA,YAAuB,eAAW;AAAA,WAAC;AAAA,UAD5D;AAAA;AAAA,OAGE;AAAA,sBACF,KAA2E,OAA3E;AAAA,QAAK,WAAU;AAAA,QAAf,UAAyD,SAAS;AAAA,OAAS;AAAA,sBAC3E,KAAiJ,OAAjJ;AAAA,QAAK,WAAU;AAAA,QAAf,UAA8H,SAAS;AAAA,OAAU;AAAA,sBACjJ,MAOE,OAPF;AAAA,QAAK,WAAU;AAAA,QAAf,UAOE;AAAA,0BANA,KAEE,UAFF;AAAA,YAAQ,MAAK;AAAA,YAAS,SAAS,MAAM,SAAS,OAAO;AAAA,YAAG,WAAU;AAAA,YAAlE;AAAA,WAEE;AAAA,0BACF,KAEE,UAFF;AAAA,YAAQ,MAAK;AAAA,YAAS,SAAS,MAAM,SAAS,MAAM;AAAA,YAAG,WAAU;AAAA,YAAjE;AAAA,WAEE;AAAA;AAAA,OACF;AAAA;AAAA,GACF;AAAA;;ACtBN,qBAAS;AACT;;AAUO,SAAS,UAAU,CAAC,WAAyC;AAAA,EAClE,OAAO,EAAE,UAAU,UAAU,IAAI,MAAM,CAAC,CAAC,GAAG,OAAO,UAAU,IAAI,MAAM,EAAE,EAAE;AAAA;AAItE,SAAS,YAAY,CAAC,WAA0B,OAAsB,WAAW,OAAmB;AAAA,EACzG,IAAI;AAAA,IAAU,OAAO,EAAE,UAAU,MAAM,SAAS,CAAC,EAAE;AAAA,EACnD,OAAO;AAAA,IACL,UAAU;AAAA,IACV,SAAS,UAAU,IAAI,CAAC,GAAG,MAAM;AAAA,MAC/B,MAAM,SAAS,MAAM,SAAS,MAAM,CAAC;AAAA,MACrC,MAAM,QAAQ,MAAM,MAAM,MAAM,IAAI,KAAK;AAAA,MACzC,MAAM,UAAU,OAAO,SAAS,SAAS,OAAO,CAAC,IAAI,IAAI,CAAC;AAAA,MAC1D,OAAO,EAAE,UAAU,EAAE,UAAU,YAAa,OAAO,UAAU,OAAO,EAAE,KAAK,IAAI,CAAC,EAAG;AAAA,KACpF;AAAA,EACH;AAAA;AAGF,SAAS,IAAI,CAAC,GAAgB,GAAmB;AAAA,EAC/C,MAAM,KAAK,EAAE,UAAU,IAAI,KAAK;AAAA,EAChC,OAAO,KAAK,IAAI,IAAI;AAAA;AAOf,SAAS,YAAY,GAAG,SAAS,UAAU,WAAW,aAAqJ;AAAA,EAChN,MAAM,KAAK,QAAQ;AAAA,EACnB,OAAO,KAAK,UAAU,UAAS,CAAC;AAAA,EAChC,OAAO,OAAO,YAAY,UAAwB,MAAM,WAAW,EAAE,CAAC;AAAA,EACtE,MAAM,IAAI,GAAG;AAAA,EACb,IAAI,CAAC;AAAA,IAAG,OAAO;AAAA,EACf,MAAM,SAAS,MAAM,SAAS,QAAQ,CAAC;AAAA,EACvC,MAAM,SAAS,CAAC,UAAkB;AAAA,IAChC,SAAS,CAAC,MAAM;AAAA,MACd,MAAM,WAAW,EAAE,SAAS,MAAM;AAAA,MAClC,MAAM,MAAM,SAAS,QAAQ,CAAC;AAAA,MAC9B,SAAS,OAAO,EAAE,cAAe,IAAI,SAAS,KAAK,IAAI,IAAI,OAAO,CAAC,MAAM,MAAM,KAAK,IAAI,CAAC,GAAG,KAAK,KAAK,IAAK,IAAI,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK;AAAA,MACzI,OAAO,KAAK,GAAG,SAAS;AAAA,KACzB;AAAA;AAAA,EAEH,MAAM,UAAU,CAAC,MACf,SAAS,CAAC,MAAM;AAAA,IACd,MAAM,QAAQ,EAAE,MAAM,MAAM;AAAA,IAC5B,MAAM,OAAO;AAAA,IACb,OAAO,KAAK,GAAG,MAAM;AAAA,GACtB;AAAA,EACH,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,OAAO,MAAM,SAAS,IAAI,UAAU,KAAK,MAAM,MAAM,MAAM,MAAM,IAAI,KAAK,EAAE,SAAS,CAAC;AAAA,EAClH,MAAM,aAAa,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,MAAM,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,EACxE,uBACE,MAmDE,OAnDF;AAAA,IAAK,MAAK;AAAA,IAAS,cAAW;AAAA,IAA2B,WAAW,GAAG,gEAAgE,SAAS;AAAA,IAAhJ,UAmDE;AAAA,sBAlDA,MAME,OANF;AAAA,QAAK,WAAU;AAAA,QAAf,UAME;AAAA,0BALA,KAAC,YAAD;AAAA,YAAY,WAAU;AAAA,YAAoB,eAAW;AAAA,WAAC;AAAA,0BACtD,KAA0D,QAA1D;AAAA,YAAM,WAAU;AAAA,YAAhB;AAAA,WAA0D;AAAA,0BAC1D,KAEE,UAFF;AAAA,YAAQ,MAAK;AAAA,YAAS,SAAS,MAAM,UAAU,QAAQ,EAAE;AAAA,YAAG,cAAW;AAAA,YAAyB,WAAU;AAAA,YAA1G,0BACE,KAAC,GAAD;AAAA,cAAG,WAAU;AAAA,cAAU,eAAW;AAAA,aAAC;AAAA,WACnC;AAAA;AAAA,OACF;AAAA,MACD,GAAG,SAAS,qBACX,KAME,OANF;AAAA,QAAK,MAAK;AAAA,QAAU,WAAU;AAAA,QAA9B,UACG,GAAG,IAAI,CAAC,IAAI,sBACX,KAEE,UAFF;AAAA,UAAgB,MAAK;AAAA,UAAM,MAAK;AAAA,UAAS,iBAAe,MAAM;AAAA,UAAK,SAAS,MAAM,OAAO,CAAC;AAAA,UAAG,WAAW,GAAG,gDAAgD,MAAM,MAAM,uCAAuC,oDAAoD,SAAS,MAAM,MAAM,OAAO,qBAAqB;AAAA,UAAnT,UACG,KAAK,IAAI,CAAC;AAAA,WADA,CAEX,CACH;AAAA,OACD;AAAA,sBAEJ,MAiCE,OAjCF;AAAA,QAAK,WAAU;AAAA,QAAf,UAiCE;AAAA,0BAhCA,KAAyC,KAAzC;AAAA,YAAG,WAAU;AAAA,YAAb,UAA4B,EAAE;AAAA,WAAW;AAAA,WACvC,EAAE,WAAW,CAAC,GAAG,SAAS,qBAC1B,KAaE,OAbF;AAAA,YAAK,MAAM,EAAE,cAAc,UAAU;AAAA,YAAc,WAAU;AAAA,YAA7D,WACI,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC,MAAM;AAAA,cAC5B,MAAM,KAAK,OAAO,SAAS,EAAE,KAAK;AAAA,cAClC,uBACE,MAME,UANF;AAAA,gBAAsB,MAAK;AAAA,gBAAS,MAAM,EAAE,cAAc,aAAa;AAAA,gBAAS,gBAAc;AAAA,gBAAI,SAAS,MAAM,OAAO,EAAE,KAAK;AAAA,gBAAG,WAAW,GAAG,kGAAkG,KAAK,4BAA4B,eAAe;AAAA,gBAAlS,UAME;AAAA,kCALA,KAAC,QAAD;AAAA,oBAAM,WAAW,GAAG,gCAAgC,EAAE,cAAc,YAAY,gBAAgB,KAAK,8BAA8B,yBAAyB;AAAA,oBAAG,eAAW;AAAA,mBAAC;AAAA,kCAC3K,MAGE,QAHF;AAAA,oBAAM,WAAU;AAAA,oBAAhB,UAGE;AAAA,sCAFA,KAA+C,QAA/C;AAAA,wBAAM,WAAU;AAAA,wBAAhB,UAAqC,EAAE;AAAA,uBAAQ;AAAA,sBAC9C,EAAE,+BAAe,KAA+D,QAA/D;AAAA,wBAAM,WAAU;AAAA,wBAAhB,UAA+C,EAAE;AAAA,uBAAc;AAAA;AAAA,mBACjF;AAAA;AAAA,iBALS,EAAE,KAMb;AAAA,aAEL;AAAA,WACD;AAAA,UAEH,6BAAa,KAA2H,OAA3H;AAAA,YAAK,WAAU;AAAA,YAAf,UAA+G;AAAA,WAAY;AAAA,0BACzI,MAGE,SAHF;AAAA,YAAO,WAAU;AAAA,YAAjB,UAGE;AAAA,8BAFA,KAAqI,QAArI;AAAA,gBAAM,WAAU;AAAA,gBAAhB,WAAiE,EAAE,WAAW,CAAC,GAAG,SAAS,0BAA0B;AAAA,eAAgB;AAAA,8BACrI,KAAC,YAAD;AAAA,gBAAU,OAAO,MAAM,MAAM,QAAQ;AAAA,gBAAI,UAAU,CAAC,MAAM,QAAQ,EAAE,OAAO,KAAK;AAAA,gBAAG,MAAM;AAAA,gBAAG,WAAU;AAAA,eAAuJ;AAAA;AAAA,WAC7P;AAAA,0BACF,MASE,OATF;AAAA,YAAK,WAAU;AAAA,YAAf,UASE;AAAA,cARC,MAAM,GAAG,SAAS,oBACjB,KAEE,UAFF;AAAA,gBAAQ,MAAK;AAAA,gBAAS,SAAS,MAAM,OAAO,MAAM,CAAC;AAAA,gBAAG,WAAU;AAAA,gBAAhE;AAAA,eAEE,IACA;AAAA,8BACJ,KAEE,UAFF;AAAA,gBAAQ,MAAK;AAAA,gBAAS,SAAS,MAAM,SAAS,QAAQ,IAAI,aAAa,IAAI,KAAK,CAAC;AAAA,gBAAG,UAAU,CAAC,SAAS,KAAK,OAAO;AAAA,gBAAG,WAAU;AAAA,gBAAjI;AAAA,eAEE;AAAA;AAAA,WACF;AAAA;AAAA,OACF;AAAA;AAAA,GACF;AAAA;;ACjHN,sBAAS,wBAAW;AACpB,iCAAwB,mBAAO;;AAwBxB,SAAS,SAAS,GAAG,SAAS,WAAW,UAAU,WAAW,YAAY,YAAY,YAAY,QAAQ,WAAW,WAAW,MAAM,KAAK,OAAuB;AAAA,EACvK,SAAS,QAAQ,UAAS,CAAC;AAAA,EAC3B,WAAU,MAAM;AAAA,IACd,IAAI,CAAC;AAAA,MAAS;AAAA,IACd,MAAM,IAAI,YAAY,MAAM,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI;AAAA,IACpD,OAAO,MAAM,cAAc,CAAC;AAAA,KAC3B,CAAC,OAAO,CAAC;AAAA,EACZ,IAAI,cAAc,eAAe,aAAa;AAAA,IAC5C,uBACE,MAGE,OAHF;AAAA,MAAK,WAAW,GAAG,iFAAiF,SAAS;AAAA,MAAG,MAAK;AAAA,MAArH,UAGE;AAAA,wBAFA,KAAC,UAAD;AAAA,UAAS,WAAU;AAAA,UAA2B,eAAW;AAAA,SAAC;AAAA,QACzD,eAAe,WAAW,iBAAiB,eAAe,iBAAiB,kBAAiB;AAAA;AAAA,KAC7F;AAAA,EAEN;AAAA,EACA,IAAI,SAAS;AAAA,IACX,MAAM,SAAQ,cAAc,eAAe,8BAA8B,cAAc,aAAa,4BAA6B,YAAY;AAAA,IAC7I,uBACE,MAgBE,OAhBF;AAAA,MAAK,WAAW,GAAG,kFAAkF,SAAS;AAAA,MAA9G,UAgBE;AAAA,wBAfA,KAAC,UAAD;AAAA,UAAS,WAAW,GAAG,4BAA4B,YAAY,iBAAiB,aAAa;AAAA,UAAG,eAAW;AAAA,SAAC;AAAA,wBAE5G,KAEE,QAFF;AAAA,UAAM,MAAK;AAAA,UAAS,aAAU;AAAA,UAA9B,UACG;AAAA,SACD;AAAA,QACD,cAAc,6BACb,MAEE,QAFF;AAAA,UAAM,WAAU;AAAA,UAAyB,eAAW;AAAA,UAApD,UAEE;AAAA,YAFF;AAAA,YACI,aAAa,IAAI,IAAI,SAAS;AAAA;AAAA,SAChC;AAAA,QAEH,0BACC,MAEE,UAFF;AAAA,UAAQ,MAAK;AAAA,UAAS,SAAS;AAAA,UAAQ,WAAU;AAAA,UAA0E,cAAW;AAAA,UAAtI,UAEE;AAAA,4BADA,KAAC,QAAD;AAAA,cAAQ,WAAU;AAAA,cAAc,eAAW;AAAA,aAAC;AAAA,YAD9C;AAAA;AAAA,SAEE;AAAA;AAAA,KAEJ;AAAA,EAEN;AAAA,EACA,IAAI,CAAC;AAAA,IAAY,OAAO;AAAA,EACxB,QAAQ,OAAO,SAAS,YAAY,UAAU;AAAA,EAC9C,MAAM,gBAAgB,WAAW,YAAY;AAAA,EAC7C,uBACE,MAYE,OAZF;AAAA,IAAK,WAAW,GAAG,qEAAqE,SAAS;AAAA,IAAG,MAAK;AAAA,IAAS,gBAAc,WAAW;AAAA,IAA3I,UAYE;AAAA,MAXC,SAAS,uBAAO,KAAC,QAAD;AAAA,QAAO,WAAU;AAAA,QAA2B,eAAW;AAAA,OAAC,IAAK,SAAS,wBAAQ,KAAC,eAAD;AAAA,QAAe,WAAU;AAAA,QAA+B,eAAW;AAAA,OAAC,oBAAK,KAAC,eAAD;AAAA,QAAe,WAAW,GAAG,eAAe,SAAS,SAAS,iBAAiB,uBAAuB;AAAA,QAAG,eAAW;AAAA,OAAC;AAAA,sBAC7R,KAAqL,QAArL;AAAA,QAAM,WAAW,GAAG,SAAS,QAAQ,gBAAgB,SAAS,SAAS,oBAAoB,SAAS,UAAU,gBAAgB,SAAS,WAAW,uBAAuB;AAAA,QAAzK,UAA6K;AAAA,OAAQ;AAAA,sBACrL,KAA0C,QAA1C;AAAA,QAAM,WAAU;AAAA,QAAhB;AAAA,OAA0C;AAAA,sBAC1C,MAEE,QAFF;AAAA,QAAM,WAAU;AAAA,QAAhB,UAEE;AAAA,UADC,WAAW;AAAA,UADd;AAAA,UAC6B,WAAW,aAAa,IAAI,KAAK;AAAA,UAD9D;AAAA,UACqE,aAAa,cAAc,WAAW,KAAK;AAAA;AAAA,OAC9G;AAAA,MACD,iBAAiB,WAAW,mBAAmB,6BAC9C,KAEE,OAFF;AAAA,QAAK,WAAU;AAAA,QAAf,0BACE,KAAC,gBAAD;AAAA,UAAgB,UAAU,WAAW;AAAA,UAAiB,UAAU;AAAA,SAAW;AAAA,OAC3E;AAAA;AAAA,GAEJ;AAAA;;AC9EN;;AAQO,SAAS,aAAa,CAAC,MAAoE;AAAA,EAChG,MAAM,SAAS,IAAI;AAAA,EACnB,WAAW,KAAK,MAAM;AAAA,IACpB,MAAM,MAAM,EAAE,eAAe;AAAA,IAC7B,IAAI,CAAC,OAAO,IAAI,GAAG;AAAA,MAAG,OAAO,IAAI,KAAK,CAAC,CAAC;AAAA,IACxC,OAAO,IAAI,GAAG,EAAG,KAAK,CAAC;AAAA,EACzB;AAAA,EACA,OAAO,CAAC,GAAG,OAAO,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,YAAW,EAAE,SAAS,YAAK,EAAE;AAAA;AAG3E,SAAS,IAAI,CAAC,KAAqB;AAAA,EACjC,MAAM,IAAI,KAAK,MAAM,GAAG;AAAA,EACxB,IAAI,OAAO,MAAM,CAAC;AAAA,IAAG,OAAO;AAAA,EAC5B,MAAM,IAAI,IAAI,KAAK,CAAC;AAAA,EACpB,OAAO,GAAG,EAAE,mBAAmB,WAAW,EAAE,OAAO,SAAS,KAAK,UAAU,CAAC,KAAK,EAAE,mBAAmB,WAAW,EAAE,MAAM,WAAW,QAAQ,UAAU,CAAC;AAAA;AAGlJ,SAAS,WAAW,GAAG,UAAU,YAAY,UAAU,OAAO,aAA6I;AAAA,EAChN,MAAM,SAAS,cAAc,QAAQ;AAAA,EACrC,uBACE,MAuCE,OAvCF;AAAA,IAAK,WAAW,GAAG,uBAAuB,SAAS;AAAA,IAAG,cAAW;AAAA,IAAjE,UAuCE;AAAA,MAtCC,yBACC,MAEE,UAFF;AAAA,QAAQ,MAAK;AAAA,QAAS,SAAS;AAAA,QAAO,WAAU;AAAA,QAAhD,UAEE;AAAA,0BADA,MAAC,MAAD;AAAA,YAAM,WAAU;AAAA,YAAU,eAAW;AAAA,WAAC;AAAA,UADxC;AAAA;AAAA,OAEE;AAAA,MAEH,SAAS,WAAW,qBAAK,MAAiE,KAAjE;AAAA,QAAG,WAAU;AAAA,QAAb;AAAA,OAAiE;AAAA,MAC1F,OAAO,IAAI,CAAC,sBACX,MA6BE,OA7BF;AAAA,QAAqB,WAAU;AAAA,QAA/B,UA6BE;AAAA,UA5BC,EAAE,2BAAW,MAAkG,OAAlG;AAAA,YAAK,WAAU;AAAA,YAAf,UAAsF,EAAE;AAAA,WAAU;AAAA,0BAChH,MA0BE,MA1BF;AAAA,sBACG,EAAE,KAAK,IAAI,CAAC,MAAM;AAAA,cACjB,MAAM,KAAK,EAAE,cAAc;AAAA,cAC3B,MAAM,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,sBAAsB,EAAE,UAAU,MAAM,GAAG,CAAC;AAAA,cACjF,uBACE,MAkBE,MAlBF;AAAA,0CACE,MAgBE,UAhBF;AAAA,kBAAQ,MAAK;AAAA,kBAAS,SAAS,MAAM,SAAS,EAAE,SAAS;AAAA,kBAAG,gBAAc,KAAK,SAAS;AAAA,kBAAW,WAAW,GAAG,uFAAuF,MAAM,UAAU;AAAA,kBAAG,eAAa,EAAE;AAAA,kBAA1O,UAgBE;AAAA,oCAfA,MASE,QATF;AAAA,sBAAM,WAAU;AAAA,sBAAhB,UASE;AAAA,wCAPA,MAAC,QAAD;AAAA,0BACE,WAAW,GAAG,iCAAiC,EAAE,OAAO,4BAA4B,EAAE,WAAW,WAAW,eAAe,EAAE,WAAW,cAAc,YAAY,EAAE,WAAW,UAAU,mBAAmB,wBAAwB;AAAA,0BACpO,cAAY,EAAE,OAAO,YAAY,EAAE;AAAA,0BACnC,aAAW,EAAE,OAAO,SAAS;AAAA,yBAC/B;AAAA,wCACA,MAA+D,QAA/D;AAAA,0BAAM,WAAU;AAAA,0BAAhB,UAAuD;AAAA,yBAAQ;AAAA,wBAC9D,EAAE,mCAAmB,MAAoH,QAApH;AAAA,0BAAM,WAAU;AAAA,0BAAhB;AAAA,yBAAoH;AAAA;AAAA,qBAC1I;AAAA,oCACF,MAIE,QAJF;AAAA,sBAAM,WAAU;AAAA,sBAAhB,UAIE;AAAA,wBAHC,EAAE,uBAAO,MAAoC,QAApC;AAAA,0BAAM,WAAU;AAAA,0BAAhB,UAA4B,EAAE;AAAA,yBAAM;AAAA,wBAC7C,EAAE,0BAAU,MAAuC,QAAvC;AAAA,0BAAM,WAAU;AAAA,0BAAhB,UAA4B,EAAE;AAAA,yBAAS;AAAA,wCACpD,MAAqE,QAArE;AAAA,0BAAM,WAAU;AAAA,0BAAhB,UAAiD,KAAK,EAAE,SAAS;AAAA,yBAAI;AAAA;AAAA,qBACrE;AAAA;AAAA,iBACF;AAAA,iBAjBK,EAAE,SAkBT;AAAA,aAEL;AAAA,WACD;AAAA;AAAA,SA5BM,EAAE,OA6BV,CACH;AAAA;AAAA,GACD;AAAA;;ACnEN,wBAAkE,2BAAa,sBAAW,qBAAQ;AAClG,uCAA6B,cAAQ;;AA8CrC,IAAM,SAAS,CAAC,aAAa,cAAc,aAAa,YAAY;AAEpE,eAAe,gBAAgB,CAAC,GAAsC;AAAA,EACpE,MAAM,MAAM,IAAI,WAAW,MAAM,EAAE,YAAY,CAAC;AAAA,EAChD,IAAI,MAAM;AAAA,EACV,SAAS,IAAI,EAAG,IAAI,IAAI,QAAQ,KAAK;AAAA,IAAQ,OAAO,OAAO,aAAa,GAAG,IAAI,SAAS,GAAG,IAAI,KAAM,CAAC;AAAA,EACtG,OAAO,EAAE,MAAM,EAAE,QAAQ,SAAS,WAAW,EAAE,MAAM,MAAM,KAAK,GAAG,GAAG,YAAY,IAAI,gBAAgB,CAAC,EAAE;AAAA;AAQ3G,SAAS,aAAa,GAAY;AAAA,EAChC,OAAO,OAAO,WAAW,eAAe,OAAO,OAAO,eAAe,cAAc,OAAO,WAAW,mBAAmB,EAAE;AAAA;AAGrH,SAAS,QAAQ,GAAG,UAAU,SAAS,QAAQ,SAAS,OAAO,UAAU,cAAc,eAAe,YAAY,UAAU,gBAAgB,cAAc,8BAA6B,YAAY,KAAK,aAAa,SAAS,qBAAqB,IAAI,OAAO,MAAM,WAAW,aAA4B;AAAA,EAChT,OAAO,KAAK,UAAU,UAAS,gBAAgB,EAAE;AAAA,EACjD,MAAM,OAAO,SAAS;AAAA,EACtB,MAAM,UAAU,CAAC,MAAc;AAAA,IAC7B,IAAI,UAAU;AAAA,MAAW,OAAO,CAAC;AAAA,IACjC,WAAW,CAAC;AAAA;AAAA,EAEd,OAAO,aAAa,kBAAkB,UAA+B,CAAC,CAAC;AAAA,EACvE,OAAO,MAAM,WAAW,UAAwB,IAAI;AAAA,EACpD,MAAM,MAAM,QAA4B,IAAI;AAAA,EAG5C,WAAU,MAAM;AAAA,IACd,MAAM,KAAK,IAAI;AAAA,IACf,IAAI,CAAC;AAAA,MAAI;AAAA,IACT,MAAM,MAAM,MAAM;AAAA,MAChB,GAAG,MAAM,SAAS;AAAA,MAClB,GAAG,MAAM,SAAS,GAAG,KAAK,IAAI,GAAG,cAAc,GAAG;AAAA;AAAA,IAEpD,IAAI;AAAA,IACJ,IAAI,OAAO,mBAAmB;AAAA,MAAa;AAAA,IAC3C,MAAM,KAAK,IAAI,eAAe,GAAG;AAAA,IACjC,GAAG,QAAQ,EAAE;AAAA,IACb,OAAO,MAAM,GAAG,WAAW;AAAA,KAC1B,CAAC,IAAI,CAAC;AAAA,EAET,MAAM,WAAW,aACf,OAAO,UAA6B;AAAA,IAClC,MAAM,OAAO,CAAC,GAAG,KAAK,EAAE,OAAO,CAAC,MAAM,OAAO,SAAS,EAAE,IAAI,CAAC;AAAA,IAC7D,IAAI,CAAC,KAAK;AAAA,MAAQ;AAAA,IAClB,MAAM,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,OAAO,kBAAkB;AAAA,IACxD,IAAI,KAAK;AAAA,MACP,QAAQ,GAAG,IAAI,uBAAuB,KAAK,MAAM,qBAAqB,OAAO,IAAI,MAAM;AAAA,MACvF;AAAA,IACF;AAAA,IACA,MAAM,OAAO,MAAM,QAAQ,IAAI,KAAK,IAAI,gBAAgB,CAAC;AAAA,IACzD,eAAe,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;AAAA,IACrC,QAAQ,IAAI;AAAA,KAEd,CAAC,kBAAkB,CACrB;AAAA,EAEA,MAAM,SAAS,CAAC,MACd,eAAe,CAAC,MAAM;AAAA,IACpB,MAAM,OAAO,EAAE;AAAA,IACf,IAAI,MAAM;AAAA,MAAY,IAAI,gBAAgB,KAAK,UAAU;AAAA,IACzD,OAAO,EAAE,OAAO,CAAC,GAAG,MAAM,MAAM,CAAC;AAAA,GAClC;AAAA,EAEH,MAAM,WAAW,QAAQ,WAAW,OAAO;AAAA,EAC3C,MAAM,UAAU,CAAC,aAAa,WAAW,KAAK,KAAK,EAAE,SAAS,IAAI,CAAC,YAAY,KAAK,KAAK,EAAE,SAAS,KAAK,YAAY,SAAS;AAAA,EAC9H,MAAM,SAAS,MAAM;AAAA,IACnB,IAAI,CAAC;AAAA,MAAS;AAAA,IACd,IAAI,UAAU;AAAA,MACZ,QAAS,KAAK,KAAK,CAAC;AAAA,MACpB,QAAQ,EAAE;AAAA,MACV;AAAA,IACF;AAAA,IACA,SAAS,KAAK,KAAK,GAAG,WAAW;AAAA,IACjC,QAAQ,EAAE;AAAA,IACV,WAAW,KAAK;AAAA,MAAa,IAAI,EAAE;AAAA,QAAY,IAAI,gBAAgB,EAAE,UAAU;AAAA,IAC/E,eAAe,CAAC,CAAC;AAAA;AAAA,EAGnB,MAAM,QAAQ,CAAC,MAA0C;AAAA,IACvD,IAAI,EAAE,QAAQ,WAAW,EAAE,YAAY,EAAE,YAAY;AAAA,MAAa;AAAA,IAClE,MAAM,aAAa,iBAAiB,CAAC,cAAc;AAAA,IACnD,IAAI,CAAC;AAAA,MAAY;AAAA,IACjB,EAAE,eAAe;AAAA,IACjB,OAAO;AAAA;AAAA,EAET,MAAM,UAAU,CAAC,MAA2C;AAAA,IAC1D,MAAM,QAAQ,CAAC,GAAG,EAAE,cAAc,KAAK;AAAA,IACvC,IAAI,MAAM,QAAQ;AAAA,MAChB,EAAE,eAAe;AAAA,MACZ,SAAS,KAAK;AAAA,IACrB;AAAA;AAAA,EAEF,MAAM,SAAS,CAAC,MAAiC;AAAA,IAC/C,IAAI,EAAE,aAAa,MAAM,QAAQ;AAAA,MAC/B,EAAE,eAAe;AAAA,MACZ,SAAS,EAAE,aAAa,KAAK;AAAA,IACpC;AAAA;AAAA,EAGF,uBACE,OAyDE,OAzDF;AAAA,IAAK,WAAW,GAAG,iEAAiE,YAAY,cAAc,SAAS;AAAA,IAAG;AAAA,IAAgB,YAAY,CAAC,MAAM,EAAE,eAAe;AAAA,IAAG,iBAAe,WAAW,SAAS;AAAA,IAApN,UAyDE;AAAA,MAxDC,YAAY,SAAS,qBACpB,MAWE,MAXF;AAAA,QAAI,WAAU;AAAA,QAAiC,cAAW;AAAA,QAA1D,UACG,YAAY,IAAI,CAAC,GAAG,sBACnB,OAOE,MAPF;AAAA,UAA2B,WAAU;AAAA,UAArC,UAOE;AAAA,YANC,EAAE,6BAAa,MAAC,OAAD;AAAA,cAAK,KAAK,EAAE;AAAA,cAAY,KAAK,EAAE;AAAA,cAAM,WAAU;AAAA,aAAyD,oBAAK,MAAC,QAAD;AAAA,cAAM,WAAU;AAAA,aAA2D;AAAA,4BACxM,MAIE,UAJF;AAAA,cAAQ,MAAK;AAAA,cAAS,SAAS,MAAM,OAAO,CAAC;AAAA,cAAG,cAAY,UAAU,EAAE;AAAA,cAAQ,WAAU;AAAA,cAA1F,0BACE,MAEE,QAFF;AAAA,gBAAM,WAAU;AAAA,gBAAhB,0BACE,MAAC,IAAD;AAAA,kBAAG,WAAU;AAAA,kBAAU,eAAW;AAAA,iBAAC;AAAA,eACnC;AAAA,aACF;AAAA;AAAA,WANK,GAAG,EAAE,QAAQ,GAOpB,CACH;AAAA,OACD;AAAA,sBAEJ,MAAC,YAAD;AAAA,QACE;AAAA,QACA,OAAO;AAAA,QACP,UAAU,CAAC,MAAM,QAAQ,EAAE,OAAO,KAAK;AAAA,QACvC,WAAW;AAAA,QACX;AAAA,QACA;AAAA,QACA;AAAA,QACA,MAAM;AAAA,QACN,aAAa,YAAY,iBAAiB,iBAAiB,WAAW,sDAAqD;AAAA,QAC3H,cAAY,WAAW,UAAU;AAAA,QACjC,WAAU;AAAA,OACZ;AAAA,sBACA,OA4BE,OA5BF;AAAA,QAAK,WAAU;AAAA,QAAf,UA4BE;AAAA,UA3BC;AAAA,UACA,cAAc,WAAW,SAAS,qBACjC,MAME,UANF;AAAA,YAAQ,OAAO,OAAO;AAAA,YAAI,UAAU,CAAC,MAAM,cAAc,EAAE,OAAO,KAAK;AAAA,YAAG;AAAA,YAAoB,cAAW;AAAA,YAAM,WAAU;AAAA,YAAzH,UACG,WAAW,IAAI,CAAC,sBACf,MAEE,UAFF;AAAA,cAAsB,OAAO,EAAE;AAAA,cAAO,OAAO,EAAE;AAAA,cAA/C,UACG,EAAE;AAAA,eADQ,EAAE,KAEb,CACH;AAAA,WACD;AAAA,UAEH,CAAC,8BACF,OAGE,SAHF;AAAA,YAAO,WAAW,GAAG,6GAA6G,YAAY,qBAAqB;AAAA,YAAG,cAAW;AAAA,YAAjL,UAGE;AAAA,8BAFA,MAAC,WAAD;AAAA,gBAAW,WAAU;AAAA,gBAAU,eAAW;AAAA,eAAC;AAAA,8BAC3C,MAAC,SAAD;AAAA,gBAAO,MAAK;AAAA,gBAAO,QAAQ,OAAO,KAAK,GAAG;AAAA,gBAAG,UAAQ;AAAA,gBAAC,WAAU;AAAA,gBAAU;AAAA,gBAAoB,UAAU,CAAC,MAAM,EAAE,OAAO,SAAS,KAAK,SAAS,EAAE,OAAO,KAAK;AAAA,eAAG;AAAA;AAAA,WAChK;AAAA,UAED,wBAAQ,MAAgE,QAAhE;AAAA,YAAM,WAAU;AAAA,YAAhB,UAAyD;AAAA,WAAO;AAAA,0BACzE,MAAC,QAAD;AAAA,YAAM,WAAU;AAAA,WAAS;AAAA,UACxB,WAAW,UAAU,EAAE,YAAY,KAAK,KAAK,qBAC5C,MAEE,UAFF;AAAA,YAAQ,MAAK;AAAA,YAAS,SAAS;AAAA,YAAQ,cAAW;AAAA,YAAO,WAAU;AAAA,YAAnE,0BACE,MAAC,SAAD;AAAA,cAAQ,WAAU;AAAA,cAAU,eAAW;AAAA,aAAC;AAAA,WACxC,oBAEF,MAEE,UAFF;AAAA,YAAQ,MAAK;AAAA,YAAS,SAAS;AAAA,YAAQ,UAAU,CAAC;AAAA,YAAS,cAAW;AAAA,YAAO,WAAU;AAAA,YAAvF,0BACE,MAAC,SAAD;AAAA,cAAS,WAAU;AAAA,cAAU,eAAW;AAAA,aAAC;AAAA,WACzC;AAAA;AAAA,OAEJ;AAAA;AAAA,GACF;AAAA;",
23
- "debugId": "2F1B2145F90EDF3464756E2164756E21",
22
+ "mappings": "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",
23
+ "debugId": "5FADBD2ECF14426A64756E2164756E21",
24
24
  "names": []
25
25
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mlpal/yodex-ui",
3
- "version": "0.2.2",
3
+ "version": "0.3.0",
4
4
  "description": "React components and a session hook for yodex frontends: transcript, tool calls, permissions, questions, run status, sessions, composer, over the yodex serve wire protocol.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -25,7 +25,7 @@
25
25
  "react-dom": "^18.2.0"
26
26
  },
27
27
  "dependencies": {
28
- "@mlpal/harness-protocol": "^0.10.0",
28
+ "@mlpal/harness-protocol": "^0.11.0",
29
29
  "clsx": "^2.1.1",
30
30
  "lucide-react": "^0.487.0",
31
31
  "react-markdown": "^10.1.0",