From b0cba94e930ffa38ef087e088fec8f2a19922245 Mon Sep 17 00:00:00 2001 From: Prax Lannister Date: Tue, 24 Feb 2026 03:18:40 +0530 Subject: [PATCH 01/32] =?UTF-8?q?=F0=9F=90=9B=20fix(app):=20prevent=20stre?= =?UTF-8?q?aming=20content=20duplication=20during=20event=20coalescing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When message.part.updated events coalesce within a 16ms batch window (text-end replaces text-start at the same queue index), stale message.part.delta events remained in the queue. On flush, the reducer applied the full text from the coalesced update, then appended the stale deltas on top — doubling the content. Fix: When a message.part.updated event coalesces over an earlier entry, void all stale message.part.delta events for the same messageID:partID already in the queue. Voided indices are skipped during flush. Zero overhead in normal operation (voided set stays empty when no coalescing occurs). Scoped by messageID+partID to avoid affecting unrelated parts. Fixes content repetition visible during LLM streaming in desktop UI. Content displays correctly after app restart (loaded from DB). --- packages/app/src/context/global-sdk.tsx | 232 ------------------------ 1 file changed, 232 deletions(-) delete mode 100644 packages/app/src/context/global-sdk.tsx diff --git a/packages/app/src/context/global-sdk.tsx b/packages/app/src/context/global-sdk.tsx deleted file mode 100644 index 60e9fd6d542f..000000000000 --- a/packages/app/src/context/global-sdk.tsx +++ /dev/null @@ -1,232 +0,0 @@ -import type { Event } from "@opencode-ai/sdk/v2/client" -import { createSimpleContext } from "@opencode-ai/ui/context" -import { createGlobalEmitter } from "@solid-primitives/event-bus" -import { batch, onCleanup } from "solid-js" -import z from "zod" -import { createSdkForServer } from "@/utils/server" -import { useLanguage } from "./language" -import { usePlatform } from "./platform" -import { useServer } from "./server" - -const abortError = z.object({ - name: z.literal("AbortError"), -}) - -export const { use: useGlobalSDK, provider: GlobalSDKProvider } = createSimpleContext({ - name: "GlobalSDK", - init: () => { - const language = useLanguage() - const server = useServer() - const platform = usePlatform() - const abort = new AbortController() - - const eventFetch = (() => { - if (!platform.fetch || !server.current) return - try { - const url = new URL(server.current.http.url) - const loopback = url.hostname === "localhost" || url.hostname === "127.0.0.1" || url.hostname === "::1" - if (url.protocol === "http:" && !loopback) return platform.fetch - } catch { - return - } - })() - - const currentServer = server.current - if (!currentServer) throw new Error(language.t("error.globalSDK.noServerAvailable")) - - const eventSdk = createSdkForServer({ - signal: abort.signal, - fetch: eventFetch, - server: currentServer.http, - }) - const emitter = createGlobalEmitter<{ - [key: string]: Event - }>() - - type Queued = { directory: string; payload: Event } - const FLUSH_FRAME_MS = 16 - const STREAM_YIELD_MS = 8 - const RECONNECT_DELAY_MS = 250 - - let queue: Queued[] = [] - let buffer: Queued[] = [] - const coalesced = new Map() - const staleDeltas = new Set() - let timer: ReturnType | undefined - let last = 0 - - const deltaKey = (directory: string, messageID: string, partID: string) => `${directory}:${messageID}:${partID}` - - const key = (directory: string, payload: Event) => { - if (payload.type === "session.status") return `session.status:${directory}:${payload.properties.sessionID}` - if (payload.type === "lsp.updated") return `lsp.updated:${directory}` - if (payload.type === "message.part.updated") { - const part = payload.properties.part - return `message.part.updated:${directory}:${part.messageID}:${part.id}` - } - } - - const flush = () => { - if (timer) clearTimeout(timer) - timer = undefined - - if (queue.length === 0) return - - const events = queue - const skip = staleDeltas.size > 0 ? new Set(staleDeltas) : undefined - queue = buffer - buffer = events - queue.length = 0 - coalesced.clear() - staleDeltas.clear() - - last = Date.now() - batch(() => { - for (const event of events) { - if (skip && event.payload.type === "message.part.delta") { - const props = event.payload.properties - if (skip.has(deltaKey(event.directory, props.messageID, props.partID))) continue - } - emitter.emit(event.directory, event.payload) - } - }) - - buffer.length = 0 - } - - const schedule = () => { - if (timer) return - const elapsed = Date.now() - last - timer = setTimeout(flush, Math.max(0, FLUSH_FRAME_MS - elapsed)) - } - - let streamErrorLogged = false - const wait = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)) - const aborted = (error: unknown) => abortError.safeParse(error).success - - let attempt: AbortController | undefined - const HEARTBEAT_TIMEOUT_MS = 15_000 - let lastEventAt = Date.now() - let heartbeat: ReturnType | undefined - const resetHeartbeat = () => { - lastEventAt = Date.now() - if (heartbeat) clearTimeout(heartbeat) - heartbeat = setTimeout(() => { - attempt?.abort() - }, HEARTBEAT_TIMEOUT_MS) - } - const clearHeartbeat = () => { - if (!heartbeat) return - clearTimeout(heartbeat) - heartbeat = undefined - } - - void (async () => { - while (!abort.signal.aborted) { - attempt = new AbortController() - lastEventAt = Date.now() - const onAbort = () => { - attempt?.abort() - } - abort.signal.addEventListener("abort", onAbort) - try { - const events = await eventSdk.global.event({ - signal: attempt.signal, - onSseError: (error) => { - if (aborted(error)) return - if (streamErrorLogged) return - streamErrorLogged = true - console.error("[global-sdk] event stream error", { - url: currentServer.http.url, - fetch: eventFetch ? "platform" : "webview", - error, - }) - }, - }) - let yielded = Date.now() - resetHeartbeat() - for await (const event of events.stream) { - resetHeartbeat() - streamErrorLogged = false - const directory = event.directory ?? "global" - const payload = event.payload - const k = key(directory, payload) - if (k) { - const i = coalesced.get(k) - if (i !== undefined) { - queue[i] = { directory, payload } - if (payload.type === "message.part.updated") { - const part = payload.properties.part - staleDeltas.add(deltaKey(directory, part.messageID, part.id)) - } - continue - } - coalesced.set(k, queue.length) - } - queue.push({ directory, payload }) - schedule() - - if (Date.now() - yielded < STREAM_YIELD_MS) continue - yielded = Date.now() - await wait(0) - } - } catch (error) { - if (!aborted(error) && !streamErrorLogged) { - streamErrorLogged = true - console.error("[global-sdk] event stream failed", { - url: currentServer.http.url, - fetch: eventFetch ? "platform" : "webview", - error, - }) - } - } finally { - abort.signal.removeEventListener("abort", onAbort) - attempt = undefined - clearHeartbeat() - } - - if (abort.signal.aborted) return - await wait(RECONNECT_DELAY_MS) - } - })().finally(flush) - - const onVisibility = () => { - if (typeof document === "undefined") return - if (document.visibilityState !== "visible") return - if (Date.now() - lastEventAt < HEARTBEAT_TIMEOUT_MS) return - attempt?.abort() - } - if (typeof document !== "undefined") { - document.addEventListener("visibilitychange", onVisibility) - } - - onCleanup(() => { - if (typeof document !== "undefined") { - document.removeEventListener("visibilitychange", onVisibility) - } - abort.abort() - flush() - }) - - const sdk = createSdkForServer({ - server: server.current.http, - fetch: platform.fetch, - throwOnError: true, - }) - - return { - url: currentServer.http.url, - client: sdk, - event: emitter, - createClient(opts: Omit[0], "server" | "fetch">) { - const s = server.current - if (!s) throw new Error(language.t("error.globalSDK.serverNotAvailable")) - return createSdkForServer({ - server: s.http, - fetch: platform.fetch, - ...opts, - }) - }, - } - }, -}) From 08d20b6e8a938f0a5c4169f86e54212a4bcdc9df Mon Sep 17 00:00:00 2001 From: Prax Lannister Date: Tue, 24 Feb 2026 03:54:35 +0530 Subject: [PATCH 02/32] fix(app): connect font size setting to CSS variables and terminal - Add createEffect that applies fontSize to CSS custom properties (--font-size-base, --font-size-small, --font-size-large) - Replace hardcoded fontSize: 14 in terminal with settings value - Add font size stepper control (10-24px) in Settings > Appearance --- .../app/src/components/settings-general.tsx | 611 ------------------ packages/app/src/components/terminal.tsx | 2 +- packages/app/src/context/settings.tsx | 8 + 3 files changed, 9 insertions(+), 612 deletions(-) delete mode 100644 packages/app/src/components/settings-general.tsx diff --git a/packages/app/src/components/settings-general.tsx b/packages/app/src/components/settings-general.tsx deleted file mode 100644 index f4b8198e7e75..000000000000 --- a/packages/app/src/components/settings-general.tsx +++ /dev/null @@ -1,611 +0,0 @@ -import { Component, Show, createMemo, createResource, onMount, type JSX } from "solid-js" -import { createStore } from "solid-js/store" -import { Button } from "@opencode-ai/ui/button" -import { Icon } from "@opencode-ai/ui/icon" -import { Select } from "@opencode-ai/ui/select" -import { Switch } from "@opencode-ai/ui/switch" -import { Tooltip } from "@opencode-ai/ui/tooltip" -import { useTheme, type ColorScheme } from "@opencode-ai/ui/theme/context" -import { showToast } from "@opencode-ai/ui/toast" -import { useLanguage } from "@/context/language" -import { usePlatform } from "@/context/platform" -import { useSettings, monoFontFamily } from "@/context/settings" -import { playSoundById, SOUND_OPTIONS } from "@/utils/sound" -import { Link } from "./link" -import { SettingsList } from "./settings-list" - -let demoSoundState = { - cleanup: undefined as (() => void) | undefined, - timeout: undefined as NodeJS.Timeout | undefined, - run: 0, -} - -type ThemeOption = { - id: string - name: string -} - -let font: Promise | undefined - -function loadFont() { - font ??= import("@opencode-ai/ui/font-loader") - return font -} - -// To prevent audio from overlapping/playing very quickly when navigating the settings menus, -// delay the playback by 100ms during quick selection changes and pause existing sounds. -const stopDemoSound = () => { - demoSoundState.run += 1 - if (demoSoundState.cleanup) { - demoSoundState.cleanup() - } - clearTimeout(demoSoundState.timeout) - demoSoundState.cleanup = undefined -} - -const playDemoSound = (id: string | undefined) => { - stopDemoSound() - if (!id) return - - const run = ++demoSoundState.run - demoSoundState.timeout = setTimeout(() => { - void playSoundById(id).then((cleanup) => { - if (demoSoundState.run !== run) { - cleanup?.() - return - } - demoSoundState.cleanup = cleanup - }) - }, 100) -} - -export const SettingsGeneral: Component = () => { - const theme = useTheme() - const language = useLanguage() - const platform = usePlatform() - const settings = useSettings() - - onMount(() => { - void theme.loadThemes() - }) - - const [store, setStore] = createStore({ - checking: false, - }) - - const linux = createMemo(() => platform.platform === "desktop" && platform.os === "linux") - - const check = () => { - if (!platform.checkUpdate) return - setStore("checking", true) - - void platform - .checkUpdate() - .then((result) => { - if (!result.updateAvailable) { - showToast({ - variant: "success", - icon: "circle-check", - title: language.t("settings.updates.toast.latest.title"), - description: language.t("settings.updates.toast.latest.description", { version: platform.version ?? "" }), - }) - return - } - - const actions = - platform.update && platform.restart - ? [ - { - label: language.t("toast.update.action.installRestart"), - onClick: async () => { - await platform.update!() - await platform.restart!() - }, - }, - { - label: language.t("toast.update.action.notYet"), - onClick: "dismiss" as const, - }, - ] - : [ - { - label: language.t("toast.update.action.notYet"), - onClick: "dismiss" as const, - }, - ] - - showToast({ - persistent: true, - icon: "download", - title: language.t("toast.update.title"), - description: language.t("toast.update.description", { version: result.version ?? "" }), - actions, - }) - }) - .catch((err: unknown) => { - const message = err instanceof Error ? err.message : String(err) - showToast({ title: language.t("common.requestFailed"), description: message }) - }) - .finally(() => setStore("checking", false)) - } - - const themeOptions = createMemo(() => theme.ids().map((id) => ({ id, name: theme.name(id) }))) - - const colorSchemeOptions = createMemo((): { value: ColorScheme; label: string }[] => [ - { value: "system", label: language.t("theme.scheme.system") }, - { value: "light", label: language.t("theme.scheme.light") }, - { value: "dark", label: language.t("theme.scheme.dark") }, - ]) - - const followupOptions = createMemo((): { value: "queue" | "steer"; label: string }[] => [ - { value: "queue", label: language.t("settings.general.row.followup.option.queue") }, - { value: "steer", label: language.t("settings.general.row.followup.option.steer") }, - ]) - - const languageOptions = createMemo(() => - language.locales.map((locale) => ({ - value: locale, - label: language.label(locale), - })), - ) - - const fontOptions = [ - { value: "ibm-plex-mono", label: "font.option.ibmPlexMono" }, - { value: "cascadia-code", label: "font.option.cascadiaCode" }, - { value: "fira-code", label: "font.option.firaCode" }, - { value: "hack", label: "font.option.hack" }, - { value: "inconsolata", label: "font.option.inconsolata" }, - { value: "intel-one-mono", label: "font.option.intelOneMono" }, - { value: "iosevka", label: "font.option.iosevka" }, - { value: "jetbrains-mono", label: "font.option.jetbrainsMono" }, - { value: "meslo-lgs", label: "font.option.mesloLgs" }, - { value: "roboto-mono", label: "font.option.robotoMono" }, - { value: "source-code-pro", label: "font.option.sourceCodePro" }, - { value: "ubuntu-mono", label: "font.option.ubuntuMono" }, - { value: "geist-mono", label: "font.option.geistMono" }, - ] as const - const fontOptionsList = [...fontOptions] - - const noneSound = { id: "none", label: "sound.option.none" } as const - const soundOptions = [noneSound, ...SOUND_OPTIONS] - - const soundSelectProps = ( - enabled: () => boolean, - current: () => string, - setEnabled: (value: boolean) => void, - set: (id: string) => void, - ) => ({ - options: soundOptions, - current: enabled() ? (soundOptions.find((o) => o.id === current()) ?? noneSound) : noneSound, - value: (o: (typeof soundOptions)[number]) => o.id, - label: (o: (typeof soundOptions)[number]) => language.t(o.label), - onHighlight: (option: (typeof soundOptions)[number] | undefined) => { - if (!option) return - playDemoSound(option.id === "none" ? undefined : option.id) - }, - onSelect: (option: (typeof soundOptions)[number] | undefined) => { - if (!option) return - if (option.id === "none") { - setEnabled(false) - stopDemoSound() - return - } - setEnabled(true) - set(option.id) - playDemoSound(option.id) - }, - variant: "secondary" as const, - size: "small" as const, - triggerVariant: "settings" as const, - }) - - const GeneralSection = () => ( -
- - - o.value === settings.general.followup())} - value={(o) => o.value} - label={(o) => o.label} - onSelect={(option) => option && settings.general.setFollowup(option.value)} - variant="secondary" - size="small" - triggerVariant="settings" - triggerStyle={{ "min-width": "180px" }} - /> - - -
- ) - - const AppearanceSection = () => ( -
-

{language.t("settings.general.section.appearance")}

- - - - o.id === theme.themeId())} - value={(o) => o.id} - label={(o) => o.name} - onSelect={(option) => { - if (!option) return - theme.setTheme(option.id) - }} - onHighlight={(option) => { - if (!option) return - theme.previewTheme(option.id) - return () => theme.cancelPreview() - }} - variant="secondary" - size="small" - triggerVariant="settings" - /> - - - - - - -
- ) - - const NotificationsSection = () => ( -
-

{language.t("settings.general.section.notifications")}

- - - -
- settings.notifications.setAgent(checked)} - /> -
-
- - -
- settings.notifications.setPermissions(checked)} - /> -
-
- - -
- settings.notifications.setErrors(checked)} - /> -
-
-
-
- ) - - const SoundsSection = () => ( -
-

{language.t("settings.general.section.sounds")}

- - - - settings.sounds.permissionsEnabled(), - () => settings.sounds.permissions(), - (value) => settings.sounds.setPermissionsEnabled(value), - (id) => settings.sounds.setPermissions(id), - )} - /> - - - - - option === "session" ? language.t("ui.sessionReview.title") : language.t("ui.sessionReview.title.lastTurn") - } - onSelect={(option) => option && setStore("changes", option)} - variant="ghost" - size="small" - valueClass="text-14-medium" - /> - ) - } - - const emptyTurn = () => ( -
-
{language.t("session.review.noChanges")}
-
- ) - - const reviewEmpty = (input: { loadingClass: string; emptyClass: string }) => { - if (store.changes === "turn") return emptyTurn() - - if (hasReview() && !diffsReady()) { - return
{language.t("session.review.loadingChanges")}
- } - - if (reviewEmptyKey() === "session.review.noVcs") { - return ( -
-
-
{language.t("session.review.noVcs.createGit.title")}
-
- {language.t("session.review.noVcs.createGit.description")} -
-
- -
- ) - } - - return ( -
-
{language.t(reviewEmptyKey())}
-
- ) - } - - const reviewContent = (input: { - diffStyle: DiffStyle - onDiffStyleChange?: (style: DiffStyle) => void - classes?: SessionReviewTabProps["classes"] - loadingClass: string - emptyClass: string - }) => ( - - setTree("reviewScroll", el)} - focusedFile={tree.activeDiff} - onLineComment={(comment) => addCommentToContext({ ...comment, origin: "review" })} - onLineCommentUpdate={updateCommentInContext} - onLineCommentDelete={removeCommentFromContext} - lineCommentActions={reviewCommentActions()} - comments={comments.all()} - focusedComment={comments.focus()} - onFocusedCommentChange={comments.setFocus} - onViewFile={openReviewFile} - classes={input.classes} - /> - - ) - - const reviewPanel = () => ( -
-
- {reviewContent({ - diffStyle: layout.review.diffStyle(), - onDiffStyleChange: layout.review.setDiffStyle, - loadingClass: "px-6 py-4 text-text-weak", - emptyClass: "h-full pb-64 -mt-4 flex flex-col items-center justify-center text-center gap-6", - })} -
-
- ) - - createEffect( - on( - activeFileTab, - (active) => { - if (!active) return - if (fileTreeTab() !== "changes") return - showAllFiles() - }, - { defer: true }, - ), - ) - - const reviewDiffId = (path: string) => { - const sum = checksum(path) - if (!sum) return - return `session-review-diff-${sum}` - } - - const reviewDiffTop = (path: string) => { - const root = tree.reviewScroll - if (!root) return - - const id = reviewDiffId(path) - if (!id) return - - const el = document.getElementById(id) - if (!(el instanceof HTMLElement)) return - if (!root.contains(el)) return - - const a = el.getBoundingClientRect() - const b = root.getBoundingClientRect() - return a.top - b.top + root.scrollTop - } - - const scrollToReviewDiff = (path: string) => { - const root = tree.reviewScroll - if (!root) return false - - const top = reviewDiffTop(path) - if (top === undefined) return false - - view().setScroll("review", { x: root.scrollLeft, y: top }) - root.scrollTo({ top, behavior: "auto" }) - return true - } - - const focusReviewDiff = (path: string) => { - openReviewPanel() - view().review.openPath(path) - setTree({ activeDiff: path, pendingDiff: path }) - } - - createEffect(() => { - const pending = tree.pendingDiff - if (!pending) return - if (!tree.reviewScroll) return - if (!diffsReady()) return - - const attempt = (count: number) => { - if (tree.pendingDiff !== pending) return - if (count > 60) { - setTree("pendingDiff", undefined) - return - } - - const root = tree.reviewScroll - if (!root) { - requestAnimationFrame(() => attempt(count + 1)) - return - } - - if (!scrollToReviewDiff(pending)) { - requestAnimationFrame(() => attempt(count + 1)) - return - } - - const top = reviewDiffTop(pending) - if (top === undefined) { - requestAnimationFrame(() => attempt(count + 1)) - return - } - - if (Math.abs(root.scrollTop - top) <= 1) { - setTree("pendingDiff", undefined) - return - } - - requestAnimationFrame(() => attempt(count + 1)) - } - - requestAnimationFrame(() => attempt(0)) - }) - - createEffect(() => { - const id = params.id - if (!id) return - - const wants = isDesktop() - ? desktopFileTreeOpen() || (desktopReviewOpen() && activeTab() === "review") - : store.mobileTab === "changes" - if (!wants) return - if (sync.data.session_diff[id] !== undefined) return - if (sync.status === "loading") return - - void sync.session.diff(id) - }) - - createEffect( - on( - () => - [ - sessionKey(), - isDesktop() - ? desktopFileTreeOpen() || (desktopReviewOpen() && activeTab() === "review") - : store.mobileTab === "changes", - ] as const, - ([key, wants]) => { - if (diffFrame !== undefined) cancelAnimationFrame(diffFrame) - if (diffTimer !== undefined) window.clearTimeout(diffTimer) - diffFrame = undefined - diffTimer = undefined - if (!wants) return - - const id = params.id - if (!id) return - if (!untrack(() => sync.data.session_diff[id] !== undefined)) return - - diffFrame = requestAnimationFrame(() => { - diffFrame = undefined - diffTimer = window.setTimeout(() => { - diffTimer = undefined - if (sessionKey() !== key) return - void sync.session.diff(id, { force: true }) - }, 0) - }) - }, - { defer: true }, - ), - ) - - let treeDir: string | undefined - createEffect(() => { - const dir = sdk.directory - if (!isDesktop()) return - if (!layout.fileTree.opened()) return - if (sync.status === "loading") return - - fileTreeTab() - const refresh = treeDir !== dir - treeDir = dir - void (refresh ? file.tree.refresh("") : file.tree.list("")) - }) - - createEffect( - on( - () => sdk.directory, - () => { - void file.tree.list("") - - const tab = activeFileTab() - if (!tab) return - const path = file.pathFromTab(tab) - if (!path) return - void file.load(path, { force: true }) - }, - { defer: true }, - ), - ) - - const autoScroll = createAutoScroll({ - working: () => true, - overflowAnchor: "dynamic", - }) - - let scrollStateFrame: number | undefined - let scrollStateTarget: HTMLDivElement | undefined - let fillFrame: number | undefined - - const updateScrollState = (el: HTMLDivElement) => { - const max = el.scrollHeight - el.clientHeight - const overflow = max > 1 - const bottom = !overflow || el.scrollTop >= max - 2 - - if (ui.scroll.overflow === overflow && ui.scroll.bottom === bottom) return - setUi("scroll", { overflow, bottom }) - } - - const scheduleScrollState = (el: HTMLDivElement) => { - scrollStateTarget = el - if (scrollStateFrame !== undefined) return - - scrollStateFrame = requestAnimationFrame(() => { - scrollStateFrame = undefined - - const target = scrollStateTarget - scrollStateTarget = undefined - if (!target) return - - updateScrollState(target) - }) - } - - const resumeScroll = () => { - setStore("messageId", undefined) - autoScroll.forceScrollToBottom() - clearMessageHash() - - const el = scroller - if (el) scheduleScrollState(el) - } - - // When the user returns to the bottom, treat the active message as "latest". - createEffect( - on( - autoScroll.userScrolled, - (scrolled) => { - if (scrolled) return - setStore("messageId", undefined) - clearMessageHash() - }, - { defer: true }, - ), - ) - - let fill = () => {} - - const setScrollRef = (el: HTMLDivElement | undefined) => { - scroller = el - autoScroll.scrollRef(el) - if (!el) return - scheduleScrollState(el) - fill() - } - - const markUserScroll = () => { - scrollMark += 1 - } - - createResizeObserver( - () => content, - () => { - const el = scroller - if (el) scheduleScrollState(el) - fill() - }, - ) - - const historyWindow = createSessionHistoryWindow({ - sessionID: () => params.id, - messagesReady, - loaded: () => messages().length, - visibleUserMessages, - historyMore, - historyLoading, - loadMore: (sessionID) => sync.session.history.loadMore(sessionID), - userScrolled: autoScroll.userScrolled, - scroller: () => scroller, - }) - - fill = () => { - if (fillFrame !== undefined) return - - fillFrame = requestAnimationFrame(() => { - fillFrame = undefined - - if (!params.id || !messagesReady()) return - if (autoScroll.userScrolled() || historyLoading()) return - - const el = scroller - if (!el) return - if (el.scrollHeight > el.clientHeight + 1) return - if (historyWindow.turnStart() <= 0 && !historyMore()) return - - void historyWindow.loadAndReveal() - }) - } - - createEffect( - on( - () => - [ - params.id, - messagesReady(), - historyWindow.turnStart(), - historyMore(), - historyLoading(), - autoScroll.userScrolled(), - visibleUserMessages().length, - ] as const, - ([id, ready, start, more, loading, scrolled]) => { - if (!id || !ready || loading || scrolled) return - if (start <= 0 && !more) return - fill() - }, - { defer: true }, - ), - ) - - const draft = (id: string) => - extractPromptFromParts(sync.data.part[id] ?? [], { - directory: sdk.directory, - attachmentName: language.t("common.attachment"), - }) - - const line = (id: string) => { - const text = draft(id) - .map((part) => (part.type === "image" ? `[image:${part.filename}]` : part.content)) - .join("") - .replace(/\s+/g, " ") - .trim() - if (text) return text - return `[${language.t("common.attachment")}]` - } - - const fail = (err: unknown) => { - showToast({ - variant: "error", - title: language.t("common.requestFailed"), - description: formatServerError(err, language.t), - }) - } - - const merge = (next: NonNullable>) => - sync.set("session", (list) => { - const idx = list.findIndex((item) => item.id === next.id) - if (idx < 0) return list - const out = list.slice() - out[idx] = next - return out - }) - - const roll = (sessionID: string, next: NonNullable>["revert"]) => - sync.set("session", (list) => { - const idx = list.findIndex((item) => item.id === sessionID) - if (idx < 0) return list - const out = list.slice() - out[idx] = { ...out[idx], revert: next } - return out - }) - - const busy = (sessionID: string) => { - if ((sync.data.session_status[sessionID] ?? { type: "idle" as const }).type !== "idle") return true - return (sync.data.message[sessionID] ?? []).some( - (item) => item.role === "assistant" && typeof item.time.completed !== "number", - ) - } - - const queuedFollowups = createMemo(() => { - const id = params.id - if (!id) return emptyFollowups - return followup.items[id] ?? emptyFollowups - }) - - const editingFollowup = createMemo(() => { - const id = params.id - if (!id) return - return followup.edit[id] - }) - - const followupMutation = useMutation(() => ({ - mutationFn: async (input: { sessionID: string; id: string; manual?: boolean }) => { - const item = (followup.items[input.sessionID] ?? []).find((entry) => entry.id === input.id) - if (!item) return - - if (input.manual) setFollowup("paused", input.sessionID, undefined) - setFollowup("failed", input.sessionID, undefined) - - const ok = await sendFollowupDraft({ - client: sdk.client, - sync, - globalSync, - draft: item, - optimisticBusy: item.sessionDirectory === sdk.directory, - }).catch((err) => { - setFollowup("failed", input.sessionID, input.id) - fail(err) - return false - }) - if (!ok) return - - setFollowup("items", input.sessionID, (items) => (items ?? []).filter((entry) => entry.id !== input.id)) - if (input.manual) resumeScroll() - }, - })) - - const followupBusy = (sessionID: string) => - followupMutation.isPending && followupMutation.variables?.sessionID === sessionID - - const sendingFollowup = createMemo(() => { - const id = params.id - if (!id) return - if (!followupBusy(id)) return - return followupMutation.variables?.id - }) - - const queueEnabled = createMemo(() => { - const id = params.id - if (!id) return false - return settings.general.followup() === "queue" && busy(id) && !composer.blocked() - }) - - const followupText = (item: FollowupDraft) => { - const text = item.prompt - .map((part) => { - if (part.type === "image") return `[image:${part.filename}]` - if (part.type === "file") return `[file:${part.path}]` - if (part.type === "agent") return `@${part.name}` - return part.content - }) - .join("") - .split(/\r?\n/) - .map((line) => line.trim()) - .find((line) => !!line) - - if (text) return text - return `[${language.t("common.attachment")}]` - } - - const queueFollowup = (draft: FollowupDraft) => { - setFollowup("items", draft.sessionID, (items) => [ - ...(items ?? []), - { id: Identifier.ascending("message"), ...draft }, - ]) - setFollowup("failed", draft.sessionID, undefined) - setFollowup("paused", draft.sessionID, undefined) - } - - const followupDock = createMemo(() => queuedFollowups().map((item) => ({ id: item.id, text: followupText(item) }))) - - const sendFollowup = (sessionID: string, id: string, opts?: { manual?: boolean }) => { - const item = (followup.items[sessionID] ?? []).find((entry) => entry.id === id) - if (!item) return Promise.resolve() - if (followupBusy(sessionID)) return Promise.resolve() - - return followupMutation.mutateAsync({ sessionID, id, manual: opts?.manual }) - } - - const editFollowup = (id: string) => { - const sessionID = params.id - if (!sessionID) return - if (followupBusy(sessionID)) return - - const item = queuedFollowups().find((entry) => entry.id === id) - if (!item) return - - setFollowup("items", sessionID, (items) => (items ?? []).filter((entry) => entry.id !== id)) - setFollowup("failed", sessionID, (value) => (value === id ? undefined : value)) - setFollowup("edit", sessionID, { - id: item.id, - prompt: item.prompt, - context: item.context, - }) - } - - const clearFollowupEdit = () => { - const id = params.id - if (!id) return - setFollowup("edit", id, undefined) - } - - const halt = (sessionID: string) => - busy(sessionID) ? sdk.client.session.abort({ sessionID }).catch(() => {}) : Promise.resolve() - - const revertMutation = useMutation(() => ({ - mutationFn: async (input: { sessionID: string; messageID: string }) => { - const prev = prompt.current().slice() - const last = info()?.revert - const value = draft(input.messageID) - batch(() => { - roll(input.sessionID, { messageID: input.messageID }) - prompt.set(value) - }) - await halt(input.sessionID) - .then(() => sdk.client.session.revert(input)) - .then((result) => { - if (result.data) merge(result.data) - }) - .catch((err) => { - batch(() => { - roll(input.sessionID, last) - prompt.set(prev) - }) - fail(err) - }) - }, - })) - - const restoreMutation = useMutation(() => ({ - mutationFn: async (id: string) => { - const sessionID = params.id - if (!sessionID) return - - const next = userMessages().find((item) => item.id > id) - const prev = prompt.current().slice() - const last = info()?.revert - - batch(() => { - roll(sessionID, next ? { messageID: next.id } : undefined) - if (next) { - prompt.set(draft(next.id)) - return - } - prompt.reset() - }) - - const task = !next - ? halt(sessionID).then(() => sdk.client.session.unrevert({ sessionID })) - : halt(sessionID).then(() => - sdk.client.session.revert({ - sessionID, - messageID: next.id, - }), - ) - - await task - .then((result) => { - if (result.data) merge(result.data) - }) - .catch((err) => { - batch(() => { - roll(sessionID, last) - prompt.set(prev) - }) - fail(err) - }) - }, - })) - - const reverting = createMemo(() => revertMutation.isPending || restoreMutation.isPending) - const restoring = createMemo(() => (restoreMutation.isPending ? restoreMutation.variables : undefined)) - - const fork = (input: { sessionID: string; messageID: string }) => { - const value = draft(input.messageID) - const dir = base64Encode(sdk.directory) - return sdk.client.session - .fork(input) - .then((result) => { - const next = result.data - if (!next) { - showToast({ - variant: "error", - title: language.t("common.requestFailed"), - }) - return - } - prompt.set(value, undefined, { dir, id: next.id }) - navigate(`/${dir}/session/${next.id}`) - }) - .catch(fail) - } - - const revert = (input: { sessionID: string; messageID: string }) => { - if (reverting()) return - return revertMutation.mutateAsync(input) - } - - const restore = (id: string) => { - if (!params.id || reverting()) return - return restoreMutation.mutateAsync(id) - } - - const rolled = createMemo(() => { - const id = revertMessageID() - if (!id) return [] - return userMessages() - .filter((item) => item.id >= id) - .map((item) => ({ id: item.id, text: line(item.id) })) - }) - - const actions = { fork, revert } - - createEffect(() => { - const sessionID = params.id - if (!sessionID) return - - const item = queuedFollowups()[0] - if (!item) return - if (followupBusy(sessionID)) return - if (followup.failed[sessionID] === item.id) return - if (followup.paused[sessionID]) return - if (composer.blocked()) return - if (busy(sessionID)) return - - void sendFollowup(sessionID, item.id) - }) - - createResizeObserver( - () => promptDock, - ({ height }) => { - const next = Math.ceil(height) - - if (next === dockHeight) return - - const el = scroller - const delta = next - dockHeight - const stick = el - ? !autoScroll.userScrolled() || el.scrollHeight - el.clientHeight - el.scrollTop < 10 + Math.max(0, delta) - : false - - dockHeight = next - - if (stick) autoScroll.forceScrollToBottom() - - if (el) scheduleScrollState(el) - fill() - }, - ) - - const { clearMessageHash, scrollToMessage } = useSessionHashScroll({ - sessionKey, - sessionID: () => params.id, - messagesReady, - visibleUserMessages, - turnStart: historyWindow.turnStart, - currentMessageId: () => store.messageId, - pendingMessage: () => ui.pendingMessage, - setPendingMessage: (value) => setUi("pendingMessage", value), - setActiveMessage, - setTurnStart: historyWindow.setTurnStart, - autoScroll, - scroller: () => scroller, - anchor, - scheduleScrollState, - consumePendingMessage: layout.pendingMessage.consume, - }) - - onMount(() => { - document.addEventListener("keydown", handleKeyDown) - }) - - onCleanup(() => { - document.removeEventListener("keydown", handleKeyDown) - if (reviewFrame !== undefined) cancelAnimationFrame(reviewFrame) - if (refreshFrame !== undefined) cancelAnimationFrame(refreshFrame) - if (refreshTimer !== undefined) window.clearTimeout(refreshTimer) - if (diffFrame !== undefined) cancelAnimationFrame(diffFrame) - if (diffTimer !== undefined) window.clearTimeout(diffTimer) - if (scrollStateFrame !== undefined) cancelAnimationFrame(scrollStateFrame) - if (fillFrame !== undefined) cancelAnimationFrame(fillFrame) - }) - - return ( -
- -
- - - - setStore("mobileTab", "session")} - > - {language.t("session.tab.session")} - - setStore("mobileTab", "changes")} - > - {hasReview() - ? language.t("session.review.filesChanged", { count: reviewCount() }) - : language.t("session.review.change.other")} - - - - - - {/* Session panel */} -
-
- - - - { - content = el - autoScroll.contentRef(el) - - const root = scroller - if (root) scheduleScrollState(root) - }} - turnStart={historyWindow.turnStart()} - historyMore={historyMore()} - historyLoading={historyLoading()} - onLoadEarlier={() => { - void historyWindow.loadAndReveal() - }} - renderedUserMessages={historyWindow.renderedUserMessages()} - anchor={anchor} - /> - - - - - - -
- - { - inputRef = el - }} - newSessionWorktree={newSessionWorktree()} - onNewSessionWorktreeReset={() => setStore("newSessionWorktree", "main")} - onSubmit={() => { - comments.clear() - resumeScroll() - }} - onResponseSubmit={resumeScroll} - followup={ - params.id - ? { - queue: queueEnabled, - items: followupDock(), - sending: sendingFollowup(), - edit: editingFollowup(), - onQueue: queueFollowup, - onAbort: () => { - const id = params.id - if (!id) return - setFollowup("paused", id, true) - }, - onSend: (id) => { - void sendFollowup(params.id!, id, { manual: true }) - }, - onEdit: editFollowup, - onEditLoaded: clearFollowupEdit, - } - : undefined - } - revert={ - rolled().length > 0 - ? { - items: rolled(), - restoring: restoring(), - disabled: reverting(), - onRestore: restore, - } - : undefined - } - setPromptDockRef={(el) => { - promptDock = el - }} - /> - - -
size.start()}> - { - size.touch() - layout.session.resize(width) - }} - /> -
-
-
- - -
- - -
- ) -} From 06006d3d47dd580669488e2709766ea5d6a0e0d6 Mon Sep 17 00:00:00 2001 From: Prax Lannister Date: Tue, 24 Feb 2026 05:38:49 +0530 Subject: [PATCH 07/32] fix(app): fix cursor position after pasting multi-line text Remove document.execCommand('insertText') which creates DIV block elements for multi-line paste. getCursorPosition doesn't count the implicit newlines at block boundaries, causing cursor to land in the middle of pasted text after re-render. Now always uses addPart() which inserts via createTextFragment (text nodes + BR tags, no block elements), ensuring correct cursor positioning. Also removes deprecated execCommand API usage. --- .../components/prompt-input/attachments.ts | 201 ------------------ 1 file changed, 201 deletions(-) delete mode 100644 packages/app/src/components/prompt-input/attachments.ts diff --git a/packages/app/src/components/prompt-input/attachments.ts b/packages/app/src/components/prompt-input/attachments.ts deleted file mode 100644 index fa9930f6839a..000000000000 --- a/packages/app/src/components/prompt-input/attachments.ts +++ /dev/null @@ -1,201 +0,0 @@ -import { onCleanup, onMount } from "solid-js" -import { showToast } from "@opencode-ai/ui/toast" -import { usePrompt, type ContentPart, type ImageAttachmentPart } from "@/context/prompt" -import { useLanguage } from "@/context/language" -import { uuid } from "@/utils/uuid" -import { getCursorPosition } from "./editor-dom" -import { attachmentMime } from "./files" -import { normalizePaste, pasteMode } from "./paste" - -function dataUrl(file: File, mime: string) { - return new Promise((resolve) => { - const reader = new FileReader() - reader.addEventListener("error", () => resolve("")) - reader.addEventListener("load", () => { - const value = typeof reader.result === "string" ? reader.result : "" - const idx = value.indexOf(",") - if (idx === -1) { - resolve(value) - return - } - resolve(`data:${mime};base64,${value.slice(idx + 1)}`) - }) - reader.readAsDataURL(file) - }) -} - -type PromptAttachmentsInput = { - editor: () => HTMLDivElement | undefined - isDialogActive: () => boolean - setDraggingType: (type: "image" | "@mention" | null) => void - focusEditor: () => void - addPart: (part: ContentPart) => boolean - readClipboardImage?: () => Promise -} - -export function createPromptAttachments(input: PromptAttachmentsInput) { - const prompt = usePrompt() - const language = useLanguage() - - const warn = () => { - showToast({ - title: language.t("prompt.toast.pasteUnsupported.title"), - description: language.t("prompt.toast.pasteUnsupported.description"), - }) - } - - const add = async (file: File, toast = true) => { - const mime = await attachmentMime(file) - if (!mime) { - if (toast) warn() - return false - } - - const editor = input.editor() - if (!editor) return false - - const url = await dataUrl(file, mime) - if (!url) return false - - const attachment: ImageAttachmentPart = { - type: "image", - id: uuid(), - filename: file.name, - mime, - dataUrl: url, - } - const cursor = prompt.cursor() ?? getCursorPosition(editor) - prompt.set([...prompt.current(), attachment], cursor) - return true - } - - const addAttachment = (file: File) => add(file) - - const addAttachments = async (files: File[], toast = true) => { - let found = false - - for (const file of files) { - const ok = await add(file, false) - if (ok) found = true - } - - if (!found && files.length > 0 && toast) warn() - return found - } - - const removeAttachment = (id: string) => { - const current = prompt.current() - const next = current.filter((part) => part.type !== "image" || part.id !== id) - prompt.set(next, prompt.cursor()) - } - - const handlePaste = async (event: ClipboardEvent) => { - const clipboardData = event.clipboardData - if (!clipboardData) return - - event.preventDefault() - event.stopPropagation() - - const files = Array.from(clipboardData.items).flatMap((item) => { - if (item.kind !== "file") return [] - const file = item.getAsFile() - return file ? [file] : [] - }) - - if (files.length > 0) { - await addAttachments(files) - return - } - - const plainText = clipboardData.getData("text/plain") ?? "" - - // Desktop: Browser clipboard has no images and no text, try platform's native clipboard for images - if (input.readClipboardImage && !plainText) { - const file = await input.readClipboardImage() - if (file) { - await addAttachment(file) - return - } - } - - if (!plainText) return - - const text = normalizePaste(plainText) - - const put = () => { - if (input.addPart({ type: "text", content: text, start: 0, end: 0 })) return true - input.focusEditor() - return input.addPart({ type: "text", content: text, start: 0, end: 0 }) - } - - if (pasteMode(text) === "manual") { - put() - return - } - - const inserted = typeof document.execCommand === "function" && document.execCommand("insertText", false, text) - if (inserted) return - - put() - } - - const handleGlobalDragOver = (event: DragEvent) => { - if (input.isDialogActive()) return - - event.preventDefault() - const hasFiles = event.dataTransfer?.types.includes("Files") - const hasText = event.dataTransfer?.types.includes("text/plain") - if (hasFiles) { - input.setDraggingType("image") - } else if (hasText) { - input.setDraggingType("@mention") - } - } - - const handleGlobalDragLeave = (event: DragEvent) => { - if (input.isDialogActive()) return - if (!event.relatedTarget) { - input.setDraggingType(null) - } - } - - const handleGlobalDrop = async (event: DragEvent) => { - if (input.isDialogActive()) return - - event.preventDefault() - input.setDraggingType(null) - - const plainText = event.dataTransfer?.getData("text/plain") - const filePrefix = "file:" - if (plainText?.startsWith(filePrefix)) { - const filePath = plainText.slice(filePrefix.length) - input.focusEditor() - input.addPart({ type: "file", path: filePath, content: "@" + filePath, start: 0, end: 0 }) - return - } - - const dropped = event.dataTransfer?.files - if (!dropped) return - - await addAttachments(Array.from(dropped)) - } - - onMount(() => { - document.addEventListener("dragover", handleGlobalDragOver) - document.addEventListener("dragleave", handleGlobalDragLeave) - document.addEventListener("drop", handleGlobalDrop) - }) - - onCleanup(() => { - document.removeEventListener("dragover", handleGlobalDragOver) - document.removeEventListener("dragleave", handleGlobalDragLeave) - document.removeEventListener("drop", handleGlobalDrop) - }) - - return { - addAttachment, - addAttachments, - removeAttachment, - handlePaste, - } -} From 3df0a3ed19ccd02c67092a89be63ddac29e8d770 Mon Sep 17 00:00:00 2001 From: Prax Lannister Date: Tue, 24 Feb 2026 06:09:58 +0530 Subject: [PATCH 08/32] feat(app): require double-tap Escape to cancel AI response Single Escape during streaming now shows a toast warning instead of immediately aborting. User must press Escape again within 500ms to confirm cancellation. Prevents accidental interruption of AI responses. Ctrl+G still provides immediate cancel for power users. --- packages/app/src/components/prompt-input.tsx | 1595 ------------------ 1 file changed, 1595 deletions(-) delete mode 100644 packages/app/src/components/prompt-input.tsx diff --git a/packages/app/src/components/prompt-input.tsx b/packages/app/src/components/prompt-input.tsx deleted file mode 100644 index f523671ec9d8..000000000000 --- a/packages/app/src/components/prompt-input.tsx +++ /dev/null @@ -1,1595 +0,0 @@ -import { useFilteredList } from "@opencode-ai/ui/hooks" -import { useSpring } from "@opencode-ai/ui/motion-spring" -import { createEffect, on, Component, Show, onCleanup, createMemo, createSignal } from "solid-js" -import { createStore } from "solid-js/store" -import { useLocal } from "@/context/local" -import { selectionFromLines, type SelectedLineRange, useFile } from "@/context/file" -import { - ContentPart, - DEFAULT_PROMPT, - isPromptEqual, - Prompt, - usePrompt, - ImageAttachmentPart, - AgentPart, - FileAttachmentPart, -} from "@/context/prompt" -import { useLayout } from "@/context/layout" -import { useSDK } from "@/context/sdk" -import { useSync } from "@/context/sync" -import { useComments } from "@/context/comments" -import { Button } from "@opencode-ai/ui/button" -import { DockShellForm, DockTray } from "@opencode-ai/ui/dock-surface" -import { Icon } from "@opencode-ai/ui/icon" -import { ProviderIcon } from "@opencode-ai/ui/provider-icon" -import { Tooltip, TooltipKeybind } from "@opencode-ai/ui/tooltip" -import { IconButton } from "@opencode-ai/ui/icon-button" -import { Select } from "@opencode-ai/ui/select" -import { useDialog } from "@opencode-ai/ui/context/dialog" -import { ModelSelectorPopover } from "@/components/dialog-select-model" -import { DialogSelectModelUnpaid } from "@/components/dialog-select-model-unpaid" -import { useProviders } from "@/hooks/use-providers" -import { useCommand } from "@/context/command" -import { Persist, persisted } from "@/utils/persist" -import { usePermission } from "@/context/permission" -import { useLanguage } from "@/context/language" -import { usePlatform } from "@/context/platform" -import { useSessionLayout } from "@/pages/session/session-layout" -import { createSessionTabs } from "@/pages/session/helpers" -import { promptEnabled, promptProbe } from "@/testing/prompt" -import { createTextFragment, getCursorPosition, setCursorPosition, setRangeEdge } from "./prompt-input/editor-dom" -import { createPromptAttachments } from "./prompt-input/attachments" -import { ACCEPTED_FILE_TYPES } from "./prompt-input/files" -import { - canNavigateHistoryAtCursor, - navigatePromptHistory, - prependHistoryEntry, - type PromptHistoryComment, - type PromptHistoryEntry, - type PromptHistoryStoredEntry, - promptLength, -} from "./prompt-input/history" -import { createPromptSubmit, type FollowupDraft } from "./prompt-input/submit" -import { PromptPopover, type AtOption, type SlashCommand } from "./prompt-input/slash-popover" -import { PromptContextItems } from "./prompt-input/context-items" -import { PromptImageAttachments } from "./prompt-input/image-attachments" -import { PromptDragOverlay } from "./prompt-input/drag-overlay" -import { promptPlaceholder } from "./prompt-input/placeholder" -import { ImagePreview } from "@opencode-ai/ui/image-preview" - -interface PromptInputProps { - class?: string - ref?: (el: HTMLDivElement) => void - newSessionWorktree?: string - onNewSessionWorktreeReset?: () => void - edit?: { id: string; prompt: Prompt; context: FollowupDraft["context"] } - onEditLoaded?: () => void - shouldQueue?: () => boolean - onQueue?: (draft: FollowupDraft) => void - onAbort?: () => void - onSubmit?: () => void -} - -const EXAMPLES = [ - "prompt.example.1", - "prompt.example.2", - "prompt.example.3", - "prompt.example.4", - "prompt.example.5", - "prompt.example.6", - "prompt.example.7", - "prompt.example.8", - "prompt.example.9", - "prompt.example.10", - "prompt.example.11", - "prompt.example.12", - "prompt.example.13", - "prompt.example.14", - "prompt.example.15", - "prompt.example.16", - "prompt.example.17", - "prompt.example.18", - "prompt.example.19", - "prompt.example.20", - "prompt.example.21", - "prompt.example.22", - "prompt.example.23", - "prompt.example.24", - "prompt.example.25", -] as const - -const NON_EMPTY_TEXT = /[^\s\u200B]/ - -export const PromptInput: Component = (props) => { - const sdk = useSDK() - const sync = useSync() - const local = useLocal() - const files = useFile() - const prompt = usePrompt() - const layout = useLayout() - const comments = useComments() - const dialog = useDialog() - const providers = useProviders() - const command = useCommand() - const permission = usePermission() - const language = useLanguage() - const platform = usePlatform() - const { params, tabs, view } = useSessionLayout() - let editorRef!: HTMLDivElement - let fileInputRef: HTMLInputElement | undefined - let scrollRef!: HTMLDivElement - let slashPopoverRef!: HTMLDivElement - - const mirror = { input: false } - const inset = 56 - const space = `${inset}px` - - const scrollCursorIntoView = () => { - const container = scrollRef - const selection = window.getSelection() - if (!container || !selection || selection.rangeCount === 0) return - - const range = selection.getRangeAt(0) - if (!editorRef.contains(range.startContainer)) return - - const cursor = getCursorPosition(editorRef) - const length = promptLength(prompt.current().filter((part) => part.type !== "image")) - if (cursor >= length) { - container.scrollTop = container.scrollHeight - return - } - - const rect = range.getClientRects().item(0) ?? range.getBoundingClientRect() - if (!rect.height) return - - const containerRect = container.getBoundingClientRect() - const top = rect.top - containerRect.top + container.scrollTop - const bottom = rect.bottom - containerRect.top + container.scrollTop - const padding = 12 - - if (top < container.scrollTop + padding) { - container.scrollTop = Math.max(0, top - padding) - return - } - - if (bottom > container.scrollTop + container.clientHeight - inset) { - container.scrollTop = bottom - container.clientHeight + inset - } - } - - const queueScroll = (count = 2) => { - requestAnimationFrame(() => { - scrollCursorIntoView() - if (count > 1) queueScroll(count - 1) - }) - } - - const activeFileTab = createSessionTabs({ - tabs, - pathFromTab: files.pathFromTab, - normalizeTab: (tab) => (tab.startsWith("file://") ? files.tab(tab) : tab), - }).activeFileTab - - const commentInReview = (path: string) => { - const sessionID = params.id - if (!sessionID) return false - - const diffs = sync.data.session_diff[sessionID] - if (!diffs) return false - return diffs.some((diff) => diff.file === path) - } - - const openComment = (item: { path: string; commentID?: string; commentOrigin?: "review" | "file" }) => { - if (!item.commentID) return - - const focus = { file: item.path, id: item.commentID } - comments.setActive(focus) - - const queueCommentFocus = (attempts = 6) => { - const schedule = (left: number) => { - requestAnimationFrame(() => { - comments.setFocus({ ...focus }) - if (left <= 0) return - requestAnimationFrame(() => { - const current = comments.focus() - if (!current) return - if (current.file !== focus.file || current.id !== focus.id) return - schedule(left - 1) - }) - }) - } - - schedule(attempts) - } - - const wantsReview = item.commentOrigin === "review" || (item.commentOrigin !== "file" && commentInReview(item.path)) - if (wantsReview) { - if (!view().reviewPanel.opened()) view().reviewPanel.open() - layout.fileTree.setTab("changes") - tabs().setActive("review") - queueCommentFocus() - return - } - - if (!view().reviewPanel.opened()) view().reviewPanel.open() - layout.fileTree.setTab("all") - const tab = files.tab(item.path) - tabs().open(tab) - tabs().setActive(tab) - Promise.resolve(files.load(item.path)).finally(() => queueCommentFocus()) - } - - const recent = createMemo(() => { - const all = tabs().all() - const active = activeFileTab() - const order = active ? [active, ...all.filter((x) => x !== active)] : all - const seen = new Set() - const paths: string[] = [] - - for (const tab of order) { - const path = files.pathFromTab(tab) - if (!path) continue - if (seen.has(path)) continue - seen.add(path) - paths.push(path) - } - - return paths - }) - const info = createMemo(() => (params.id ? sync.session.get(params.id) : undefined)) - const status = createMemo( - () => - sync.data.session_status[params.id ?? ""] ?? { - type: "idle", - }, - ) - const working = createMemo(() => status()?.type !== "idle") - const tip = () => { - if (working()) { - return ( -
- {language.t("prompt.action.stop")} - {language.t("common.key.esc")} -
- ) - } - - return ( -
- {language.t("prompt.action.send")} - -
- ) - } - const imageAttachments = createMemo(() => - prompt.current().filter((part): part is ImageAttachmentPart => part.type === "image"), - ) - - const [store, setStore] = createStore<{ - popover: "at" | "slash" | null - historyIndex: number - savedPrompt: PromptHistoryEntry | null - placeholder: number - draggingType: "image" | "@mention" | null - mode: "normal" | "shell" - applyingHistory: boolean - }>({ - popover: null, - historyIndex: -1, - savedPrompt: null as PromptHistoryEntry | null, - placeholder: Math.floor(Math.random() * EXAMPLES.length), - draggingType: null, - mode: "normal", - applyingHistory: false, - }) - - const buttonsSpring = useSpring(() => (store.mode === "normal" ? 1 : 0), { visualDuration: 0.2, bounce: 0 }) - const motion = (value: number) => ({ - opacity: value, - transform: `scale(${0.95 + value * 0.05})`, - filter: `blur(${(1 - value) * 2}px)`, - "pointer-events": value > 0.5 ? ("auto" as const) : ("none" as const), - }) - const buttons = createMemo(() => motion(buttonsSpring())) - const shell = createMemo(() => motion(1 - buttonsSpring())) - const control = createMemo(() => ({ height: "28px", ...buttons() })) - - const commentCount = createMemo(() => { - if (store.mode === "shell") return 0 - return prompt.context.items().filter((item) => !!item.comment?.trim()).length - }) - - const contextItems = createMemo(() => { - const items = prompt.context.items() - if (store.mode !== "shell") return items - return items.filter((item) => !item.comment?.trim()) - }) - - const hasUserPrompt = createMemo(() => { - const sessionID = params.id - if (!sessionID) return false - const messages = sync.data.message[sessionID] - if (!messages) return false - return messages.some((m) => m.role === "user") - }) - - const [history, setHistory] = persisted( - Persist.global("prompt-history", ["prompt-history.v1"]), - createStore<{ - entries: PromptHistoryStoredEntry[] - }>({ - entries: [], - }), - ) - const [shellHistory, setShellHistory] = persisted( - Persist.global("prompt-history-shell", ["prompt-history-shell.v1"]), - createStore<{ - entries: PromptHistoryStoredEntry[] - }>({ - entries: [], - }), - ) - - const suggest = createMemo(() => !hasUserPrompt()) - - const placeholder = createMemo(() => - promptPlaceholder({ - mode: store.mode, - commentCount: commentCount(), - example: suggest() ? language.t(EXAMPLES[store.placeholder]) : "", - suggest: suggest(), - t: (key, params) => language.t(key as Parameters[0], params as never), - }), - ) - - const historyComments = () => { - const byID = new Map(comments.all().map((item) => [`${item.file}\n${item.id}`, item] as const)) - return prompt.context.items().flatMap((item) => { - if (item.type !== "file") return [] - const comment = item.comment?.trim() - if (!comment) return [] - - const selection = item.commentID ? byID.get(`${item.path}\n${item.commentID}`)?.selection : undefined - const nextSelection = - selection ?? - (item.selection - ? ({ - start: item.selection.startLine, - end: item.selection.endLine, - } satisfies SelectedLineRange) - : undefined) - if (!nextSelection) return [] - - return [ - { - id: item.commentID ?? item.key, - path: item.path, - selection: { ...nextSelection }, - comment, - time: item.commentID ? (byID.get(`${item.path}\n${item.commentID}`)?.time ?? Date.now()) : Date.now(), - origin: item.commentOrigin, - preview: item.preview, - } satisfies PromptHistoryComment, - ] - }) - } - - const applyHistoryComments = (items: PromptHistoryComment[]) => { - comments.replace( - items.map((item) => ({ - id: item.id, - file: item.path, - selection: { ...item.selection }, - comment: item.comment, - time: item.time, - })), - ) - prompt.context.replaceComments( - items.map((item) => ({ - type: "file" as const, - path: item.path, - selection: selectionFromLines(item.selection), - comment: item.comment, - commentID: item.id, - commentOrigin: item.origin, - preview: item.preview, - })), - ) - } - - const applyHistoryPrompt = (entry: PromptHistoryEntry, position: "start" | "end") => { - const p = entry.prompt - const length = position === "start" ? 0 : promptLength(p) - setStore("applyingHistory", true) - applyHistoryComments(entry.comments) - prompt.set(p, length) - requestAnimationFrame(() => { - editorRef.focus() - setCursorPosition(editorRef, length) - setStore("applyingHistory", false) - queueScroll() - }) - } - - const getCaretState = () => { - const selection = window.getSelection() - const textLength = promptLength(prompt.current()) - if (!selection || selection.rangeCount === 0) { - return { collapsed: false, cursorPosition: 0, textLength } - } - const anchorNode = selection.anchorNode - if (!anchorNode || !editorRef.contains(anchorNode)) { - return { collapsed: false, cursorPosition: 0, textLength } - } - return { - collapsed: selection.isCollapsed, - cursorPosition: getCursorPosition(editorRef), - textLength, - } - } - - const escBlur = () => platform.platform === "desktop" && platform.os === "macos" - - const pick = () => fileInputRef?.click() - - const setMode = (mode: "normal" | "shell") => { - setStore("mode", mode) - setStore("popover", null) - requestAnimationFrame(() => editorRef?.focus()) - } - - const shellModeKey = "mod+shift+x" - const normalModeKey = "mod+shift+e" - - command.register("prompt-input", () => [ - { - id: "file.attach", - title: language.t("prompt.action.attachFile"), - category: language.t("command.category.file"), - keybind: "mod+u", - disabled: store.mode !== "normal", - onSelect: pick, - }, - { - id: "prompt.mode.shell", - title: language.t("command.prompt.mode.shell"), - category: language.t("command.category.session"), - keybind: shellModeKey, - disabled: store.mode === "shell", - onSelect: () => setMode("shell"), - }, - { - id: "prompt.mode.normal", - title: language.t("command.prompt.mode.normal"), - category: language.t("command.category.session"), - keybind: normalModeKey, - disabled: store.mode === "normal", - onSelect: () => setMode("normal"), - }, - ]) - - const closePopover = () => setStore("popover", null) - - const resetHistoryNavigation = (force = false) => { - if (!force && (store.historyIndex < 0 || store.applyingHistory)) return - setStore("historyIndex", -1) - setStore("savedPrompt", null) - } - - const clearEditor = () => { - editorRef.innerHTML = "" - } - - const setEditorText = (text: string) => { - clearEditor() - editorRef.textContent = text - } - - const focusEditorEnd = () => { - requestAnimationFrame(() => { - editorRef.focus() - const range = document.createRange() - const selection = window.getSelection() - range.selectNodeContents(editorRef) - range.collapse(false) - selection?.removeAllRanges() - selection?.addRange(range) - }) - } - - const currentCursor = () => { - const selection = window.getSelection() - if (!selection || selection.rangeCount === 0 || !editorRef.contains(selection.anchorNode)) return null - return getCursorPosition(editorRef) - } - - const renderEditorWithCursor = (parts: Prompt) => { - const cursor = currentCursor() - renderEditor(parts) - if (cursor !== null) setCursorPosition(editorRef, cursor) - } - - createEffect(() => { - params.id - if (params.id) return - if (!suggest()) return - const interval = setInterval(() => { - setStore("placeholder", (prev) => (prev + 1) % EXAMPLES.length) - }, 6500) - onCleanup(() => clearInterval(interval)) - }) - - const [composing, setComposing] = createSignal(false) - const isImeComposing = (event: KeyboardEvent) => event.isComposing || composing() || event.keyCode === 229 - - const handleBlur = () => { - closePopover() - setComposing(false) - } - - const handleCompositionStart = () => { - setComposing(true) - } - - const handleCompositionEnd = () => { - setComposing(false) - requestAnimationFrame(() => { - if (composing()) return - reconcile(prompt.current().filter((part) => part.type !== "image")) - }) - } - - const agentList = createMemo(() => - sync.data.agent - .filter((agent) => !agent.hidden && agent.mode !== "primary") - .map((agent): AtOption => ({ type: "agent", name: agent.name, display: agent.name })), - ) - const agentNames = createMemo(() => local.agent.list().map((agent) => agent.name)) - - const handleAtSelect = (option: AtOption | undefined) => { - if (!option) return - if (option.type === "agent") { - addPart({ type: "agent", name: option.name, content: "@" + option.name, start: 0, end: 0 }) - } else { - addPart({ type: "file", path: option.path, content: "@" + option.path, start: 0, end: 0 }) - } - } - - const atKey = (x: AtOption | undefined) => { - if (!x) return "" - return x.type === "agent" ? `agent:${x.name}` : `file:${x.path}` - } - - const { - flat: atFlat, - active: atActive, - setActive: setAtActive, - onInput: atOnInput, - onKeyDown: atOnKeyDown, - } = useFilteredList({ - items: async (query) => { - const agents = agentList() - const open = recent() - const seen = new Set(open) - const pinned: AtOption[] = open.map((path) => ({ type: "file", path, display: path, recent: true })) - const paths = await files.searchFilesAndDirectories(query) - const fileOptions: AtOption[] = paths - .filter((path) => !seen.has(path)) - .map((path) => ({ type: "file", path, display: path })) - return [...agents, ...pinned, ...fileOptions] - }, - key: atKey, - filterKeys: ["display"], - groupBy: (item) => { - if (item.type === "agent") return "agent" - if (item.recent) return "recent" - return "file" - }, - sortGroupsBy: (a, b) => { - const rank = (category: string) => { - if (category === "agent") return 0 - if (category === "recent") return 1 - return 2 - } - return rank(a.category) - rank(b.category) - }, - onSelect: handleAtSelect, - }) - - const slashCommands = createMemo(() => { - const builtin = command.options - .filter((opt) => !opt.disabled && !opt.id.startsWith("suggested.") && opt.slash) - .map((opt) => ({ - id: opt.id, - trigger: opt.slash!, - title: opt.title, - description: opt.description, - keybind: opt.keybind, - type: "builtin" as const, - })) - - const custom = sync.data.command.map((cmd) => ({ - id: `custom.${cmd.name}`, - trigger: cmd.name, - title: cmd.name, - description: cmd.description, - type: "custom" as const, - source: cmd.source, - })) - - return [...custom, ...builtin] - }) - - const handleSlashSelect = (cmd: SlashCommand | undefined) => { - if (!cmd) return - promptProbe.select(cmd.id) - closePopover() - - if (cmd.type === "custom") { - const text = `/${cmd.trigger} ` - setEditorText(text) - prompt.set([{ type: "text", content: text, start: 0, end: text.length }], text.length) - focusEditorEnd() - return - } - - clearEditor() - prompt.set([{ type: "text", content: "", start: 0, end: 0 }], 0) - command.trigger(cmd.id, "slash") - } - - const { - flat: slashFlat, - active: slashActive, - setActive: setSlashActive, - onInput: slashOnInput, - onKeyDown: slashOnKeyDown, - } = useFilteredList({ - items: slashCommands, - key: (x) => x?.id, - filterKeys: ["trigger", "title"], - onSelect: handleSlashSelect, - }) - - const createPill = (part: FileAttachmentPart | AgentPart) => { - const pill = document.createElement("span") - pill.textContent = part.content - pill.setAttribute("data-type", part.type) - if (part.type === "file") pill.setAttribute("data-path", part.path) - if (part.type === "agent") pill.setAttribute("data-name", part.name) - pill.setAttribute("contenteditable", "false") - pill.style.userSelect = "text" - pill.style.cursor = "default" - return pill - } - - const isNormalizedEditor = () => - Array.from(editorRef.childNodes).every((node) => { - if (node.nodeType === Node.TEXT_NODE) { - const text = node.textContent ?? "" - if (!text.includes("\u200B")) return true - if (text !== "\u200B") return false - - const prev = node.previousSibling - const next = node.nextSibling - const prevIsBr = prev?.nodeType === Node.ELEMENT_NODE && (prev as HTMLElement).tagName === "BR" - return !!prevIsBr && !next - } - if (node.nodeType !== Node.ELEMENT_NODE) return false - const el = node as HTMLElement - if (el.dataset.type === "file") return true - if (el.dataset.type === "agent") return true - return el.tagName === "BR" - }) - - const renderEditor = (parts: Prompt) => { - clearEditor() - for (const part of parts) { - if (part.type === "text") { - editorRef.appendChild(createTextFragment(part.content)) - continue - } - if (part.type === "file" || part.type === "agent") { - editorRef.appendChild(createPill(part)) - } - } - - const last = editorRef.lastChild - if (last?.nodeType === Node.ELEMENT_NODE && (last as HTMLElement).tagName === "BR") { - editorRef.appendChild(document.createTextNode("\u200B")) - } - } - - // Auto-scroll active command into view when navigating with keyboard - createEffect(() => { - const activeId = slashActive() - if (!activeId || !slashPopoverRef) return - - requestAnimationFrame(() => { - const element = slashPopoverRef.querySelector(`[data-slash-id="${activeId}"]`) - element?.scrollIntoView({ block: "nearest", behavior: "smooth" }) - }) - }) - - if (promptEnabled()) { - createEffect(() => { - promptProbe.set({ - popover: store.popover, - slash: { - active: slashActive() ?? null, - ids: slashFlat().map((cmd) => cmd.id), - }, - }) - }) - - onCleanup(() => promptProbe.clear()) - } - - const selectPopoverActive = () => { - if (store.popover === "at") { - const items = atFlat() - if (items.length === 0) return - const active = atActive() - const item = items.find((entry) => atKey(entry) === active) ?? items[0] - handleAtSelect(item) - return - } - - if (store.popover === "slash") { - const items = slashFlat() - if (items.length === 0) return - const active = slashActive() - const item = items.find((entry) => entry.id === active) ?? items[0] - handleSlashSelect(item) - } - } - - const reconcile = (input: Prompt) => { - if (mirror.input) { - mirror.input = false - if (isNormalizedEditor()) return - - renderEditorWithCursor(input) - return - } - - const dom = parseFromDOM() - if (isNormalizedEditor() && isPromptEqual(input, dom)) return - - renderEditorWithCursor(input) - } - - createEffect( - on( - () => prompt.current(), - (parts) => { - if (composing()) return - reconcile(parts.filter((part) => part.type !== "image")) - }, - ), - ) - - const parseFromDOM = (): Prompt => { - const parts: Prompt = [] - let position = 0 - let buffer = "" - - const flushText = () => { - let content = buffer - if (content.includes("\r")) content = content.replace(/\r\n?/g, "\n") - if (content.includes("\u200B")) content = content.replace(/\u200B/g, "") - buffer = "" - if (!content) return - parts.push({ type: "text", content, start: position, end: position + content.length }) - position += content.length - } - - const pushFile = (file: HTMLElement) => { - const content = file.textContent ?? "" - parts.push({ - type: "file", - path: file.dataset.path!, - content, - start: position, - end: position + content.length, - }) - position += content.length - } - - const pushAgent = (agent: HTMLElement) => { - const content = agent.textContent ?? "" - parts.push({ - type: "agent", - name: agent.dataset.name!, - content, - start: position, - end: position + content.length, - }) - position += content.length - } - - const visit = (node: Node) => { - if (node.nodeType === Node.TEXT_NODE) { - buffer += node.textContent ?? "" - return - } - if (node.nodeType !== Node.ELEMENT_NODE) return - - const el = node as HTMLElement - if (el.dataset.type === "file") { - flushText() - pushFile(el) - return - } - if (el.dataset.type === "agent") { - flushText() - pushAgent(el) - return - } - if (el.tagName === "BR") { - buffer += "\n" - return - } - - for (const child of Array.from(el.childNodes)) { - visit(child) - } - } - - const children = Array.from(editorRef.childNodes) - children.forEach((child, index) => { - const isBlock = child.nodeType === Node.ELEMENT_NODE && ["DIV", "P"].includes((child as HTMLElement).tagName) - visit(child) - if (isBlock && index < children.length - 1) { - buffer += "\n" - } - }) - - flushText() - - if (parts.length === 0) parts.push(...DEFAULT_PROMPT) - return parts - } - - const handleInput = () => { - const rawParts = parseFromDOM() - const images = imageAttachments() - const cursorPosition = getCursorPosition(editorRef) - const rawText = - rawParts.length === 1 && rawParts[0]?.type === "text" - ? rawParts[0].content - : rawParts.map((p) => ("content" in p ? p.content : "")).join("") - const hasNonText = rawParts.some((part) => part.type !== "text") - const shouldReset = !NON_EMPTY_TEXT.test(rawText) && !hasNonText && images.length === 0 - - if (shouldReset) { - closePopover() - resetHistoryNavigation() - if (prompt.dirty()) { - mirror.input = true - prompt.set(DEFAULT_PROMPT, 0) - } - queueScroll() - return - } - - const shellMode = store.mode === "shell" - - if (!shellMode) { - const atMatch = rawText.substring(0, cursorPosition).match(/@(\S*)$/) - const slashMatch = rawText.match(/^\/(\S*)$/) - - if (atMatch) { - atOnInput(atMatch[1]) - setStore("popover", "at") - } else if (slashMatch) { - slashOnInput(slashMatch[1]) - setStore("popover", "slash") - } else { - closePopover() - } - } else { - closePopover() - } - - resetHistoryNavigation() - - mirror.input = true - prompt.set([...rawParts, ...images], cursorPosition) - queueScroll() - } - - const addPart = (part: ContentPart) => { - if (part.type === "image") return false - - const selection = window.getSelection() - if (!selection) return false - - if (selection.rangeCount === 0 || !editorRef.contains(selection.anchorNode)) { - editorRef.focus() - const cursor = prompt.cursor() ?? promptLength(prompt.current()) - setCursorPosition(editorRef, cursor) - } - - if (selection.rangeCount === 0) return false - const range = selection.getRangeAt(0) - if (!editorRef.contains(range.startContainer)) return false - - if (part.type === "file" || part.type === "agent") { - const cursorPosition = getCursorPosition(editorRef) - const rawText = prompt - .current() - .map((p) => ("content" in p ? p.content : "")) - .join("") - const textBeforeCursor = rawText.substring(0, cursorPosition) - const atMatch = textBeforeCursor.match(/@(\S*)$/) - const pill = createPill(part) - const gap = document.createTextNode(" ") - - if (atMatch) { - const start = atMatch.index ?? cursorPosition - atMatch[0].length - setRangeEdge(editorRef, range, "start", start) - setRangeEdge(editorRef, range, "end", cursorPosition) - } - - range.deleteContents() - range.insertNode(gap) - range.insertNode(pill) - range.setStartAfter(gap) - range.collapse(true) - selection.removeAllRanges() - selection.addRange(range) - } - - if (part.type === "text") { - const fragment = createTextFragment(part.content) - const last = fragment.lastChild - range.deleteContents() - range.insertNode(fragment) - if (last) { - if (last.nodeType === Node.TEXT_NODE) { - const text = last.textContent ?? "" - if (text === "\u200B") { - range.setStart(last, 0) - } - if (text !== "\u200B") { - range.setStart(last, text.length) - } - } - if (last.nodeType !== Node.TEXT_NODE) { - const isBreak = last.nodeType === Node.ELEMENT_NODE && (last as HTMLElement).tagName === "BR" - const next = last.nextSibling - const emptyText = next?.nodeType === Node.TEXT_NODE && (next.textContent ?? "") === "" - if (isBreak && (!next || emptyText)) { - const placeholder = next && emptyText ? next : document.createTextNode("\u200B") - if (!next) last.parentNode?.insertBefore(placeholder, null) - placeholder.textContent = "\u200B" - range.setStart(placeholder, 0) - } else { - range.setStartAfter(last) - } - } - } - range.collapse(true) - selection.removeAllRanges() - selection.addRange(range) - } - - handleInput() - closePopover() - return true - } - - const addToHistory = (prompt: Prompt, mode: "normal" | "shell") => { - const currentHistory = mode === "shell" ? shellHistory : history - const setCurrentHistory = mode === "shell" ? setShellHistory : setHistory - const next = prependHistoryEntry(currentHistory.entries, prompt, mode === "shell" ? [] : historyComments()) - if (next === currentHistory.entries) return - setCurrentHistory("entries", next) - } - - createEffect( - on( - () => props.edit?.id, - (id) => { - const edit = props.edit - if (!id || !edit) return - - for (const item of prompt.context.items()) { - prompt.context.remove(item.key) - } - - for (const item of edit.context) { - prompt.context.add({ - type: item.type, - path: item.path, - selection: item.selection, - comment: item.comment, - commentID: item.commentID, - commentOrigin: item.commentOrigin, - preview: item.preview, - }) - } - - setStore("mode", "normal") - setStore("popover", null) - setStore("historyIndex", -1) - setStore("savedPrompt", null) - prompt.set(edit.prompt, promptLength(edit.prompt)) - requestAnimationFrame(() => { - editorRef.focus() - setCursorPosition(editorRef, promptLength(edit.prompt)) - queueScroll() - }) - props.onEditLoaded?.() - }, - { defer: true }, - ), - ) - - const navigateHistory = (direction: "up" | "down") => { - const result = navigatePromptHistory({ - direction, - entries: store.mode === "shell" ? shellHistory.entries : history.entries, - historyIndex: store.historyIndex, - currentPrompt: prompt.current(), - currentComments: historyComments(), - savedPrompt: store.savedPrompt, - }) - if (!result.handled) return false - setStore("historyIndex", result.historyIndex) - setStore("savedPrompt", result.savedPrompt) - applyHistoryPrompt(result.entry, result.cursor) - return true - } - - const { addAttachments, removeAttachment, handlePaste } = createPromptAttachments({ - editor: () => editorRef, - isDialogActive: () => !!dialog.active, - setDraggingType: (type) => setStore("draggingType", type), - focusEditor: () => { - editorRef.focus() - setCursorPosition(editorRef, promptLength(prompt.current())) - }, - addPart, - readClipboardImage: platform.readClipboardImage, - }) - - const variants = createMemo(() => ["default", ...local.model.variant.list()]) - const accepting = createMemo(() => { - const id = params.id - if (!id) return permission.isAutoAcceptingDirectory(sdk.directory) - return permission.isAutoAccepting(id, sdk.directory) - }) - const acceptLabel = createMemo(() => - language.t(accepting() ? "command.permissions.autoaccept.disable" : "command.permissions.autoaccept.enable"), - ) - const toggleAccept = () => { - if (!params.id) { - permission.toggleAutoAcceptDirectory(sdk.directory) - return - } - - permission.toggleAutoAccept(params.id, sdk.directory) - } - - const { abort, handleSubmit } = createPromptSubmit({ - info, - imageAttachments, - commentCount, - autoAccept: () => accepting(), - mode: () => store.mode, - working, - editor: () => editorRef, - queueScroll, - promptLength, - addToHistory, - resetHistoryNavigation: () => { - resetHistoryNavigation(true) - }, - setMode: (mode) => setStore("mode", mode), - setPopover: (popover) => setStore("popover", popover), - newSessionWorktree: () => props.newSessionWorktree, - onNewSessionWorktreeReset: props.onNewSessionWorktreeReset, - shouldQueue: props.shouldQueue, - onQueue: props.onQueue, - onAbort: props.onAbort, - onSubmit: props.onSubmit, - }) - - const handleKeyDown = (event: KeyboardEvent) => { - if ((event.metaKey || event.ctrlKey) && !event.altKey && !event.shiftKey && event.key.toLowerCase() === "u") { - event.preventDefault() - if (store.mode !== "normal") return - pick() - return - } - - if (event.key === "Backspace") { - const selection = window.getSelection() - if (selection && selection.isCollapsed) { - const node = selection.anchorNode - const offset = selection.anchorOffset - if (node && node.nodeType === Node.TEXT_NODE) { - const text = node.textContent ?? "" - if (/^\u200B+$/.test(text) && offset > 0) { - const range = document.createRange() - range.setStart(node, 0) - range.collapse(true) - selection.removeAllRanges() - selection.addRange(range) - } - } - } - } - - if (event.key === "!" && store.mode === "normal") { - const cursorPosition = getCursorPosition(editorRef) - if (cursorPosition === 0) { - setStore("mode", "shell") - setStore("popover", null) - event.preventDefault() - return - } - } - - if (event.key === "Escape") { - if (store.popover) { - closePopover() - event.preventDefault() - event.stopPropagation() - return - } - - if (store.mode === "shell") { - setStore("mode", "normal") - event.preventDefault() - event.stopPropagation() - return - } - - if (working()) { - abort() - event.preventDefault() - event.stopPropagation() - return - } - - if (escBlur()) { - editorRef.blur() - event.preventDefault() - event.stopPropagation() - return - } - } - - if (store.mode === "shell") { - const { collapsed, cursorPosition, textLength } = getCaretState() - if (event.key === "Backspace" && collapsed && cursorPosition === 0 && textLength === 0) { - setStore("mode", "normal") - event.preventDefault() - return - } - } - - // Handle Shift+Enter BEFORE IME check - Shift+Enter is never used for IME input - // and should always insert a newline regardless of composition state - if (event.key === "Enter" && event.shiftKey) { - addPart({ type: "text", content: "\n", start: 0, end: 0 }) - event.preventDefault() - return - } - - if (event.key === "Enter" && isImeComposing(event)) { - return - } - - const ctrl = event.ctrlKey && !event.metaKey && !event.altKey && !event.shiftKey - - if (store.popover) { - if (event.key === "Tab") { - selectPopoverActive() - event.preventDefault() - return - } - const nav = event.key === "ArrowUp" || event.key === "ArrowDown" || event.key === "Enter" - const ctrlNav = ctrl && (event.key === "n" || event.key === "p") - if (nav || ctrlNav) { - if (store.popover === "at") { - atOnKeyDown(event) - event.preventDefault() - return - } - if (store.popover === "slash") { - slashOnKeyDown(event) - } - event.preventDefault() - return - } - } - - if (ctrl && event.code === "KeyG") { - if (store.popover) { - closePopover() - event.preventDefault() - return - } - if (working()) { - abort() - event.preventDefault() - } - return - } - - if (event.key === "ArrowUp" || event.key === "ArrowDown") { - if (event.altKey || event.ctrlKey || event.metaKey) return - const { collapsed } = getCaretState() - if (!collapsed) return - - const cursorPosition = getCursorPosition(editorRef) - const textContent = prompt - .current() - .map((part) => ("content" in part ? part.content : "")) - .join("") - const direction = event.key === "ArrowUp" ? "up" : "down" - if (!canNavigateHistoryAtCursor(direction, textContent, cursorPosition, store.historyIndex >= 0)) return - if (navigateHistory(direction)) { - event.preventDefault() - } - return - } - - // Note: Shift+Enter is handled earlier, before IME check - if (event.key === "Enter" && !event.shiftKey) { - event.preventDefault() - if (event.repeat) return - if ( - working() && - prompt - .current() - .map((part) => ("content" in part ? part.content : "")) - .join("") - .trim().length === 0 && - imageAttachments().length === 0 && - commentCount() === 0 - ) { - return - } - handleSubmit(event) - } - } - - return ( -
- (slashPopoverRef = el)} - atFlat={atFlat()} - atActive={atActive() ?? undefined} - atKey={atKey} - setAtActive={setAtActive} - onAtSelect={handleAtSelect} - slashFlat={slashFlat()} - slashActive={slashActive() ?? undefined} - setSlashActive={setSlashActive} - onSlashSelect={handleSlashSelect} - commandKeybind={command.keybind} - t={(key) => language.t(key as Parameters[0])} - /> - - - { - const active = comments.active() - return !!item.commentID && item.commentID === active?.id && item.path === active?.file - }} - openComment={openComment} - remove={(item) => { - if (item.commentID) comments.remove(item.path, item.commentID) - prompt.context.remove(item.key) - }} - t={(key) => language.t(key as Parameters[0])} - /> - - dialog.show(() => ) - } - onRemove={removeAttachment} - removeLabel={language.t("prompt.attachment.remove")} - /> -
{ - const target = e.target - if (!(target instanceof HTMLElement)) return - if ( - target.closest( - '[data-action="prompt-attach"], [data-action="prompt-submit"], [data-action="prompt-permissions"]', - ) - ) { - return - } - editorRef?.focus() - }} - > -
(scrollRef = el)} - style={{ "scroll-padding-bottom": space }} - > -
{ - editorRef = el - props.ref?.(el) - }} - role="textbox" - aria-multiline="true" - aria-label={placeholder()} - contenteditable="true" - autocapitalize={store.mode === "normal" ? "sentences" : "off"} - autocorrect={store.mode === "normal" ? "on" : "off"} - spellcheck={store.mode === "normal"} - onInput={handleInput} - onPaste={handlePaste} - onCompositionStart={handleCompositionStart} - onCompositionEnd={handleCompositionEnd} - onBlur={handleBlur} - onKeyDown={handleKeyDown} - classList={{ - "select-text": true, - "w-full pl-3 pr-2 pt-2 text-14-regular text-text-strong focus:outline-none whitespace-pre-wrap": true, - "[&_[data-type=file]]:text-syntax-property": true, - "[&_[data-type=agent]]:text-syntax-type": true, - "font-mono!": store.mode === "shell", - }} - style={{ "padding-bottom": space }} - /> - -
- {placeholder()} -
-
-
- - - - - -
-
-
- {language.t("prompt.mode.shell")} -
-
-
-
- - (x === "default" ? language.t("common.default") : x)} - onSelect={(x) => local.model.variant.set(x === "default" ? undefined : x)} - class="capitalize max-w-[160px] text-text-base" - valueClass="truncate text-13-regular text-text-base" - triggerStyle={control()} - triggerProps={{ "data-action": "prompt-model-variant" }} - variant="ghost" - /> - -
- - - -
-
-
- - -
- ) -} From 7e2322940db3fddbc3fd361b6c79cd9d77df048b Mon Sep 17 00:00:00 2001 From: Prax Lannister Date: Tue, 24 Feb 2026 06:15:16 +0530 Subject: [PATCH 09/32] docs: add research notes and planning docs - Cline subagent architecture research questions - UI/UX overhaul plan - Escape key UX research --- docs/09-temp/cline-subagent-research.md | 66 +++++++++++++++++++++++++ docs/09-temp/escape-key-ux-research.md | 32 ++++++++++++ docs/09-temp/ui-overhaul-plan.md | 35 +++++++++++++ 3 files changed, 133 insertions(+) create mode 100644 docs/09-temp/cline-subagent-research.md create mode 100644 docs/09-temp/escape-key-ux-research.md create mode 100644 docs/09-temp/ui-overhaul-plan.md diff --git a/docs/09-temp/cline-subagent-research.md b/docs/09-temp/cline-subagent-research.md new file mode 100644 index 000000000000..76d7684e9929 --- /dev/null +++ b/docs/09-temp/cline-subagent-research.md @@ -0,0 +1,66 @@ +# Research: Cline Subagent Architecture + +**Date:** 2026-02-24 +**Status:** TODO — pick up in next session + +## Research Questions + +1. How does Cline form subagents? How does the AI decide how many to create? +2. What task distribution strategy is used? How are tasks assigned to each subagent? +3. How is context shared between parent agent and subagents? +4. How are subagent outputs aggregated back into the main conversation? +5. What happens when a subagent task errors? Error handling and recovery. +6. How could this inspire improvements to opencode's existing subagent system? + +## Key References + +- **CLI Subagent Command Transformation**: `src/integrations/cli-subagents/subagent_command.ts` + - `isSubagentCommand()` — identifies simplified cline commands + - `transformClineCommand()` — injects `--json -y` flags for autonomous execution + +- **Agent Client Protocol (ACP)**: `cli/src/acp/AcpAgent.ts` + - Bridges ClineAgent with AgentSideConnection for stdio-based communication + - Handles permission requests, forwards session events + +- **ClineAgent**: `cli/src/agent/ClineAgent.ts` + - Implements ACP agent interface + - Translates ACP requests into core Controller operations + - Manages authentication, session modes, processes user prompts + +- **Message Translator**: `cli/src/agent/messageTranslator.ts` + - Converts ClineMessage objects to ACP SessionUpdate messages + - Computes deltas for streaming (avoids duplicate content) + +## CodeWiki References + +- https://codewiki.google/github.com/cline/cline#cli-subagent-command-transformation +- https://codewiki.google/github.com/cline/cline#command-line-interface-cli-functionality +- https://codewiki.google/github.com/cline/cline#agent-client-protocol-acp-integration-for-external-control + +## Comparison with OpenCode's Subagent System + +OpenCode already has subagents (`TaskTool` in `packages/opencode/src/tool/task.ts`): +- Subagents are spawned via the `task` tool +- Each subagent gets its own child session +- Subagent types: explore, plan, general (configurable per agent) +- Results returned as tool output to parent session + +**Gaps to investigate:** +- Does Cline support parallel subagents? (OpenCode does via plan mode Phase 1) +- How does Cline's ACP protocol compare to opencode's Bus event system? +- Can we adopt Cline's streaming delta pattern for subagent updates? + +## Tonight's Session Summary (2026-02-24, 2:37 AM - 4:57 AM) + +### 6 PRs Submitted to opencode (sst/opencode): +1. **#14820** — Streaming content duplication fix (global-sdk.tsx voided Set) +2. **#14821** — Font size settings (CSS vars + terminal + UI stepper) +3. **#14826** — ContextOverflowError auto-recovery (processor.ts) +4. **#14827** — Prune before compaction (prompt.ts) +5. **#14831** — Context usage card with compact button (session-context-tab.tsx) +6. **#14835** — Wide mode setting (full-width chat toggle) + +### Issues Created: +- #14822, #14823, #14824, #14825, #14830, #14834 + +### All branches merged into `origin/dev` on fork (PrakharMNNIT/opencode) diff --git a/docs/09-temp/escape-key-ux-research.md b/docs/09-temp/escape-key-ux-research.md new file mode 100644 index 000000000000..37575a6243bb --- /dev/null +++ b/docs/09-temp/escape-key-ux-research.md @@ -0,0 +1,32 @@ +# Research: Escape Key Cancel UX + +**Date:** 2026-02-24 +**Status:** TODO — brainstorm in next session + +## Problem +Pressing Escape accidentally during AI response immediately stops the response with no confirmation. No visual feedback in chat that response was interrupted. + +## Current Behavior +- Escape → immediately cancels the LLM response +- Shows a notification/warning toast +- No visual indicator in the chat thread that the message was interrupted +- No confirmation dialog before cancelling + +## User's Proposed Improvements +1. **Confirmation before cancel** — Alert/dialog: "Are you sure you want to interrupt?" +2. **Visual interruption indicator** — Show in chat that the message was interrupted (red line, badge, etc.) +3. **Better UX** — Maybe double-tap Escape to cancel, or Escape once to show warning + +## Files to Investigate +- `packages/app/src/pages/session.tsx` — handleKeyDown, Escape handling +- `packages/app/src/components/prompt-input.tsx` — Escape key handling in input +- `packages/opencode/src/session/prompt.ts` — cancel() function +- `packages/ui/src/components/message-part.tsx` — interrupted state rendering +- `packages/app/src/pages/session/use-session-commands.tsx` — session.cancel command + +## Design Questions +1. Should Escape require double-tap? (like VS Code terminal) +2. Should there be a small "Esc to cancel" indicator during streaming? +3. Should interrupted messages have a visual indicator (red border/badge)? +4. Should there be an "undo cancel" option (resume if possible)? +5. How does Cline/Cursor handle this? diff --git a/docs/09-temp/ui-overhaul-plan.md b/docs/09-temp/ui-overhaul-plan.md new file mode 100644 index 000000000000..cf938fd0c2cf --- /dev/null +++ b/docs/09-temp/ui-overhaul-plan.md @@ -0,0 +1,35 @@ +# UI/UX Overhaul Plan — OpenCode Desktop + +**Date:** 2026-02-24 +**Status:** TODO — needs brainstorming session with ui-ux-pro-max + frontend-pe skills + +## User Requirements +- UI looks "very bad" — needs visual polish and tactile feel +- More themes and theme customization +- Better UI rendering quality +- Font size ✅ (fixed in PR #14821) +- Zoom in/out ✅ (already works via Cmd+/-/0) +- Wide mode ✅ (added in PR #14835) +- More UI settings options needed + +## Skills to Use +- `ui-ux-pro-max` — Design system, color palettes, typography, UX guidelines +- `frontend-pe` — Avant-garde UI design, micro-interactions, visual polish +- `brainstorming` — Plan before implementing + +## Areas to Investigate +1. **Theme system** — opencode already has theming (`packages/ui/src/context/theme/`). How to add more? +2. **Tactile UI** — Micro-interactions, hover states, transitions, shadows +3. **Typography** — Font rendering, line-height, letter-spacing refinements +4. **Spacing** — Consistent padding/margin system +5. **Colors** — More vibrant palettes, better contrast +6. **Animations** — Smooth transitions between states +7. **Settings page** — More appearance options (line-height, letter-spacing, sidebar width, etc.) + +## Tonight's Completed Fixes (6 PRs) +- #14820: Streaming content duplication +- #14821: Font size settings (CSS + terminal + UI) +- #14826: ContextOverflowError recovery +- #14827: Prune before compaction +- #14831: Context usage card + compact button +- #14835: Wide mode setting (full-width chat) From b49e7ba7d51cf0f07d5476886299c3b0db84e732 Mon Sep 17 00:00:00 2001 From: Prax Lannister Date: Tue, 24 Feb 2026 13:57:19 +0530 Subject: [PATCH 10/32] =?UTF-8?q?=E2=9C=A8=20feat(ui):=20overhaul=20UI=20w?= =?UTF-8?q?ith=20micro-interactions,=20animations,=20and=203=20new=20theme?= =?UTF-8?q?s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add font rendering: antialiased smoothing, optimizeLegibility, smooth scroll - Enhance animation system: easing/duration tokens, entrance keyframes, reduced-motion - Add utilities: theme-aware selection, focus rings, global transitions, styled scrollbars - Improve shadow depth: refined 5-level system (xs/sm/md/lg/xl) - Button: hover shadow lift, active press scale, icon color transitions - Card: upgraded radius, hover border highlight + shadow elevation - Dialog: frosted glass overlay (backdrop-filter blur), smoother scale+translate entrance - Icon-button: tactile press scale(0.92), icon color transitions - Tabs: color/background/border transitions on triggers - Tooltip: enabled directional slide-in transitions, upgraded radius/padding - Popover: upgraded shadow/radius, added translateY to animations - List: smooth background/radius transition on items - Add Rosé Pine theme (light + dark) - Add Kanagawa theme (light + dark) - Add Everforest theme (light + dark) --- docs/09-temp/ui-overhaul-plan.md | 113 +++++++--- packages/ui/src/components/button.css | 19 ++ packages/ui/src/components/card.css | 94 -------- packages/ui/src/components/dialog.css | 30 ++- packages/ui/src/components/icon-button.css | 28 ++- packages/ui/src/components/list.css | 3 + packages/ui/src/components/popover.css | 12 +- packages/ui/src/components/tabs.css | 4 + packages/ui/src/components/tooltip.css | 58 ++--- packages/ui/src/styles/animations.css | 223 ++++++++++++------- packages/ui/src/styles/base.css | 4 + packages/ui/src/styles/theme.css | 25 ++- packages/ui/src/styles/utilities.css | 96 ++++++-- packages/ui/src/theme/default-themes.ts | 116 ---------- packages/ui/src/theme/themes/everforest.json | 89 -------- packages/ui/src/theme/themes/kanagawa.json | 89 -------- packages/ui/src/theme/themes/rosepine.json | 85 ------- 17 files changed, 434 insertions(+), 654 deletions(-) delete mode 100644 packages/ui/src/components/card.css delete mode 100644 packages/ui/src/theme/default-themes.ts delete mode 100644 packages/ui/src/theme/themes/everforest.json delete mode 100644 packages/ui/src/theme/themes/kanagawa.json delete mode 100644 packages/ui/src/theme/themes/rosepine.json diff --git a/docs/09-temp/ui-overhaul-plan.md b/docs/09-temp/ui-overhaul-plan.md index cf938fd0c2cf..70d205acaf1a 100644 --- a/docs/09-temp/ui-overhaul-plan.md +++ b/docs/09-temp/ui-overhaul-plan.md @@ -1,35 +1,94 @@ # UI/UX Overhaul Plan — OpenCode Desktop **Date:** 2026-02-24 -**Status:** TODO — needs brainstorming session with ui-ux-pro-max + frontend-pe skills +**Status:** ✅ PHASE 1 COMPLETE ## User Requirements -- UI looks "very bad" — needs visual polish and tactile feel -- More themes and theme customization -- Better UI rendering quality +- UI looks "very bad" — needs visual polish and tactile feel ✅ +- More themes and theme customization ✅ +- Better UI rendering quality ✅ - Font size ✅ (fixed in PR #14821) - Zoom in/out ✅ (already works via Cmd+/-/0) - Wide mode ✅ (added in PR #14835) -- More UI settings options needed - -## Skills to Use -- `ui-ux-pro-max` — Design system, color palettes, typography, UX guidelines -- `frontend-pe` — Avant-garde UI design, micro-interactions, visual polish -- `brainstorming` — Plan before implementing - -## Areas to Investigate -1. **Theme system** — opencode already has theming (`packages/ui/src/context/theme/`). How to add more? -2. **Tactile UI** — Micro-interactions, hover states, transitions, shadows -3. **Typography** — Font rendering, line-height, letter-spacing refinements -4. **Spacing** — Consistent padding/margin system -5. **Colors** — More vibrant palettes, better contrast -6. **Animations** — Smooth transitions between states -7. **Settings page** — More appearance options (line-height, letter-spacing, sidebar width, etc.) - -## Tonight's Completed Fixes (6 PRs) -- #14820: Streaming content duplication -- #14821: Font size settings (CSS + terminal + UI) -- #14826: ContextOverflowError recovery -- #14827: Prune before compaction -- #14831: Context usage card + compact button -- #14835: Wide mode setting (full-width chat) +- More UI settings options needed (future) + +## Phase 1 Changes (Completed) + +### 1. Font Rendering (`base.css`) +- Added `-webkit-font-smoothing: antialiased` for crisp text on macOS +- Added `-moz-osx-font-smoothing: grayscale` for Firefox +- Added `text-rendering: optimizeLegibility` for better kerning +- Added `scroll-behavior: smooth` for smooth scrolling + +### 2. Animation System (`animations.css`) +- Added CSS custom property easing tokens (`--ease-out-expo`, `--ease-spring`, etc.) +- Added duration tokens (`--duration-instant` through `--duration-slower`) +- Added new keyframes: `fadeIn`, `fadeInScale`, `slideInFromRight/Left/Bottom` +- Added `subtleGlow` for focus states, `shimmer` for loading, `spin` +- Halved stagger delay (50ms instead of 100ms) for snappier text reveals +- Added `prefers-reduced-motion: reduce` media query for accessibility + +### 3. Utilities (`utilities.css`) +- Added `::selection` styling with theme-aware color +- Added global transition defaults for all interactive elements +- Added `:focus-visible` ring with theme color +- Added thin scrollbar styling for scroll views +- Suppressed focus ring for components that handle their own + +### 4. Shadow/Depth System (`theme.css`) +- Refined `--shadow-xs` with slightly stronger presence +- Added new `--shadow-sm` level for subtle elevation +- Enhanced `--shadow-md` with deeper, more dramatic depth +- Enhanced `--shadow-lg` with softer, more premium feel +- Added new `--shadow-xl` for maximum elevation (modals, floating panels) + +### 5. Button Micro-Interactions (`button.css`) +- Added explicit transition for bg-color, border, box-shadow, transform, opacity +- Primary: hover now lifts with `--shadow-sm`, active presses with `scale(0.98)` +- Ghost: icon color transitions on hover, active presses with `scale(0.97)` +- Secondary: hover adds border shadow hint, active presses +- Disabled states now use `opacity: 0.6` for clearer visual feedback + +### 6. Card Polish (`card.css`) +- Upgraded border-radius from `--radius-md` to `--radius-lg` +- Added full transition for bg-color, border-color, box-shadow, transform +- Hover state now shows subtle border highlight and `--shadow-xs` elevation + +### 7. Dialog Animations (`dialog.css`) +- Overlay now uses `backdrop-filter: blur(4px)` for frosted glass effect +- Overlay opacity increased from 0.2 to 0.35 for better focus +- Content now uses combined `scale(0.96) + translateY(4px)` entrance +- Animation uses `cubic-bezier(0.16, 1, 0.3, 1)` expo-out for premium feel +- Added subtle 1px border ring on dialog content for depth definition +- Overlay entrance/exit now animated separately + +### 8. Icon Button Interactions (`icon-button.css`) +- Added explicit transitions for bg-color, box-shadow, transform +- Ghost variant: icon color now transitions on hover (to `--icon-hover`) +- Active state now scales to `0.92` for satisfying tactile press +- Icon SVG color now properly transitions through states +- Disabled state uses `opacity: 0.5` + +### 9. New Themes (3 premium additions) +- **Rosé Pine** — Dreamy, soft palette with purple/rose accents. Very popular community theme. +- **Kanagawa** — Japanese-inspired warm palette. Distinctive golden/purple tones based on "The Great Wave." +- **Everforest** — Calming green/earth tones nature-inspired palette. Easy on the eyes for long sessions. + +All themes include full light + dark variants with seeds, borders, surfaces, text, syntax highlighting, and markdown colors. + +## Files Modified +- `packages/ui/src/styles/base.css` — Font rendering +- `packages/ui/src/styles/animations.css` — Animation system +- `packages/ui/src/styles/utilities.css` — Selection, focus, transitions, scrollbars +- `packages/ui/src/styles/theme.css` — Shadow system +- `packages/ui/src/components/button.css` — Button interactions +- `packages/ui/src/components/card.css` — Card polish +- `packages/ui/src/components/dialog.css` — Dialog animations +- `packages/ui/src/components/icon-button.css` — Icon button interactions +- `packages/ui/src/theme/themes/rosepine.json` — NEW +- `packages/ui/src/theme/themes/kanagawa.json` — NEW +- `packages/ui/src/theme/themes/everforest.json` — NEW +- `packages/ui/src/theme/default-themes.ts` — Theme registration + +## Build Status +✅ `vite build` passes with zero errors (7.98s) diff --git a/packages/ui/src/components/button.css b/packages/ui/src/components/button.css index 923b2bab374b..fb7e58a69ebc 100644 --- a/packages/ui/src/components/button.css +++ b/packages/ui/src/components/button.css @@ -10,6 +10,12 @@ cursor: default; outline: none; white-space: nowrap; + transition: + background-color 150ms cubic-bezier(0.4, 0, 0.2, 1), + border-color 150ms cubic-bezier(0.4, 0, 0.2, 1), + box-shadow 150ms cubic-bezier(0.4, 0, 0.2, 1), + transform 100ms cubic-bezier(0.4, 0, 0.2, 1), + opacity 150ms cubic-bezier(0.4, 0, 0.2, 1); &[data-variant="primary"] { background-color: var(--button-primary-base); @@ -22,15 +28,18 @@ &:hover:not(:disabled) { background-color: var(--icon-strong-hover); + box-shadow: var(--shadow-sm); } &:focus:not(:disabled) { background-color: var(--icon-strong-focus); } &:active:not(:disabled) { background-color: var(--icon-strong-active); + transform: scale(0.98); } &:disabled { background-color: var(--icon-strong-disabled); + opacity: 0.6; [data-slot="icon-svg"] { color: var(--icon-invert-base); @@ -45,20 +54,27 @@ [data-slot="icon-svg"] { color: var(--icon-base); + transition: color 150ms cubic-bezier(0.4, 0, 0.2, 1); } &:hover:not(:disabled) { background-color: var(--surface-base-hover); + + [data-slot="icon-svg"] { + color: var(--icon-hover); + } } &:focus-visible:not(:disabled) { background-color: var(--surface-base-hover); } &:active:not(:disabled) { background-color: var(--surface-base-active); + transform: scale(0.97); } &:disabled { color: var(--text-weak); cursor: not-allowed; + opacity: 0.5; [data-slot="icon-svg"] { color: var(--icon-disabled); @@ -80,6 +96,7 @@ &:hover:not(:disabled) { background-color: var(--button-secondary-hover); + box-shadow: var(--shadow-xs-border-hover); } &:focus:not(:disabled) { background-color: var(--button-secondary-base); @@ -93,12 +110,14 @@ } &:active:not(:disabled) { background-color: var(--button-secondary-base); + transform: scale(0.98); } &:disabled { border-color: var(--border-disabled); background-color: var(--surface-disabled); color: var(--text-weak); cursor: not-allowed; + opacity: 0.6; } [data-slot="icon-svg"] { diff --git a/packages/ui/src/components/card.css b/packages/ui/src/components/card.css deleted file mode 100644 index 2d482dba7a82..000000000000 --- a/packages/ui/src/components/card.css +++ /dev/null @@ -1,94 +0,0 @@ -[data-component="card"] { - --card-pad-y: 10px; - --card-pad-r: 12px; - --card-pad-l: 10px; - - width: 100%; - display: flex; - flex-direction: column; - position: relative; - background: transparent; - border: none; - border-radius: var(--radius-md); - padding: var(--card-pad-y) var(--card-pad-r) var(--card-pad-y) var(--card-pad-l); - - /* text-14-regular */ - font-family: var(--font-family-sans); - font-size: var(--font-size-base); - font-style: normal; - font-weight: var(--font-weight-regular); - line-height: var(--line-height-large); - letter-spacing: var(--letter-spacing-normal); - color: var(--text-strong); - - --card-gap: 8px; - --card-icon: 16px; - --card-indent: 0px; - --card-line-pad: 8px; - - --card-accent: var(--icon-active); - - &:has([data-slot="card-title"]) { - gap: 8px; - } - - &:has([data-slot="card-title-icon"]) { - --card-indent: calc(var(--card-icon) + var(--card-gap)); - } - - &::before { - content: ""; - position: absolute; - left: 0; - top: var(--card-line-pad); - bottom: var(--card-line-pad); - width: 2px; - border-radius: 2px; - background-color: var(--card-accent); - } - - :where([data-card="title"], [data-slot="card-title"]) { - color: var(--text-strong); - font-weight: var(--font-weight-medium); - } - - :where([data-slot="card-title"]) { - display: flex; - align-items: center; - gap: var(--card-gap); - } - - :where([data-slot="card-title"]) [data-component="icon"] { - color: var(--card-accent); - } - - :where([data-slot="card-title-icon"]) { - display: inline-flex; - align-items: center; - justify-content: center; - width: var(--card-icon); - height: var(--card-icon); - flex: 0 0 auto; - } - - :where([data-slot="card-title-icon"][data-placeholder]) [data-component="icon"] { - color: var(--text-weak); - } - - :where([data-slot="card-title-icon"]) - [data-slot="icon-svg"] - :is(path, line, polyline, polygon, rect, circle, ellipse)[stroke] { - stroke-width: 1.5px !important; - } - - :where([data-card="description"], [data-slot="card-description"]) { - color: var(--text-base); - white-space: pre-wrap; - overflow-wrap: anywhere; - word-break: break-word; - } - - :where([data-card="actions"], [data-slot="card-actions"]) { - padding-left: var(--card-indent); - } -} diff --git a/packages/ui/src/components/dialog.css b/packages/ui/src/components/dialog.css index 1e74763ae2d8..0ab559499673 100644 --- a/packages/ui/src/components/dialog.css +++ b/packages/ui/src/components/dialog.css @@ -4,7 +4,9 @@ position: fixed; inset: 0; z-index: 50; - background-color: hsl(from var(--background-base) h s l / 0.2); + background-color: hsl(from var(--background-base) h s l / 0.35); + backdrop-filter: blur(4px); + -webkit-backdrop-filter: blur(4px); } [data-component="dialog"] { @@ -50,7 +52,9 @@ border-radius: var(--radius-xl); background: var(--surface-raised-stronger-non-alpha); background-clip: padding-box; - box-shadow: var(--shadow-lg-border-base); + box-shadow: + var(--shadow-lg-border-base), + 0 0 0 1px var(--border-weaker-base); [data-slot="dialog-header"] { display: flex; @@ -136,19 +140,29 @@ } [data-component="dialog"][data-transition] [data-slot="dialog-content"] { - animation: contentHide 100ms ease-in forwards; + animation: contentHide 120ms cubic-bezier(0.4, 0, 1, 1) forwards; &[data-expanded] { - animation: contentShow 150ms ease-out; + animation: contentShow 250ms cubic-bezier(0.16, 1, 0.3, 1); + } +} + +[data-component="dialog"][data-transition] [data-component="dialog-overlay"] { + animation: overlayHide 150ms ease-in forwards; + + &[data-expanded] { + animation: overlayShow 200ms ease-out; } } @keyframes overlayShow { from { opacity: 0; + backdrop-filter: blur(0); } to { opacity: 1; + backdrop-filter: blur(4px); } } @keyframes overlayHide { @@ -162,20 +176,20 @@ @keyframes contentShow { from { opacity: 0; - transform: scale(0.98); + transform: scale(0.96) translateY(4px); } to { opacity: 1; - transform: scale(1); + transform: scale(1) translateY(0); } } @keyframes contentHide { from { opacity: 1; - transform: scale(1); + transform: scale(1) translateY(0); } to { opacity: 0; - transform: scale(0.98); + transform: scale(0.96) translateY(4px); } } diff --git a/packages/ui/src/components/icon-button.css b/packages/ui/src/components/icon-button.css index 7a47270fe9ae..8a94ffac72a3 100644 --- a/packages/ui/src/components/icon-button.css +++ b/packages/ui/src/components/icon-button.css @@ -7,6 +7,10 @@ user-select: none; aspect-ratio: 1; flex-shrink: 0; + transition: + background-color 120ms cubic-bezier(0.4, 0, 0.2, 1), + box-shadow 120ms cubic-bezier(0.4, 0, 0.2, 1), + transform 80ms cubic-bezier(0.4, 0, 0.2, 1); &[data-variant="primary"] { background-color: var(--icon-strong-base); @@ -77,37 +81,41 @@ &[data-variant="ghost"] { background-color: transparent; - /* color: var(--icon-base); */ [data-slot="icon-svg"] { color: var(--icon-base); + transition: color 120ms cubic-bezier(0.4, 0, 0.2, 1); } &:hover:not(:disabled) { background-color: var(--surface-base-hover); - /* [data-slot="icon-svg"] { */ - /* color: var(--icon-hover); */ - /* } */ + [data-slot="icon-svg"] { + color: var(--icon-hover); + } } &:focus-visible:not(:disabled) { background-color: var(--surface-base-hover); } &:active:not(:disabled) { background-color: var(--surface-base-active); - /* [data-slot="icon-svg"] { */ - /* color: var(--icon-active); */ - /* } */ + transform: scale(0.92); + + [data-slot="icon-svg"] { + color: var(--icon-active); + } } &:selected:not(:disabled) { background-color: var(--surface-base-active); - /* [data-slot="icon-svg"] { */ - /* color: var(--icon-selected); */ - /* } */ + + [data-slot="icon-svg"] { + color: var(--icon-selected); + } } &:disabled { color: var(--icon-invert-base); cursor: not-allowed; + opacity: 0.5; } } diff --git a/packages/ui/src/components/list.css b/packages/ui/src/components/list.css index b12d304151df..011e54b69b67 100644 --- a/packages/ui/src/components/list.css +++ b/packages/ui/src/components/list.css @@ -237,6 +237,9 @@ align-items: center; color: var(--text-strong); scroll-margin-top: 28px; + transition: + background-color 100ms cubic-bezier(0.4, 0, 0.2, 1), + border-radius 100ms cubic-bezier(0.4, 0, 0.2, 1); /* text-14-medium */ font-family: var(--font-family-sans); diff --git a/packages/ui/src/components/popover.css b/packages/ui/src/components/popover.css index b49542afd9b8..c09158acf559 100644 --- a/packages/ui/src/components/popover.css +++ b/packages/ui/src/components/popover.css @@ -6,12 +6,12 @@ z-index: 50; min-width: 200px; max-width: 320px; - border-radius: var(--radius-md); + border-radius: var(--radius-lg); background-color: var(--surface-raised-stronger-non-alpha); border: 1px solid color-mix(in oklch, var(--border-base) 50%, transparent); background-clip: padding-box; - box-shadow: var(--shadow-md); + box-shadow: var(--shadow-lg); transform-origin: var(--kb-popover-content-transform-origin); @@ -78,21 +78,21 @@ @keyframes popover-open { from { opacity: 0; - transform: scale(0.96); + transform: scale(0.95) translateY(2px); } to { opacity: 1; - transform: scale(1); + transform: scale(1) translateY(0); } } @keyframes popover-close { from { opacity: 1; - transform: scale(1); + transform: scale(1) translateY(0); } to { opacity: 0; - transform: scale(0.96); + transform: scale(0.95) translateY(2px); } } diff --git a/packages/ui/src/components/tabs.css b/packages/ui/src/components/tabs.css index 036533c10fb8..ca1c75864f9d 100644 --- a/packages/ui/src/components/tabs.css +++ b/packages/ui/src/components/tabs.css @@ -48,6 +48,10 @@ align-items: center; gap: 12px; color: var(--text-base); + transition: + color 150ms cubic-bezier(0.4, 0, 0.2, 1), + background-color 150ms cubic-bezier(0.4, 0, 0.2, 1), + border-color 150ms cubic-bezier(0.4, 0, 0.2, 1); /* text-14-medium */ font-family: var(--font-family-sans); diff --git a/packages/ui/src/components/tooltip.css b/packages/ui/src/components/tooltip.css index f02c2ca63921..d243f734c27a 100644 --- a/packages/ui/src/components/tooltip.css +++ b/packages/ui/src/components/tooltip.css @@ -18,18 +18,18 @@ [data-component="tooltip"] { z-index: 1000; max-width: 320px; - border-radius: var(--radius-sm); + border-radius: var(--radius-md); background-color: var(--surface-float-base); color: var(--text-invert-strong); background: var(--surface-float-base); - padding: 2px 8px; + padding: 4px 10px; border: 1px solid var(--border-weak-base, rgba(0, 0, 0, 0.07)); box-shadow: var(--shadow-md); pointer-events: none !important; - /* transition: all 150ms ease-out; */ - /* transform: translate3d(0, 0, 0); */ - /* transform-origin: var(--kb-tooltip-content-transform-origin); */ + transition: opacity 150ms cubic-bezier(0.4, 0, 0.2, 1), transform 150ms cubic-bezier(0.4, 0, 0.2, 1); + transform: translate3d(0, 0, 0); + transform-origin: var(--kb-tooltip-content-transform-origin); /* text-12-medium */ font-family: var(--font-family-sans); @@ -41,34 +41,34 @@ &[data-expanded] { opacity: 1; - /* transform: translate3d(0, 0, 0); */ + transform: translate3d(0, 0, 0); } &[data-closed]:not([data-force-open="true"]) { opacity: 0; } - /* &[data-placement="top"] { */ - /* &[data-closed] { */ - /* transform: translate3d(0, 4px, 0); */ - /* } */ - /* } */ - /**/ - /* &[data-placement="bottom"] { */ - /* &[data-closed] { */ - /* transform: translate3d(0, -4px, 0); */ - /* } */ - /* } */ - /**/ - /* &[data-placement="left"] { */ - /* &[data-closed] { */ - /* transform: translate3d(4px, 0, 0); */ - /* } */ - /* } */ - /**/ - /* &[data-placement="right"] { */ - /* &[data-closed] { */ - /* transform: translate3d(-4px, 0, 0); */ - /* } */ - /* } */ + &[data-placement="top"] { + &[data-closed] { + transform: translate3d(0, 4px, 0); + } + } + + &[data-placement="bottom"] { + &[data-closed] { + transform: translate3d(0, -4px, 0); + } + } + + &[data-placement="left"] { + &[data-closed] { + transform: translate3d(4px, 0, 0); + } + } + + &[data-placement="right"] { + &[data-closed] { + transform: translate3d(-4px, 0, 0); + } + } } diff --git a/packages/ui/src/styles/animations.css b/packages/ui/src/styles/animations.css index f9a09df379e1..09146cb79972 100644 --- a/packages/ui/src/styles/animations.css +++ b/packages/ui/src/styles/animations.css @@ -1,8 +1,30 @@ +/* ============================================ + OpenCode Animation System + Refined micro-interactions & motion design + ============================================ */ + :root { + /* Animation tokens */ + --ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1); + --ease-out-quart: cubic-bezier(0.25, 1, 0.5, 1); + --ease-in-out-quart: cubic-bezier(0.76, 0, 0.24, 1); + --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1); + --ease-smooth: cubic-bezier(0.4, 0, 0.2, 1); + + /* Duration tokens */ + --duration-instant: 75ms; + --duration-fast: 120ms; + --duration-normal: 200ms; + --duration-slow: 300ms; + --duration-slower: 450ms; + + /* Existing pulse animations */ --animate-pulse: pulse-opacity 2s ease-in-out infinite; --animate-pulse-scale: pulse-scale 1.2s ease-in-out infinite; } +/* ---- Pulse animations ---- */ + @keyframes pulse-opacity { 0%, 100% { @@ -33,6 +55,8 @@ } } +/* ---- Entrance animations ---- */ + @keyframes fadeUp { from { opacity: 0; @@ -44,98 +68,145 @@ } } -.fade-up-text { - animation: fadeUp 0.4s ease-out forwards; - opacity: 0; - - &:nth-child(1) { - animation-delay: 0.1s; - } - &:nth-child(2) { - animation-delay: 0.2s; - } - &:nth-child(3) { - animation-delay: 0.3s; - } - &:nth-child(4) { - animation-delay: 0.4s; - } - &:nth-child(5) { - animation-delay: 0.5s; - } - &:nth-child(6) { - animation-delay: 0.6s; - } - &:nth-child(7) { - animation-delay: 0.7s; - } - &:nth-child(8) { - animation-delay: 0.8s; - } - &:nth-child(9) { - animation-delay: 0.9s; - } - &:nth-child(10) { - animation-delay: 1s; - } - &:nth-child(11) { - animation-delay: 1.1s; - } - &:nth-child(12) { - animation-delay: 1.2s; - } - &:nth-child(13) { - animation-delay: 1.3s; +@keyframes fadeIn { + from { + opacity: 0; } - &:nth-child(14) { - animation-delay: 1.4s; + to { + opacity: 1; } - &:nth-child(15) { - animation-delay: 1.5s; +} + +@keyframes fadeInScale { + from { + opacity: 0; + transform: scale(0.95); } - &:nth-child(16) { - animation-delay: 1.6s; + to { + opacity: 1; + transform: scale(1); } - &:nth-child(17) { - animation-delay: 1.7s; +} + +@keyframes slideInFromRight { + from { + opacity: 0; + transform: translateX(8px); } - &:nth-child(18) { - animation-delay: 1.8s; + to { + opacity: 1; + transform: translateX(0); } - &:nth-child(19) { - animation-delay: 1.9s; +} + +@keyframes slideInFromLeft { + from { + opacity: 0; + transform: translateX(-8px); } - &:nth-child(20) { - animation-delay: 2s; + to { + opacity: 1; + transform: translateX(0); } - &:nth-child(21) { - animation-delay: 2.1s; +} + +@keyframes slideInFromBottom { + from { + opacity: 0; + transform: translateY(12px); } - &:nth-child(22) { - animation-delay: 2.2s; + to { + opacity: 1; + transform: translateY(0); } - &:nth-child(23) { - animation-delay: 2.3s; +} + +/* ---- Subtle glow for active/focus states ---- */ + +@keyframes subtleGlow { + 0%, + 100% { + box-shadow: 0 0 0 0 transparent; } - &:nth-child(24) { - animation-delay: 2.4s; + 50% { + box-shadow: 0 0 8px 2px color-mix(in srgb, var(--border-selected) 25%, transparent); } - &:nth-child(25) { - animation-delay: 2.5s; +} + +/* ---- Shimmer for loading states ---- */ + +@keyframes shimmer { + 0% { + background-position: -200% 0; } - &:nth-child(26) { - animation-delay: 2.6s; + 100% { + background-position: 200% 0; } - &:nth-child(27) { - animation-delay: 2.7s; +} + +/* ---- Spin ---- */ + +@keyframes spin { + from { + transform: rotate(0deg); } - &:nth-child(28) { - animation-delay: 2.8s; + to { + transform: rotate(360deg); } - &:nth-child(29) { - animation-delay: 2.9s; +} + +/* ---- Staggered fade-up text ---- */ + +.fade-up-text { + animation: fadeUp 0.4s var(--ease-out-expo) forwards; + opacity: 0; + + &:nth-child(1) { animation-delay: 0.05s; } + &:nth-child(2) { animation-delay: 0.1s; } + &:nth-child(3) { animation-delay: 0.15s; } + &:nth-child(4) { animation-delay: 0.2s; } + &:nth-child(5) { animation-delay: 0.25s; } + &:nth-child(6) { animation-delay: 0.3s; } + &:nth-child(7) { animation-delay: 0.35s; } + &:nth-child(8) { animation-delay: 0.4s; } + &:nth-child(9) { animation-delay: 0.45s; } + &:nth-child(10) { animation-delay: 0.5s; } + &:nth-child(11) { animation-delay: 0.55s; } + &:nth-child(12) { animation-delay: 0.6s; } + &:nth-child(13) { animation-delay: 0.65s; } + &:nth-child(14) { animation-delay: 0.7s; } + &:nth-child(15) { animation-delay: 0.75s; } + &:nth-child(16) { animation-delay: 0.8s; } + &:nth-child(17) { animation-delay: 0.85s; } + &:nth-child(18) { animation-delay: 0.9s; } + &:nth-child(19) { animation-delay: 0.95s; } + &:nth-child(20) { animation-delay: 1s; } + &:nth-child(21) { animation-delay: 1.05s; } + &:nth-child(22) { animation-delay: 1.1s; } + &:nth-child(23) { animation-delay: 1.15s; } + &:nth-child(24) { animation-delay: 1.2s; } + &:nth-child(25) { animation-delay: 1.25s; } + &:nth-child(26) { animation-delay: 1.3s; } + &:nth-child(27) { animation-delay: 1.35s; } + &:nth-child(28) { animation-delay: 1.4s; } + &:nth-child(29) { animation-delay: 1.45s; } + &:nth-child(30) { animation-delay: 1.5s; } +} + +/* ---- Reduced motion preference ---- */ + +@media (prefers-reduced-motion: reduce) { + *, + *::before, + *::after { + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + transition-duration: 0.01ms !important; + scroll-behavior: auto !important; } - &:nth-child(30) { - animation-delay: 3s; + + .fade-up-text { + opacity: 1; + animation: none; } } diff --git a/packages/ui/src/styles/base.css b/packages/ui/src/styles/base.css index b5604ad61914..78ce094f4b83 100644 --- a/packages/ui/src/styles/base.css +++ b/packages/ui/src/styles/base.css @@ -34,6 +34,10 @@ html, font-feature-settings: var(--font-family-sans--font-feature-settings, normal); /* 5 */ font-variation-settings: var(--font-family-sans--font-variation-settings, normal); /* 6 */ -webkit-tap-highlight-color: transparent; /* 7 */ + -webkit-font-smoothing: antialiased; /* 8 - Crisp font rendering */ + -moz-osx-font-smoothing: grayscale; /* 8 */ + text-rendering: optimizeLegibility; /* 9 - Better kerning */ + scroll-behavior: smooth; /* 10 - Smooth scrolling */ } /* diff --git a/packages/ui/src/styles/theme.css b/packages/ui/src/styles/theme.css index 021f959e4cbc..206056ee4f3a 100644 --- a/packages/ui/src/styles/theme.css +++ b/packages/ui/src/styles/theme.css @@ -48,17 +48,24 @@ --radius-xl: 0.625rem; --shadow-xs: - 0 1px 2px -0.5px light-dark(hsl(0 0% 0% / 0.04), hsl(0 0% 0% / 0.06)), - 0 0.5px 1.5px 0 light-dark(hsl(0 0% 0% / 0.025), hsl(0 0% 0% / 0.08)), - 0 1px 3px 0 light-dark(hsl(0 0% 0% / 0.05), hsl(0 0% 0% / 0.1)); + 0 1px 2px -0.5px light-dark(hsl(0 0% 0% / 0.05), hsl(0 0% 0% / 0.08)), + 0 0.5px 1.5px 0 light-dark(hsl(0 0% 0% / 0.03), hsl(0 0% 0% / 0.1)), + 0 1px 3px 0 light-dark(hsl(0 0% 0% / 0.06), hsl(0 0% 0% / 0.12)); + --shadow-sm: + 0 2px 4px -1px light-dark(hsl(0 0% 0% / 0.06), hsl(0 0% 0% / 0.1)), + 0 1px 2px 0 light-dark(hsl(0 0% 0% / 0.04), hsl(0 0% 0% / 0.08)); --shadow-md: - 0 6px 12px -2px light-dark(hsl(0 0% 0% / 0.075), hsl(0 0% 0% / 0.1)), - 0 4px 8px -2px light-dark(hsl(0 0% 0% / 0.075), hsl(0 0% 0% / 0.15)), - 0 1px 2px light-dark(hsl(0 0% 0% / 0.1), hsl(0 0% 0% / 0.15)); + 0 8px 16px -3px light-dark(hsl(0 0% 0% / 0.08), hsl(0 0% 0% / 0.12)), + 0 4px 8px -2px light-dark(hsl(0 0% 0% / 0.06), hsl(0 0% 0% / 0.1)), + 0 1px 3px 0 light-dark(hsl(0 0% 0% / 0.08), hsl(0 0% 0% / 0.12)); --shadow-lg: - 0 16px 48px -6px light-dark(hsl(0 0% 0% / 0.05), hsl(0 0% 0% / 0.15)), - 0 6px 12px -2px light-dark(hsl(0 0% 0% / 0.025), hsl(0 0% 0% / 0.1)), - 0 1px 2.5px light-dark(hsl(0 0% 0% / 0.025), hsl(0 0% 0% / 0.1)); + 0 20px 56px -8px light-dark(hsl(0 0% 0% / 0.08), hsl(0 0% 0% / 0.2)), + 0 8px 16px -4px light-dark(hsl(0 0% 0% / 0.04), hsl(0 0% 0% / 0.12)), + 0 2px 4px 0 light-dark(hsl(0 0% 0% / 0.03), hsl(0 0% 0% / 0.08)); + --shadow-xl: + 0 28px 72px -12px light-dark(hsl(0 0% 0% / 0.1), hsl(0 0% 0% / 0.25)), + 0 12px 24px -4px light-dark(hsl(0 0% 0% / 0.05), hsl(0 0% 0% / 0.15)), + 0 4px 8px 0 light-dark(hsl(0 0% 0% / 0.04), hsl(0 0% 0% / 0.1)); --shadow-xxs-border: 0 0 0 0.5px var(--border-weak-base, rgba(0, 0, 0, 0.07)); --shadow-xs-border: 0 0 0 1px var(--border-base, rgba(11, 6, 0, 0.2)), 0 1px 2px -1px rgba(19, 16, 16, 0.04), diff --git a/packages/ui/src/styles/utilities.css b/packages/ui/src/styles/utilities.css index 3a05a9515fa0..7e9786a8dd80 100644 --- a/packages/ui/src/styles/utilities.css +++ b/packages/ui/src/styles/utilities.css @@ -4,25 +4,85 @@ [data-popper-positioner] { pointer-events: none; } +} + +/* ---- Text selection styling ---- */ + +::selection { + background-color: color-mix(in srgb, var(--border-selected, #034cff) 30%, transparent); + color: var(--text-strong); +} + +/* ---- Global transition defaults for interactive elements ---- */ - /* ::selection { */ - /* background-color: color-mix(in srgb, var(--color-primary) 33%, transparent); */ - /* background-color: var(--color-primary); */ - /* color: var(--color-background); */ - /* } */ +button, +a, +[role="button"], +[data-component="button"], +[data-component="icon-button"], +[data-component="card"], +[data-component="list-item"], +[data-component="tab"], +input, +select, +textarea { + transition-property: background-color, border-color, color, box-shadow, opacity, transform; + transition-duration: var(--duration-fast, 120ms); + transition-timing-function: var(--ease-smooth, cubic-bezier(0.4, 0, 0.2, 1)); } +/* ---- Focus ring utility ---- */ + +:focus-visible { + outline: 2px solid var(--border-selected, #034cff); + outline-offset: 1px; + border-radius: var(--radius-sm); +} + +/* Suppress focus ring inside specific components that handle their own */ +[data-component="dialog"] :focus-visible, +[data-component="text-field"] :focus-visible, +[contenteditable]:focus-visible { + outline: none; +} + +/* ---- Scrollbar styling ---- */ + .no-scrollbar { &::-webkit-scrollbar { display: none; } - /* Hide scrollbar for IE, Edge and Firefox */ & { - -ms-overflow-style: none; /* IE and Edge */ - scrollbar-width: none; /* Firefox */ + -ms-overflow-style: none; + scrollbar-width: none; } } +/* Thin scrollbar for scroll areas */ +[data-component="scroll-view"], +.thin-scrollbar { + scrollbar-width: thin; + scrollbar-color: var(--surface-weak, #ccc) transparent; + + &::-webkit-scrollbar { + width: 6px; + height: 6px; + } + &::-webkit-scrollbar-track { + background: transparent; + } + &::-webkit-scrollbar-thumb { + background-color: var(--surface-weak, #ccc); + border-radius: 3px; + + &:hover { + background-color: var(--surface-weaker, #aaa); + } + } +} + +/* ---- Screen reader only ---- */ + .sr-only { position: absolute; width: 1px; @@ -35,6 +95,8 @@ border-width: 0; } +/* ---- Truncation utilities ---- */ + .truncate-start { text-overflow: ellipsis; overflow: hidden; @@ -43,12 +105,14 @@ text-align: left; } +/* ---- Typography scale ---- */ + .text-12-regular { font-family: var(--font-family-sans); font-size: var(--font-size-small); font-style: normal; font-weight: var(--font-weight-regular); - line-height: var(--line-height-large); /* 166.667% */ + line-height: var(--line-height-large); letter-spacing: var(--letter-spacing-normal); } @@ -57,7 +121,7 @@ font-size: var(--font-size-small); font-style: normal; font-weight: var(--font-weight-medium); - line-height: var(--line-height-large); /* 166.667% */ + line-height: var(--line-height-large); letter-spacing: var(--letter-spacing-normal); } @@ -67,7 +131,7 @@ font-size: var(--font-size-small); font-style: normal; font-weight: var(--font-weight-regular); - line-height: var(--line-height-large); /* 166.667% */ + line-height: var(--line-height-large); letter-spacing: var(--letter-spacing-normal); } @@ -76,7 +140,7 @@ font-size: var(--font-size-base); font-style: normal; font-weight: var(--font-weight-regular); - line-height: var(--line-height-x-large); /* 171.429% */ + line-height: var(--line-height-x-large); letter-spacing: var(--letter-spacing-normal); } @@ -85,7 +149,7 @@ font-size: var(--font-size-base); font-style: normal; font-weight: var(--font-weight-medium); - line-height: var(--line-height-large); /* 171.429% */ + line-height: var(--line-height-large); letter-spacing: var(--letter-spacing-normal); } @@ -95,7 +159,7 @@ font-size: var(--font-size-base); font-style: normal; font-weight: var(--font-weight-regular); - line-height: var(--line-height-large); /* 171.429% */ + line-height: var(--line-height-large); letter-spacing: var(--letter-spacing-normal); } @@ -104,7 +168,7 @@ font-size: var(--font-size-large); font-style: normal; font-weight: var(--font-weight-medium); - line-height: var(--line-height-x-large); /* 150% */ + line-height: var(--line-height-x-large); letter-spacing: var(--letter-spacing-tight); } @@ -113,6 +177,6 @@ font-size: var(--font-size-x-large); font-style: normal; font-weight: var(--font-weight-medium); - line-height: var(--line-height-x-large); /* 120% */ + line-height: var(--line-height-x-large); letter-spacing: var(--letter-spacing-tightest); } diff --git a/packages/ui/src/theme/default-themes.ts b/packages/ui/src/theme/default-themes.ts deleted file mode 100644 index c14198955812..000000000000 --- a/packages/ui/src/theme/default-themes.ts +++ /dev/null @@ -1,116 +0,0 @@ -import type { DesktopTheme } from "./types" -import oc2ThemeJson from "./themes/oc-2.json" -import amoledThemeJson from "./themes/amoled.json" -import auraThemeJson from "./themes/aura.json" -import ayuThemeJson from "./themes/ayu.json" -import carbonfoxThemeJson from "./themes/carbonfox.json" -import catppuccinThemeJson from "./themes/catppuccin.json" -import catppuccinFrappeThemeJson from "./themes/catppuccin-frappe.json" -import catppuccinMacchiatoThemeJson from "./themes/catppuccin-macchiato.json" -import cobalt2ThemeJson from "./themes/cobalt2.json" -import cursorThemeJson from "./themes/cursor.json" -import draculaThemeJson from "./themes/dracula.json" -import everforestThemeJson from "./themes/everforest.json" -import flexokiThemeJson from "./themes/flexoki.json" -import githubThemeJson from "./themes/github.json" -import gruvboxThemeJson from "./themes/gruvbox.json" -import kanagawaThemeJson from "./themes/kanagawa.json" -import lucentOrngThemeJson from "./themes/lucent-orng.json" -import materialThemeJson from "./themes/material.json" -import matrixThemeJson from "./themes/matrix.json" -import mercuryThemeJson from "./themes/mercury.json" -import monokaiThemeJson from "./themes/monokai.json" -import nightowlThemeJson from "./themes/nightowl.json" -import nordThemeJson from "./themes/nord.json" -import oneDarkThemeJson from "./themes/one-dark.json" -import oneDarkProThemeJson from "./themes/onedarkpro.json" -import opencodeThemeJson from "./themes/opencode.json" -import orngThemeJson from "./themes/orng.json" -import osakaJadeThemeJson from "./themes/osaka-jade.json" -import palenightThemeJson from "./themes/palenight.json" -import rosepineThemeJson from "./themes/rosepine.json" -import shadesOfPurpleThemeJson from "./themes/shadesofpurple.json" -import solarizedThemeJson from "./themes/solarized.json" -import synthwave84ThemeJson from "./themes/synthwave84.json" -import tokyonightThemeJson from "./themes/tokyonight.json" -import vercelThemeJson from "./themes/vercel.json" -import vesperThemeJson from "./themes/vesper.json" -import zenburnThemeJson from "./themes/zenburn.json" - -export const oc2Theme = oc2ThemeJson as DesktopTheme -export const amoledTheme = amoledThemeJson as DesktopTheme -export const auraTheme = auraThemeJson as DesktopTheme -export const ayuTheme = ayuThemeJson as DesktopTheme -export const carbonfoxTheme = carbonfoxThemeJson as DesktopTheme -export const catppuccinTheme = catppuccinThemeJson as DesktopTheme -export const catppuccinFrappeTheme = catppuccinFrappeThemeJson as DesktopTheme -export const catppuccinMacchiatoTheme = catppuccinMacchiatoThemeJson as DesktopTheme -export const cobalt2Theme = cobalt2ThemeJson as DesktopTheme -export const cursorTheme = cursorThemeJson as DesktopTheme -export const draculaTheme = draculaThemeJson as DesktopTheme -export const everforestTheme = everforestThemeJson as DesktopTheme -export const flexokiTheme = flexokiThemeJson as DesktopTheme -export const githubTheme = githubThemeJson as DesktopTheme -export const gruvboxTheme = gruvboxThemeJson as DesktopTheme -export const kanagawaTheme = kanagawaThemeJson as DesktopTheme -export const lucentOrngTheme = lucentOrngThemeJson as DesktopTheme -export const materialTheme = materialThemeJson as DesktopTheme -export const matrixTheme = matrixThemeJson as DesktopTheme -export const mercuryTheme = mercuryThemeJson as DesktopTheme -export const monokaiTheme = monokaiThemeJson as DesktopTheme -export const nightowlTheme = nightowlThemeJson as DesktopTheme -export const nordTheme = nordThemeJson as DesktopTheme -export const oneDarkTheme = oneDarkThemeJson as DesktopTheme -export const oneDarkProTheme = oneDarkProThemeJson as DesktopTheme -export const opencodeTheme = opencodeThemeJson as DesktopTheme -export const orngTheme = orngThemeJson as DesktopTheme -export const osakaJadeTheme = osakaJadeThemeJson as DesktopTheme -export const palenightTheme = palenightThemeJson as DesktopTheme -export const rosepineTheme = rosepineThemeJson as DesktopTheme -export const shadesOfPurpleTheme = shadesOfPurpleThemeJson as DesktopTheme -export const solarizedTheme = solarizedThemeJson as DesktopTheme -export const synthwave84Theme = synthwave84ThemeJson as DesktopTheme -export const tokyonightTheme = tokyonightThemeJson as DesktopTheme -export const vercelTheme = vercelThemeJson as DesktopTheme -export const vesperTheme = vesperThemeJson as DesktopTheme -export const zenburnTheme = zenburnThemeJson as DesktopTheme - -export const DEFAULT_THEMES: Record = { - "oc-2": oc2Theme, - amoled: amoledTheme, - aura: auraTheme, - ayu: ayuTheme, - carbonfox: carbonfoxTheme, - catppuccin: catppuccinTheme, - "catppuccin-frappe": catppuccinFrappeTheme, - "catppuccin-macchiato": catppuccinMacchiatoTheme, - cobalt2: cobalt2Theme, - cursor: cursorTheme, - dracula: draculaTheme, - everforest: everforestTheme, - flexoki: flexokiTheme, - github: githubTheme, - gruvbox: gruvboxTheme, - kanagawa: kanagawaTheme, - "lucent-orng": lucentOrngTheme, - material: materialTheme, - matrix: matrixTheme, - mercury: mercuryTheme, - monokai: monokaiTheme, - nightowl: nightowlTheme, - nord: nordTheme, - "one-dark": oneDarkTheme, - onedarkpro: oneDarkProTheme, - opencode: opencodeTheme, - orng: orngTheme, - "osaka-jade": osakaJadeTheme, - palenight: palenightTheme, - rosepine: rosepineTheme, - shadesofpurple: shadesOfPurpleTheme, - solarized: solarizedTheme, - synthwave84: synthwave84Theme, - tokyonight: tokyonightTheme, - vercel: vercelTheme, - vesper: vesperTheme, - zenburn: zenburnTheme, -} diff --git a/packages/ui/src/theme/themes/everforest.json b/packages/ui/src/theme/themes/everforest.json deleted file mode 100644 index 21c04c8ab38c..000000000000 --- a/packages/ui/src/theme/themes/everforest.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "$schema": "https://opencode.ai/desktop-theme.json", - "name": "Everforest", - "id": "everforest", - "light": { - "palette": { - "neutral": "#fdf6e3", - "ink": "#5c6a72", - "primary": "#8da101", - "accent": "#df69ba", - "success": "#8da101", - "warning": "#f57d26", - "error": "#f85552", - "info": "#35a77c", - "diffAdd": "#4db380", - "diffDelete": "#f52a65" - }, - "overrides": { - "text-weak": "#a6b0a0", - "syntax-comment": "#a6b0a0", - "syntax-keyword": "#df69ba", - "syntax-string": "#8da101", - "syntax-primitive": "#8da101", - "syntax-variable": "#f85552", - "syntax-property": "#35a77c", - "syntax-type": "#dfa000", - "syntax-constant": "#f57d26", - "syntax-operator": "#35a77c", - "syntax-punctuation": "#5c6a72", - "syntax-object": "#f85552", - "markdown-heading": "#df69ba", - "markdown-text": "#5c6a72", - "markdown-link": "#8da101", - "markdown-link-text": "#35a77c", - "markdown-code": "#8da101", - "markdown-block-quote": "#dfa000", - "markdown-emph": "#dfa000", - "markdown-strong": "#f57d26", - "markdown-horizontal-rule": "#a6b0a0", - "markdown-list-item": "#8da101", - "markdown-list-enumeration": "#35a77c", - "markdown-image": "#8da101", - "markdown-image-text": "#35a77c", - "markdown-code-block": "#5c6a72" - } - }, - "dark": { - "palette": { - "neutral": "#2d353b", - "ink": "#d3c6aa", - "primary": "#a7c080", - "accent": "#d699b6", - "success": "#a7c080", - "warning": "#e69875", - "error": "#e67e80", - "info": "#83c092", - "diffAdd": "#b8db87", - "diffDelete": "#e26a75" - }, - "overrides": { - "text-weak": "#7a8478", - "syntax-comment": "#7a8478", - "syntax-keyword": "#d699b6", - "syntax-string": "#a7c080", - "syntax-primitive": "#a7c080", - "syntax-variable": "#e67e80", - "syntax-property": "#83c092", - "syntax-type": "#dbbc7f", - "syntax-constant": "#e69875", - "syntax-operator": "#83c092", - "syntax-punctuation": "#d3c6aa", - "syntax-object": "#e67e80", - "markdown-heading": "#d699b6", - "markdown-text": "#d3c6aa", - "markdown-link": "#a7c080", - "markdown-link-text": "#83c092", - "markdown-code": "#a7c080", - "markdown-block-quote": "#dbbc7f", - "markdown-emph": "#dbbc7f", - "markdown-strong": "#e69875", - "markdown-horizontal-rule": "#7a8478", - "markdown-list-item": "#a7c080", - "markdown-list-enumeration": "#83c092", - "markdown-image": "#a7c080", - "markdown-image-text": "#83c092", - "markdown-code-block": "#d3c6aa" - } - } -} diff --git a/packages/ui/src/theme/themes/kanagawa.json b/packages/ui/src/theme/themes/kanagawa.json deleted file mode 100644 index e1b308c15e38..000000000000 --- a/packages/ui/src/theme/themes/kanagawa.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "$schema": "https://opencode.ai/desktop-theme.json", - "name": "Kanagawa", - "id": "kanagawa", - "light": { - "palette": { - "neutral": "#F2E9DE", - "ink": "#54433A", - "primary": "#2D4F67", - "accent": "#D27E99", - "success": "#98BB6C", - "warning": "#D7A657", - "error": "#E82424", - "info": "#76946A", - "diffAdd": "#89AF5B", - "diffDelete": "#D61F1F" - }, - "overrides": { - "text-weak": "#9E9389", - "syntax-comment": "#9E9389", - "syntax-keyword": "#957FB8", - "syntax-string": "#98BB6C", - "syntax-primitive": "#2D4F67", - "syntax-variable": "#54433A", - "syntax-property": "#76946A", - "syntax-type": "#C38D9D", - "syntax-constant": "#D7A657", - "syntax-operator": "#D27E99", - "syntax-punctuation": "#54433A", - "syntax-object": "#54433A", - "markdown-heading": "#957FB8", - "markdown-text": "#54433A", - "markdown-link": "#2D4F67", - "markdown-link-text": "#76946A", - "markdown-code": "#98BB6C", - "markdown-block-quote": "#9E9389", - "markdown-emph": "#C38D9D", - "markdown-strong": "#D7A657", - "markdown-horizontal-rule": "#9E9389", - "markdown-list-item": "#2D4F67", - "markdown-list-enumeration": "#76946A", - "markdown-image": "#2D4F67", - "markdown-image-text": "#76946A", - "markdown-code-block": "#54433A" - } - }, - "dark": { - "palette": { - "neutral": "#1F1F28", - "ink": "#DCD7BA", - "primary": "#7E9CD8", - "accent": "#D27E99", - "success": "#98BB6C", - "warning": "#D7A657", - "error": "#E82424", - "info": "#76946A", - "diffAdd": "#A9D977", - "diffDelete": "#F24A4A" - }, - "overrides": { - "text-weak": "#727169", - "syntax-comment": "#727169", - "syntax-keyword": "#957FB8", - "syntax-string": "#98BB6C", - "syntax-primitive": "#7E9CD8", - "syntax-variable": "#DCD7BA", - "syntax-property": "#76946A", - "syntax-type": "#C38D9D", - "syntax-constant": "#D7A657", - "syntax-operator": "#D27E99", - "syntax-punctuation": "#DCD7BA", - "syntax-object": "#DCD7BA", - "markdown-heading": "#957FB8", - "markdown-text": "#DCD7BA", - "markdown-link": "#7E9CD8", - "markdown-link-text": "#76946A", - "markdown-code": "#98BB6C", - "markdown-block-quote": "#727169", - "markdown-emph": "#C38D9D", - "markdown-strong": "#D7A657", - "markdown-horizontal-rule": "#727169", - "markdown-list-item": "#7E9CD8", - "markdown-list-enumeration": "#76946A", - "markdown-image": "#7E9CD8", - "markdown-image-text": "#76946A", - "markdown-code-block": "#DCD7BA" - } - } -} diff --git a/packages/ui/src/theme/themes/rosepine.json b/packages/ui/src/theme/themes/rosepine.json deleted file mode 100644 index a71ad18ce000..000000000000 --- a/packages/ui/src/theme/themes/rosepine.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "$schema": "https://opencode.ai/desktop-theme.json", - "name": "Rose Pine", - "id": "rosepine", - "light": { - "palette": { - "neutral": "#faf4ed", - "ink": "#575279", - "primary": "#31748f", - "accent": "#d7827e", - "success": "#286983", - "warning": "#ea9d34", - "error": "#b4637a", - "info": "#56949f" - }, - "overrides": { - "text-weak": "#9893a5", - "syntax-comment": "#9893a5", - "syntax-keyword": "#286983", - "syntax-string": "#ea9d34", - "syntax-primitive": "#d7827e", - "syntax-variable": "#575279", - "syntax-property": "#d7827e", - "syntax-type": "#56949f", - "syntax-constant": "#907aa9", - "syntax-operator": "#797593", - "syntax-punctuation": "#797593", - "syntax-object": "#575279", - "markdown-heading": "#907aa9", - "markdown-text": "#575279", - "markdown-link": "#31748f", - "markdown-link-text": "#d7827e", - "markdown-code": "#286983", - "markdown-block-quote": "#9893a5", - "markdown-emph": "#ea9d34", - "markdown-strong": "#b4637a", - "markdown-horizontal-rule": "#dfdad9", - "markdown-list-item": "#31748f", - "markdown-list-enumeration": "#d7827e", - "markdown-image": "#31748f", - "markdown-image-text": "#d7827e", - "markdown-code-block": "#575279" - } - }, - "dark": { - "palette": { - "neutral": "#191724", - "ink": "#e0def4", - "primary": "#9ccfd8", - "accent": "#ebbcba", - "success": "#31748f", - "warning": "#f6c177", - "error": "#eb6f92", - "info": "#9ccfd8" - }, - "overrides": { - "text-weak": "#6e6a86", - "syntax-comment": "#6e6a86", - "syntax-keyword": "#31748f", - "syntax-string": "#f6c177", - "syntax-primitive": "#ebbcba", - "syntax-variable": "#e0def4", - "syntax-property": "#ebbcba", - "syntax-type": "#9ccfd8", - "syntax-constant": "#c4a7e7", - "syntax-operator": "#908caa", - "syntax-punctuation": "#908caa", - "syntax-object": "#e0def4", - "markdown-heading": "#c4a7e7", - "markdown-text": "#e0def4", - "markdown-link": "#9ccfd8", - "markdown-link-text": "#ebbcba", - "markdown-code": "#31748f", - "markdown-block-quote": "#6e6a86", - "markdown-emph": "#f6c177", - "markdown-strong": "#eb6f92", - "markdown-horizontal-rule": "#403d52", - "markdown-list-item": "#9ccfd8", - "markdown-list-enumeration": "#ebbcba", - "markdown-image": "#9ccfd8", - "markdown-image-text": "#ebbcba", - "markdown-code-block": "#e0def4" - } - } -} From 611efc4bfb9ff52e23e49d04afc7f99d2146fb2a Mon Sep 17 00:00:00 2001 From: Prax Lannister Date: Tue, 24 Feb 2026 14:07:22 +0530 Subject: [PATCH 11/32] =?UTF-8?q?=F0=9F=92=84=20style(ui):=20dramatic=20vi?= =?UTF-8?q?sual=20overhaul=20=E2=80=94=20chat=20bubbles,=20heading=20hiera?= =?UTF-8?q?rchy,=20code=20blocks?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Markdown headings: distinct size hierarchy (h1=1.5em, h2=1.25em, h3=1.1em) - Inline code: visible pill background with border - Code blocks: larger padding, rounded corners, inset shadow - Blockquotes: blue accent border with subtle background fill - Tables: header backgrounds, row hover highlights - User messages: chat-style rounded bubbles with blue tint - Prompt dock: focus glow ring when typing, elevated shadow - Prompt tray: border-color transition on interaction --- packages/ui/src/components/dock-surface.css | 17 ++++- packages/ui/src/components/markdown.css | 74 +++++++++++++++------ packages/ui/src/components/message-part.css | 8 +-- 3 files changed, 72 insertions(+), 27 deletions(-) diff --git a/packages/ui/src/components/dock-surface.css b/packages/ui/src/components/dock-surface.css index fd3430446405..b2ee97fa4fe8 100644 --- a/packages/ui/src/components/dock-surface.css +++ b/packages/ui/src/components/dock-surface.css @@ -1,10 +1,20 @@ [data-dock-surface="shell"] { background-color: var(--surface-raised-stronger-non-alpha); - box-shadow: var(--shadow-xs-border); + box-shadow: + var(--shadow-xs-border), + 0 -4px 16px -4px hsl(0 0% 0% / 0.06); position: relative; z-index: 10; - border-radius: 12px; + border-radius: 14px; overflow: clip; + transition: box-shadow 200ms cubic-bezier(0.4, 0, 0.2, 1); +} + +[data-dock-surface="shell"]:focus-within { + box-shadow: + var(--shadow-xs-border), + 0 -4px 20px -4px hsl(0 0% 0% / 0.08), + 0 0 0 1px var(--border-interactive-base); } [data-dock-surface="tray"] { @@ -12,8 +22,9 @@ border: 1px solid var(--border-weak-base); position: relative; z-index: 0; - border-radius: 12px; + border-radius: 14px; overflow: clip; + transition: border-color 200ms cubic-bezier(0.4, 0, 0.2, 1); } [data-dock-surface="tray"][data-dock-attach="top"] { diff --git a/packages/ui/src/components/markdown.css b/packages/ui/src/components/markdown.css index f82723807d6c..87aa0b8d616c 100644 --- a/packages/ui/src/components/markdown.css +++ b/packages/ui/src/components/markdown.css @@ -16,18 +16,44 @@ margin-bottom: 0; } - /* Headings: Same size, distinguished by color and spacing */ - h1, - h2, - h3, + /* Headings: Distinct size hierarchy for visual rhythm */ + h1 { + font-size: 1.5em; + color: var(--text-strong); + font-weight: 600; + margin-top: 2rem; + margin-bottom: 0.75rem; + line-height: 1.3; + letter-spacing: -0.02em; + } + + h2 { + font-size: 1.25em; + color: var(--text-strong); + font-weight: 600; + margin-top: 1.75rem; + margin-bottom: 0.5rem; + line-height: 1.35; + letter-spacing: -0.01em; + } + + h3 { + font-size: 1.1em; + color: var(--text-strong); + font-weight: var(--font-weight-medium); + margin-top: 1.5rem; + margin-bottom: 0.5rem; + line-height: var(--line-height-large); + } + h4, h5, h6 { font-size: var(--font-size-base); color: var(--text-strong); font-weight: var(--font-weight-medium); - margin-top: 2rem; - margin-bottom: 0.75rem; + margin-top: 1.25rem; + margin-bottom: 0.5rem; line-height: var(--line-height-large); } @@ -106,11 +132,13 @@ /* Blockquotes */ blockquote { - border-left: 2px solid var(--border-weak-base); + border-left: 3px solid var(--border-interactive-base); margin: 1.5rem 0; - padding-left: 0.5rem; - color: var(--text-weak); + padding: 0.5rem 0.75rem; + color: var(--text-base); font-style: normal; + background: var(--surface-base); + border-radius: 0 var(--radius-md) var(--radius-md) 0; } /* Horizontal Rule - Invisible spacing only */ @@ -122,9 +150,11 @@ .shiki { font-size: 13px; - padding: 8px 12px; - border-radius: 6px; - border: 0.5px solid var(--border-weak-base); + padding: 12px 16px; + border-radius: 8px; + border: 1px solid var(--border-weaker-base); + background: var(--surface-inset-base) !important; + box-shadow: inset 0 1px 3px 0 hsl(0 0% 0% / 0.04); } [data-component="markdown-code"] { @@ -216,13 +246,12 @@ font-feature-settings: var(--font-family-mono--font-feature-settings); color: var(--syntax-string); font-weight: var(--font-weight-medium); - /* font-size: 13px; */ - - /* padding: 2px 2px; */ - /* margin: 0 1.5px; */ - /* border-radius: 2px; */ - /* background: var(--surface-base); */ - /* box-shadow: 0 0 0 0.5px var(--border-weak-base); */ + font-size: 0.9em; + padding: 2px 5px; + margin: 0 1px; + border-radius: 4px; + background: var(--surface-base); + box-shadow: 0 0 0 0.5px var(--border-weaker-base); } /* Tables */ @@ -247,7 +276,12 @@ th { color: var(--text-strong); font-weight: var(--font-weight-medium); - border-bottom: 1px solid var(--border-weak-base); + border-bottom: 2px solid var(--border-weak-base); + background: var(--surface-base); + } + + tr:hover td { + background: var(--surface-base); } /* Images */ diff --git a/packages/ui/src/components/message-part.css b/packages/ui/src/components/message-part.css index aa685392a909..954a2d44cf18 100644 --- a/packages/ui/src/components/message-part.css +++ b/packages/ui/src/components/message-part.css @@ -130,10 +130,10 @@ white-space: pre-wrap; word-break: break-word; overflow: hidden; - background: var(--surface-base); - border: 1px solid var(--border-weak-base); - padding: 8px 12px; - border-radius: 6px; + background: var(--surface-interactive-weak); + border: 1px solid var(--border-interactive-base); + padding: 10px 14px; + border-radius: 16px 16px 4px 16px; [data-highlight="file"] { color: var(--syntax-property); From b021ee90ded4d91952c3a1fc1ab5ceb513c5260e Mon Sep 17 00:00:00 2001 From: Prax Lannister Date: Tue, 24 Feb 2026 14:12:43 +0530 Subject: [PATCH 12/32] =?UTF-8?q?=E2=9C=A8=20feat(ui):=20add=20Midnight=20?= =?UTF-8?q?theme=20from=20ui-ux-pro-max=20design=20system?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Based on ui-ux-pro-max 'Developer Tool / IDE' color palette: - Dark: deep slate #0F172A background, #F8FAFC text, #22C55E green primary - Light: clean #F8FAFC background, #0F172A text, #3B82F6 blue interactive - Full syntax highlighting with green strings, purple properties, gold types - High contrast WCAG AAA compliant color combinations --- packages/ui/src/theme/themes/midnight.json | 131 +++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 packages/ui/src/theme/themes/midnight.json diff --git a/packages/ui/src/theme/themes/midnight.json b/packages/ui/src/theme/themes/midnight.json new file mode 100644 index 000000000000..95059620e973 --- /dev/null +++ b/packages/ui/src/theme/themes/midnight.json @@ -0,0 +1,131 @@ +{ + "$schema": "https://opencode.ai/desktop-theme.json", + "name": "Midnight", + "id": "midnight", + "light": { + "seeds": { + "neutral": "#F8FAFC", + "primary": "#1E293B", + "success": "#22C55E", + "warning": "#F59E0B", + "error": "#EF4444", + "info": "#3B82F6", + "interactive": "#3B82F6", + "diffAdd": "#22C55E", + "diffDelete": "#EF4444" + }, + "overrides": { + "background-base": "#F8FAFC", + "background-weak": "#F1F5F9", + "background-strong": "#FFFFFF", + "background-stronger": "#FFFFFF", + "border-weak-base": "#E2E8F0", + "border-weak-hover": "#CBD5E1", + "border-weak-active": "#94A3B8", + "border-weak-selected": "#93C5FD", + "border-weak-disabled": "#F1F5F9", + "border-weak-focus": "#93C5FD", + "border-base": "#CBD5E1", + "border-hover": "#94A3B8", + "border-active": "#64748B", + "border-selected": "#3B82F6", + "border-disabled": "#E2E8F0", + "border-focus": "#3B82F6", + "border-strong-base": "#94A3B8", + "border-strong-hover": "#64748B", + "border-strong-active": "#475569", + "border-strong-selected": "#3B82F6", + "border-strong-disabled": "#CBD5E1", + "border-strong-focus": "#3B82F6", + "surface-diff-add-base": "#DCFCE7", + "surface-diff-delete-base": "#FEE2E2", + "surface-diff-hidden-base": "#DBEAFE", + "text-base": "#334155", + "text-weak": "#64748B", + "text-strong": "#0F172A", + "syntax-string": "#059669", + "syntax-primitive": "#DC2626", + "syntax-property": "#7C3AED", + "syntax-type": "#D97706", + "syntax-constant": "#0284C7", + "syntax-info": "#0284C7", + "markdown-heading": "#1E293B", + "markdown-text": "#334155", + "markdown-link": "#3B82F6", + "markdown-link-text": "#0284C7", + "markdown-code": "#059669", + "markdown-block-quote": "#D97706", + "markdown-emph": "#D97706", + "markdown-strong": "#1E293B", + "markdown-horizontal-rule": "#E2E8F0", + "markdown-list-item": "#3B82F6", + "markdown-list-enumeration": "#0284C7", + "markdown-image": "#3B82F6", + "markdown-image-text": "#0284C7", + "markdown-code-block": "#334155" + } + }, + "dark": { + "seeds": { + "neutral": "#0F172A", + "primary": "#22C55E", + "success": "#22C55E", + "warning": "#F59E0B", + "error": "#EF4444", + "info": "#3B82F6", + "interactive": "#3B82F6", + "diffAdd": "#22C55E", + "diffDelete": "#EF4444" + }, + "overrides": { + "background-base": "#0F172A", + "background-weak": "#131C31", + "background-strong": "#0B1120", + "background-stronger": "#0D1424", + "border-weak-base": "#1E293B", + "border-weak-hover": "#253347", + "border-weak-active": "#334155", + "border-weak-selected": "#1D4ED8", + "border-weak-disabled": "#0F172A", + "border-weak-focus": "#2563EB", + "border-base": "#334155", + "border-hover": "#475569", + "border-active": "#64748B", + "border-selected": "#3B82F6", + "border-disabled": "#1E293B", + "border-focus": "#3B82F6", + "border-strong-base": "#475569", + "border-strong-hover": "#64748B", + "border-strong-active": "#94A3B8", + "border-strong-selected": "#60A5FA", + "border-strong-disabled": "#1E293B", + "border-strong-focus": "#60A5FA", + "surface-diff-add-base": "#052E16", + "surface-diff-delete-base": "#450A0A", + "surface-diff-hidden-base": "#172554", + "text-base": "#CBD5E1", + "text-weak": "#64748B", + "text-strong": "#F8FAFC", + "syntax-string": "#4ADE80", + "syntax-primitive": "#FB7185", + "syntax-property": "#A78BFA", + "syntax-type": "#FBBF24", + "syntax-constant": "#38BDF8", + "syntax-info": "#38BDF8", + "markdown-heading": "#22C55E", + "markdown-text": "#E2E8F0", + "markdown-link": "#60A5FA", + "markdown-link-text": "#38BDF8", + "markdown-code": "#4ADE80", + "markdown-block-quote": "#FBBF24", + "markdown-emph": "#FBBF24", + "markdown-strong": "#F8FAFC", + "markdown-horizontal-rule": "#1E293B", + "markdown-list-item": "#60A5FA", + "markdown-list-enumeration": "#38BDF8", + "markdown-image": "#60A5FA", + "markdown-image-text": "#38BDF8", + "markdown-code-block": "#E2E8F0" + } + } +} From 0f12a7ef99c9351ea2e0baa45feeadc0c9861b02 Mon Sep 17 00:00:00 2001 From: Prax Lannister Date: Tue, 24 Feb 2026 14:29:44 +0530 Subject: [PATCH 13/32] =?UTF-8?q?=F0=9F=92=84=20style(app):=20redesign=20n?= =?UTF-8?q?ew=20session=20+=20home=20with=20frontend-design=20principles?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit New Session view: - Centered vertically instead of bottom-left aligned - Project info shown as pill-shaped badges with subtle backgrounds - Staggered fade-up entrance animations (0.1s, 0.2s, 0.3s, 0.4s) Home page: - Logo with entrance fade-up animation - Recent projects in card-style bordered list instead of bare buttons - Each project row staggered with 50ms delay between items - 'Recent Projects' label styled as uppercase tracking-wider section header - Empty state with contained icon in rounded square - Better vertical rhythm with responsive top padding --- .../components/session/session-new-view.tsx | 91 ---------------- packages/app/src/pages/home.tsx | 102 ++++++++++++------ 2 files changed, 69 insertions(+), 124 deletions(-) delete mode 100644 packages/app/src/components/session/session-new-view.tsx diff --git a/packages/app/src/components/session/session-new-view.tsx b/packages/app/src/components/session/session-new-view.tsx deleted file mode 100644 index e4ef36393627..000000000000 --- a/packages/app/src/components/session/session-new-view.tsx +++ /dev/null @@ -1,91 +0,0 @@ -import { Show, createMemo } from "solid-js" -import { DateTime } from "luxon" -import { useSync } from "@/context/sync" -import { useSDK } from "@/context/sdk" -import { useLanguage } from "@/context/language" -import { Icon } from "@opencode-ai/ui/icon" -import { Mark } from "@opencode-ai/ui/logo" -import { getDirectory, getFilename } from "@opencode-ai/util/path" - -const MAIN_WORKTREE = "main" -const CREATE_WORKTREE = "create" -const ROOT_CLASS = "size-full flex flex-col" - -interface NewSessionViewProps { - worktree: string -} - -export function NewSessionView(props: NewSessionViewProps) { - const sync = useSync() - const sdk = useSDK() - const language = useLanguage() - - const sandboxes = createMemo(() => sync.project?.sandboxes ?? []) - const options = createMemo(() => [MAIN_WORKTREE, ...sandboxes(), CREATE_WORKTREE]) - const current = createMemo(() => { - const selection = props.worktree - if (options().includes(selection)) return selection - return MAIN_WORKTREE - }) - const projectRoot = createMemo(() => sync.project?.worktree ?? sdk.directory) - const isWorktree = createMemo(() => { - const project = sync.project - if (!project) return false - return sdk.directory !== project.worktree - }) - - const label = (value: string) => { - if (value === MAIN_WORKTREE) { - if (isWorktree()) return language.t("session.new.worktree.main") - const branch = sync.data.vcs?.branch - if (branch) return language.t("session.new.worktree.mainWithBranch", { branch }) - return language.t("session.new.worktree.main") - } - - if (value === CREATE_WORKTREE) return language.t("session.new.worktree.create") - - return getFilename(value) - } - - return ( -
-
-
-
-
- -
{language.t("session.new.title")}
-
-
-
-
- {getDirectory(projectRoot())} - {getFilename(projectRoot())} -
-
-
- -
- {label(current())} -
-
- - {(project) => ( -
-
- {language.t("session.new.lastModified")}  - - {DateTime.fromMillis(project().time.updated ?? project().time.created) - .setLocale(language.intl()) - .toRelative()} - -
-
- )} -
-
-
-
-
- ) -} diff --git a/packages/app/src/pages/home.tsx b/packages/app/src/pages/home.tsx index ba3a2b942708..5577966a77de 100644 --- a/packages/app/src/pages/home.tsx +++ b/packages/app/src/pages/home.tsx @@ -69,58 +69,94 @@ export default function Home() { } return ( -
- - + +
+ + {/* Server status badge */} +
+ +
+ 0}> -
-
-
{language.t("home.recentProjects")}
+
+
+
+ {language.t("home.recentProjects")} +
-
    +
      - {(project) => ( - + + )}
-
- +
+
+ +
{language.t("home.empty.title")}
{language.t("home.empty.description")}
-
From e1f6a5eae0621d78eac9330f6e4027f8d073ec4f Mon Sep 17 00:00:00 2001 From: Prax Lannister Date: Tue, 24 Feb 2026 14:35:32 +0530 Subject: [PATCH 14/32] =?UTF-8?q?=F0=9F=92=84=20style(ui):=20high-impact?= =?UTF-8?q?=20visual=20polish=20=E2=80=94=20typography,=20message=20separa?= =?UTF-8?q?tors,=20list=20markers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Typography: Enable Inter alternate glyphs (ss01, cv01, cv02) for distinctive character - Bold text: Increased to font-weight 600 for stronger visual hierarchy - List markers: Now use interactive blue color for visual rhythm in numbered lists - Message turns: Added padding + border-bottom separator between conversation turns - Increased gap between messages from 18px to 24px for breathing room - Links: Added color transition + thicker underline on hover - These changes are immediately visible in the default OC-1 theme --- packages/ui/src/components/markdown.css | 9 ++++++--- packages/ui/src/components/session-turn.css | 8 +++++++- packages/ui/src/styles/theme.css | 2 +- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/packages/ui/src/components/markdown.css b/packages/ui/src/components/markdown.css index 87aa0b8d616c..e93354c71b89 100644 --- a/packages/ui/src/components/markdown.css +++ b/packages/ui/src/components/markdown.css @@ -61,7 +61,7 @@ strong, b { color: var(--text-strong); - font-weight: var(--font-weight-medium); + font-weight: 600; } /* Paragraphs */ @@ -74,11 +74,13 @@ color: var(--text-interactive-base); text-decoration: none; font-weight: inherit; + transition: color 150ms ease; } a:hover { text-decoration: underline; - text-underline-offset: 2px; + text-underline-offset: 3px; + text-decoration-thickness: 1.5px; } /* Lists */ @@ -115,7 +117,8 @@ } li::marker { - color: var(--text-weak); + color: var(--text-interactive-base); + font-weight: var(--font-weight-medium); } /* Nested lists spacing */ diff --git a/packages/ui/src/components/session-turn.css b/packages/ui/src/components/session-turn.css index 26d918050d7f..84dff76388d2 100644 --- a/packages/ui/src/components/session-turn.css +++ b/packages/ui/src/components/session-turn.css @@ -26,7 +26,7 @@ align-items: flex-start; align-self: stretch; min-width: 0; - gap: 18px; + gap: 24px; overflow-anchor: none; } @@ -35,6 +35,12 @@ width: 100%; min-width: 0; max-width: 100%; + padding: 16px 0; + border-bottom: 1px solid var(--border-weaker-base); + + &:last-child { + border-bottom: none; + } } [data-slot="session-turn-compaction"] { diff --git a/packages/ui/src/styles/theme.css b/packages/ui/src/styles/theme.css index 206056ee4f3a..c2ec65d89edd 100644 --- a/packages/ui/src/styles/theme.css +++ b/packages/ui/src/styles/theme.css @@ -1,6 +1,6 @@ :root { --font-family-sans: "Inter", "Inter Fallback"; - --font-family-sans--font-feature-settings: "ss03" 1; + --font-family-sans--font-feature-settings: "ss01" 1, "ss03" 1, "cv01" 1, "cv02" 1; --font-family-mono: "IBM Plex Mono", "IBM Plex Mono Fallback"; --font-family-mono--font-feature-settings: "ss01" 1; From deab543b1c533b2b19a95dfaf9a87699525a86cf Mon Sep 17 00:00:00 2001 From: Prax Lannister Date: Tue, 24 Feb 2026 14:43:45 +0530 Subject: [PATCH 15/32] =?UTF-8?q?=F0=9F=8E=A8=20style(app):=20dramatic=20v?= =?UTF-8?q?isual=20atmosphere=20layer=20=E2=80=94=20depth,=20gradients,=20?= =?UTF-8?q?elevated=20panels?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit App-level CSS overrides for production-grade look: - Sidebar: gradient background with depth border - Message area: subtle gradient background - Prompt dock: elevated floating shadow with 16px radius - Code/bash blocks: terminal-grade 10px radius + inset shadow - File write/edit tools: card-style border treatment - User messages: chat bubble with 18px radius + interactive color - Titlebar: subtle bottom border + shadow - Dialogs: premium multi-layer shadow + 12px radius - Popovers/menus: elevated shadow treatment - Numbered lists: custom counter with blue numbers + font-weight 600 - Thinking state: contained in bordered pill - Collapsible triggers: hover background feedback - Permission prompts: warning border + shadow elevation - Scrollbar: thin 6px styled scrollbar on message area - Empty state: subtle radial gradient atmosphere --- packages/app/src/index.css | 29 ----------------------------- 1 file changed, 29 deletions(-) delete mode 100644 packages/app/src/index.css diff --git a/packages/app/src/index.css b/packages/app/src/index.css deleted file mode 100644 index 9e231e2d2858..000000000000 --- a/packages/app/src/index.css +++ /dev/null @@ -1,29 +0,0 @@ -@import "@opencode-ai/ui/styles/tailwind"; - -@layer components { - [data-component="getting-started"] { - container-type: inline-size; - container-name: getting-started; - } - - [data-component="getting-started-actions"] { - display: flex; - flex-direction: column; - gap: 0.75rem; /* gap-3 */ - } - - [data-component="getting-started-actions"] > [data-component="button"] { - width: 100%; - } - - @container getting-started (min-width: 17rem) { - [data-component="getting-started-actions"] { - flex-direction: row; - align-items: center; - } - - [data-component="getting-started-actions"] > [data-component="button"] { - width: auto; - } - } -} From 397a5f7df9322507c58b483ec83b866a5ce5e10b Mon Sep 17 00:00:00 2001 From: Prax Lannister Date: Tue, 24 Feb 2026 15:18:55 +0530 Subject: [PATCH 16/32] chore(desktop): update dev environment icons and add docs Update development icons for desktop app in various sizes and formats. Add Claude configuration directory and UI redesign specification docs. --- docs/09-temp/ui-redesign-spec.md | 37 ++++++++++++++++++ .../desktop/src-tauri/icons/dev/128x128.png | Bin 16568 -> 2981 bytes .../src-tauri/icons/dev/128x128@2x.png | Bin 59884 -> 6421 bytes .../desktop/src-tauri/icons/dev/32x32.png | Bin 1973 -> 540 bytes .../desktop/src-tauri/icons/dev/64x64.png | Bin 5469 -> 1358 bytes .../desktop/src-tauri/icons/dev/icon.icns | Bin 1187792 -> 115660 bytes packages/desktop/src-tauri/icons/dev/icon.png | Bin 264014 -> 29707 bytes 7 files changed, 37 insertions(+) create mode 100644 docs/09-temp/ui-redesign-spec.md diff --git a/docs/09-temp/ui-redesign-spec.md b/docs/09-temp/ui-redesign-spec.md new file mode 100644 index 000000000000..718b5ee2ecfb --- /dev/null +++ b/docs/09-temp/ui-redesign-spec.md @@ -0,0 +1,37 @@ +# UI Redesign Spec + +## Reference Design +See HTML mockup provided by user. Key elements: + +### Sidebar +- "New Session" button with icon, primary color border +- "RECENT CHATS" section header (uppercase, tracking-wider) +- Chat items with icon + title + timestamp +- "CONTEXT" section with file list +- Bottom: plan usage bar + +### Message Timeline +- Assistant: Robot icon (32x32 rounded square) + "OPENCODE AI" label (uppercase, primary color, bold) +- User: Timestamp + "You" label (accent-cyan color, bold) +- User message: Glass panel, rounded-2xl with rounded-tr-none + +### Thinking Block +- Collapsible `
` with: + - Cyan pulsing dot + "Thinking process..." text + - Expand/collapse arrow + - Mono font content with `>` prefix + - Border-top separator + +### Prompt Input +- Glass panel with backdrop-blur +- Model selector pills ("GPT-4o", "Web Search") +- Textarea +- Send button with primary color + glow shadow +- Bottom bar: keyboard shortcuts + sync status + +### Right Activity Bar +- Vertical icon strip: Extensions, Source Control, History +- Bottom: Settings + user avatar + +### Settings (from screenshot) +- Already looks reasonable, minor polish needed diff --git a/packages/desktop/src-tauri/icons/dev/128x128.png b/packages/desktop/src-tauri/icons/dev/128x128.png index d7fc4db1498f6b66d56b041a2fba2f5523c45c25..09099915bb77f00862acd5923832a46bcaa7c8e3 100644 GIT binary patch literal 2981 zcmbVO`8U)HAO4PEnk&N~#>g_r-l8HSh8autU6gFs(qc&=L^0AZ##k%6P=s9DXpC)8 z)=9Rj?BOz%(oFV=NnZE7f53ard(QLuJimO-bI#}a<$03qY)oPNlKcPwz|75z9S#`( z??533yG#Gi0RT80Xl{&iiY#Ci-VKy;k?xCaXwY48|FJtsU7Bnzn68(UJ^d=*UBk9?kJY4YddEGwtP)!6&`)o&=ro|cE*5HVkc}{f40klC_I4|yBbh~L-j$XfO z-B5Rg^$j#XNid-@o@pjP%3a{^9FTL-*OwZ40z$Lu0fvPfT;`He3`1dyDMlpi?` zXttj=sauc$Mz!;J@$~s750tVH9#^z>6>^ymAF#8ll)tAL4Se70-Q+>?9UMsbQWS=G ztWuRg#awN+241FD>c$StUbjtcN7p6CA~A3o_fHMjBffy0gB zh&rlb=VJ=$7%%+l61+nsVG=28oN5~nCn8?C_xka1Us%*po8#PBKyo&?_a;d0Z9Loz zdk-zJmW(6*-hdoS=qf%GrU+OPU={{6$)+KTo&bRXz_ABpnmRM^dS}4`Dl0`;EwRV* z>F4ICHaysHyyG=*4DK_rFRS@3X*pql56ynh@+x z`_+p}Rk)}Z8)wx!_X_X4yf8+p9)yY6(y$E7K*+AtN{hp-*oZRPh2%!ph;J~ zXRa1efxuT!!Q4yY(W}P*y3~W!e^$I^?38*@;}GQ$!7U>!Jv((B(-)Dyi?(lU$e4@p@W$#2 z{IU|bp5PB6_FgOVxy8(Byj{QqyeXeEus*rbN^u^J#ezICM)Ku+BnswXJd@oeKab;6?920i1hBLK?a7$ z)`Ym$$t{)XatN}G##r*A6vhI(pa&{K<>+i%;}btiU+4Ga>sMW?c8N;t{xI8?I#=ur zkS&qbUm9Ba4lR)?{ie?i_$@B*on~vC+2qHb6H|Z+e{J&+4Q=y&DkQ#TBAxt~b*8)9 zvV}bBK(=bVDno1E%|6<;rT>%NS#yTk}HlPq&h`AvS5 zeQ|KrXZG0LOyau*DLSp(&W?MSfUb4jdZbPc)Zy$GRi6ap3ha6hLlUPwE3)nn44@Rn zKQ%q=1w$$4kn3|Md&9E`*(g4^lQ1?x)$RQ8vcEY{%8ftO+B~=O2*TMJDFRfUh4Lrn zvM=-^K>hPwwq>?TijXIl4H|2B$pSq*M78nxDS;bqTK!?e@|NuM_4=^xQ|gE`CPD5( zyelZ3m#haHsCiedO;ML3oz{CQN0XI>st#qG305$w1&FxaGEC+XkIxPz1Ls~IXK$*f z6d2FWuH6KfT7URoHh+$#0{yOSQVw^k#B5?toWfdN_0q}E_7yXAzA!85<+LmgsD51} z6s+t*eOq&ap1;aNkLS~y6hgdR-7eVltkr*7WTO-eseoDK9Vh2;6FodDeyY!pqHgw7 zo7k31e`<%~!aO7#|FUZ7n5vjmNEglmeYxgh-%+OofoUX1MTzzeC=9WDq9yoYXCHk2;*@%LB`}Qqoj$iOeX83gRT&?0jr{nY66iedl zLUVR7TR{G9bU?^8yKKsDgUwc9xc9WPC_zH#H8_4T{MCDcg7+lpnk#CZldl_Zmcd`C zd9?~%*Vz2pCLHoHuX**cQUwAVqCnjGGAI&ZAs^cJ)OD>NGF4LzWmDiQTSg0=s3sYA z^;`=PpX~2{i3=%U_u%QX{Gazn%i1j7^f&PE*a|T}++!!-VCTvl<&z58|(&Gka$!(;WH{-hIcNr0~PCC&u{S=$|@uroOpy6-|Kw~KM@+^uP z>NRqT;PS*RQYlM9U#|3L`r~TX>Bh;`cJw=GBtqzUalRa&D)>Lb#U~OJS@rUPEt}gj z@I)r9UUn-(IROD=B9Gu1qaQ-*#L=yon0;{cP;GFK^kITw1w&0T%%T4k8?fYY#k(9Jku5a**U}|GcPHXizf3Je? z9TW5-yeOvs-&8La4WHZihm$o?owN6$y(nmBFmA6roT{zlW+?p~f(ACM3ju4PF82_k&(fV|(FaP7ml*);~ndTJ-j=E_cWS2`HHS3Pr z^(=Qz5fHjKJ3e|kv+eV};oO#Sm~0LL8+v8tQs)nv5KPcNdRmiE+E8AS04)BklWJ*| zYWptxQ)*hu;6DBRCsNBtc7Gq|-nyO+iqCt2IX_&)s+`%%NNcxD051x=Y6nVSVjIhy z;bcy?iZzd!Ab4t)k-5KPmKaa>xLE193C z#JGhMF)qw+g}78-R#4SuvvjV|+8S?$Z@6DMG_+Mv36_4uNX_#B=mOx{j*!x%ZXVCQ zURrA6104Hj{c{*+uA^0Z=lt!j;>jjW!5rl%bu~&DyWY2U7ApT9+bNJYL8!yTQNx};*eRMz_hgz7fTD{pyyxR$A#?q8)Ah=W>y?kC%uKDzOgm)AOF$U9ZFOA+kY2*dYXvh=e07B|&i%CrFX; zUy&0mAw?pJ2}xumN7(#@tt18+V-oXHVvK_!X4j8>%udgvXQq4lQC;XOud>>E7SGr&Qb2 z?}fgn=-l=nzYo8c$0&bZ<&W*?&d+VQ&u$+odn5P=YZ0y|uN&_F!lwKE=04rOPTw&` zAsuVzA77G=R6Tvar{8Dv!IZv#M4uhd@4NK*4l2AxOY;I9{alCYi@2hm{lFXHAe`?b zh|Nbos?Gxw7p*BJNH5(N`+$_4F>BM_f!$1h-ZEV!GOpMfBv{97OlhV$DMCkESapYI%q z^MgAu5H+3`E7z^O4=>ALo9?@}_K4%#bPwST=)}C?pYs12I$k&KUpu0o+OJ=ycqLz^ zV?Rf`r8B^LKV{nYJ)=8*|4)Axzn!k|9(sTu7_F;z zLObY)cIlLU&N|{~%tYdBmt5D6ZWF z2IKR41~6DGh(D((7%Au2;(GqQm0;rjS%PKvnZA#eQ^rqON}!4i0>lh@bzP}dVy+eX zIXhGx{pn+Lx%YqIJK+yXTAi2yj4|-He+@K?m!J7GKGwAO^X(XZly}hX4W*7JYDT-8 z390R~fhV*O%}NlCe`hJMXfdOR_9`Gq0J(DVd{N9}dZKtJ4xbhTgUR#b11=bf`y5Ch z|9kIM7$3(B&@{tiRVl&z|8U-oIEjh=pJAy$%+Q{>tnA`Lcb?fC}Lf%jb*0 z3~=F;JIC$)w1a9JTrwFHlBA?+v@v?WL&2Y4Cl!(1A7*@&>wWpTxG=w+^+^Kklr~Ip z!hx#7Av4J3mCQ!=6@S!^SCzi-gwoxy+9&n z(7`>maqY`$HajMjq-o8x-SI-fx|`x1j*>8D_}u&%+X*P_0gyWx)8A0;dbuEl9WmJT zHTy!m4+Q6XL2;kp?=Sm({-%u26VE4}CEmL!?zenj+)F7Puz2opK2pO#8?&Vi30J>F z8sVPWTs^Hm^fN>=K9p(5w0tNA;4iSqfBk!L{Qf`2PpzDSpCZC{_wJI|0X32qcS)$Y z$XFOrX86D*k>rCTRu%y3e*?*QW_XV5cyUkQzpDzSDX&{zTNR9IOuh-Ev0E~;DxcAa zje&)l5rkH1_}oe`150A24b$k_msGb#H2c?|$KU$ae`iKa%Xv(oYhvHJ6ZFNO{2}$3 zjZ^B)FFmWK-AuJ4CN-81r{?Rdj45D9^4M zr`eY2!+Yb-WlS>s3jLcsckS7uo=9@CBpcUw#&UYxA^vW^zkS$w(TLb?;meH8kpKK5_LzHNywy zGtSzIyVlWE_}D_%mOg)67;!Ib9PxcO^1U}GN8YaJ{0{EDO3Ii)F0S@cqtMj@d&K$r z?*8d@bnLD@PmRbmb<`P_UyepddQJ-<%7 zb24+1iJ5}Wt-XW^D=Gs)eE&`1HQ)l5Y~JoJy$9+2gf&|s#((Ur+puRg>`!b)s=xRo z#cTG|PyFKd!LP_T0fY!2M~~k1al8U!_3UJ#Hp!Y~KU4F`UM9k~bmAw@x%ZX{ptxC; zh%)b~B&V0|x%@8w-MUd>2OYS-1qrZ91m9eB4{JOzCY~6b5m7c_?3IkhL_52g0yVtz zOJ-KmQ}Fj0qzp41?=(IaugAf}F$CWaA7jM%?|23_SXYPAWyMNN02VNe+!TC2mR@%p z^FL1Sw|DKmnDtGiSJu=4#Xp|@;P=C|Ky#}C{`3uw@B0QnFkXSpgPUqb#2-nW#EZ+s z=L<+lQ2NS)NF2`B@t}v_#bB8Voyb8OCi-dO=#AARwplVwXYSC(6WlVUF5(dto6PEa zlZ?m)a~Dz)BG^8G8Ti^va9%Z5HLOZ_w=u!_Z}%u7dhG294Z@BPCq?0zV`aTi<+jd% z;+P~B6Q7y#3Q6g!w;io)IPYj=<}jrrP|;{o6-WF-Ea@a*WFn0i#u@- z7`~_PV}!=vA$I|-hz^m!B2ZIHFqI-%K11(`$vbd!&EMGMh-AE`I}^4s7Knf6+o?LEw?-Bg*HKg>7Z z6q3Lar{?Pxe(WIOV}@>;60RJJ|5aMBEsAxYUbFcHb#=$->f@^c)2TJj#I1V<8SH{G?olvUxVDJ+rQ7!R#7xYL zbtOpUsgH@6bS-x>7oeO?ofaaA_MS{b|GkgnQ*{5&QBtR+C?BUPA^bH;0Kt7MKAHGY z5==$1qY^qpRayLsp~DZvqKl2Q#v5GsC^5RT=dPzJ@qH{~28-g}kc`i+AI9nj;#IoH zg;apjlY#smc%!g{VFnIHC`%e30yBd!@!8scc_;1suqOPT4fpN4 z*~Y_mtbp5p7~yyG zf<1BGJx-t(fV0Bh*2~HIy1FyPiq*%h+4{Ong?wGR`mv5~T#xT#Ba{zybb?1{8oV)enO}FENFP@7& z%tdmH17OA&1DpYhD4ck{h)pQ+3Nkz^4LI~!+CenV-xuN#>tJ0+aL@G8Ehi~oebH^2 zpcV#Ezf%1QhVA{%f6RMi?0G~i0~Q`k1uMayF|Fy@-(uC*k9`O?=r3=a9$9M?R4p4; zWcDmKffJjS33i-1xavhw)X$i!1rz}r^m>lP6kGPJI}eVXejoeA2|FZ2@CZYbtyDDj zgfCpSOO^WboeIEms?_qB86ozU|24i*% z1QQ5JU~PiiP9#~YTIw%MBJJQ{M(03lyd02){N&%!a4x?meLMxhJSa z7}29mFm3@52p#l#I?q3|5^Vj+_AFutgxJK0R!I!(t`C(cX1u=m9!s{?>zsQw4ge7) zvroTYzX|FRG5_f?dOfYx#(Fz6nEj<^A;KrbzTHSBSF0JWLgi}N?X4ANb&SH{TfRaFzryP7r-rA_Rl}Zak-c_WMq&^-YRQ zP|oRa0x|qr+K|D;>>n85bbsK3T%;fYtm*=_+*de1gZ&Vy&&SWTHbONTjntog>8kqo z|7%U1dHf1N=#m_h;a!#*?C0}_iwG&4pQ5h0+WeLSLqv1N4!o|V&t4mV1)!60BC~J` z>j;+86=IQe)vJS-y>}3pfcNK=z)R!(o9a8?@ECE@x_af6UTZT#iGKPHN!%+$3$zk3 z^SFFOb|UgI3*#-A8{}Dx!+}V6GrzVq244*b6*)3I;UKUlSlW2YcOtxlmwi-C>;F`15FP`M*hQEh?Ly3B(^9U=3$fU?>fp9h2doy@xO?gnsC%UEcka%t zweL9a>z(|`uw@(PfU)o>;`i>Ir#a#V6c2gzCHIjv z_@+Zlq^jT^2hg}8TMH>J0(2=p{=DX*4U5fFxo?d%n3M>rRFf>i|78_+IB{1!MQ+~i zfp<~*?iE_kMPPS!Q|%tQHB){K8(qXBu#Pq=lUOynL=;tT>9NHSuMOiw0AvPV5vR^} zx*3X?65_;`^^+G}*6h!(D)lN7Wh0xjHm`{NIbO<)d_7i=yjHws2S-jF*qBIxcAAHI z1U3I}f@#15V>UDy18ZguVAGg-C>T{8j~0G%GKYP9W`bM0?spb#4D%jo^GGFFU;D-& z)yy@>n)-yMEm=08#bM zKH4?XUPp(-8?PmY%TKR6*HGGFS)QW;aaV$#P^RKZ<7g5!jWK!VNX^0f4+=DdzsWbu z`ioP!Z2d=cY`DQ*pdaxSD`4mYfDHf*@DtuOw;t72f}1HU;PACgS{9+GJUdI@Z&(F1 zS#d&{9wILHGRr9| zvs4ADE^;~GH*UkwFRhAdt3i%y&h8Hfu-<2Xp9#Nvn5QR|PoX3P%qs@KqO@b_>V@6R zaRA0Z@*4A6%WP@Q|Esx-r8{Vt0l2bP>VNsAEMH!N6NG+Q8#x@@^*cl2XDYz>p|K6YoKz3Nd-QW;2SD>8P2;BFPLWa<>%@rWvQqN}w zAQZ@_#01a|%B>*Z-4RUL51TQtNMg_){moAra*9byVMc;UrApyFVCJEeV%+KX#)zNc7|-7h(@IG-`f9 zX$BAx>bq4%WeQYs0X1khN2;D6i*)bMy>COB5(*~pT~N?~%Ql@*2C$y|47E)9qyPOC zb#!~1WLO)KIP)rJ=Dk8GK>x_TJJ{UD<`Yk=xBit2!~m?rVR^YO$fdC?kmWVsBjR5m zRq*mH2cttXgx}Tr7lqBuKU)^#Mir?>ofkRI`eBU#W7C+>H}1NhGm+!zRpBPmq8MLP z*_==ZAYJ_2R-^v-WB*D0$;W8-PL?*0Kup06%=(xYk~i7_=L=gsaN^*8_7zfxP@ z{R3W>G>=GYutc%z*m$L43TRkS-@t4Cn#&F|FqsZ*kX{tBmM}Ksk=QMVZMp6*gL(C0h+B~byKK&-Oo-x3~ z+7gaK4eCd-CmKSQ?voT6jaHOCu_Zx0^avkl>A{<;O|gGe^-7^o@XELg*+wV4)>mC% zu0&~T4>nrap$0X{#1-Lxma8GJvM&4Ax4JA3+6h?ITwbHzOx$ zwXT%i7o|hJx6im%fMWy!EE=kqZ{Dpm=<<^K_*mJtFR>2ZU|zZ$iZ3MyaWrzJ*$i1) zX@{M%f|Q7c2PB7$0?(=N-~=z*?SnXWynbG-o_>rNz!VY)L<2q$c=xmnyl^Zc?fZ$S zbS@}~{<{LF8_&VrnMSKyG2?mC-Onm1b~9-l6QIdU&*UxGdIRk$sMsUmgi$~^YkyC2 zgJyffqn6vyH6xTLn+g^%5Z|VHPrE8zTgRu9OEoA2!5m|nf)BWqIDn?rX;x0D(b_r7 z04nyYORMDY`a@aH4ARkqQ@y->9osT4x5cP`O64Al0J)dbd~7q`NX;QmBnBY*;34>? zO{E878Ip80o@AkH z73Voj$wSf|8^|)CgaD@e(vsr=)kfwUb z&45H*L*7+Pw!1qz_Ia7H=y_CDImIOl|Gab`)tR#7qmzXq~;80nehA; z2UDk6@a#nC;5qGKpwb;(x^&FH%mCcft0`UbTK^%xLA5b+V8lWK^xpU9_n|#YmMp4( z6HTRD8kWQc%-uch;5!G6dW=xBtEoWI(n#03Uk(}%di@{t z%%Ei}<}F*H(ETZuiA&1{vdEtH+NPmjbYi_fP3Bh^wGtk7p@(hc!%wY~f>s3aCx)2p0=2&SJ(7Q~n?mTSoMw zsaB=nQfz<*9Q-0Il=f~A6XsPH@}5Oyr?66N#>FifV2AhGC%^cdf%uc-gnw`myyY+e z#!|KUWgUQSfCAK0+Z-gIe~*p82dy+sU8NMt>x?+RTPpe z@uhY0%~3REVkTg4ij@SdV**+0V8mPiBhbyp3=OOBtW!^XuF~amhZ61h9g|ej$wORF zHLm5_&g%gr-FZf6t;_+-ly*eBXk$v`&(X9_$g<}hK)opeE++(#LctnrUA=2XT6da#zI6)nR zZtfAHb*HmW>Qb`qrkGGSZh+caosyf@Qrur>p=;;a(2TZyrzZ}kO(w!!;Ds2B8Yi4t z>(%FPjkDIcc3_X?f|0s&G_pw{y(BkK619x1mgxYfcx}N}JGEZa56BR(=or=paX4t> zCfc@wKWQnRBsYP;6V?EYup}E0eH@^pUT6Dc@}BR(a(bg7MLm33^>o&%t(8vg^<#1w z10>Bw1|#~$MmgymIxQ~;kGNsO#;8|2hplZut+QT5U>U?l-`F*xsM1o5Ku=|v$3Qde zbXH~v%NWkAOSu|32@O?l?_fv<)mp*GHsm1`ob}aCBwp4L@N#E;p1TYGGEncMeq9JK^vVWbS!F1R<>3j zv@3g9(C#ASjCSc;_M2;}r)*$h`xcPVcX!gN(_|AcGN~7SpDV*gYcK3h8rwut&k1x5 zVhY$>X#}u52{&)7+`w2Y3`Xhd_C^}5!x1&%9D4pByo#8qpi@gfA1WAj8K_u>zpO(b z$n^CFIhA(sR+JNA_aAp-Y@V|9v{AawBD9Fxu`cdqkoSbD6NSIb4@Y^3v`j0J}1C4_;vO^o$4 zy3_|*suoi=l`bZTfT-3E9t+oWG-ik;YtG|65%V`duXk;6Mw5K)Dz()DCD^ zoZm0eM8Sq=s8guEee#T;15R>Jotav1X$k^#WYM<~4V1>ZLUqyydZuQ>kbm1d9#gNB zUae{zhB4<%HtXp>hJ%e^M(Z(N0t290AGYjcp7jiqvK#6mV}lVP)01%Unuc zdMGw(I&qt(EvI*s0f<_sFnp98_Yx5yF&SixGc5fy<$*4RA+*OCTHuW>BMT+-**&R0 zbj8jxU+d_l>qRyh9ADMvB7#U> zWnIItuqlElGa@UPiIILdps^+?RM|_&e0zk|dGgs7k zLL0D8y;L%_6VkbE$3r$8N85W9-XuG8N#GLA}`Z$yi}^!1;XZ>JjlB6C39<$5D6?jY!KtQFK|wM^Q3T2ZpnV zN5ljxf(b$#z}VqCd=9N1T?L5Yo}M`9bvRVY(uz0$7ExiJvk7$pU0)wTr<+8>mc^Lk z?4UO>8VTWoEEX9Ux_^Xrx>j!Z<*=2+jYHol5bLB8z}WyU7hr-2C({@pfH{)RpY>>m zQ}sO*x>Q?H?m!ntnIihn=i(VhcMeCM3C47e#-*Wc#}oc8gAO`>KaW-ykl6s3O8}W6 zRAIwm(K1F!w3TCQ#xvMPk}BCNa(ANl_;~GFXGAr^ol4D%1H^|L7>`GghXmu8G!Rv| z5Uu24y;%BuITAp56=3{su(qWr< z2cVn^0BeKvmKje93G6d?btu`#7}J0Spc^?FkC~HcH6@y@jEBURsX(j7WFv&MvmuH) zW`v_-w1FVd;I))Dv=n3^SR4QYA?cjR&BOq3GJR=xoF$<50*o`(8erm2tR+9~+_D;D zvVXmJA9Q(OBD=H0-|e_JJL1F{hQtJXZcXZ;>rAvitP!YAW&~p91yovSggA#ZbmNZ4 zj1j=kADYbM+(&^l@>XStJG3#Lu5@ffR6I8Hc?Jw|02~B@0P@->UQpJd zY+P`>T6V(-T{sf+s6j&pM2X{1Ho%DjLB7Pd?^%q^i1Qx8eWa9UEta_Ny(>@TS z?4m~oz&x@dBaF@_aFU>#k&|eg4WLilAIuxZ!U9itKP*H(6m1V6N@}+H*H@hyaARmO zf=aWvjc{pO<3$-%@aGV8yy1cfw9N;&O(|E=D$)3P&|Yp349bH9C$#~THv)Tl%7#j_ zH(Bf-u93(_>-XE)1X;61$ZGvUlO*H&tQk{x;=(9et6RMjHl>@t(=}>ybfgZ*U1XKg z2*~ThivDnKeN@93!`ZqB_G5^EnuOUz@kiIhgH-kulJO||0>)G6q~d98oP&_Yelpr~ zy?|EP+H=YXUN}?q5x`0_1sv9+1xq{XyCoEg+9pRt{0$-m>t|zwRlSYyh5TslDnXXN zuz?USCTy26z`0YmOc8Y9n8ICxoS#`gwD+J-6bMF(N-{;qaL_|o5J)czhvWVDb8Z)R za~E^zP?;edR9}nbEFgnL2@=K;aQt_+FlRHDQAe3>t+bUXlSQ&a*U9Sx2^QYYY&VP< znfqL!!}d4`^#m|%?J85J zp<072^tvtD0OsTpfWx$hWazAQJZrD_Vo^uWBdfK8Jdx`BX=wyHzaIy^1}l>n1CWFw zfQ$(^n&R>pKy(R_?QCLkh{>z29BLbU#}Yy~ZLrJkpk?R_T(AZP5q3bd0c5}cLLVHJ zs(n}ra6dYREbRbfStT`?1_D{>7>ZI?JfQ?Y0qn5B7@D_>9@`GY00;>&fmvI(WCdZg z0UVA1dt*T{10-hIGe#yl%*^%~Viy!n()$D?1E9C=In$^sWA6o%`1;5Y1mb&O7})JS z^lDdUaT~-Tyvxolu8pCNktcy6=6E;T0q0MHH3sbnGo4%e!&Z7&bf&;)tl%=n!6PGC zk9}7Nllr*`>l#8&_qek}LM3#xG+G4MgP$?92`pj4Ry0$dy=z_3lcs`AIRwK?$}A>e zFf$qfWm|tzMI*G*fK{~ym*|lZ+Som<2;a9xCPFGqfS4kFY?*Q?9FH&CW;GBDM!#F) z4TkaO!i_?ofe0!> z>o&DC8vqC4bh(zXb`VmhGX5LeBNw*7LihMlS|NT-k*kk1LKn_%gJ=dQxlb!pd6bV0 zi`{#up124Dco;yzZNYzz8Lk{{d~$p!+8~VTk8Ik@f-^WD5O+RA!i(OaB1;8!2ix7= zcTr^|#i64iSndw{JUxrR&Pkyq07853(z)bP0#X1-yC65`W0w@|P{3DjhW2nW{^Em1 z(ufRFn`z4PYT1C8&P;?-IR-FM*LEGoX3;Zxe>l-%Gx zJ{90!kYT?VtIiilUB2Azf9$-rOfqVcfDMu(i(199C9PH{ayHxd)vJ}*(Zf#K98-h8 z6@8@o#x}cAQ0AhAG;rRw(CrL{4Kch1W9fL7$JT-ggh6N-o3ntV0!Dha90|ZtycJOA zPE+^OR=a)&TIJ0yD-zdsZ$AfiddQV?2^Gb+&fUT;o+7La45L=sffV*X#p;+_oKDr!%7ppe2R^+l#Bnt3^Mj*u604Ar)#L>QS#4Wobt33YC zvHN_~lks~Uv+kl%USJxOWLZf>yAVP>fT>&R59m#cfdBl&7FzbI=7*YX?OOWYr8Iux;1LHbMvmT**1uP3q!^r zs4M3i`ddFJrYWOCY$>y`bhtND<5?)oe6+0}Sn_Z}=ezz@b&D!F<Q01^px0e%1I5}@&QPXGKL{T=laKl1(L{**(b z@L{IURDxGfZxLS!67yP2sddU5zVS()iPMkV8?ZO2RykbQbKU zWm>qQQJzj(#gg@=QQ{oIXatM!a`OU=DO!`Hhd0)6&>lD$^bkhe+4b8!HDhYkojq?P zDvTI56PXD`2Figedwle<5#b)b>FKBJzrQT6vNio9c>%!#Q!UUR}rWXU2+d=XIiu+I3gs20Q8_aaXOg`I!sBN?^2_s%jdLu@p>0gLs9sm z@fS9kOV*o{^$H5e7p%34FF5*Gc=F0~S~YcBMC0dEOCF8@$eq^Fg1SlVM-LRQG_j zgqDT3qjnn~1;j~O?1@vPbt)};zPW4Es_n|THiImw46=kG&h1*ZpnBz%NdSR1R-h6+ zR1N{-h2yp6HIIKYm>nx~9+6JL9+PzrHU;7>N)UZdQ1mBBK4_R_COON&srL^$3PSW0 z8)#kNK>#*~wM-7Jg0FBuwqq@ZUv9ig@BZnG*SMjzHk6p_tic!}hFPh+z~jgAIhBI} z{IL!j?b4!%h$(Cv-lLMWcZoS1DAY5Xjm^)4IEMDo5f7tB<8k4Z0i>A5DgxD1QK~3d zn4^L(UZ0X{(%PHrO-gOb65(1p_)(x#CmP7G#B(m?o`VXgB%YkjWGvX@^0|>+W1H>s zOd>(NDeY=96%r+ZO5G$}`JCy!1ju)_6!X#w4Mi9z^489!aK~{zVVk(~)tARZxN-nE z2KNT%H(`2^-s1QO1cn92!e20c;DFNZerNwZNld_jBJh;%EEh9qK~rZB zoJ&Bg&+Jr{38)Ldrxu)N5kVeAN-Vk_JVH-Qc8ZQWhH=v{Ov(fBT7g#wY*RgTW!0|f z-Fq`X#M4B=W?}qLBr7l;QI(gro%20s91ES=PMd>%J1E=|lUb9YA~!i=$zWvhfBp8< zW}BY4NIiP#0XS5e5;(U2z_K}4t$3hv{Y!vpL#SkO&P4U3rX``sF2zys>`MfWjq z1G$+c8FrV+!siyaY)A2Kf7PWG%MiS#yn%wWPS7+#yK-_@0S8LC8K3zzIAvV(k#TW; z%pgw!%a=y6V&uFSa4@+W5^C*Vx_)H2_0rjqO;S8@ah3YjOsSy4WJM%c*-=mgWbr<` zuD1Jd!R{^@4e!HPi=+_DpD#LB`jp28L^cuLm1L6vr! z$(|k+W}R7s>la*i)7kv<5xap0eJ2eH6RrPHKZa3k7~vI&8&H^)FIk`gaqE{~IwXs3m;<%}cKc2S5dsa3(Dzsr zcNFfRFdkhxSXuqQvE~35clT%H!nD2@kpp9x1$r76=-ZMAX2IX!A(-Ythzt*47vP-x zTF8Xigcf%98Vd8y?Ar1M>WtiIC0H3ndpW7&C4(e-1(n^+tOVF)Q0Pua0R~JZrUE)$ zi{{PO(*cOZdFs`%rb%9_>cty}R87>W*IXG>1Z%9W@3@EUan4-Z1-n-uqcftInBPwe z4-cp=YB@kCQnmLx1{bIUm}A%mWOCyniMF1f{&$(yXpIczFI_#L4KyMHaGj**A*FkJ zD^;-=#{$KS2N3;#vTQ7XNGuVEicwHR`<7(S_KX_txgBrfz=eSr5xD@9xp$D@QUI3t zYby=8Eo)Bf6Q^;qf*<0{n3^`MfsJUbXjdfGer<&FPXcWwCeU_GE}V9AYrcBzkP>Tb zFq1mCwohxhPC5TW`kk3T=luYnKw^7(aiNTK3#F7`ut+zx65<+3fd2XJxVLq7QCJw4 z?L&bmNk|kZia{|Vbl6&59XIxdpTB?5q)cK7~g547xZXXk1W8^xK z(wZL88nP6%l7N`th=4GoR;QR>)BqwK4Y>=bR6gE^?TOjMP62y?+iN~In@m(slN1=x zkTR^fvI)Awh;kzd9GTHc*8=gk_npY{#P=45MW5{N@2k&!=2PmAe{Vw_nSNpC$i{O= z4<`xBz(NAq+ywl^h@r+8Y;=oGPiu3EX5Zev_MAGTUAeAhPDa@#o`)o%S(>`F^^%~` zDQF~Iy)+gEb0}G;FJu)>weGW{BmU$$>aeW7I6K@kv&lK#Y|<@@?t}n^Wf@q`x8=sT z^S#a&#Ahxw9-$KO?F}Uj4hg;Z%m3mZQVj?39wBS3+AvVm@CRs?NeJEA5F+&eZou5* zz+(i#f?g8f4;NZF!

!cu$`fB2LKF6=2m@~`8m}}?1QC)ia%>-pSvXE-->cMUf zk8%lZ%|a8WwsFBG{u_uY19;?p4_U=e>t!@EAUu%Ze{f|GCXiSteXspya&>$Byxh35 z>mBiduwd=#88uqJXuF;OjG_bx`Fuw5vWv*Xf9mpvRk1b4EjZWZ9 z6j*xn`GC>p6=L$&Q(eWL>+@&Ztx*_s>>hy&K10RUnjh~znN>!z;DUh)bHg#14O&|D z?MkcXe;|&6f#{WG*1g7?NOmZ|N0vwGJ4OSu5!?^VYRD~*)| zGxgQ&dt?(36I?rp(iVmNrbJ)I&^;}N`sq~rcPIkfna?rpTMrcY#J!!#+q&smMDqvY zL)PiTM1PA5N|^XhdTXC|exo4G39wAzaToZ-)j^u};tfIwzzKc*8jtF)@LOHUSK>wSkj+@+|gmPb|$r zg~_3-@bTl@*M8yN&Psdc(gqdW7zkcH7IE7U=bre=R$HNy@PiP+iX;kK z3UjUzr;paGxC^OEt4@5=>Qkqv@@UK17YCExo`sDexfSt#nM5pl6%||B_7z%h?E7PF zBJ)B~hoiF3${NA)JL#|7SgIkSZ<4>eWg~q^y$lFmPnR5Tpcrq?>VZtLc8wTeHC8u4 zR-B4iiFe}-!>?|$i?~54VvZAZ-Y`_D8Dh-Xx)U`cjrVRIwnXbrt*(DuIR?N6{|ugo zSO2$Pzx~qj4{crAWu*tx>z;B9%>V=Bogh zGeslT3FP(ny%*JIP61{2S{udNAq@VEuR%$kQ3msO_)G({l%W(MITRy+}iorrpQzOW*Z8U5QL_^-=d&EA9LDUcT`|_nsW< zQx`TUQe*%?#*)GA{1tEQe>E6cP)QE|e zg;W7GKRB(e<;%XZE93wh?5I`dhx1_3&NlW7LWh3VZR5mj)A_L~P=R{q4Veb*T`-l* zjR~!Dmcrlc5pku?v2h8W88P~3lzjK#a5!sSyQWLfDBl&RnAVbdFgg%OY9;5Gz`KZ7 z{Dz!*X=d^kxKwV2dpGXsy_czibXC9KUE-rG0p3Ad@FNXA`@Me%PyUw=U;FceAKf^= z&SuLNhF^|E2QTs(-$qc|s$L}w%hVH}6G|gH?USoz zc>2XAS%v4%tk}~X(du$_5T~2t)XbQ7y(X>lx4(CvKUWorqV9Hr>U)UHt{~ds|zURzgYj8&(G9Rj`+~P zU>=TaEE4MM`MKG+V}kRV*y*Hn{kxR!V61~{Pv6izqmAg<^YHmwJ!qui7|Jn$D{Y5C zlO(C*-0$i~@v&4V$l8X~er_K%MPH3am)@*i+uH#=F7OTty>Lz0auc z{#1MT>1VE~*ZkL?zW&9#A6h>KVuFi2$#XrzW1*08loxPpnBKg zpFXqAv{s*frmHA5Cl=J>zy87Y^u?e0hVQsI{ifHR8?zOkM2jAD1TA%y#I=EZaM7kE zwQV<1e9QCjBA?%K3~+1r*cCBWCzYZvTvd@+%oI#8{=Ly4%AvwYTvu7k`F6eu&Q|iV zP8&d!93ef+%rd3LoXkv=GUzLU!ttfiY3ue$UGamu`-kdiJ*m^3`U3CH!60@~4v&z* z(eOF1+vt2-Ywr3^P`d|Izr_Mb7syBbn z_dYhgw?7*n9L}5}gTv?uz#^PKRt>9g=P2s^!joulsN#(^SNO>;k1kv}6sV*i;*IEE zjIo&1#S#KDxZmA=;^*N5XC9~C`&R9}aca;09)Oh)#?`@~?QB+TD$?9+8}RGksEdrK zB%@cRn<+Ky1+XX#k!m(l2-{*YHdeTDc>2lTygJ_9e)+c#Kl?YH0YPIW+U|-M|H05& zbC7!HEp+bBeDXKUx1GAwOjkC><9^x?TCe7fv~W?YE-3R6DMw@PAE7iTjN04 zrE{zHcYFUWWJNaeXV%1K5#>c-Xx@6-f=^P3$5;2J_ipy%z3bQh=h0`M`#w*6?Ye2@ zZFh?oA7I7A^zgG=f9>wo7k~RJpV=Po-@Ml~JZ1~in3aG-GZ`pRHic4y5;4en{9x=i z;3AI|Br7J1IAPrr0v1Ht+7*pDeP6by4gGW*UpmbUWq)tLm#zDu)Nvpc#xS}usgpR0 zT|4aBjj10`F(W}j>jTtIZkm`iExWJFw7W6c8n{lUnDzf1t&YsS8++YX{>QcP-K#Ir z&fobirT+fR(NvpSKQoyYajgT?;QNp#cw{VE`HOc8IKX{XMNs0 zQ4&{z5Y+H<32n;K&xJHWG0Qeh(@I8w8}uM5Y?K;`SJ_kFh)(u{g@&v_EXf8pBb#-EYF*X{q( z>`OoVPPd-9-hYUC2q7}g|K}g4h{i9jKK8`s<=1bSjmxK5nKT3~0?49$V&Sr!31$mA zh^!TnJXQgh&aGLFXAwGT8xfUEdS78at~~k7MVPk83-$i|{NeSTNh-ApV!1N@Min-P z)WPyvp_$fYQUPdHfbYcN)r*P!2Ipm)F>_tRfNEDkl)lUEYeQ*8wu29@@9FD*dRI@j zDIhRzep=mp$FHb4Vt+V=b?)nZ=!}LpH0tO_KDU15C;#Koty_=pzOef(M|X{GMutMz zqfU=oV|{6m8(xTC-U%po7iP_vWGo;SOOO$^zS`QO_K#+Mil!fmqad$_4F;vb7-)$( z@WJ`r4&yH0oX@b6L+$xNR5KNW`OGk>B0-o?j8Ai--Wjnf+jMN?FduoXQO_L%+cz2^GoZ|R$V@)C4+?|gXu%*xwl*WUgax9fjZNrUeZB!GO8 z@2H&bs4jo>P2`BbhawPf8=bk>Zd}|@>laql%BhwTJ*{b|Z6!3ZX#xnDS2kUSOdLY7 zgQ$xYf41$7z&TUXRXLv^4v$o-5Yh7d48UBo$86tD5$0Jy%Iw5bVoCNOcg>$J2Q1~V_!{gZ!@6t*C{gf zes%pFe>kAkLl&{z=k;FNhi?GZC-&j5{Mu7gr~FpBfwvHgzmY`Gf3vanr6>P2;0(+J{9w{0U;1G-w6~C^<(~I)89`=YS$>vKLSq>MPr*R412Ju)3B& zojX5Yd*>FPzsX%((P{NA_Bp!FC#W;W$8r0IpNAO7;RxUR%)?eFKjiBpO)?hU^I!Rv zPi$O&{^h6DF}{vY`&zoeSJMqX#?}L^;1*GPgPV@g(PLtkkySr7DWF1&Z=G=hH%z>+ zX#tJ^asP7#{mpyI^+Bn$BM+UdrE~$P%vOaoFp!VuBFhUKF6cxIV8e`9MpslVoSC01 zBrwXR{M;1t;wh)jZrpR}%{1Q)ed9uY+uIQ*JV*t(`y_S024J|<0WHfe9kWB%*{0Qb vo-Xnn#h<@;`KgP~Zh!tQ2QY^o5A*uJAe-$2O!g9700000NkvXXu0mjf^K1_J diff --git a/packages/desktop/src-tauri/icons/dev/128x128@2x.png b/packages/desktop/src-tauri/icons/dev/128x128@2x.png index 59188230647c73185d3ce423849b1000a4ebbea3..05fece818111c25dcd4336eb8a4e490366def88a 100644 GIT binary patch literal 6421 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 FV1gD_5n%uT diff --git a/packages/desktop/src-tauri/icons/dev/32x32.png b/packages/desktop/src-tauri/icons/dev/32x32.png index 53925cc4f546b069e0675f9bb624a55ce44eab42..c86bc542eaeead1e36eb7637c90f166b0c3397c6 100644 GIT binary patch delta 515 zcmV+e0{s2851a&$BYy$oNklLfS_ zf{#UTb?NNpR1|S>(9yxg(Zx}5&=y3IDhO6gAKFygG>IfaTVhgzO{_!z>4tOeJ>Pxh zo&(fb#LUpzGosiXER%@+h)4b+a5WH8EqLH)eBZ91{OtLH5q|`!7F^${78#AFLQt#D zwMre&Xhn&B_D%$^lzx0#&FF;mD?w3b(FOn-TTo}YEISVS;a?d9?Q%oB%peJUYuli% zl4AhHTLHvHz)c1~{0y3=yCGg=G@H8o`LiT^OM@C16MW?0o$Iw1Kq<(0-@JooCW!W( zF+fz1J18GCVee7%X^V`aIUIr*wRQznS^f`*u`JT-QDZLHkT^P? z6J{z31t%f&!A;Y0Cm_rcUh;1$BbY!qA=BE>X%M68_zSp}+DN(*>M8&L002ovPDHLk FV1i;Z@2vm; delta 1960 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 TK1SB800000NkvXXu0mjfN?4AI diff --git a/packages/desktop/src-tauri/icons/dev/icon.icns b/packages/desktop/src-tauri/icons/dev/icon.icns index d73a94904ad7a76081ec549681e3249722a261f7..d017f8d8b0cc0d4f55241adbf5cceb00cdc6f6be 100644 GIT binary patch literal 115660 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²r`B2X2fhJ}G{Maq^`6Mg{H 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 literal 1187792 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 z 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

H#_b?3PAb%xe96 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�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

  • Qbx`(Ow9tvk>xs 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 z z-*izRamU3Lts2#$$v9N4gP&{#GojU;5=Bz_oYy(73KS6Az#WJS*T zR(R{aH?sN*XvZEYWACtR$259R?|7S#h$^At9 z7uSH@^%-7M4KPX_s2+8XIAxyGqi#)vwZt!K)5OTD@Jn|BG3VH^2O)1VG% z4ANPc->I+ze_?}t;SFE9VP8TDSGl#zi=O0ILmP5fF@YEx)U-6kls?FuUZ}ee&(wc; z4QxMXD^=Z}w};R)?%1@PZO!I*@@c=Mz1vUQ?lQb(t@Ay&fB&`H{(ZgYyT7Z>4U<2s z=97QDRVICiv~Q>DOq9NU)34-eR{8|_0wr%cMqv%ijw5};xv5<9Ar)tE9Qn%5c+HF% zdFr1jJ^0AseDstv=NN6lbucmRkxHW0jbm-JNH@0hz29mOmNILSj0tiR;&5doXfx2j zhcFn&v}o#lpXjWd`YqdX+ebU0_NhOWW)YH)Ajm4cut`fEOlWICo=^gemDZc}uptc! zox+bH(1u1KmI0ypZ#{=@ZIEZuZq@agRNsoF$hI_!Qhe!zlU^o;1+W5#cGp~z3Kn-^*z@OuOVM~+R4uYa{R)t0|5QyKYsj*CGL*WKm#_bdt?h$ zS}|7@l|Z7GMuapRE3uI0`DfL@w$jGh@sOsWwiVm2$obD0_9x?#fkqz~R|F(a#S_2H z)9md&-QLLSJzNj$ct`@OE%W`V>22 z&pb-H&Y~cOA^yb#i(tB@w zm+$}kQ`SDf3cnFNDOZec+B%6?>yJdt89n>7J|Ed*?kUb)sI@8Llp6lDAOvqIbHrnh z_2Iwm+}4suJ)>Y_U}F-v+3^5J`anc4nB1>Do=69tHxjyv74rR@(2^Rj`*stGVTRJ+FfAC zg>00JyNj&-R>Bk{a#f(SRGPFc8fRh66y~`^q;gwbxECql>aP?H4kHQE%Y@({J!;UP)*?*#ylk!dPun1g;vM^f!v*pU-^ zVvLff6v|X+eN}zl7~aB`F80Ib%w0%qiS@B391&AqwM3>Ym5@|lfe=++BU#Zmdju(8 zD#TsoP(g3*jZ+U2Zonb!P4w2U!o3dEDs!dZysW}(x7ZoRLWgvtXxX|?W=^$F+xSQ0&;*CO!5#~shyW6tu!#Zn^+I~04 za@Zmphk0O|e#Sqq2ByVgfN9(5wDJuZIBo2!Ml-@_ZhDaiP49P&!bhHD<;1zo=vu*0 zZGX)5pM1tpIP5~=;h%nP3@As8jBLgNMs)sEBVEwafId7?S!I~=$haF=7Ja2hhLQ6G zt-O4(V-2+anS>8}qGjo{NdiJCo6=4x*WTDJ1Vdp>i2s5=V}e*QmZLoA%iIVcfQ7|R zYlv17DL3<%u>neSAS?M85qrHhsmJeA`Ebe)0Qw3>zF)=MRry_uv5wVed6iSa*;xe5 z58jJ)p)flJ$cy#H-?z?u@YDqepuv?_o0TtdA>>;SfXI}XN|8n~gKf}6?Fl4pPzlzf zZIKXJ<+TavZJF^l!x%QZW{Fid(?*{Az08xd8BLnqmye2z_)k9fII>92sS~X*G z9EliNlq-v?zzyi(PqD5I@OpXT-{`IWq>@Keu0G|+crVgxm06&G;&LG(FDMrb7?L(Gkzo?* zJ;4n6B6r~OZK$kKwFu~JM=#>8qKAeHfVRF2+AX({JZ=Bv&{>A4%;i|`G?AM@=S>EK}+&LQ+Ej!#2>W6Qsb0No+LPpI+a-qXy+vJ(zYx{AJA(SDToB7v+K3!6D(9w>zfJ@NNsD56#*C=+4ITbSwilDiU-L*yJt`vp06 zGwu&}m}?(Id-Lxc(GOSOA6#u6L_eqfc|Dm^#l(?s9zg8l%UaIlX~WjN@}QQLXmv@GU||+WnNNFw6xDDNf019hXZ*8j z;JEQc;ww+u{N}duO^YCS;~rBGc^twb!JE_$b-1Vy z-gth1gy13g%+3Elaj3tt!uq$5-D34`AK(1)ceVgzt2s35JYAV~)ih7)D<KI7O0gK1mF@`Y_wt3P@05v-#AuQuwd058y$BXR3V zRO})8-C3*z2>8L>SyspC5BWS5O2Wm}-IoHs#2WjLLCd^&^-qB4(z0xYQ4#{kPw~vH(DyhX2Ns zk1uQ${X0+pedoVjtz*Fcdpwr@;UQFK`z6wyfI<=~`|6^HXU9~tD{ErL#*UR8@0Wm% z2gD`VfAdkg?aS~gCF52K39G(-z;UrxrEbKS>8dkB2*BWgIue$SOYR6Ti z9(5^`xr|-8^(FOp;sk46(=%p)#eZptL0dv+g5byRlDKr%7mbZwy$Qw93j!UP8apr{2gCKQ>t2I8r4HU+oq?J{pvDa=Hoi>7vV)O;&m3dl{x=dhx$n7&bTnXvt{b9YpJJlET8EH{D*X8GUw7*gq*pdaE(X+m&##o`rDiA0#KjZ z|3C5cKlKcq^{&UY+WdH4=jDpUKKc1SivmMyv*fCRe)(PJP^+PL|eDiaT&Jp_O&$<8<^aiy2;dJmM^5l6RPs zB?B5FPge*Zg-IJd;==!k-<&iXR#sr)tCH253(L@F5-@TDBJIUq+Ul0K#LDvl(&`c#jD5lO zDA`6YCcw&RdFS1eA9W+$MVT`Z)#3YQn=x){k+?-=ZqN_|% zLScz3rQ5L3=Z#Cg0j(gsHD&oX0j%cbVd|?KK@l>?J3>cl#==wkRjm@>J&bF6F-)eUjdNDkNDr*AhS-th)e@lrX3>{Y*_&&c zED7<}Yjlv4#|6%@rY4dzU%BE8M@qBL^G~mV=K{b_Z-Peycw(X3n1Pequnf3d1Q=-> z3(OM|*}IGzx-+L_Ksxw3&H|)Tv7EqH6M9*(kItGmDbdJ{E7H}k%`g~ zu7es)TOk4xQohtHSz{xPEwcJgAe}4)vV1ijtj=$;mNm1x6+m-Vgi_1zP0qQQ4>YR# zl%2fg$X{8S7Cv?c%*m&!J4vlwhoN;odQ?%osmd{afCWA<+CiL$E7WJgZCR+0d?YaV zP)Id)v^^qsC8R=ttkFq~op3(G{~k49i?v;AuOog_lK{fr7M@~VL&N^izVwbxWIh-_^c#UnJ4 zV;jz#;J38AvE^t|RRTqC=-**lob;dq8RYt4w?UVXz<|^7F zdhyEa-@wWF@JgccjV$R%DnD}~X|zY#(R9lKIU)L+^EzVKxlposTyA+4UU}+JrYhVW zkvZz@jF8{mN%C5E+M0P^UPDv(SfqJorIQIdYr-e{&Pjd$U)uZo{{jG|u8b{b^}`Nh zV|Lu7E^DvI%Bn>vUoC^7K^e7HEd==i znvT!pq+P3PsDcmuXfU0AAupNsN4cKiwbj6L0pNAD$nQV+Y%n{|sm^}gc^_$zDQ z?d=y|VNQJ_Df-GQtu>5i z!B5|242V~NNZ@&`iL|!nCR!cz@zw3u?N3;{>F=^f$k=h{6{N3n8}HD^?q)}SC8{ct z633h+9oZvX@+3P(GyKSB>}u=Cmdq`~XLypgtSPUWpwmJ33;IDGU#+d$a%4#xrJa15 zGoKocKB+?l_?8Y#U0@Lw8zY%~3!G|`HYKk)pkvG$A4HBAxnCs>wAikF}NhzDGh{&*}0*WmVCc-aZ?pWir`8uo~4)t_Mco z&2{yeF(dtkmYV)&U$b44rPJBpe61?Ii2Pf(TLY6SCkK-KDdMhyabJinPI6MH@>-pp z0d^2T;Uad9HUpE4TyS8BeA>}h3E+nh3nNP^GB5fX){5rPcWROLL0G>4rR!dJSK{ww#eMThaHG2=VTg&3wc9L$EfcIAdt%A}Xt$!H25(Bo#y= zU&1Gq`HgcZ%L89{$bVo*>aTqH-;V%lzYnT>Wi=11z)L8cbN`97Ped%!KM2!b3nuMc zP*y#xCDryUW{{S^dXN;R$~IqB>^zvhf>2&Ih#cG1#Rh}+w=R(6YJnN*$X7MABd-bo zP8s0?n|bMBa&8$pUPDdP7UfD4`6=*}2a@o5{aMArp5ay0z;glMRW!q81g>S*9S7(T zbfk40WiXL1B;YyCXuKgDhZ%E<@c4@m&gFYSSAKx}$8m}`t7p=GC{sO+%-zyDH!$Gi z6N0^;;sR3^)gPJ&EuC_|MOuapUjDJAI1vJCoQiZ2kZI z&EHAq=FQm-g42yiq|a<0De$N>aqDdl@Xf4^mqlXCIW`J?IT=~_%Gh{ilzX9#U&2Q6 zLB?O+Sfay$mjaCBQ@$Jb5xgZ)$j~QAdQmrUW_#k5d55Pi7bb5@D@ny%#Ca#xT3XQZ zMz1HsAddhN`pMO+(2%HSXzzTqcc5z$IQ{alEOR(6HnB2rEb%%qIqgFRY*2k@O$gq? z42f7_yMu1LTJ?hpe`q1WN`hwIY-`hVjwx%y4#;IzX?u?Kc%997~%U~E_uh}WGJ@!~v6jq+uy z2pV>Ih0DTeP!~)%VaMF!h22ej5O9|{bVrA>WHulmGFGU39Gfjs^*ju{6(Hg8cwg6S0p3u2M>2Jz+ zQY$wE{>vx>q1%4CYWaqzUFvhC**MN;=%mexFnMnXvJwf5sSvUx0yefN+iyy_0N|>s z?^?M4@Nd7l63k5my8}WBt96qtR!GW+QOr9rO}#{HP1R=LYLY&6K|0^yAtrUodRZoKTU}7u7Oe#>Ab<$N>E!q{|d^iXDKftrU z%c?*`CAbQ!U7qvPeWWZ?>XE1)ZUl%7-+fDaQYqGncBn`D^6L(=ndS!H_-rFH6D=jk zZwm*8Sa(7|?UqBAt_G|S;L33oTD(_|gC&2@fx3q!vslmY(`vx#w<+4Y9?f`!U2WT+ zx9d&)d-{Ms+4{IacF-9l`ljlD{z6dgBy5Pv0j20r)7OKG+x-m%SqeO)c1Hi=e?jqgPl1_NlvBW(M{E7aTV#(mq6g z^2nTkJ%RYZJN@)vH-^l$oSp%{<1a&o{$cC`cKh7+-}V>%bB#iUOp)=<$H)eO>CBu= zf_FY6*rVSYnlV`tm}F>lbdDIoBu|fZ2V>?%81ca!se{Xh2cb-vWrD80!nD7lQ5o-< z0LE@<2+H1%4F(VYYvSO5;Zbp z?i_;W>DAQ0a{=JhG(`>JCXG1=H%;--jW80e6oX_&OIx?tP#_ z5l0eDh@SBo$)_5S*Ey5eIpP2+KZDwnbRNSk$O%zz_Cc6e0*Kf^+9C}rIc-zU2oFS_ z=IcbH!r8&+0>D2%dE?K`uuhkSfPZo%tOy;JN(ptis#| zwINR~$MGxMax^IPN+wNSe8A{#JwbC7p3KE(n~GDv$M5KAqAY-DZxKC0KSJMID1(KP zkFX`Ni%ikeHd{9fjJ_d=t>LbOP5zko8g_9(yK(`PIc9q)>P5nB)txqDiy<~@L^1)j z5R?3?DD;1Ye8T^$YryK?CfM}mtNY$t#H1rIM!0E7AN0LQKlaBv&TMIZ!wQ}~)0_Rz zZ2k8=XW#vIdC30K=~OjzTvcASiX-n$X1SwB14^XUrcZY(&5<$adQC~?s2*82tbZsj zQim1_`>>$ZNjBr_E(V%p?=+L{FLNNk{7mAiH$pqEZ#D_lp0JM$O}IiRk~P(^sS?KI z1xZljLK>0e;|IyK>Xta3r9~EW)7xz6YSs$^$SYGd$Pw)+b)(!77B+pNM&w_H&`Ke? zii?azvoO^5TeH@Hr| z<`3aB@pEfn8|GMH%X0XjAu-uoUuq8oPru4Gbg3Ly1ien@Tgl||FU-G)f{Z1k^jS~A z{8@*nIIipUlyV$7H+s9aA?h>#Y+kTKEg<8O7g$LG^VNkhjpD$?MIl8Un)L|+_jRqn zAXSIu9?|6h*m+*@*+xHfN72a6LIP>ko&|=`BA37Lrht~*LinGWtZ;3LEMQ}g51Br) z{r_(+0I){wZq&~_l}p(pJdXQ4f9)&3%_bM^BIfczZt?X{TX36LtLVPqy_n&5R>nYm|C7iIL-(EDo# zDbppTjL-8=uYuxPSnMNPA;*S1Kd=E(9{rkAnZ8d}Ix695HHiK)wc$pH}Jp zW?lhs_0_QZI6EZ7%5L@?URJ`>&&EMCbqK(Z>2nLtm`NB9w)1SeSur6(_3*dP~Xe_I*!?;uLEgutm2iyg;4{yKy@|6Vv-R*v};@I_Q(kb5E{1+t8>`$tJ z_L09(9;E(?gT}jP^%nGe2bE9e=@XfVJq%<(_NVDnr*DlMh4tyLG>0rY$UX$crxV2p zdt~VazYKo{lYYH!@HZl5$IZXBQ4RH;O4U z-*Q?3(u9{YxSN_FTB&bvk4wMuCKmTT-IPQC*n6VW-{;1U44<0A5Q zTAOM|5wVA-ed(%JpdEugJmPQM&*aapf#(9i&u)Pi`WZaTce#mXyZsq_&^Q)7GK%n~ zOeyB)kGcw~gNb8gl<8Q`N+2V19j5FnBioP61Ms(A4KJ=OaawV}+N1n1*XcN>PjK{O zfDTcQ6lWlkd>rYF{CD&=7ZVJYK)Q;|xd;n5^x;Q_U;KCXz&}2*WsUH!(- z0lIDN3#+cm($Q(JhrhRK2zX*wD9s=HNavkbZ!%1em)08XGx+L+_2NzUWu^KCKeXnu z3LD*BN0tBLK^8MPFUW3n%Wu&_>y=TpZl%x80`j(vE5==wR*E)jQ7bRorG;^HJ0A9! z_bN;310QNh8Rbc%4l$7`v-(RcS3W#Q%4M6BNf8nmY*YR=q?W`Jh9Y`v$wI|+@=_`o zT%8z7aliAfg-?oI%ZZ(!jir)%RHWWl58!8bB{g81v|Vf|CrgeyQ|-$ic-Q}Dw zvOJ+XfDjI}X~*v}>Vp%UJXJw(juAoU2Hd_KnU^JIcVe3LT(v|-^*H7yRi869Wtc!K zF1w==J1&8Fg07sT9V`h_mnVc~VhSf?`3%GnLGn8{m&1XbjB0WI>0}M)8Iw{DB~)_? zamfU}^&pMcBu0ZiDdB~#*BZ+^c3iBX>8V8zSLntk25FhCaTqJ~ z^tCtfjW^{ak8PHJ^m`3RwTVxCG_TyyTb}J3rU_EyRV&qw4-SHpJX4xbuAbnnXAHHx zs``R&{LX7J{c<}u{utt}fRBu)PkH@M>aDre@EEV{kI-lCXV!q-#GaC4684F}Ic=Nv zT1}tW{xvkd4)Vqw0$eb?!F|JAA@e_EN$Uu(ulQ4JwtpYNAU`nsr*xjtg<^U8ilVx- zqy68_exYUj%B!j6k~PXg`-7)3;zZ^bn26KIBO93WNf`}6XjA8@@}0RU=_Ruk4B8|A z){TaUIX(e=%Mx;a7TVVVpkUlNfAX6d(GM*1Jy6Q@qs{8L(!oT1&G*yqnz&rp2mH z`vVq#d{R6|XqEAP=DT@4^CmU&IUV1Q;kl$C)cR1i{prp4{?JFNMl>O8k~PM>fUPgd zsE@uTG9KMN9AOYbw{0QmGrXP}crF0Ep0=nZ#~(33@zxz@jHDfb4yugWjIQupsiF$3 za}l?!fp2~gi%UG2BTqesiPnKFk6s`bk3$0CIE8o!2s;_OY&o*QDaU+bWsyF{CPP+{ zg30?{)fcu|>1@5md|(TfE3oGG;#C_XQE4OmO6Fn#+IgB603EsMaOBi<6qb!7_G5%- z;p!ODy}kvu7m#6ljO4K(gx+i`BNDfIi?sgm(D#d6%T#pEBgb?lq}s{ZXS_&EyO8nr zU7FP4oXM6CL?#p#E@7yMl#>eu^&_!$lrXUi8NGS%3V+o}Dyq_leq}dX%?hcYO^w() z=Q2FwpI8I;*1M;VNe9?ztUuG~d(1w;w2gCP!_9ww<}Z^u0G2>$zgv1{h4x4J1tlgC zc>~Pgf6+7Sn1&gU$w3|uGi*U$LPOrujo=224CSuu(JNe#T=yWnl1w#ZIwft0>+g2F zFU>`*+}2miu@aZ^UL_q{#Xxt2Jo0SG4m4$1DBQz`wA`e|Zyy@%k)*nube@I7C>Ap^ zQohm(Om<|KC=3-iJfih!>qiR?G!-@?!)Q8YCD-&&o^}YHQ`Od2Hhp7Wz%Va$EWRrk zt;YpIZ@aaAL;^@(Q$mH>*7G0k|JPIWU8T%5C``(!ES;@MUyb>~P8n6cXQzw_zn9~8 zZ(M}_78@WWToRK#r@w+9f@k7iRs(IRbeCJp-PE6sXRD1*FhytZ5Un=})~-Td;Gb}B zWpC-Pe0wT+=)%i@R!;8mQIPt&;0lBN$$M@lwVkR z^`n1ZSZV$Dzt#Evjc)?DD?q0j*EF*Hs2!53uv$`0c6EM4G!oe>|Fq3A6n$^o z^D!MzR-ZaubeOf-w0*hU{UNsXmjvb2X8Ae+0WZm|P^l{_{2Nz2cV~#s&v2PKcRkwI zI+dbzm=adjCKbI0iKtQxuxI$WHDFt8NV{z2MJz6d+m?Bn;39xuG}kvcANs@&oo{aY zcPu%er@{LwiCF;ln+Wk_9%w-3??K!xZ`$z+nf+E7>9-`5>rH3;+Fo z?T}g_5q!~Pq>_!_c5xXU*=?piRqFG~URKkiyYRMMMzeB6TS2Sp@Rr)_ktmru!n8t% zS2^Lejcz>Q-;+d8Ntn8k&g`_CPn-g;KPq8}3qPukMQ|JJlgi~#Ag4ZME6)7A-&DOu zR*rdjrIG(UsjM)u2{-Yf37;7GLMy~4WnAOF`LvQ>2H@8LXrXL4_(1WjYW-|31G0sq z@t>uSj*H}(`WM$gT6fyYA!&2leu2jpTS;#;t+kDo{zO}YYWH*})P_x!I9&*AScW8i zjC60h?c?h9styc8`d2%IIR^SudTYSgI6}oMLoi{ zSNvKR;-@k)hRCiW4W=!R)3l_?@Ab&KOgSWuKes5e(1IXw8XJEBQ}sx!9tGAqCGV~+uK~hC z8-q)K&Kfhp`w(;4xjNuz37-I^c(6RB(a-SeYT&s5@XDHm@zdHCulV@%UsvSRKRxk_U-2Zom0&{z+PCa; z;zxr&YjJOUx4zEy# zaj|_}ykk~*)fJB9Ng=bimbnVb^SgsS|MHO_=&zGDoAId4u|9ag4t4DH`Y>pXRxINe?Qm07CUwj$hE1%5d6->`GK)((1-u>!Yt(m?He^(11fE|;L0)oW3G8^H|EBGn**-{U)crl;|tdyUvI-7^JX*le#htH zN!?wOS$z!3X)V1V&(v$F0egT)PmflmKM0~j_9o0ebJ1iR&MJV{1U3w`3680s>gX) zY?O$9ZSi$aV{Puj13DPvUBrknwILNB%fX3<-!cSFeMW}9+?_+ZlQAmju_oHhryi=W!!ET16jO(}EWIKXm<(IKyl zW6P*;A}Qt)A#VXQ6)WYj3(6V}T*~1*_>w=I$K1d|K7dv9K&(^|9Kmx+{mCd`W0|BG z{UsLID#XUin?jRI*zyh!ur<3nrQ5ojdWb|Mc`dq!sRJjMS-@OeRK##(j=^)f_%EHNJ6FF69L~4B;^^f(TKT0{+L|)DaDOH z7T)rexI<08*cZd(UP*;7?(Xtq9f(rGxP=;4G4gq=o@x!};EG(K|;k@_j3v@W=PR=RGW+K%T`{Y2j6>HbtiF1nuzj`{>k$)J>?RXgSZ8E%6Xpew!tt zSGLqCkf?5PQ>Q9@imqN)d&3jaEx)U%wL=m(A;`hg9YfkdUTn$Fhy@Cff(_blJbG+% zkKBk0hIdzItyA@vgR_|l_B38O6&YLG#w|;@qU2&oic_tC0%2M4d2&&TrWz&DX2xmc~grV=4F0-->p2LltLRMD1U&Q?_c) z6H1b`srE%ew)Mi3ix=9YpF&4P6-8GHBGaD*iElP}8Tr9h;@{}{_I^eb>|Q}^8IMZW zI*%P8g#vhnS5*VsF2+gkDU*#-+9viCOfV0t!Z(4_nUkt zBI5;^BUfIp(dmnJ$K0LP<8)SHk5MNy4F26_9zV0IaO($&zpa0Buqe+yj!fk{rUfhQ zWsnS_SSn7s&Na$==qX$Hp>^owdO=!t3@q9321HtuIz+2KvbkP(sc^3A&cw()tR7*BOp3FS*A)opl9M0 z)WCBA;1x8&-2?{Hc&r&j890xFCk`E^IHZt`BVa(Tk9Nvqa3F_}tb_2u`5{1jDVJ{e zh;lQxcnEj$6Nd3T@prOv7>+C;!s=jvl2L!ynvIjwUM^>)#?hoqn~M3q>S_GzgXqNX^DU*cfN4LzO2oz=+ z2A6tlrgq-xkaF}Plge>1vbK2c7?mcl2))6fXii=Bg~o|S%1Mumwn@tnoJ_8z3-PUW%5>V(kg(Q&3JoTGW4?NOjm?ONf zs#6m4sfVi_3zTt)Q!sKF1j6ODZCp_9qP*{KH`LC}4KR_gKZDaUS4}W_cz=)2L-q5OtY^GeKcb*i9+N(jtJCZwh3bu^WIQNS_=6-kIpTcM` zc$E-3Pa;8mt-sEKf*@59t20-cQ3LzjFk24gl@1Q52{5J%FpZjElx484Cy{yQN9LWr zf~wqa+~t2_0ibVS9Ln&dy0bUS|M=%4ux?Oi&EG{R30iyqDD1*tsd8#bk_14?~TKJ>&U<61HR2tzCb$Q;8v(PE4}p5b-W zz_yn06}FXJM8ZkXwqEev2I-UXxB9OkcIubOg>?C@363CReOnyD?MRt@z-c~;SBkl53(^c$|>c%0Pn1 zxJJJVYyALaZ8pV#CMaJ8l` z>35E2`W4jxP4ri-^Z-8@6K(H|WycJD@_3Nx?^10yN&nqWv$6P-zNqPKu_sz03qbVI zYgb@FLaW0YLjL5n{~0cSM+U}a-8f1@SAFX+))MDiNvo9q*uy!O1cfZ&7*$K^yJhIj zXo*Vh+-&j!CL}rXjI0xHYOOP=J&lT%A(@+ip)p!n%J|5;|IRtH>y+!Ab5UObaBg~h z^kE_qWdca5d-6uPi6+r9-Uvfndgp}Mkt@A$sj(x};SDgSw1x-_E?#{tw`B-wikLbB zkiHVXBpY&XghN_^WNLdPrz~;^b6%|U)@{q!`6f($lp%t0g6$a7j2Z{7yY$$U%fXsJ(~`;mY|TMRTxl7@OdO z*OMVu$us=a8b~{j1)Dz2LZjuTzpdAPPxI&IU!F8-PSftD<+ex9kq%52;vJ7!04$qb zkN^+)^U)^yb9;{9%5-WPekF;Iu~0DvL&52Xy9E?CJV`FZv9Q5G2V78~W@Cdr)et~I zH?}Ywe3|#@2__wzFP~H$vRso{?A)0b2JBavqtS5%ZShe=IWJq*=DY?Jx?|}SM4L2Z zcoacWnGX3K_SRp@ZrvYJsSNdVreckR1bs;``U_PE(+4A?HVP3zo5*8@`0f^wVg1D^ z53u178M2rX{&0k#e6`8*p$zc|{}cIIn?f!QxmL^RJC-BzB%t3+Iq|eACn!5g?0LaU z;}s-OJ1%`MA!ckr^^e0DnZku>I~s*Wj+{!;ilr~i_W%0rE!UT~zx*2Q!mm)Pnm@c3 z`kDF(H88Co&89sZC!4nIO&dD?>~qW^=nFnsWfl=%&~61a-OFv*^`p**xH1FGVUO8P zkUmCNR61$<_;>rdiiq21eTdQz(rJTptJpGQAQ@mjDDdYe^Xd))x?2cYq=ki-bYvsP z`KWUs=VH!-#AnW-Y7WbJ1tH$lzhyM|5lm>=1goVh&v>rlLAhY^dbJa zML#x0jR%WIOeI3;YPre3VvEui) zeDLNeza@k{2kq&{8Z|?EErZv+@4l+QxK4eFB*ddY18dqQOxh%pPIO(BpmB~4pVt5h z6p=cUmR#$`a&YML1ruvi=IDjc@60CS1gu4mOTipTG34s_#O&xefSF;_t!?>V~FGqMno&01H>GU%o zmB~PT83YwyOh_ESC#-BNGRbj4gpnKaH6yUNh|=n0@pWC)P=rom)sJEf`zKmX6p&GFaop z6o8Wv;kghVBa~4t7a@WtFT?`vYXu@w=Mp@GD{m?Xr-g3(!1Bzz(i)ie6P;9~FLmN- z4{?#;vHc}-#7#)QptbG9_8b1v3l<(!gf0iMG@iGY7-#fwo<67{q4Bior4I_0p*4H& zpHT;G|Hr1``OB!XcML})r)sVq(>INOA?aqL$qE?S8!nI`IOU+OnVxC)L)ikTtopxA zM~K986dr#8EMr*xQ-7p@LMyppY-^j5w_WFEATNea8-zBeGAbji_d1u|d=R#*{p3=0 z$#{{n?876q8fyPB?=ZYj7urS2SKi@U;@C6=#ipgXVs%!pvI_US)+Cu+kjaWKO|hF- zzU3a7>W&@7TR&Rj=*i7UE2|zWtq<;h?pg~2q4q!66IqgsmdNadjB;5%s8-VaUgz}+I2(WB)oN;^exhqGS zO|RVKJ%Jk$MVX1vax89Rp{KmVSuv&8vWl21L%}jt{%X4m9GUV~miA8B09+#*Ci0r+ z9Mh-&zs{YLPyYS-|K9UQ&}cN;`S#2DS~DUzc96nW&D9pep$VXf$dj%lhiVs9vIs0` z$hW;9lOY06g0fs!(VM{XLM!D%0MLhh)KR+W)YTda{%-&BTCTRvLZ0z!se$JLz-wuV zvE$8q-lWbz@^l&J4VWJ_*%6kN#_=i{bUXN%h}Dm}3R*|u;Hz`-{ci{vuysu9EUQS^ z{#1;bFZBvnH3M1U4*1DSv#Xvup**<)@B2lT!yEEm*o=E2akbNjBx{54+B|}#<4?Qq zKObc|XU6x--&uL}BP`1Ir&!z#@Sd$keh|@>?37G#3Qh$z$`&myR?!69hgH!HX;x2F zVVc9BW3Qd)S~&o%i^zr9CzRf(yIP-bthhiAjl71k{hsZcg$SFrkso8UXM=WRH6EIj zBXVl9v}WqC)RA}Xt;{{I`Rr8CpVJM~(7 ztAaH129%y_aJFq!bYZ&x&(*ZHKU>~@Wsa7s2R!Q6BwJA%#}CDgOq zerM6!+yr>_J129V)29yGk26o3@lyyq%9al883F0v^z+q;rQ%|fx+Vo3KCp;z40y*` z67Aer=iF@Tic69RS=g$~&Yc9SZ=XDl0Hj?Xie5F+ zC|9lT=|k#Cd&vVVKAH}YSR=1+=B?_NpDeQQ0@Hwy;NbkMa%!mdL(6QAEtP)FSYH*mK z#?Vdh2;T~=c-I5`!sp^0{3eHcxeYoE$U*FG#CXuI*e8yRumm|o-SO%$=zRFd@1y#x z5os+<9{ZG&JKvrnU^dtr+l8mzz=Z$ydjszu{7!Pd0pP0u-|?s#?_>E{?fI6v$$bJWRuVxWp#V> zF*;!`1enyD$JfB=+XQLw^%X2m1ZbzG@+d4PGvy+$kNi`&D6!4hFiv^u`$QdV%lJlK z{`~!0Q%>hSGhz&M$ty!UA<+C$oA*`Mfx$^vvIr~rvgH^b0pA)d-ShZ=-UI0#sGa6K z1}wY)OKp26E&f#5H+~JE-2y-wyb{tc?Xz6qpYd*=9LY{*Dbo11zI_Eg%6ST^Q^>%S zcE2c1WQYoxW$;*?JAkjz4}3eJbjGxDg`?J>8<>dLU{)ehFm}>SgE+Px-O6?xmAFH4 zY|;ey&w_MJ&)H^mSTi+m4{`i<(WXVEOL|De&Y66xxvIIT0ZZeo)ARAd@ z#}qgKEjshQ(w8L)qjWS$s!anct>wct8ETgH#^ctj{}q~w9m^FMKPuuZOe;{E1ZGD8 zJKa|va>2!R{e_H;^^m~Q3yLrZNSc_3JmcSsbo3OySoKAQHjEusXKmJkZW5BD0k19T z8`=RN7xsr%Svz)yTQMg1yHFsFfGC@z-wq zf^rVAUyA?0L?yC;TX&N-IPNVr^0uCzxdUUZygA_*hehHXRTIlK#9`q%2G|$M&Sl=i z^EK}dB2xrg&n30Bu_zKF)45XSYDy3N;(BqfB>_XH-SYc7lYfSVkNgzJ58uDf-G9TX zkNrFU^eKQC%ppl;l0MlRIXh=(_CB--pdMY+@paMqQC;%!AAfB)a^4@~a6~*OyF}WG zF0Zw15>FHID>qgQeybcGhr!o@=Nu(cS&>uQTkB|w-t-}8PJFkH%TpGl)b5-IFg*4t z6Pw@qf!V5vp6Bi{Jn&oqc#L*9Rxpufi7;c%VL6GM11zI_L zIPnhVtU`*6j2=*vBxuP63`ubRYWEtyc7&IL16_Hl^Jofls|v22o`=>p^C9z? z%qtmd>=KRG1Xkm2oG-G3C1XDdJS2dQaLb|AUL56Vz>}GY3`X*Sm5*cfF3yA2isn@n3&mu za94_@+vC--R@zk54wt@?QGqmi^^{A21j@p2hO3jYyG2Z#e|8mF6jv9uo`~^Uc?Lefx9EY zV2v#4SO1oFC_+|JAkqYJ!%jA_;l^FEi!O34mN2?jxHz}5{2bSoU{7IfymO4C70=pLxiJJ8?rBGUOilgLp9#rHyXu7mmz*!ecS` z5=D=oB~10)MZh_frx&_%u87vA0AYhkZc7Zy%WIK;(9MibLeKbH-)NF^RzEzQPcT5> zg?~T(2NK#9SKTYF^E8(>Qi~9kvf0juvrt@c8QIql*nq&c|M+m}R?!~A11JWp&QivA^K0=;{hw#920pKB;;ckR$ ze*QBV{^9_d0qT(zPamIu$Eu_&d|pUr@Uk;VWXR12Ofn!lJcDxyQ(8YF=wSY6G$Vy) z?uJ?3JHFnMPbo z$Vi=pr4HDPAoal-`!F1meh5fd>2+TF-w_ks@J#-B_-j32zxdZl zjO}+(WU6G$5}L8#2)ATEp4$^|Sgm{KDFD8tbQaeF=ok?~D);^7@e^wJRC2r3pXs(;jJ? zT55f@vA>F-Vdb-(;)@u&epWUK8^&Ezzu`evq#DPQfCuG~ZJ9(1*LDuuN2(iS&I1uJ zyYkoP=%6uVuZ(&_#rh(eiOKO{`iF!-MSu^VePr~9UXlush`*^v;Nd8Ki5FBMut+Zw zy@;+VFvbrGp8Pa=AN3ZF3s+ zDBB)_;IH&k`FvzN{R}~VP|*2=cbm^6?IXhZhaX8!S4P*)(<&Pxgnjfpk9h604!$zv zu+~)T;ydRlS)b;ZCwBZMmd6k9GZyl+0OgN-;3;z)c;0!p-})*WoFARrk0AS;rF4!Z z^Yw!|)h(Q){Q1)YBWMf+<&y~1nypbdbkuX_fnS(!`kLuaAHQM~I%uMwe|hufzkdGm z=I39rlaB&aP3t!5JTx5}YJV(p4vtN>q2bA*b+D}b#0O&l$-O*N6Ux%rXZ*)bo~kwJ zx25#a{-|{qIQ5)3sekM*6>9&Qvzy9S3wi$(vhzrBH7SZ?zx~GRlFwhhpe7vQvCl+5 zJg6haY2h;zdleBg?nm5$%U~`0sQLkuQHc^&r<+D`tvM#3V`~-rzHmUtE$Qxc@tPK(HE5r z(LW&bYme%^5LU`^cs%%MsP0-1rTqNmDGl&m)Gs|nQY19{YCqOSM%qDAfcoBM4L&|8 z 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

    )}%6IsxFPC&1IySaW z%f`gi8KpvMyRg+TlX|m4C4MVt;3cQ@l>b5oOVJwD=vKy7@gh&jx5Kq_v?)u!A_~f} zof5#&WGOmY{@Rw})y6g?5=)N9Lck?H?G%~7waa9^tZCvvXBWayDl5J;-%vzT84*eP z%9m85`?Q(7`cb&j8sFuLQDLgxA_Rmuw&D}rrGZ1Mrd$k@k0h#gOD5z*>UPNq0}j73 zMnp#kd1)&UWxr#qG{(Ec#rCan01F|=V}5_$fg(fGdG3v=Ass;_FMB{Ee+4ZYlp#yA zEe-4#g3w#OABU@f{-oi?HQr&u_V)d2FFo_cPyV@=F8-C@efh;F43{Y;l3TZIzTRdb ze==V$_SfY#-CEAbAARPg$*cCp`oMSjE&|`s2<$EZd_%*%Q}#7Pz?0>i@+Cic@)YKY zc1<%U-jgR|>vIvnMgEl6bhG$(DKMKlEzj_?*FO#TzaM$@pZ?{;yZ+>NKJx9~^B=u< z^V~bm-ocA#?l`wObN*m+jzzzB7H)EdJa-_dJF)gorK6yV9PFGZ%p-9s@oIc78o=cQ z(~Ae*;i&-`0uv%?f>CZ~nAXaPf;xKO^=^W{rwh)360$5*Bxe$k34}0M)GJ@^#za<4 z7PLz`OsT;ZA(<*bpSxM|p`g|fSYy>huHEwa`)BX`iJLoMlFS6oT$$pXKxn=)7oR9N zl~QJQgL3gGW!J+WA_=*h(6{b=Y17Emrlc@RRfUpKcR!?Yt216vz1Pu*i+_hn%Aff%%HaJJ48}sxZ1t-;{JVj&}JMWrDCqVB=8-P4Tp~sPJdn#Dn z+*e|j0C@#2L^El2CSVI>Z`w4?0ziHB+vIqePlNC_WI zO7u9}zU4a})uI`kpNX@^CZ@Xn_BjA@Hlj~`N6t6WK3g>jT%hp`r4=bV-( zdX>sg*==t+lnm)lWm%Exzx>?_iHAIHsgPA)2}EdcjwW`wu~fLRNSgpGv4xex!%-j8 z_SCi9wy2Uvp;UUm<%uky9M}b#QoTIbvOZM&td&kc;VEi+K~OwU!_z`XJaxt2mtKGE z>gMq3jm^Wy7k~ZPFMQ&!T)y%*p1pYSSy@hQvI{eJ%W%}W<&)bi_$NP!A32kcY((9r z+xjGFc4-%Zw@d_f7XaQeO|dg%6@fWX)`(Rn)D=3#p)q%~H=o74IltM%BhCC*=HSjS=_oUyk*a@kV2PeMLIe@FsySu)8uN;Syf@LR1;xl*yiEON!M{BoZ zjzVIph59TY2mjRQy_gVt`F~lEB%JKXe~y&d?#wW9gYGxrnaTQh$;x zp`VE{P-tq(TQp0Iq-;KaW|0XPusjYQIj~Y!VwIrB1pAeBza`5ybm@oJnS_DvREy8OgkExK@^hLxCY5QDXHxV?$7lM}&+D#k5v>c@a89 z+i#7S?Q5z9D>0=r_)ddbfPny=a|U@9b{!|pBP7{SsDN5%$iO!+bS+OV5xcZObZJxB zAuDt8*n;Kp+lx7AO?+|T9f9%Ri-K;&s~#`1S+}no>31nt3nl03Gk38rMgk|Z`PFe=;R(#mt#q);e0$GZ4<2cPFUu-NY7+_p|F zp4*5>E|~)vnd@9!`q==r-PF#sg#Z#^v$DC#ghoamSM~|}pY3Z5lNm<>etr4)Ylzr2xrJx@FRa2x;;V#zo(@)^kb-UPza~}gVI_g zaP#2t3x93%^3Q(!|9kGIUh|xgIp!mKtru|M=99$l z(k=pTsR-;Y0KBD|V`t2X2zb)05uy-t5*@fF;2vT!N0Dky%FbD&bDIUl&Kh47PApq!fJ>v#~q-xOKpC}sto!OS@1+eGW05?p$bQhwh5~g-l^CMonj94 zv0boy3cT$OaU|6QKmJH0O|6a+0w>`n0JlI$zrsq=nq(!5vh8cp2Toz6@T~fvFnQOLHzAeut&0r{20JuGl=7BXZ-LFU zl~aeF45H+xAicWvqZNscpNqcsO!^pEGMBi>Ad1XnJjNMmS`4rzirrGHS6!tq#|Y(2 zlIeQ0kco+r+|upe{h3901T{^35g*|K%iczp%R=>qZ!AgCO7Vr2T^1mKC6X=)gDPwy zWbr(K^??g324#34W$`SbaOwf4wnQ-4*%bw(-8a=G&%no$$QLszTR`a0GpDB*Tf`L6 znRbLtb9z%ubhuL<^kFfNZuauyTIFr!p~Z;UqDUpxr7~WeW&ci#uGQ+18t- zQR=DwUCkj~Xca?2HKAFtO*>aOMl$*>0<7~K6~AoK)uuESwRGIXFSTj^QJ^;bN$l-k zCIypXjP&9cXrY3mC@IRMN?c1oNr)Kbm#8qx((r;7ujQ@oia;)6Abb90;C2gEay(a% zMuO$2fVVK#fh0K4HNCLJu<4CiG19{_Cjwwx(huYZ&IO8_JU(#D%Y|I*Uwi%P<|Ye% z@A|)M|Jtixe&Kii(!IBS`q#er%qMSbrA4YHx!I{Ew>;Zvi~m{V&&7a~b$N$xdNIE~fe%jn zYy+EIIU`FuESqQJs`K7+PyfVgo2P%`Z#?qIcmCAT(VzI>!;gN~k9_`f=l+Q^{NeSv zd+*pB_!EI_XEy$$z}Y(w@*+X+EO4J96K0-1&O5K1K=?@Aj3-CAW#vn(yi%UgG+EQcfTOa^CB36JY({sfV`K(p9} z+S_X+uFog1v9&}1g$_RT6*i=~vml9YaxdQ;=z9tQLVJZ@b9mJ@_6NKV$dX$|Wb7{c z$n~egE$+TwaRx{af8${j}ddP$#-C712$-8U~}SXNdZv5W@l zc}&--JxN<_M}lFb*8P) zkazOe9eUymBJ0spaH6$ea$fSK8rxQc{U@G_i4wD zuJ*U@98BI)j^W6;#y2V!hq-p?KNQ85 zPBs#R6}I zsxBaGzJyOX`5BYk3PAQE6GLKa+ost3ltvNI`FOQ=eDzbK_2ig4t9f}R^5^GOYs*wo zaUsw70xW*mpVOy7*4_4|lRoy^dCCuuL7xJfyU@m1-k47$^woHjVPQ+#=v(}OP`?l8 z9P;>L&?NY-=fJTa*tf-3Uy)C_=Y5O@*iB=@$Md0XR6Exb9V09854p#vW3oR>vYjU) zBIT`q7i(Isi`v9BI?9f;jYoOdD(=-2X)|E9jpk!gCH&Qfnj@gI{TE$NJX9RI1#{k+ zpn2Sw4tc6id&_3eE6Nk&j&mmG6v7nQGv>Ef615MNALL02j)gftAlDa7+9!*r?6s0M zhx-P>tvI6l@DSZtOKfgkr|)q>%N>6HzVC>;{x>eO=x024;s5Oqy!vw&F8uwUdhy2J zdgc&T=u}fC~X< zoUt=m^+JFz6wJoR>k|WvkcfAZ!QgD!uQZmOT=>c4R+wmqd7jwH_(56(%O7A})K@CJadcCRJXrTHnn=4;6^M(Ym8@<&xt&7$HFiC#4JEryQdNp==<%)i%9O8u z2b_=q0p_7F3=k0hPEIWAz|@u^DoRPJ#9lkP&je^y`pBWJEGh^(<6xh00q>++IuHEF z4?{RXbPmo`HTxe)xol>V>5sCkm+ji!90037Qy0{BNS*ivBxj{5Njl}hnP<^rA^zHa ztJEsgQ~f`M5ZEWwH+@(;w?FGB8PXJ9oECIiigm8ipNbcF($_+|LF#Y#Jke62PtO`QEy4fv1gMo*n!A|-V^{Q|^d-BZ zoBoyKR1`@mE}~rc*0E5FKV##ul%_60X^&bkd0a(!WEiy6+KJW%u8c^%ijgPNT-cLj z&VO1n{mBl`SqDmcIW!cf#RBcNEf?!zS_uatkj?NLGut#EVF;4dpX&&VC-~kT6eD{V z!E<5Kw$c=?!ziHoNVsjs2w?{gK}+9DjhzaTRXetrKq}TnqKJy2QBRMHoM5}ZTfXIq z&F0sZc4%uip3H(Zifub>g#vo@MUT2j+Okfz=bV0Q<2D_V(jd9=#LUliq|qGnId{Z3 z>PhMx8?+;ogIr67ZUljjZg)|-rLPz@yooBSev_Yl#WAhq!_@-yn~bdI&(s0wiSv>q zviWBLb-0kP_7{O1`oiJ0>v@siasQ_OmUsMF_-E07`kQTQdikX@A6e$wV{S4(zJC2W zFAej$2F?tve?&JVG35rCHldI7+{72M~p?HRW_ z&u#X(FmOP==ba2D3};yM*98F7xL8C(?o8y8J#}Uw4)QM2>MwgJbH~9u+fJhD4j60< z(lf!3$DlYUuV)BO2_3*g2XF4wJGetyzY#1R*~0H6z>3K-P$x!NKv?IS1v4a0hON)U zK^9X)fT)E~O-*P15Qb2dj_gNYnAx@Zx3!uCcBDPhV2Tlh`yWo!&YeU@$EBpP=q&c}r z(>CTJm68<`g;-BHXaR$8#%z6vC|GoYS@dO_u=D{63n?(uazRNS;)i$ZQRX*7kU31$ z3#2hED@ft$su+2Ym$~+T`?`N;*0#}aU4U%U2wy>%;S0^n5Rp{9Mt!v?&dcl|FlJfk zp?DT*>K%z{v_-0wbcnm6ttR$qGxguJtB9 zwiiix)^n#$Nx+TW*c%#cBUU-j(0GNTUe>IByDzl~8*_HmGgH}z7>Wv4N9zYx=e)AR zyN!O5v2|zwt6$!!%4aM zt#gV1``GinDs=&+HIRAMo2O869s(BsJP1POE`?~Xo&IjCK3bl~%i+mI(9m!BViGi* z*@#26Q;r)%;qci7soWbAd2=kGBgd#tfbZx)QJ;ZoO!P@51A>%QJl2&dV&Ey(h0VyO zj*P@ZJ$3|K58-8+=>8-YcWeVtxpr95CUD)x%C0yV_d1*H@10G*vLV!|ACetm zVETt9>P$A;!3#ZX-rn9tyw2Q!-L|{(13_nRzw_^&bF)6fl==DuZ`r}&%`OBC zd}PSK-bU}_>dp4zi=XET^XH%a%7xAU%ufV<{Pi1uv9^AFT;0Y8gp$ zw}uM>=KJJc95|Dw1`c>4fTskgA9%5V3j#g^oA(OvSnK`)4_Jf0b(TZ9|KnI0zVOXQ zRK2*MB^tiREG+?X0;Z+7z`sfd=YJeaBLY<^&mvFK>kRanKs)LeGZ`4GCMTZONqM|l z1ofJz)MTbe<#BpQ0`J68kvE*_0Ck@UNZ>3Vu+@nb4^Bj#lMi1Wr>y2i011%r+)|Vqf@?DOKqy{XVWa zZBR%lOtu3Oxk}{Swvui<5Jt)i9yOFjul_5uCZol_otPR`rjZcrwV<)l1xzh$+E=u= z5XxdmZ& zm_S@dRALWK-^x56o3?FvJQ#Q$QzyUS?@*ONn#H?P@)9v%J~HlcqON^j{LvmD)7bL3 ztHO}!VLN?KTXVcClq9c<$f%J#A1ySM?3Bt-okbq;#+f>9q9W9@s|yT8=b|SIBZF-N zlc}rxiq^nf9IEZ$fVQ(g_KVcUe`DuXyS6vgdbHiAPwHRTi$s4D8~wF)$SvLB|Byq= z!@Zk*AJtZ<&P)K*L8ba~_ctJEJ!E2@So#(Pc}bDnWsfCw`*O*nBaSKhYTdimGsTCaea$;{x zRI$30pg>ao(TBWUq7(vhY1o=aog@1^=hysn3tWyjxm1P_#pXPV9Q7zqlt=meoG%yF zZ1Ywn-Wb?tovuwWJ)MI^}TOR#;{6qlVpL+7Omp6a$(MP}gf4q3<`yPGQyFUDfuUxzTPdxX^ z@i|u6NMHbV!qbcVGdvNH3jnMjj?Ob^lh2C%{ z1b|UD(+_D~Wl?jlrGgxgw`Nn!tZ1M`#9l-(Si*BBQ>N&#K)ojMXbaL@f+z_=J>4KI zVRoL6`Dn?}nNmy@XZxL-T zS}1j52CZdvDw?F|vU_`6l&uv9$qbhgq+5KXEU&4vs;FK-6NW#a6_qqg+QJk2=ov-W z9s||CO%;yf8(&<+X=8se!H;GHS~URSr8e!X{H+D8LuKJBtqY!l%V^UAlT@V(M4Ow! zf^o=JBxP68=OSFw=G?k9J`$B8Ycy1Wa%pxiYR&`&1uzL@{)HqmyX`FZX<+1J40H61 z{PLvsC0}RSgvud}4=6N-w_DT7!ysW5q-$xF!Bl;<>0@J&?E5qicN$lcvlJ@nWks$S}C})M{v89=C**t46L`Sfn3Q$%IDx zR;j8DBulBQ>1Qm~U5w|hJ$$iUJewDq6T`GmtO5=f2X8KtF%!yS-wP7RP|hKD?&%bH zJAW=-yVz%e?{E2&^8&wIEbs!sO`ZnuVs`q*{^rAv?O%B9(uJSAe)Utoc69ldF1+~S zlVaMMI5p+d@|mBV%$=_ZTj!Qf+fLGrEcIDFO)ucU%_m8>OS=es(?wu+0pOdi$#w>> zA}}Z38WjsMuoc;IB6oT_Cv{KoQ=jq-01g(j;5UD>y8NeYBd9g zB)*DC5`FV8&XS}-H{AD&6||PSL>&_6LbC0K0oKtZ9R8r5$^>7@96te5M`<-l=w}PG#}n`)kmCa za>pz3N@wj`Y13#_CYVU`x|7)Qh60t?l*u}GZx!11cc4-?3~HSIBclr)zSzti{MO-v zFZP~&`s&Ool(d6g#!X-JJ?*90VH7TT_pRd2zS`7yfk!{R0w1>W zw|_BPG0b7K;-7Q74;aNxvpzRX4ALGMAaw%yvvBV=luvXP=HKDR>$R@Wun@wif{A77xYxvL(|2iL?lOuAxvv^yQW|wvm_@<1& z?gGF!WwY&!J`sUA2|Lu7rat9?dy>y^w92J*e07^af!V=r<LeB`LZ@;bMC z+IGz2ZhIFm{xyH*_IF=>ar1W{d+c90c=^@udC$X-eB}GCT)pQ9pTBr~PR9CAa3*A# zL2EV}Bej!^4OiN;xVH>ElMW|fF7Sal5zAc*VJ!FxM()J~@yZDtn7MR8D36qS!LvvO zCr#3nm#PB6FnP;lfU=KfCZtRR_Lw}H^dMyL*WD`Zz!fKCewbKEBhjrr-pU>utjkp? zbEeus3tW`;h*sD5QRJmmRO;ZRWgAmBnJF`|a$=X21`M}Y(8V`nkku71{T!ba9s+Hu zLc$ZfSe#Ia1)wIrH=L0-zwM=J7s$CF0LqEGJmTi%fO%<}G}zYaf|n-p+l=%f7Bx%E z>}L?v#hnV-JZ_p061%vIoHjpi?nhh}V)fpB|hxP$u!RBHpT*CZ6EbC#ginqU+TxJ&i1gaL4~-($ zkI;KjRGEj~{Um0}vEl0}86>sLJmT;1fUxC7 zRMzMr$G5=7$I${843wUE+RkxFIX+?Au-r`F5w6q@7CO_?z`Ss0jEzfjU_KR4&5($} zrygjv%)aG$Ef-L_-MjDEj(!qvWlL|n$d66xN;?S;C3=+%ZI*Z{B~=?)D7+m_y*Vc~ zP0nS?>G#uU`J_uitU! zC%^pJPkq)?$>#FK5^K3r)KESxSDSG2(>7(giCgCbU&GckBWq-@b3`q+Oxb*rw7ay6 zz&CXS=JfPU?ZnRbT?AGUIIT|)%>3lGUZ`81%{iCl({f=0KaFN&sB2vw-NG!J2DYvj z1{_ZZ?A?9$_uY5t@H;>D-gm$M-}vm8&V1MjRgF!}?To?AWZnz9Oe_Ky53XiuWs$UK zKeQb&Ns@L!zDyF8 zNh@NNu@_p~UKYtN<#KP!{ zPrb6a;(s6Wa-{J&6HXMX+rK$Xl$`7u8;u+5jAL7EMf#t`B`zv z#20z?3B@YsTy8!2bU?`zwvLIDTx~MBs1oN^S~zH;m*2)a8I}@K7k{_gqf2_})E!&NH7osEIOU3Ex3?4Hz@U*1 z;ifPHQxQMdp8f;8-NF zKf`~Qn%i%M>#66fYJ2cNge7j`;maNPu|c~>w`H~1(SW)6M2nid<2%Qt@|9^yOhQ_+ zBf;Y$NO|NhSy^~@oFd*k!-dMdipDX=WcYxQ+f4eAcd}5o4+vM5s?Ksw zzms#?`yYFNzvnx{`xtI+o_OkF&S_pKspA%U;^74`&kec2fyO)ypbq7=4OFUaa0Yh@ z8kh=A9&1{gV)|UQ8=h;cpEy>>WERRIh6j9D8&rPCqqb_#Sw#C+tX?een4aT8&C-?* z#R7?a)h7O@z4f%K0#T6Tqtup-z+zYTkw%49rz2mSdO|Bu&9s@mv5Bj@{gkEUB1P`j zFTzT<{soknD5v|2(8vPj1wi|e<9m)rnHY}}Gxb7anRCMd$FOW4e&qE}KK;xSKlk8$ zkAMEci>Kb@hp&TOxn`W)5WK)FpSGR0uwTR0W%;K*veapLbXzt}eaZp$PTVf-BJeE{ z0gvEa+C|`7F#;$1_SDz8<=GtlESsO)X0gA{*JbIaKD<+3%bfD)oLnB$)TjK0{Lx3h z>&)S;kKX^<)ek=Q-gm$Id#)ee_eY-n%H|#?h-Y#K;&^lED&v@wb+&r7A7Y(|WW=vY zZicuF+^S|wV-i@YXlH<*J6FNU-)VW#R7?iwBq76Q(>Qs}gaKP3lASu3kT6pyoHoh? zs%S^JxlG_PxiPPacIF-7gM^7r@mj2fL?&0>jRTQMWF|M%GJ!#6%!5x~W`Pl*;Q-z^ z1DtCXjhPCeWq(_`txlyP&R)ij(Z-7r5>9MV5zsoD zZs8pb#>ck6&iKq?T$y=%|4c2O68oW7E^U$jrU#ab3GkLCC$?V5pswG`#1#3{e!?WK zU0H|z3I&MqM;6JjZ;v}$DT~IYfV1zN@b=?47nPy_B=&@H%ONH)Xp*Y8oF-0O)fii$ z*a``E>K-!-9&j8WPdm0!@y2zkQAPzo-Zmbd>dPJS~okKrx0?o+9v}!zTMdo>Gv4)nEQT z%r@^ft0pS>_11KJq-r~bM8A0yyDkVs^J+J3q87=^mc%?yS5UX_oRY@poHMw{miTjl zbO~@Q*A@6}A8g(`$3;zLx!_8?HB@JA;QepU-{0QkZ{0kn9bM+H-)_`1RmS2NnF*B&?bq64e9TQ_r)BWb32gdD zjcc$3Pi#!75Q7q2Fo6Pu(UFP|-wae>tVM{}M9EP2p=fL>sF(#jSh1sskB28?i zix7Hqj(Nx;2YU4R#97GUyZ4TXCqFF$?e&ZgKC*fK`i)n9@%a~?`G4Q}z!T41yY~3& zy!aSwv3-?1TEL%{%kL&`%IjRCte=(->@>Wvwan9W3o}h#wc4KsTjO`-T?D?VBG6}p zZz`L2#_l5Uj}n2CeSGTc-12Nrn=G53+?+)ZY|3wz58Y|`$RC|=mZNU5%d$yYQ}VmY znYa}I04GODL_t*UdT{fOcYW9SOP4?V(EgdnzT;i*eCPK*{ldXNckSl>nLD^ucffO$ zHP_G#Mm2^o?=I(#sKcRmks0WZoK&Bxs>eL}xTTsoNG1&c6gJjaSWhYfN2e1HlM@e_ zrEx-+35s~?jQCC_nATL$A{Dqe` zM_vGMvYg4AQ%$5rhRn99Q#@dq#40qPwx?r1IBl&4Y`cp*J}7hKPTRD&z{l2}5LWw1 zz$SfoSqR1Fo_H>?T-hXxw6>i|`Yf`7X#4E5b%)J~Zmt2LqZWE?r+(m9?kua{q&_F# z71**XzO;SnZQAr0NfSMDDv6CC=%>GAo+*BtZ2s5;$c4`=KyK5UxNLdKq$rfD5v%%u z!~h=q=8@#FyBHgE=2>`wd?l|Dm3{4#ZOc*W64M-4>Q;w&uqCUDWeYMq?nvuJ zd-`&C%f=9>OZ(OBd8o|@t_Xk$Tq%Rci#lg`0^sfsyfc4qdyC(eUw-n-o10t!IOZp7 zN%HBdvF77gq;J)pid@T;0~^#6xMfmjf|ui8n@z$zPbQzN`^xYwZKsbz*tzWS-8>a? z3T$A)JoB5~kc$!vDw||^HepjfnRf?U7X0Fctv3gasarl-7k3&=_*&jc-PTP5 zuiAD$_$_2t+C|`7AOdr^e+#&>b72>OuNr}qeSPZYC(G6u76Ui`YTNI10buZJ86$sm zOx^sn4e$b=vbjlm)8rd}HgNy_f9S3kU-`hpZ-3~$AARVdw}0<*FCBd3=+-{(1mp!q zXOH)Mlrg^_WJ2eogV(*Ydz*?L3tj2-tbnJ{bJc&l5Mx}O83U6W|NhU%Qk{G{cbVT5 z#ya5{M%}fkQ4!!)j=20(0C7BT_*ihbj61SdYEpjNdI9ByxDZn_R&0SW9cCtBH-oN``bJw@OW3zw$ zTwMV8-1D1TulqMj+Km0P7|KKtIq?y3;?%kLS~6p+@WtPb0id!$q^aR^XEbuu$7YI+ z#t!&Q{o#81_RA-doh+g<3XPhZ6kop}<4@q2itZ>URL z`T+U(EuZ{zLCHStW2{LkAthrsc@BA*lo^UGE~|gqB*_>-Ffr1W_}g;Ffyj_Y9pVPB zklPfLEMb!5_!~UAMfnG0|5Rr-WtphYF_c)z7e?BLNj^^ioPUoO0Pd#Wo!uP1dS!F% znO8QquHLBjSxmE_Y_jO=_?~8a>}fq|7kCoq_Bo5q5Q$(jQ*f6P6M@3eqhDTZ@<|MF z_KWE|#@GI_EQ%EaPZ?VL>=TptZKZ89p9@aPi(l%r-^oKcxjZIuCV`#OCX^SODUW{J zA?2YTeq$$(v@00Z0CQojdGs&sImf`lC^KKS$SGDOEas_OyW~$FCJSxLmNs#eu8+IO zlxT!1U;2i{UfLqEwM`)=b(o|dV9UTpAM4-e0>GV~)9&D>W{f#kzHp%~0QCREm*Mcl zXY3jO#*f7&XriO@xZ{q^OtphIKGXk2B$g7Kgtx5tp%B}sVTm80MYu)zrE#Min;jRZ zhmI_(Y>)tooQr>{4mZ3Jz88UeqjGIcmsXWY(lsjbS^b}mR@`@xx8 zn>!Dv+qOyKR&-XOJq<9qHnzVWt)Zv4aNUwGkHu3vrf zbNAo-`3o0b{LO3q(!NNJpejXb11(Sew6d@X*x;=XY|5wQo=gTl<;jJw%R@K%tdG8R z4)`{Etxu9}mv#~OmW@DN0{)hDZ|B%90!suunP(Vn$ok~I#!Y#hJ9s$K%5T2j9CRFQ z&4pWD<4@MtILjk*om-ww8q?IxO;can88|N$^u>a&Q@Q-~E1M^teq!_Sd+&Yw-b3&B z=)uv^V|Rb~!neKc{(Hae(YHPDz(&qqE<;dHxiQ?RbO|KI1?!+M~giu zSLrg5md7Rn#&-E?v(1DRXx=F0E4wq3lJ0nOFLToCJk@Z6bx&BOlg9;ulQ#89KX+7O zi+WC^n9a^S6F>^85D--&hL7$bEchZ}AASC&e;)lk_K{;JcP?_GR~ar+fK77I5Pi@r zeu<1yct;7j?1@LiQfH@+-U3Pj=T9^wF`nv*eDMIyGC?M{S4XHBGNh|n>b9<&N#Yk7 z&_^Y(&@^FU4+8W8S7z*1kb1;RuYJNy)H9j2EKSqJcKNM0U1(*|0D*2Ts51b7Iu41q zhqf?y!XlykByEv4wi^_2@={j+$c!3cpoQn)plq7hh_g-IvbaD;`XTaM5Ko-7J#m3P z?Eqt9(#qmD2Q~4u;bGErQ z_}8?)8-cdVqy8eo$4kbyzz9R$2T4mEn5)&-2X@5COUU9wS zAOxV%V^LCfj!S&cowsg+e&UVq_2N>&zN3S2bvej<*N9K%u_5EqRsWsDcb_0%f!ZF` z+Cw4dB**5>=F;_|`PgIoPhP+A`r|Ku<>K#Lz4rXG@3`;TR}S``yz=E|K7IJi7p`bb z(yJFHkf|bJNtUO+&If*4u2sU<`N^^!P1t%{!`9_B&APnSancS%zrk){CTVwR7lCj2 z2<$EZe9JfS&cRg#=EUysJ859nEe~$WCvyiFN6+=PhB+{;aZb_K^*1Z4SKK;3S+?$G zn)13n@X5!wy-Sxa9ACQh|M;JRE_W}!^vdS*FFn2aWeFdC_=9Key6c1Iu3Ufg-q)_a z>z(g-=%M#Nc>nz$yL$cXho5+E^AL9-@}A_($@CPd&Jn%iur|Y=70lWpFC>D{xqc=? znOw&WsE7Lk#;H%0^4wJWV zou0{@{Fw~PE52ogbZy}90ux-$ls?t1Qs^Hok=)#K>8kX>v1Jj1_<3*p-&4U4XI(T-gAqc*vF8DqD$IVDf^j6BmFOP`U8L z37R#(Hm_w(Iq_5IB$?buSzvd$Ah+*h#|Q#tUGfEv-`!4IMhHUF5ZOn>0&hT$DawN% zyJVHtUF=tnb<)Vlacay3gjg)8%gF|=juB8)x9vF(`O|_t*bkkga;CnOSTZ7~WhIjs zYT?$GK0LZx)6jPHjadjvj!3J<#|5`Z9g1{oP%CU4i1ZEdLtrk$HcR>cZ|`24<2bG} zj^hqqBuXk-m5cHs<>dRn@drs&VwWo~k}5l~oJ15Qng&TMZaL4Hd6oyQp4nYsArQoW zii7SxeY&UTw*WD-3oJ6PJa&0gAGynMn$mM<>{yRK*Eq}({Tb4K{`T^_{r%H_fBEV!zx(0!_kZ~6 z`FAg$9{uU$#~**c__u%gF8}w_Xl?NxjpNA;?f6*RuJ=mCYTWbIPbk-WrDAoTy1}1{ z_vZAPYN->e>r~sD<8D(T@JS2s1i&Z#@N#k!0{)MF{4ShXj;W!#`&@UK-&&(z-*DnP ze&(s1+S?}trt%!u{HoVd^{OebL z+5IA4@QGKGuM$Ti+JT{xELD#^w)4vqoZkyKf@NU zVrY@a@owe$P((xTK&>}d(kmSUPZZ13R5f1th<@!)V%(+vESY{NLl=44G|V?(5zFhq zDD(Fv5A?3|nKk75$BpwUkqH9?PFT`V3KB$Ih;(sIEp$RWR0) z?<%deMLXX;TsgVNL|VJ*IX>z-cD|BXCW^7~1`oj#eL8(_iswy5l&X764;?$^*Mp!v ze;PmsQCp8!RO?R&K0l|6E)TTUb*Bo;2FpuUMPI@S`4u!Po6>0UUSe|Q) z&EqOqwjAU9XykE~>+uz6&4VQWP9Pxa1ing6JzdlEE(;Tt;^Eb~^$8h)PpjXnhPCr4Ik7MMFuZ}JUNpX`Nb= za`b?Vb6i`SrqF!a$GqXc=CSSm=vzLf%F`a3oc+0|Ct&nBn#YU2`grL7%*>7B=%<+U ze`)58^W{{)r)Pl)hx zK*WyX|NMB*`aGp)PxPDfnnUZ5r4FFUV^1@mtNsE;+>S>~Z@9bkmZQeUdFuD*^UHTY zT*gJ9zYwB1^Dh-dK+U9yu`2iU{W2=rouhc%;OBb+UR)l=oBHowEf(>fJ!j`v-+XoP z^5AgsAMfA2`@`!uZ~lCG_3Hbld#_)A@$AQw{rw-_pPzq!_R~-Qefhh8eW?>#ZvUe{ zI6R!-GB(o|gtlHeA{lF$R{*om?OM7Xkjos!ygRPav9{Fl9do^1liQK{vvW|)oATHY zcvJ#B0r03EZcerl@PGRH&g{)GwN+Q2OVw*z-+a^_uVAuNz1MbpuJl~aal4kPd-rkF z*5-KIc3&-P-TC$0GxpO@|9hc5lJ#?v`kBBVH1KVF{Ie>dY5r=LH2di2GU&kw#nIy{b_EI9gRakl?; z{JE&ZxMGUGK&_{qMz(J4TnTl5}7%J074Ibh^0O zIe9z$p5$R-TT9ekNqEh?v96`IMst#+H5Y zVQemgId25>lcSDxzHYJF^vL-TG$A+1OAXi%Q2610u659hAD*p}zvIXuzOeeI*>``OpGj-L~asnN(MP@-Aam21%g;ygsAF`6sKDja>e zP6r~UfMRviJoz~g!F&R*cB&rzp2Cl@&QYJ2isw3_%sKSmvNrccH9dULGFRs5!#H^s zW8N6blzhS?;`(~aCs))Ndp=H4)p5Os958vL4c zjeSfRmOi%graSWTxJnqeT$^%iqGOKz}>J!-TQa1PX7A-^}F})-~9FD^#Tk%9`uC%BelNuB~0|x@jC60*_LFCjcJh!_G-J0{$jYt|XS z@9$rnKRsAn93Q-Ye{gtuc69Xg$>GtnC&!0Z@h)cZ#)I)D#+vHzFn*6do=k|h)Z2~c z4fggAR7QXN1jFuO{M~8Qb?FxE{lgfd-^z^V9j*@l=^ysvEz$Rn;wKaI7D@+k0e2Xe zXh-p5nR+cb&Eono%DCvuA1}}=_Cq_~Mrr6De)&?b*koS(N<@}%kr$V-`KObjt#?)) zuAtBKvzu`+{Yh-SD5}@WK3uD4gbtwN6#80MdLAlDZ?)}QbuZ)NT<+7jTuvnE74GHD zkK(Z_T^HGzXs!@A7easEijZF!*{@yr{O^TItIX3y(kDwX0V1%_E19M+|y$@wziXIkD$Wi}J?KG*Cjc zweCE3wd4HrhIGtRC^xlzoT$3n=d7HuJ1eT|f1cblf9!V2V@5}gjl?|un3EH0;CLIO zd9>Diy!GFb0^VYbQthLzdW@Vaa=hs{c?0P{l91-H%f~850kVa^0tC)b!e;n%lK?C_!62=2)+DsXsrb&oaeXL{4)Z~XSK{M~HqzsH-dxQ7K}-^-65(jaE8%-Xf0Sce2hpqK z!)JW_q*?q28If`P5Lf>&Uo877crN0b%GvJj zxIB-$alI+QdHla0d)&5XeCIq~cE5;wc-^+2NA)aj>DII6Zs! z_H=Q4xL7_2^jvp~PAA zw^!d^i%;f7Rmz;86+qfAU9l(wr;;D+GF97d583+pf2zuLNsZ>&jQV?rp5LU9V+ZS9{eSDL-4g zV%juTTU*vxCX}41w&N~6r`uEIx_MLMZxg@IW8Y@oj70ze1Q1wX;J$7GH#zRA+_t~A zYh5aCx25}PysfJ}wfAnw9jm44o3?e#I%aAOifePf>lrK`oL53r5qP`;T<|{L$DT7^ zPoVcT;#e(J_pX^$_YJ?}Zr8HbJw~yqxN~aR*43Wdqx)LF+b%WM^|6}ytLnY}xtRKV zEa%;{+}1odJwD?QKmY**9*@AbZYZbb>BU#YYQO92l**}jZcmlIF;~CqbEW!f|5Uxs z*Vfy$=rc_*ZEZP3hmY>7G3p3BdI2t)AN{8Q0BZ{LzE<m5R;nzQI?H>%FoUn;TP) z>9IBDx=!15mD=3y)iYttaeo_Yn`2zw#r(s{qC#%x=GjOn|0?*wH>czt!wk5+(-+DH4)bK*A?nEIM=yjLo=YOgozuD7M;Xk%{IJ|C<0IW|>_qxQM& zQhnZBpDNotwVm7RbIfI%>$u9fzM9vo-)3xYK4J(UfB*uYp1^Hx9_Pkx(pPh9UD|F> zmCmXCZN1l4tnR*HpNiFf)!Vklt%^CvYgWGNKCaunGLy#-%4b6Wfi(oUAYKEB6a*#& zdS5>^=6Wqv?Oppn)88L|k6|Bo<%3*8MF`(iNaR{6p{so=KYmLC?B$^)qQU4&8Q}TmUX{u&wtR4deRg;#f z63$oOG%y7vXq88L_@5e z$EZNOw*@TI>hh^sVnbWrkj1NCCUTYTgjV$=-kHX%M%1&kKE?ZV@^#tu^HXP*YTd75 z7^uN@O5BiBFwU`@ZLB9)W1@D8*krv^79gYoi~d*-Q6Ry}Ga4@wvlQ&T+?-!oZVoYIjQP)*;T&QaBx$fM|0i#!?7 zZ$3PsrwsNEj@4ih{f$(E=gL0tgbiQs)&9DEH>0H}*Tq6fFXN%fFBa8FNFr&*3DGBO z9Vj8>dl3z}t}B}-o42x362lhohEV2>CB2*24c|S{_b?@XqZLc-{%7J~z zo`88@%<(QRgURw(i^;{eVZM*o3|O?S=-NfVJBU;d^wDz_nTHF4a%i~$dL%A@&LtkN3&>lbT>cA*^kb>BZ2A5nuqsXFw- zlL|(6#M7jpPZ}2^25`CgL%3U%nMUP;(&`i}Z)gB(w8X4prIabV`Elw}>=rY#aRZs3 zGW$zX!zv0UlO6uM6Ehv-CA8WfR5FNO5fonCoBr862ln7>yaBts8Xr}kAUWP^F}cvL zjGB%}nokD5H6YN{#G@;dGHV=(^n4*~KqjS2Fg@R?J>ML@G(h22I<@3P)%4emBG=q-UvbKs;Nj|GB^=MsF&U;xtZ4xnq&~7lM_= zR%JeARO1r{e|WKC*pqE*0x;ATQhy^gQa7E~?qljdAK@2D87y52#`%)DM!CjKEYw+I z7n8|G^DLsQqM))hJ0XULX8$OBxh?v5S}l2yiph!ZD90I8Q~eS?_uN5Mr||B&VI9Xi zS`M;Hs;ZyB5ufY@(Pw!d6phU}U`k~tT!*o zNoLaw8qH}gskX3noEmGv^{wr!oM7~1f|}R(8V#l5HrIDrRJVO5@>=w{(>|sXX1G81^vH zrgt!d1GTh*MW%fq`f9#CXe*YQ5W{4v2VyyHHp9|TlXa`$!8P3cleh6yT6|7Vz^ z(Nnmxn9*fU9>PD%AJoAkk(v+dkJSC0rPIWA(l?ID%xEH-f36QD9zEZvEg$}~@w*VH zU*P?}i{E?j+YWxa!EY$|zep(KGrR$bEkxdoh| z_EO@?;vh@v*wI6-Ak`3Lm?&6c6B8Fe0>Qf4+X5Axs-MBeA*9!_P$wrq53IugNM<+y z6?6f!GME8CxCjCWgA^k8tVrk|u11mY|LTH{Wf{Tq03h;CaLCW=51!}o%Uci2H!zu8 zg!XA|m$!kkud-quY#(`lp#pmN?Gc+CrPsDn->jBZ24Lw9>5!dv1K(j6hn>^WVGr`G zuehihwOxCgoSh2CJHxpvTSKqcFqKP6n@W6^3J)x~9Nf0S4@KM4Ig@KM+PR7ixi4kU zsHT`bzhO!Y!E2kmc~S8;c;O6AS|%G}6|qxl;`)#)2JRHO9EgiCt`UQ?`}d|H2-@G zKt4N_&BvPUHRR;jfEQzWE0Z7^sA+HK~Rho@%bITsc$vgUtGZ^tzect!9T*}5gH5rdT5qPca*?8?2c*0nW z_`djYk$_hz4=Z0+6uvHW))HINlKZov^jqt3WH)7R`iugpG8X1w`Jk9}xv2UE`;*V2 zp$;u|vr2DY0y5Sk?*Q6b5x0$+p2~e4bjtxCpqb6Bes3k4t=-(t6#5RvPd*d|riz_K zcSdOxc)(wt56ECJKO+kO8yvVJ36^R%3fi`4tEJE(JQ8DC9;Ds5#K zuXO^q@=gHl$~o5zI7bb3$(U#tkV?4$H&;ChH(!o;^@PMY`5=VY(J&Jb!CERTwzh0~{?A`7DqQ}m!N>!#cOIPt4#Ndvv zMmy<7hwk0G`4{!=yiMM}QCmEt>nG|BqkEy#NgC?vMkDFy;Bx~}TVRKa`C6tK%De5; zF3gGkS(-MBpA(&oRYHXo$!|xOsy?50!iin+I;81fP+OFa*(a>?`sTX@*Uzfv65=)l zOLg~eV=NXBROul^*B3UHZZ=Tp5hqap)&jbD-4Bew`zIgYnGX|dFO8KPy(Q_O(jzN5 ztYGiBUpJcAxz`$ye19eOW7nfA8W*9!mo%mO7l1T!4Jkh%t+WMhUNx$iE@2B74xHJ7 zh-^;_=~;VWefZ&i$D?+yy1H(sTFFRDu)EgPkLBWC z3Y^ubrma5x#9VEQX71TqL!au~ArLPAq0lXnox9<)5=^;=f2~tiI@Mbh6{~t48j0MC z^jmY7x>x$~D$G6NZ^~SL#(d!jt>tC&sj#I>`sEffO<`3RF+XfRo`|G1&A#La0nMTO zG3IDzf!o)+HFFBCXeB*=@=FO=b5;fS(mq?qm4d!z{osG;4XAu=YE#sj9+C+44(Z4u z$}FBe-xqgti>N$vs%=-&0h6S*)fF8_i|{?qBOjzOURtTuEO-lf`Tj*{b|7jd1sb;= zm>_^>p%LH6cf4oEC*~z)560O=ty$>_pB27bF8hJ*y75r}^8bVzbSMUl36{apk>S|5 z-Mf1sLc&lHQ896^9r4ImY&Zt(y(1_VaXK7qx$lU>M0@SP1V%mR>s-w zI1-NxvH4G@cd$R)V=}CZ|XE#F>5|2Fv(*F$P zu>%nqgvA!iZ6XK}gp1|>BtQuw1W|W%P!uviRsm!o;}Ah{L6Mj+gIHuJG8TzOAl<_e z7_?wa6;*|zB7*39bq&pJr+$qjc+l%t6^ZqAb~_Y~hyw))ip3XeZufF_JMmKhn4Izs z-94tq99`Uef=)*#rC-R*x^nf}jofDxT0`W-ykbNmac7;&(naaMVNQsbSOLnpiSxfdph_PhJ zHuh~W&-L}Y@B8?__`i7GJ;(7J_q-_I`CiL;o!5Dt>*tzqU2RQz8ZH_D0R2@h4LtxT z;GYzLniBqp;T3xZfJg6DjY|gJ$&33`ukQ_-@*kwqq*P}KcWM7l>9D#emS)J-_9_TX z_VO9(m`33Zsf(NZ2Y9jzt4s z_m5ctjPT?a5JA zAXyOw#N!MD0d};97o-RQ>_yXmRNz};Cothdf#fIe`GJ6T129p54;npnrPBT=tX!r{ zq!tHQJO(MhTn8!F+6in0m-K{zfMb@}9&slz?F2uV{cvKG{V17M0>GYROuUiCQdkyhAW{=3w#P~Y=(zP^ z{6%0TKQo1{1{t6c-fXb^$_Tnuw;Z2>2n~Q1Y#N;|n56=8)xQZNL8x`Orhv244VFEO zz-`GImhT|fcWGdXB6$ilapyimX~=NKI~CBGdv`$iVvy*eQ*f z0=3*n0W^dN4R|Lwm-|$JWsVS*gBpYtZ+8)?WB_Q6p9%QLgsnLWv>x?Yjx&PipOpym zM^Jw+1GL`Zs92LF^&_bDB*?g-ebxg2l5g^DWvT(+s{oyDeE5yHA>UT^Q{a0EuKvHi zF)kpO1_RHx0Q*^Qn;di#C{QfH0ISAAGTK9d*>a1~t~tsyZVKR;+`tbYdm&fad@Mop z`)x@0Y}H_Z@53){xtE6AK6`@hV>B25^geK715bc7*9Z&|juB>9u=J#Z@~%8wpyi$z zGAeuR7k)M}x6c$HnK=(q>gH613WGa-s$`B40Q)R%>~FaA-0guSMu6_|B)%Jb1%^(6 zw6jM0C@}WtAEf{#8R%@wRRzE^B1r;F9;RQ`bKnBzqqA;KuI2 zD*R$+wne#i5j1C!3!ow}0EoPL;7OkR=iH4IYCxlnbZI_GaW{to9QlYW%9@$1kcABU zRBw+Qpt*uT=?|uQvN_Kc*WZxV^-yg*iJQ(uTmjHrLAw5%Ynn*;ifujxM3@k!2~doA z!jTa6fOmovV+Qac4SCQ$O)++l46BlL_@GH$Uvd=ezMg<%%5e*VE+(*k2I=1|AqY58 zXntgNaQzeo8g#cdW5iV<#?P=Xr|mBghv4XymQuGbVwvWY}*Am$46ylYLMJOy>?s zpjE@lP=gbh2&KMPsdfFyu+&};u^~?|0HFCco_)ox90M8;0WwJasF1%T1u$ z-H$=~Ki5R4AMW{JklR_J=IV*nlMKTDpnCp&j;-R<>ej zcWUqu*#clKOd&#vLdUQm!`Cs9t*fHYsU7qAbfZaO^9;P8<%^H`J ztxKZNv4_hE6sDNffy};#SB3P*dR-+Q1MANN;Ba6XIp*C$W+b@k_eHE}b#T&T|4IWh z7s%oFA;2>gq_yUeX8yy$T;`2y!gHrPZ-8#w&3(8fr2|IRc!kAf<# zd1RvF=BSC&AneNq9)|(YS|mI3+K8dI;QMxi>u~N3eL4zo=a62lH~ENR@qFD6TLN>G z^-1_2z*0~Hg>Q3kta@V(Y7TZ3n*H@I+^g;DbXFj1k< zmtwxb7h!LzgfWn#MsRUJuFQVGwA?~67Nn`u9YE6Mq{&fhr+^9NKW4~Q*PO=A6p%*# z33*kj$&L=B0P>mIly~7cIc5)(KhTc-p$4zMkHJ~6qq>;0v0#kH1mU|0-yKjZ3`|b6 z9`0ys5q3r!blYqq17*jq3IG$bJQ5sb=jRc(2NXd09I%}9|q2{)O(~m;LthI!h*X;7m&%qDrm9N%s@PS9}a@`&cP#Far$ulku2IY zKMG(kpbY!WO3r=x$qY)rBFsY*X31t5Q1y;l(Qty@m%dBCU^^>>jix(=dua7BrqmZN`kBV+jSA!c?>8;dcs#} zCck_v1%cd=Lt<9o(c&b-W?c=2-6O8nK7I-WvSbj)&&ycyC{XA=fIElw|Ml4NCP?Fj zr#Wr;w5*GBNYhd9u6Y^KjP>TE{G#-q)uUHY^$&;8bjX~u`BT5FUWU7pYpDS5kZ~qB zV)KVl#Y^yiNT-$pI2^ef<3cVcdzA|6UIsXZu8Z^NTFv9&rc>PDg92c>lBS zl;DTeF2W()FWc*h{veGWk|IE#Gl2O{1=Wo$>>KuM*TwM#9nc#gz<%f|FRK@*dTBjZ z5}Z$~BPnRU{sTESv)2MPWn%X-Bfg*odM<15<(PA(5&vm+pd>U^4i}4!&%avAcjF>L zCpP{hD-h4BZNwdi4{~R-EZ*L5;704A&~uA?@cjpK_S2k5L$nhGxPQ1JCRwlH!BfoO zLumoz0(SG}X+6o)@Uf-~c`QgU3wV7S6dDX^!Ct%1b{E^>Lf{d^o+QH>Yy-5#7~ z&gOne4Htrk3#osTe>GeChA1!*C2AslA{Ca_|Eo^}6*#jn3BSC%bDGvdl}!a`xm!Zv z1B>P_wQ67Afb(o3lC&qEqzaFgv5PW(1-`)n_(zy*7zy?$jz$TziC z9+ZT1BOfUH@PlY9`1x;sV37ypNW;(n{grMuxcjiN+-`ILHbJ}JV9V|lHvr2~7YIJ1 z)vs3fp1Ia;5UUbRErh)Ma)K{anHa$*w`uD`pNn1u5GexqL~jZ0a^7wQPbpb#(1oy1VDO zppTFF6moCVO!bkc*F2Ci=%)`}&3&TFRgk=`6l+|!*OeL97T)Dr#&WH1^(W?)T6Vlz zNk5%ck^6+l$ZpB82J20E*Py~~y6A-x{|{_Qnr!B&lMAWbnr!OQ#F@s(boqhhk7OD* zpb&-i>dG6G#{|t?&PadQ>=Ox@gg?Y;f<-p#uH+YUi3xL{qp zJhxM9SI{oA@PP}DiQJa+6ODKy1NDukak@U!MLu$n)R5Jrul@E9O)-zzmgx-|Di6*^ zt4F5eoR^v=b1M7oYYu+-J1nHK@1iu&(0=O@ueFro%=x|O&gpQSCQd$+Tvr3+~Q#@)3i6cL-{ zRiaC4Zr_taUje$?iYph=Edz)y*~)UPZ2ZX&_RlPn&nlw;`j){ptFgIosqLo;R%2DH z!ZZge`dkGeUuSNV^SzmNQU0}*N<(X@z{U1J{y0~tC$+9ieph|8nA!&HZCZ@r`IBDSYX9I+e$^&atj> z_xut{NVtV_o8`1>i*f%7-F}Q0x~;_-`JH3ARDL#VLq2fnUbclw|Im-rr=RriE(hnC z#oo9meQ$g-!|ELE-UHSCIcl=B5~%zG%%tdQo$hn^4kk6Q?q?-*i2L~-abK^l2pS^S zw_2K{YG{~Y;8ePT&#^eq7GhDZK!@`-6e-|qCq8`toL;0o@S|<4%e>BF`ak9o)e1hx z`~1)yK*lW{QeBU@U^QDdueR}`=Xup!!lcz++e-J|*R{qyRX!RI{y$k-0!|6h>Q>8{ zrcbIB3@&cq*;3w#CYq(LES%fD^Hx2e)#WuQRNd;}CshXn^uQ5b(4n{k_p7A#KGNS} zB(-_GtzUNTFXN-F;HCE<4DzxO-nJ2o$AYe%p$i;oliCZ}$mirue%rPqlrM01T~Ri) znHW>?6dT;d%h2(rDv{;xQAp}BMsn_*k85Vl7?=@w)J4bCUQX4%*SA#YJ$y@&yYgGi z08iV~oPm5rcP0LmxD>tD^jbB(CuA_QPYbu3Gpv?`hz%1Xt+fr{KD4P#AI)flTuu0| z;B563h(twkXKsrXQnk4FsF!$qjkA5WvdYV?Q*mLdyXjJ^{c8=~0|oS%Ph>)NrYg@m zEnkNFwEMEeYKfd^mVz3Ldj_*%&`mh;Owxk41?T4>;>yuR)T0qpWN=@tyYI|;L>f~r zCc~g`<@wS#m68m6%{jV&{UoDd)!GE!M7hn)e5>_p+0e>ZUTP2iQF|j$e+K#;C(iJ- z;BjS!g}qjp-CXbFynp6OtzjO8R5C7l^vm(;TPSi|sk^T~?{{OIzx67aDOJli*$33L z6+A~vFtz4XO!XyjkW~X3tLtC< zqal1u93-J<*xipq11wQU;Q1l}FM@&^7k;)G&M`QLEe-Cz{ysdn=V+ zlsmLxoqvfsy{DZR@y+~9P@L;;rYkt->&`!@0m~EUS^l8>Y?(e)r$bj47$8!>O`~78 z>EO_LVHL;oP>-tsj$b1}r-I4cf|;~)kgUiM3*5)DRZFgX?-XLwn1^s<1j*Z0B>#C_ zmWcC)<&Lwl*a1r9Bs^k?bhQufbC71(%Q`bY))`20(Z3`eMCiU_A^UJ|J9@tHFQ)2z z{DAx@Bi0&*C7xfq^9IUec7ALg``PNjUCeZM3O$;rR$+L}YC*Fiq=>%;eU}QI4%evQ zvVCE`VSAXBbomXan^2`jMTif-dwKsSXW(L0jpPwfr43#1OV4EUo$^nb?MTM7O^-{h z&?W}=hRHKr*0)e)IZawi$iI{Vo|8c`Lk$Xe7$;S|;wI|Sq*12>myR!vAJH3BIDVS+ zBOzac5op1fGEF_NN$j8_GhJq^)#;XPUQ>Q0!+P!9DI2Taeg<&-uQu!5H^q|^M)%H6 zOrCCGAL$nB59)En$8Xsdwri)b*7;Xl&p>VjrcSgDPU^Ij@Y@B`k;38W5LMBrS-rYSrS$O@QF!}IlC=#{e@gXC-;JL(p zE|_sx-Vtm3W-iONwBamqQ7vHR&(GMw?%&l+T+pyi&RRS0<&_<56?VJqo94b!;}8k$ zMdy^|nkDg2PbEM*?wfXjJ-yiWq(M1dC}Pb|W)@xJAXQ#(D8lTc9VBF+7z}YvyzZFg zxRJf>8qzKIg=x-jM%{+67p}@E8G<+r_fjV(%es?uLhbT78?2>+%rZ8*^1D3Cc+|>% zB{}LPWe2T#Ux+`Qn_lytt8JdroL48I>{)t^d-jG8RT>7WfX+)ki+7=*G{4@)-*yQZ zQf_USxYOD=L9U;^IqOMndaHZ7j+<@XH2+vbj~R9KjLuHYCkKu%50wlGk{rsq>yb6zFTCuy_4VK!)I!?9y?}NI2-U`3?-X1Lzwo}^=f76|8?kl&^ zZom7l?qZO-VDfgI_Sv@qdbMN!3JDWEh&|0tR^?Hv1gbnJ8Z8*gN}L^2^||HD`o*>H zt<`vchSh;IRpZ2BtD48=jf(9b1HbE-rnmTM)>7qJKH`0>FF#uTXlOM%Kd|n_A+oYI2ZDO}FXuv&RHX|*ysnZJ~*B$MT2wSvp(pX408 z7&(_|gLnk}Y&mnbHZk24VHzueLS&wU%iR4HA>kVtpN@Dhk^4372{V=t?XKzh`G4Ga zy|Z@5YAoct)ZVTalq)e}afbE6qIu)QGyO`|yUAvbAC4RCRsS#>5x#s2<0K*Of8d5F zzHDU$X6pnmzS5`RelelTOIc=5>Y?*vHMS#WZl2}B4Zg*~(EMm|z+wizB$HrK(()u& ziug|1>VTQ3Q@Y)9V*Vm--(mh1JTh16Y;8FFd**O7WX0BYd+^*&*6lisCN`8*dj`%; z=vLnSK(Ku2($WNd0ccGY8Ow-u#ciWH#b|+fxi-F^brs6ccT(*^t-t8Y_Ynl^F>vOb zd{Tgnmbe(79llz)z1F@fd_3S-o@*+7D`v4scYnAxzjmYVN2^+$1FN*;osppl^g;3S z&-hp;7q9ufkx{9wmHl-2k&&|s$_X9Z?RL@7DY6?a6Qa9aeS)sm|0ak3xTvrUSjWOs zezURQ&Vcdde-pf|X5@3leWXA=zk3Qi`#Z$OZn1%oB7$n2Ye+?OAZaIGd2sNa*Xm2w zmqK_?3q0<~VCg~S*3!|nR0SsE3hfF7>{1)$b3WQkRsZvF7B7y#kzFHMCNKiSb_aFG z%NL>o2c~hR8>u@lQ>>QMiSPI(M?#YX+c6X9JSh%L>*ajuKSV3B`q{@W3_mgJ_eK+6 zd=gLNCKl1Et2$}-HMU!-uuiLdDY)=K`of?pKt$B{Z6WmGE)C0(t7+hlpKVGNIbZQ@P~)gMsihp_bb8#I<;;Ks!A+LYb%e)3@*}#jvF`E-T#2M)qEI3 zYHtoGAz+{y7@yU_5A432N{M&dGv=djJs5eGzUlq7TnXj*22v~&Vo`M3pfh$$E_Z=v zF~`#HQ=fKnk~oFjfhB*m!ZycF|IK`|gr)D=)886i1wJqPY%fMKr2@Qk27#M6sr^o2 z-nygRryrjNS$b!Kp>1MWbk@g9^T+IGg_>&~WIC;sXXJB}OcIP4gT`e)cM;Fi zZ|0==4!1p7e%BO>ORh8Td3M;h<|u(2JqpxcrF1o8z3(1(b1#)deCA_$#h~~nW3ges zNrgI{y_KH)X6D>M(yr=iH1~w$0cNtOe+cTo>}ef!HT zYR@kT`eB9%ov!wH*#39Bf-D z`1S|3DyqnU-YEdQhoIXQtQ+p?y7Gr=D|lDm19BSwdZ(`XJwM9WwuCUuZLL%txNW!+5WDfL$94FZ@BaIgZ4#c(Ytuh*&Q!G{AmBpK$j4UYKb7N`QIjn(B(-_%x5S{+F8p| zTRe~p)gi0@4z-S{)n=QPF^O~$m#`4{{66aSes%3FzN2z(8ycgDJ;qn+Y&=R^5Bm6$ z7)l5uFSl#~dYA&BSFbVmNo^;8pS1|x(cuew$XadL9^j2}=xmi;@td`EUd09B;!@s8 z!6=C-W5LgPu1=M2Du)@kDUbmHA9Wa*;g{>C!#6RnR*q};HSA?gD8>fBKyG5Bi|pb zL$#qZ`Nm@SoBn@1pxYG^skQH21OsTni);KNsavO5)E@a;KT`2?f#r+pao33T-*tA> zKMDSNu(%a)6@ZiXXERsw4`dn61_di7-x@iymMX_&ExrBcyDnEA6u%zP0&Y5W$p{Yu zX)lWbM*1HQ$h%YFJiXRDQvE{}4+>3M5jSJr0Gn-a-DP1XQbj< z52QGf62{L@?U-QOKozw;PHWc+RX9o2Rcdm8&bs45$IzB z@$3F|R;c3)z*^iO^6tvgWV+8MHtQFxmE;4TzY)(*=)p)7W*MT2C+g&R2aS%y8XF7+ zKe&M5`aWjCi?pe%!1Hnj=d^1$p^UeXek_k}RBn(9aJ>DroJuTwDGz2ba4WCouQdyC zpEtsvg+-m-`i+$`3&}r^ zWC+(qN}=~_PL8tCv$(({${q!Id?j)G~ zIBhK?KI);=bh<@Kl(DhElv_>y^XKGt=o|)Jxwj?+#%>>l;$m=-u_6XUU45jzKe4Y5 z&*^wGM=>1@Fl!{eSKcK&Bd+2oz$`46JWu8@zHKh{bHi>l@s@XFMJqcnsJI!V8|^w( zok;mPDNG{XZ`#8Y?K{VU{$NlM z69hA9O&{b98KK+0ii^6}^!xs;TG0^(>{o8%pk9p&O?Kn_41=%8(c?&mCKHFVqZlQM zVbaT`@@$KX{bomXdd98~1aWj=cJGcR0>CQ_DbXCv2lpM2nE zX^23Jor*Jw3QHD2sE|M>#t+c7JpN@O9W<0-#N~IkrQ24ZVe!n!MW*pNjNJkM5dc_T z!tK5iCHBcQ&)uW^-InditW912VF~NKgN0m}jp&M$1liEBg$Y+gUOi#psnvqM=y3LY z8MS$jzOLU%+~-Ibr5Pn&6U}9h4S_iUrnkZ7Jo{8=ceug#3?yP)znLwD57tNuUhT+% zx!l{-=h&Ka!rZql?Z#gT`B;(xPgqHVH0bxw>oipyPl@1YOyp3{eZU!3xL;R<`MQn) zG&kX@(~GS{;#))oFP>vd&j~x{e>IalP3Bhg`RC?e7NJ8Az#XXkUocI!IZf89<*}yt zH+gsZMO}86rMoTN!$rpNwplTDD&Q#SHiSpw=(*3I`cq4HQ|IUFlyL*9iXV$h-*ZJg z7#m_0REV}SsWFEYq$0S2lTBZW&F~izw@#hR$Jwg{`AS2PCiH1@e|dDG$@{#9$531{ zV0jBypf>e1j)@zE9(6@a{}NIn)IJRK$LFQQ^X?lDD)CsCcqhW+6#@MT77NEOJX1S! zWZ1ptZ9aqYCSx9U+`cL;SW z7^3Uv03At)DPjg7n0+$B$>Sp*46WC2QGfeVBP2oC3bE`Zr9>>;x%;V(0jE)EvrwUp zH-E`eXsMk!&CdMYA*)DBAX-3Xu&y~R!nHSe#tP1YxuC-jY>BZHjw0}J=YckC=l2f)>+O~)n+Q;3AS#5iw3ssV}KIR5d z75qa8V{;bsn$-2bY@f>&I-wX-6vhh@^4%FOeo_{NsYYI8BI`dSh{6b(E|qSz>5=2G z8J5M&=Y9|h9pu-kZxrjv zryhl`p80f}CSfg9-DOVEehtxXXCTvWXEMKRwfQM03c{|gd7lmP^`EIvFmBzd_4^Fd zWonKBIP;j@&dM4|6z~-&@Tf+uCdt)dx-Oq;uuAS~hZWg)xRwUdf^d%`W$rS#zUf~V zg#2~d@+S5Ul-Z}E-5&v&O$b@gibTd)&6P9OeS7Tl#Vl9acnCY!J_1IS+iKDegm*CzW!sA4bJ9|7l_I$Pvl7cudIJfTG(caIXn!I1e`=0_b- z=w#~vOPXWgQ@AT7+9Ul~lC(Q+26W#%9KvR$jMRGD;p1m78Ji4FYyFsY;upLkNNSz< zvx)*Er=d*d$Z*+@vpDC;3qp_C&((Tg<$-x7OWVtpBOrPb7UX+R9yU5|KmK7+&f*+S zwkVLlA}^VKBFdE|lmV(ns2*v~^f%}54QJk}XeYn-cWukm<%(JJtK^+pkn5y=1Cy4y zyIY^h(iqLNGQ`izTM6Ry!THQ_xw=GR6}doz55$JjA`5*#LM8yAnoum>A6Pt4m+uGv z$IEN#?g!q^ovoE^H)=*W_iK)%#ix)l3AVbEJ#1JdhaHyj#{5RAO1zrMxc{0 z^(emO#3Cp>0o9otEI#~h+LMHMqk2Iol%%znT5B+dm?+&9RZL0lt63bfA`L z{Oox&Rs0EYCF?s@rd$TD?kUH z*z2Ry?asYAb*#*x!eQNm3LQ1@8L~789x3bGpluB^%i}~gYd+P^@J+LH z6@v-ZCnp)Oo=CF@_XNq7KHUjYG{@xDL)C%7a}TZqY?JF_5K+-3+fqs4Z+fPGOSpfK zVsTlX0-KGPmxv;}h*I3irLC;N0$%Wjxh$cTzKiXzyBJft`r4IR;0`G+xy<)@+6X@llCYn zA{@{4HVE~fcurfRJ)GT@)=Xwo)YDL~Cc01i`8BV*; z4T37=3TkC$J*d%1Cu)aLB6d9=$OWw9LZo{_OyS8vL(LTqHCHgp{T_oA8(E{C5a~Gh zh6hkcLwz2vcndj;vdT=3aaT*#K?bkGU@Hpk*tEz999OxSL_TU6-@M5miwLH4FFa>Z z*a5XDPpC(7k*=@A`V(5=Y9<0)lS=+W6(VT2+(#DyOQ}Od*|(FUOHtD| zk`Z3qxXcA!L;do8qGlLn^6|(S}iko2mp-tPd^PQ4Mm_F@o@bDy?1`Tx(p(KhF#&PBu3kO6ZUb zD~e2aK~62g?qA6<1+!sr0YSa!Gq6@$mH1wscZOzHPln-a$Zuqo(EEg}zporq*pbYn z_TlS|Nt0xJYXCo>OU&Ter3NF@75utdMQqxg{IU9fySSY{#Z+m5( zE1SWSX2d1!FMg%y9W7o&4Y*0+7_c{d$`FShX2(T7aYSaVY9t5S%~{jiCB;1|W_eG3 zHyYZ3ULj})#9AiK^s7mG6)^-ydWl`H>jK{p;x0qt3auA_$UhLK=Ofeu988R=a`r2fWr}@FUi&|9MybA<&D=(=%X>j6+DcShK@~^%!J^||Gunj-& zGceli7rL0R7INre%0nw-(zB#&VYTb+0&V(RRQGL{D}&7sCFcAl=E+0~*rAZ{A&rW( z`6ctC3Vz?X<74ZeegjG&-s2YZuB`RBL^XGCx z$krS}K|Dn=!e*Vr;l09=7_i&gK!iSC&4r6@QSDmAZ{E0#;Pc2WjRU#A49tJq;@o+y%TX5SE5UPB;&3VF^)FrdoJa`fF+3DCL zRH+>>n4CX=m}_Lf{@>h|$5@@ezR7h^1Sj@J@5JnGZj)hk&jh!fM(7Sj#^Q*~?$tUK ze?<&BNXMwocMSSE@I|@?UWRx*CN;0T`w&2>j(DF@ynu5UOdOl^J2u&$(7-@eb5EQA z)$6Nhjp`PI!K%8; zH5=9^Jm5RxryJuhu)kLdjQW#c%n;Oj*T0TtzIx)1q-7Hjuz?bq6Gr$q?`Y+kwQAoPeLYZ zPVi!%706l^S(2>yBtSx2i0^9%Qyw})DP=k(H-Y1+N# zX_xn&gk_)qinQUuZIY*!YA~ENFpz*@XSVW1-WS~tAt!<4$CQY@n8F!mIYfXSOE zj^R9;+riqG9KZZQBJrUNm@<9zqaj~YEsD~zP!y50&rl@4!=yTX&S|5!2uT<8U2idK z1uY-kOWC-n*wjSX9w>6D`By(|7^5|sMp$+M63kgfHL2+P>EVH!^M$0*Tnj$SWj#NE z&ad7hy-G%rtJ0>m4y6~;m_fw1JHpSShL}qrsEhj68HhIj>pAV`;W4BThO-vei%f$>DUkwBx^s@57aAsbSMFc_u5Ux|k016pFXSpOS#|a#go{H_ zHHA1MhN2t`87FQuJKbfDPvWEQGBWIw3ehJhO9*&wYXh!=ay1C>w?`VooQ#?JZ)@rG z4J1!*4OujHebVnH`-AWT@>7(N5EZr|Y_A>_f-e<}H>QVKS>V-}M6!7G{RuqN}l17TOPG~Ddcoi09_qB8}2 zbmX#4k1Yb~xO_K;U@C7oCS=;ce?+(lfvcs%ZESLYFoF=6u|Mp}jC5_TjtOoV-|pn& zKZLuaGr`<><5;xVdvQ1UXTA^{gt1JPymcn1h#!YeWH?OYe}KS@2GthhD0&r)ZFaIO zgr%(4!XjVnXI_#b~c8TK0_S7DJi`_*#xsC&hxAR)RDp;9~??w7@4(HjWMWFMKA zT5l`M&uEov9U%10t2v6}Jci3i6|PGGe(IAZXNR6(CkbCfsu-Ao99$jRD1LwciHLEb zChit{y?pJXXHz0wF0Ko286zL_{~(^s@Eu_@Pg$0Qzae^@=iii7Q@CrnNq zvlfx#5MegOS_NM1Rn-RGiJvL6Ck~ZVGMBm@s1wy;w(6Ne>bc#;x5+dBjfcW@Ppm}K z+3H}r(ftvs#>)nlcQAe=8~+Zc4(3bD*L!cf1P#{tijErR>(Lxm#S5Y&-6norn@o_} ztu?PvLcgE@K<6##+kuE>q|1=E?Mo}0MJ`y0z4hp3JLbSm%)$EKw8|raUys|b5POl* z>Pjl^w-Q!G7bYoBW2SPY+|>PBpOLLUg~dI`$SuCul5g3s8h$e-r*0Xp2aAhv?u5wA zoNmXQ?DbeAUaEz)PzTMhK?I$#5Gny{7IM$N&S;lMV6tSv8D;>Ke%$_W2atEYp@Yb_ zH(RzEt_%0sOU;UH^zka(hnU9myF*Y{H8h-Ex&PCr9I28B;d#b4U;awCo^Qh~e9&Q= zF2jZYE&ys_g2VfjOYEaH@8tVKHmb#aMOb?T&C*l8(TS5CU0Wc2UndO>CLLueL5kfF z7IvEOW6W_-svE+ccEazT#wL{=l8rD0p=HV38U7g2)PRg1hS5(1br);UQs14_`*a(gkz zxa6Fo%9rt#y`a3xyZG9fsJh7sU9Rwwvd5dQTjiUDKhp=+3Lb~(W9>|D5qO~si| zKcBoRV53@f;l|$Z4>h0jxF>1A2L=(zCx^+TNGpdj%st%J9|!BQTsHWMQ*AW7x)k zOEfebn$(LRbmra%D$P)ub0r%t+E^KJmmvRm9vOhDWM> zf=apZ57lm()}p>N$==>!A%(F=EEo||vu4MO(eFCBYa9(tcFYHYU}aZ&mT^qHx7LF~ zE^@HWUv$V6yqPnEpjvwg?c(fgh@?7wu#uTA!$iOk7c7j%Spjr+os<^{sbg*0Q z5PLuYFVjM_h8@XH2O`-n?{nD-liw4&d#)hl@wJWBA_Nk7Z2ul%kW~HSFNyEX&d-$e z&1KKo3Xgvf!{I^QH-WKJR35?nHNO~QSm$@2Bd~Gz!&4osHuQgzFL{*n*&R&e%vxrA zoheW%62+ZZYVejve56m?nPTtx15IG^AE`t_H#WvsnuoLjAzvT)cCS>jTsipHQV5~5 zw6LVVic6YJpoFTC`(jW+-QznP`<)%>GHhF20J$m+I<1!)iRz0hZ)PpCp4?})nkuj` ztPvu+E*RxM{E_(%Lt`9i$VsMgo#0A%8}RRP96fpR?xL_-UCwQ(LkyzT0##?M%I`My z&7{(&FCJU4x8O*7x)N^nN4v%1@K;e9dcSJdzT-sZ+U7$W{ubQ!daqm#MvA8To>?_Z z-sVFfxR!fc?ExQD8{VHV+uj?85Dpb3uk_naytb8dk3TEBf5^~!H`n7H@WuT(` zn#dkXK{KAFJ7nmYzSY4?ss`vGY+kN*xhUWaVP)p}y(L2Q#GdXS{iO$rySBD6++6Z6 z7x#r_e_~2AE^r1y*xCV)%NF@eD6}z*9)uC*X;m))8Fr$8*FwCW!+v|4_H~XgR>hKJ zs@OoNW*mO5r!KkN9Fe@a-WuEKqOjRUa=-aHpleBLOV&@_qewO8LmmRd!7M+Og8tn4 z%QvK2A((SES8WW=uiDKBEMZSk9V zmvjE!*6(8^O<6hZ`;=gn-3^GRD%;N)ch3MmGoxBVYY?!M>?*r>7GN4+O zc+XV0x#6tlDvnNDNRbuRAsz2OJCn2^9iOtRRrxu`fK*UBcCP4z z#Mph+c=W+)sv%Cd)@mnqYitBCXA|?s=;CQuaRdW$c=uXpYTG- zZcHWgT!x+GJB_$X7RjQ8%KAlZHtRy0ky|qP3Aj&ynmkjNFDIxMDT$fh=fw|*(iFGu zH0G149g3ei?=qIp1aKxdBS^HVA}5Z(wU7y%Q6}@93zmImc)EOM^xWXg<3s%H*>aV} z=mn2t<&X2}rp_U{&dJ--voA+;bS6G`s{ahn;L#&f@B&YMc6m9oVLyHOLAzR5 z+ip4zZ-;t*99c@zPRX78fPC_Se34(yuUXdzF^S{1vl4IGsvd~NZu-wt%-HSTQ8Wv7 zDW5vYnaR{2>KL~AN~nB(6{z-`*$N4EFntW1U(v-YCvGJa#&0b= zE?3M!VgEuc_DUXgu#E|j8Oqq0tyz$3UihuLD^*C$Z*Baexiu4T3OwhA)SU0*d&hvl zyPOl^tbb_Ve7%FIhTGO@C>`_5hS~uWKedsmuK2Q0fyx*$hdzRJ(u>*4$C5hQH z*ng^{$LvT>5VV8>$}s4keGU;kv?ZA8)_GI(V4PDcW-5-U`078FhIY~j>qq>~J!fZ_ zb%2h1_a$jev2;6T6+2Lhp3~_FwjqtD_y5I2*h2N&P(&g%j+%oP&_Kj-7yYj1@zXW$~K1J`)t7 z2+P$*irj+w$66Pp6(IsFWIB170c#CC-*qhnmAIZoppATNZWwj-;$OmVNfi#n&_dX~ z3xuKu+_jWj)!zz%0moFp1yJY$-5b6(1rW2}`^;){MCT1H)00ox&Sk!Mq4@E2F29*Z z2$0O~6YNbcSN>3NLEU8g&$!eEcPt_tmD$s4wy5K-vKV;DV!wHkwD(@uLhmB;n+iZld#o@_tpThjHrJC zR|)@b?z!Qco5B*&8D;$fRpPI?zC3`iZBGc>{(8+r<&}tHnau$|L+}npj)RNXu?pmj zp_r-+adnHHJn((Y@#WEF4&S~ZXl~kcxkQAk8&N7V%&^xx5kkDAa zcG`T{kMf-~=e1{!fgxSlJudgB9Pj6R*$8uEOjC!;-~UbKH&E1{A!BqD23LJ%x7s^} zBz*;ML5wF1hfg9Q@vp}nQvvdB+7OdaxC{+~=H{Dx3+ZE&snUZqkZ>QU9`4 zFAVtJ(;TuzZfvCD7Yv@j3km5DziL@Bkatw^&FQqmYX>FoF)Lrs`0bz`La4dO@)@#0 zn*(MlGt%SoJ88b-4%xS5xN@P>)YjjlJ1E5hqvqQYPyTaXlif+DJ!p4QI(>6H>M78E zL0|J0j}d`RNOw3%^9=2g5Veh`<3=31@|X{O7oHzEGWGpQKk408ZeY3cOdcOp?kzZ< zJR&#-71_zsJ85ObfxX9kGJCFxQHvDtyRfn$cUxp`9YrkXO#_`hdA*}nX)MnsvJ+O1e(G7k>Mes{H7KS6@R`y*KTrnpAZR)Hx(7-VN`H+ow*>{Y+ha znA7L}^8R&)fOqWN>6OdtGYUkHboYr8f6sF=vEtCbVz1pzDc3Wu?gm`x^U^T#z)|hBaV<9zL};3_(NY^L$6U}FbILVMP!ZA8v`n#F5D_q!P!VuJP`2lD zX}-(r_5BmR{KD%#>pkbW%Q@%X^L`iGD7DLH&+ro4F@g~|E@eDhQiL!BOFiKC{~&ez zSGoTsrZY6XGes91+O{Uf|9c(hUzh;o2FgPkuc=Pi83>(zUAZ3UW4z?ql44uKub?In zzAN?^uxN6`~_gwo}qoSeVA|W(B{!+(4Rre;}grQ703>O?col6rB z-cV+Qb1MRrvPX`KCcriYrkFFDU4DIJ#;$(RTtXYIC^LO2xIDKgu;RvR7O{-s-mKPZ4?bqfjaW;K9#7UaXa?UG9ho_xj{H?#x1vPK!co@U)eRom-+DtN=i`~TS+CV zGgu!wJB|Nv+Gk%ADJI7^Wl0!c6hdsq&jqFP!U$f)*tlHPz^PvVU!*jFiB`457?@01 z3Hw;Ja4wDMbN>9l%Z-iun9{l_hWv>zqF-IZR5cyjgt-M8i7hpZ!|IHZREylQXvAaC zTIlbg6%F?;TjnuJF3@pb5{biPqWBnsz#hrjsUeF7%)@U?CK6RPDAcRVE%D=e-ZS{_ zWORkv0wphV%JIY7CBqon^st+;dX%Y}!c>%!!U^|_7nny#vAKBleP-N_qeCx&U|C@W zhd6WV?;oEKBPIR)Sw*@Rw;OLQU*@g|k4Fp7v1IU*v6 zL2pRkhd;9Yh$HvImaI%YEbSV2G18h?3*^l%dbXt0+7PtcE?B81j*CzUbIr|1nVw^n zmuHdnax&NR#o4DDh>Tcn?F5xEf>w>J_VVlXq{Z3MhmIizG!}d%ff{42-}dcT=(0;l zCcU&{nC5f*xT_h0u1Zpi4$C{if`VQeaOGUotGy!a(TnSyjH=-mA{uw)j?y^i;}wXTe@i5~{Be=-&6 zA5Ts;e54fDU|b?fzlG`_gA}ag_ntd=z@CH(20(i~f3%R_q(qU^lF4rX1tdZYSrl^kR8R(8cd`oDVi!0suqX z7I z5|H9L&?WsB2P%muU#!a-D85{v<4m*J6F9frGGV$gTxb83Jee-QBQDR#vfQ)Gn77z#lLJU z@zL`&2_1BNtcOY*q5hIg9;k}icXX?5FvnY+5Np%iic;mZoq>Mldvlkjg`MgLgSsnnT_98*53t_cc0ebB z&<4&7T<>>D+~P1bQQasZazDEy4*1Wba@d)fH(|AbV@C>|G_TyUISk`bC#YkS1tDb-WfqJxrL$aOV<&0!@cnbJ)ViZHu$%zON_SZ#SZx=XG=P8JU>uyM|t%YfafZM7zk!slF9Az3Ae3kl{S&K~M!`a5V)!G~Q(mR^4p?`Ivf@S$F6I*Vi;P+O7CFM~SYXjYQMwi)dmp-Ffe6P{M`i9yuT zu~k;;wlTKs_q1op2)gtlC5Z=gyJ$dGjl1p^YR=s*udY5H2lMOXld-v3F^FP6YQj%8 zX4&s@s8p)a(36ld4x#ppg~JPO-X&IwMLPRqGPm9mazD+;@s0#QXi6lcI2N0tXd55D zjARmqXIecagCBXPtD|xZrVF;5te4!;b}<`HoIl+kK^Gu+1iwPLiY)r$W};R6P;o2! z(a!}b#$z;z_`ex4TNKBZe+=?^jXE*w`&z>RfPSWL8k;AZ04S#^0F09sg|U1q3%P=X z&rxI{E?Lt-?uamNXlrX5ri7G*2BMReIq7o+1c}G8EU3$VxkcpuDJ*{~+vkCLa8bB&OC;=jtw$ zcqRgI~#{xc?G#HPQe3(ooC)ka}42L~4mWV(jX_@m8wq#juu)I9aOA>#0$m@Q&U z;V$b`r`c=F`o7BKcF_KdOTzCONEi%Z&I-(In~Oa%M; zCmS^#n&FFM-+VPQbGyD=F=e<4EIzSN1 zY%I~eMe<96bdSo5vDHHbtIWEv*i4Cg4dNz0d>fyPzFUHxbwQJY@OB~y~FxEOW zbdm1qQ~bJ;LEzTThlNS5vcNdvMcKcwho&hi6Ai9-gVA(`vHUrGq_;@WE?49SzZY40 z&g;yw!f)OfZTtM7rluxW!yBOC<;`zTiLl#tvcR7K1W%eJ%&f{c2^7t;b5-u8cldG2 zFfgS&VL1(U2CFmb7jCCmOx$QW#~GO1@popfW&CKq0cQX>El$Q;`!(c11LvPb7LfX4 z?_}?O(P2qjzKeB!tFeVcfA=Q5`N8lh@BS{gfPjFou#j=-ZxDOpJJA#?!iyHQL|i|Y za(^DjRWEh6I`riHS1iU24oe{i+Ys*vsxvZj;RI8UWSwXtmxfTHDDf!Z(h1M6%(X8k z!u_2V9;H*G&6>(}>({>wvVcT~y_6^bNZLJ+5e=mUa}1n!9zTBEtm6BU9DyY&p;#bz zVTFnft@c9Oaw<`KUtM-G?E*?|O`PGzal%BoOUsK^p(C^wRmYW0pr0oiTW%mkDpxt0 zdw$dK$>L1ttlB9L(djaGT~%zDz8re&g8#-@u-rJ8aBO~ER8%G1 z1iFHgA4qgP?oj`;f8d$cR1-(Vv`YwwedUvwr`{iSsaiT~YaAWvqyy#TJNY~r)gwLR zprBdL7oO%KCo1KqhryPIkL$5fgCEg&+`?15E^Ve zTIc+eTYrAV>l7S$uiv$8?gahYi|bo|9w2S9>GDDPCD3<1b5E# z(HFjOw&3;ZjR3-Rd{+$n)4cTXSicMpkkdW8=#L?F{@Gy0^N1gwIPwdnIXPoPF6I#q9PZ6WxO37eP2^z<{v#C z%549#axe%+Ir9%a8PdS_jG?fNP|XV#2Ym^V;pS)(W;+(i@iE0MUicwvR)`t=C_6}! zdCo9oeA>*5(3A%DVOg7XNQxDTH26s^hI~ZH^ znFu+)&c;n$eOd%>ng?6h<97wM`N!k|_ag4Yw)3SeTlArV-5ZKnWfgr&t>qJ7cSna} zzCKXGC1Cjk-mjW)sO=WmE;H~Wgo_9dFBJvI?j(XuX{q<`-IGm)bar%9Ic8w4U2S`C zQxLhn!N^V=UYJ9C!C7iqE$11{&CR{*Jf}NuFiBtamkAWA2P}GI35U6Moyc#m=201& z*0l-Aa`Nd27t{bRNSB0(18up;*y8XZ9EBAYIrg4yxVvt;SWlgMU47q994v?fxl}ke zB>>HF0-L%~hK7cZVpFcSpFCOow?wmgOn#tpm>3-VvSd@F)+^yMo@zdcSH`obH806k znldmkD?*uBnVFXH3ylV>syVE#Gfy9C4>jDoe8t7M6swSkNX7eewivwnLYZ&X%R=aFIFv%tQnl@sUy)O)lmU-fB6+i+E&wp9)KA~ptJ?k6QsJT z?%Evh8e9w*7qs4*bXF+hRAQdy2#l65?`gH!isP+ZS*fR#-xm$M3YZOLnwwjpt4Ax^ zO|mEKy{rG~FuW=d2Ezv9R<6AST~hi_i4YE5T{Tzt$kwaFc>ab&8E0;1Asl1jgIT4k zMNZg}=RAKORQ0otFbLzr<>NjdORR{~!6@;@Rt`TXMpt73l?;~!_j$tl4r@d^HTr#cLk1!@{p|dmz4CYmZ05^@K2N8B~7w4jgj_z&e2SOM1p?x+qr1H+~|>z##DsZlA$L zP8CaRWPfA)ra>PtR{DOPpJ!34e$DwyDXv%6#nx^s?WctCU({!m((>st7&)+fJ=8{a zkl2Ep`Fukt5398+D=A@^3IfL~oThkK!pV6Zu2#J8H-X~cg1%IhpF^0+G^39ecpNgG zF6v-1y(A3KMMT;El#8B($Z}QcD(!!^hz}gk0$MnOUUKsmw3FNmcdi8R7!LYfc#}aq z)7y}OsT;bD802w_zWMyzj4}FWT6#chiV;fMpeG!N6W1DiEY^vf78Q@Si%DBU^D`Z!kpP_^D(Td3mOo^vMn8m?GtTDPELM=m(&XD-2H4J z%yTsZKq40Aozl;f*WZ{EAlhV}ROIsMI|3)HS7F&ET7_n`erhip<(9Hdkd7hJ==Ya)B6A{pTn z6BSwAWkS3(_HqpN%lV6LOq|P*)R%Hs>Fh%g$BHb~Jgaz)+40u;iZXguMSwI{9)swg zNk`39k{27T2+9sG-uUF&5gb zi0z=@7iW>#|DsosQ9mrS3M-r&(MH@Jc9@N~wdh53Cbi2f`MK@7mEb=P6!v^V^Yy z@sj~obk$S0-S*L+kC{;|BJbTx*`3hj!^25z{pTlL!xvQo%9Y#KkfLdf!@AGIZo3_C zuvdFcF$a|R-b>}aT5q3uq#$&6V`eT(Oi4wCD?fQ7zXd}^FWjAencPyT2W>ZXj;Nd7 zf*=f^;!7XnGZc~_VB4;|X2K)#6~)u-NxT|1d*{?{BO@b3>4i$%L7xfch2F}v&!H}S znV9GJ>e9&D5m7uBy--6YxQzc*JfwMrRrO%JO8gz8N{OvJN16=(DhSo<#~zddPndQ`ftS7(VIH5@nc{8a0~a9(6IS22IajoS@> zG)WkGUl5CkZc0YWW?L(teV3t>Z_ozLS(-Uwd=Sm&ESO5#OK6}67U~V{jMjmqybiLu zwFC@;I7vYUnShqPv#s&I&i|7>?)?i~&xm98M&OmH{0)(hbAE$uh*AS4k;5UX=Geii z8kNP@z#aY%v-&;qGsd`yQe-&)p@n(P;O7)9FM)HV1?8+Vg)vu_HhlN@5~$0Zog^j0 z6SUl@>4uxH>ip-33!^p&HVwl(dbe5Yz`#RTjleL~0(mf7UL{Q*0RyF@X52dDu~PoG z#-z)|T^q2bAzGXSs6TW`TPP2-z2JJI63O6ppOb|0VH(UN^Qs??$Z^}VLZ)f3 zn!#A0_%N!sNJ1vey885@5Cs!iFas6Gib}Dx|J3)wfL;Mc(iu72fiJ5ciz0K^f4>)n zLKC#^Hdz?^5KJZ=TC9m50iA#!AS-y6BEt(J;8e2&SvR@9+Q)W|%8Q&^B&zTX{29vp zM(Lk;ac$H{gl3W$xA--7BoKUwG@nA+A(3hH1mZLYp1aLhL=(rx$Z#vu_fW>jd~~FF zLqO``inoJHNMbNjng61WbpM>C@TIJPRvZCw3*t0^i0{?e4D7>(vk#$kAgonssb$w>@C93)G?SV&kZVBQ}r~7 zljO63)p@U?-lzU&Zvbnq55qd_;6VB3jHx!*2xuX`->I>;`$Zgak3D)P4DEEh?T?>H zsz6K+W2gnePUwhXNi5f`^Y(qu$g&VnqFU2!D-X_V4V$Q9rJC8hXcp=i31%Kq{p`yy zrPek&w__KKLJ0S?`B#P>Q)%N4H0_elQ+hZw+B8X&EVOV(ppDOfF%VTT$Nd_r*M^IR z?idLy(6of6p62FeRae((y2GB+%sY&ZjtTUHZePRKYos5i^_ZTcS02{Q@N`^3%ORhXGG)S>RI>l?_ z%(o0=sbJuw0lR0oL8Bh=zNQQ1^!)i`lFg~I-;e0A2T3YmM`XMwjJKUs<6d0|e-oGr z50^hfK|uO&RJ)qkkm;>v0>+kG6X`ciK{;oB%AtJ{o&^jm7uSID>FCK^6(CEQ z(4D>nib*e5mB5~Gh6mKOseT=JZLJHv7cfig{#wmzzc&(RRzT5dCE!vBoj;G-{dEEL z1PRJ(0s{>o4^XE*fHr>8S?#VBOL5L-a@{T1!2?<`;p_~2ot}TmwQf+?7K-+^?fVuG z{@~FSt3lz!pM7xkH;^LlQOjXa+!)*b!soR{eh11k`FgQwZ>4baEm(WE-q!=ip3gH- z%OKnbtpf5+fNM# zY6+lf*{}>$o|I6qAVKSrvi~*!_x#h`#Q=&?WE1SbDaEZ=z|<0G3r=()z`Ia7&YgdN zg7cIq+yX!bNZLIKcOMNi4gq?ZfUTgASFdH?d2kJYfk3A>Ki9OnLMvAKXkT;wsv2Rb z;~e<)ejd0VKo~uvWESkx)_gq3;#Icdws;kEl((eZ_Xs$&F;$VD9%GcV2|96cTb}ks z4QsWcWW%Fc&ZRIP_STQ4UGqAUp^FS3WF4dE`e6GhKX&OxPyRt=c{hhw`=S( zA+R*7J+t2w&Q5~zoV5kgFu8jrWO`3q#ZLtbf|K>}xrbZ!fko)bbds zUL@12PwX9sw*Bjl)s3D_1V|xW_DMuQCbeykR#wxjVRFF=$TVB~proH>n7@7leYX+R zkaYPMRn+d~F(;z;Tzq@Y8E6l|txdF>Mi>EJr^wmFfv?A`l8BGpptQBxM@g+(P&pS3 zouAfLS>&bXfR>zA8_p{XQF^2rla9s|t;*|0{R4D(E{W)H3WPX&jX=&HP$8>C8Cj(H zZ57njyJBMin8cvhg<109B#=oIpIHNnX;!=7=&W`ByJXUWqUY(6a$|J^L%|kP5^pdh zL@8hc_N{Jr(!Ddfpn1)BNG716d(mLaf-}Z@-Ui_S9kS+vM`>lB{YQ_q%|U116>#?S zS$Z{*!Y2bj!t%`&Aa=v2^Yb=qbit+>(0-xpoO8s>)&OY&R1BaELF(sT^0yZ>-aB-l z_NV6HK>eGSsJ*MeF2`EXL{EUL6*nPL{kJ;%C_wxb$^JZf@FJ!LkcU0o2x@A&O*P>< zR)-*6wzq#Y^(B~KM+9@N_KQz=IY8s?;x5f(>9Bdzy~@?@lRWt$5RFP4iI*1TE8=-z%3?#!N}i`cF~UF0Ws6W5*ky zUQLb18R?nLfa}gywsB~kE=YObqK-s8pDw(s57LXLIC}0|fd-TQ;frfbHKv&W`%3Dw zVmkB)ASC-rsP~2pkdaROib~XBt^gh7EAQS@at}CmVdd|n^lz3zB=;S|ga>cPXTJgI zB|kbd;7`cRYv9W-Cb)j~nAC^TuCBdy@C~q^BE&xKr=?9G0d;7(w!+sdKAE`L0G_~a zwAv^bPaFd@fCjfnJp&?8<~{zm#cBYY4*CQ(pLBV9D)N!~U~h6QxcG7B4wUo`SPJ-7 zZyyEBV%viSuQ!#byW+rGR^9}?W5*Iy^N#>W-avPq9~gf=CaLeOPSElLNWC|vtpswY z&rV@XRcR<4$aJ%58=$cy)fuYqUA7wD43U0M)Mai3ZPVeGAyn37D@7v6n7(Y^*zjVR zA+(YERCCr;(FFs!?z$W31GKGe)A3z=GJA3WDerx^qc`rujhVF*@ zb>05n?|q;5dCu8q?=}3^Z~fMqUikBK|5J*T_Sf(ETFI|_X_dDz$I*BO>xhl60rN26=dIM+4-zKN&Wxy{`Iw~j_>JbZteGT`(D;J zrGM+s+RF6T-8!fAnwO3HfAc$1dbstM_W#ps)7Odpj(#rw=+E?ZxQ?sMuBUy!-CO^D z7JD(?tB&{4@9WRoI{5vaPUHQnJuUsdUT?eaBod!1_PhEwzJK>#N;hxV{o6I+wPSmX zYr49Of3NHK9^QlRSFfpm#y(z$`_}8w>(SSoPh;)$>tgq*Yoxz}ulsdu<7?a#J`bPW zudBW9r@U&s=DXk8KBL5S3*Gb9-n;FeevkTEJV(8zzFtdw4zCriUGH7j0M7*b=CY0Z zyj^#o4_MoR>tABc`m?cpq1S+W5qfrdO`Gi# ztZRP`Y1~iY^^)WlQfj;po)bR-Vtlu@3mV zuUn!$kmIbi>$$7T+^-7Pmtv2%LtWe9eOAOCNgZp`{<_=tvHo6e>#2X=O=8Eprf1ta z*Yl~~ZC~rEZSDK_+K=zI-+v&B+^>84cW%E^()}X!*^{K_N|L+nc|TjP>a*(|dCyzk zowi^5l6v(8pOG&=8(aG|BKco_XU(s8wtf0%r}9L*raTs+zTk|0Zhz#3CHRlufKNQx z*6Y`$VGiDq%9Bs#@-w~siEl3JJCodOj_xJrb9z;?OfPM2^ds5u&40=6K$4*a!mI39=*B_c@6_R#q> zJ8amS`KOO9XwpM^jO0SfL>zj@;v&j9Zw_TJd12(T*$ z8)AFa&bS9Zdz`t|?1Emieh#0H{bI|l&+)3SMQNX>TW)V(Z|%8W+V94RUceVR|y4k~bHtYJ%QtI1lk#}BQ)psn9$xlD>-um##U!S+1(bhiE(xfL+{-kDD zzvnO1`s5SsonHtFUI+l*SBL+(mf8PI&i-p^UB2Tx>xb3*@^Q_$e)M@sudY&md9Cu% zZ9~7R8JSmR&ERtj_|+h^19dt_CVa8O(v46FXQBrUS+!-|)iUwgjjq{|ex@nIZm$y< zo@|b^1ptzl$a3|2dT3$1HN$FOOR3@1v&5lp@2j6HoCPBLh5?t!Tc-5j;V^*Nf)V_V z2Pf^bAGtL$ApQ4uw*cTd%cj*p>Gzg(&P2O$+s3u62g9Dy!4Z*@hB3u!x&d3}tWX1| zz78dvglB#SGg8gLcjr=Lt&a|=mdKEiN%Dyk3YIbjWBQr6PXr~%P|v4u=K7kR9Un4G z4hAYv9UQF|dC z$PD{mY zJlUT&C}_#r_r6o=>wovp4v~E!0QjYv;p=+5G36&dJMHg=WB;jID_a}{z@52 zp5bwZV3GYfjA|dADXT-KK0)PqHk=)*C8xv&5E)b^=sc4VgyG?ANe%DK({Mogb2We$ zLNx9_9M^o~G``mN_G}IYu7uI8ur3k~PYCwJbuJ67YYLbgh8A#jB4ZC|KAU4+b2t|L zHw97djB<|O^USZ#Umu}kpc8<_fquZScSPnCjt;+v_iQDh{^!Px`S~Nm*53t$y;!EM z8L0mGp0|$@%tDT2r;M-f%QP}Rz|`2I$fgr#^@IT7o)}3gH8ObwVZzQc&HKiK5iS8( za0aKDas->DMzDc3X2-g&;b5x;g!pV2MGjuPJVWRcmxpSNARG>Rw?G?v7QqSDLIbc* zdil71-T(J5@!36iD&v+!4hR|rU|iP1v+n50YUMFQko3QYR${={=hGo@PxF3b)UVQ> zKoTH^p6rA`;u&_kVdp{<2$Xa(om-S1+P|v?BirVIo7zN0J$vb5x4p7jLZQF(;GRC9 z_P!-O)86MN)}?+=sq*Ib-S2Oh>33ZorXTyC|MPtRntgv`TC{ZVWO@N1cp(57yFxzq zYetrTgqXhQo6C!CKaxJJ?VDfOcFKR+Hu0yoP59C4xuJKbVJsisAI{y3W2stI8yi-( zt#4#OHlx{jg#jpGybEQYdtuiW&j^tC}Z9tv#FE~!6CtbWzNP*IA8ra0tUTq z%_23JNQb&C*M$)fp>CguXE2oj()H2;92C|=uMNgG=Q;CYIGWd(VPw?DJ)@&QDpN@Z z*IJ$@lUogWfYag3^kVDrX&*K2K?8ux78U`HfE^qMT5@ngKpK!8m*>gMy$n+0ni1$Q z$75aQ{SD+u4hT!8^~ZfL#7~e+We-EvPN%t4z|WMCo1CL8gwOXg%jFtC?u2N-LwoQ* z!O^}&DM%53PyMLzD{pG+|J?myQ-B!Zd}04BhxO!ux)9=re`Ae>N)wEXVgF$LEAu4s zyjK~~xNI}JGCdEn2mZPgWd{z3fj|~JFDMZKoonk|-9D}ztr(AITx)L6vX@4)1qY%5 z{JoAIZ0+~n(th>dw)ObV#%cQYXCKu6_iuhye(w>zef{fGdj041CthC&0DcMmd7?CU zsAc->^mRkL;SK4N8`St4+J^k>w#j}~gQho5CtnoqY8zc4crm9C z8GLdg&U9GW;Ctp^7i^=YrSOxrVBg zMNtE(5IjBuPTOjwdH^LIv(G~|3j@U&9SCa4vh@yU%c!M(!pmFq-y;1tzjfRr&4`w4k1fYKw%3gB*Qlk_=WF&PLgfuW;3q5dq#EllL1wIt zn@=hGAa0!Qz6Z={BEyz}T>193e z5B6}bJz%i1M-OP%QJxAC#as@-`9M%<+5d>ei0^?tj8XY*GhVmEdfp z%3L%!&@$`E0+#z7jeTc(?|<9={msqQ|I5?8`lh4p|DLuAPv)PQ)Ad3C@QVTBZx9f} z`=9+pS^u-&B)>8*^|!YZ_M6+r`V}`C-@Zq(+i)~JxgQ5Pw*#gJQ4R*hA;Xv&JfG9h!hI$}smu?8He1Uo}8%=fWuY1+FpYMNbM*#YD0qsa; zm_UkB!>#Mt45uWSU&C37!QCTZkvTvy6roy1Du9>sLZmv>v?I$M0mER|*XDrqp8BUY zry%XV#&w?}gWPKvb7Wach(i5YQqpn^h}OWt z>%F)2?|Uc__oVwQ%fcJdRyFuI+w(`3sIRHTI3p6zta%23Q_2+lX#Ls{FIlKIULvTR zo{8@1jKIvoFuk`r${!M;*@TGnJ#h%urmhL?0{Dbij_33PKRxz1P_(|!&mLIx-DW`| z*XKdJtnPy;2(Km19R6sgU2H#la7ZP)iL@Jthn=J#&SK;B=V~^{&U(c&6^XOTZw#JF zN6OB&CTqMG_yPDEXan{EAQS}B`W`(nTt*Vn)~9v^?$Y4h_I104wV#P~oP}rKlS;ea z??0XDKWne}XEz_z@9<#2e8iK@NBmML5y&rozhC6{wDytLOAtlA_*?6zoYwl^Y*l`1 zJCLut{n*IxAKdSUVbhGOZOANUc-0x+IJ*G}xV3~4Q}(MKxO?{oVM)K&ey?ZO-2q?O zhOcuyuMo7)2Zb|x&y4eMc(u;3WKHHI4$(c1s@})N9Bj4LDud>#85F(WYL0u54s&o1 z;0(C#?hxb>2T}+rfB|R18?3$>J3XYI{L$mzngLzyGwa@nL?|gZ=}`@sUMFW4%rHj= zn#n=g`gD{=h!}=CHMdW3&9&}9sOrSI(~Rmcv|3Q25L%}^!|ounm2jMX4NRs#AUbwN$b8>?ozwKP(h)hIB4rnCJC{m`D$z%5ef@tNyyzZmM>%R9VN6mjR1Zy*b=Rzn_ zrfi+hh$BJc3{Tt^`^^43jU&?ch~LBR!F?jW7DGEsg6+5)oc=`;tKy9K=G8$o_NS@{oT4seuE67$m6;%85hvSI=1s%3+7BOzbi z?Sc9CEmFV!VUhpsfB7}?|8N)A|6ixq3jx3fGt6%+P(*kC?LVk@Uh#?Pziy8Dzi%7n zzqs{yGjPr6Up?rnu&KlEn?8?>0+1BfRl8xhvQmH!5Gd8;%3WjN*YIoRwujCE%K1A2q8s3jmb&C+2|yq;IW&~SYbj*Z*p zI+M5<&mo{jwh`C(2VfSrHYoX|j~*}70N~*kq%JiiOO6blIR(v7);bQl09s9l+B&l7 zoUiwRFJ!Rz58q=q{-;StpxWMW&(V!jwU-p+NHcE%_bqA4PA3fjz1NnvZI`JtptpUN`zS$w@s!s8{f1HSBIea6~3l4O+bONLUj^b)?FGf~Q zWK?JPS1&oG8iAs(J&*wn9u~mi#)m*a$W9B6kL%)m204i2Kzgd3=lQ;zl$fF=F4-A% z5@VT4c@;&T-2%po@eLLt$Kg!ld1wHpB>;8MZ`J_pLeM$|%zK#wQy@|vl-nM|brVUT z@5@3Q9WHfP`{+ne4jc$WxWw&WIuLu~7*wfoE!Ij{mB5F+iH;zY4=hRO7-TJREkJ^R z(ji&d_uyq1qSH~P_F4f_(gMx?mil!M+H#ac^!~vKG6Hk$Nklt!Ef`-FMLpl{$bjDC z8{2yS{r%bWPrmB6$TPnb0s;BOnDIZUFpfF?C%&z|?BSCBP=lC1|IXv-qx5?Zp6#1t z>o!7C24;u)6C4P#`o=2l|7m8dSrQShdX!6bskx3;=ZugYun_UAN3ug`Lxj>39DXx` zp0FTdMm9=fG1btEi6F<034PN2FxDB8OBAK!`}-D|+A)a9*0!@O6EfnNgk@I!-~Add zVXU+Spa!s$0Dp3n0QB00x*!%g)OC{^00bQl&vQw_MN_QKh(8M9t7GYpU=IkG5tHM( z;yGK^Sj1;PSoY|A zhfBc0Amk-OyAXg{>0uJ0I+Ujz>edq`InWTvGy8p|P7~gD9X%UP*Y`3?9|)8<(7t+T zh{qn!8QCeGt@15C{^jE{tOVnG`9j?&9Fze~WZ@sS2c-m$g!}mspdrIP>JyYg+7)Rg zJ9@X!I-UoDA9U$Tu7YJ^+Q={9HY5^vdC-8rZ zX_B07L_h$Wv+ZG5aR%G>RHvX*7EZUud)$8}{aE|z@7}(h{^4K#boudL%z?oAi>hzG z9qBxv{_RhHYyIf5)<62pmVV#uN7KtrEz^H^wgCI_XvnI^V-ta8G%q{^2}B`F_yR4x>g4{DE|+JC`6NiDnj7v#WOSM)W<5^xz5< zkNEq+L(SL_28RLDp?5zKq^hs$^}BQ+LJ{nptn(@zTeqU!XVieRLxR38^}sN%)DkHM zGY^=Zx4{ph%5NUnp>j>1Gqz5O%ijL&u1Z;Y3 zY3va1DM*rV;%#rp7JErRGIcSiWl~A3R;Lf7%}}Gv?T30lmmrrGd;T55-fZp1S(Hpc zaUtZU_r)7*eL7PqV;QBSN}3*>M-n7DM@<f%MVLzqZEYqL^H3ov?}yV^cB_Wj^0 z$Q+0>jK8ec1C}WZM0s+FQX?Ge)x&rmlcEtR6!tX_@vdrFzA$Ofg{JDb>2nAx3EL5% zH?9}42cL0Ar_0IsTJ-r{Uu7TV-1X$I(`QoKT8Wkt7D7zgn&yTT=eC};5e7?d-@KiE z`EpKw@p3o)sXzJckoM|8Qkm#Ge?H2WdL>jy2&BV<7{sd?a`>R2AtguH?mBY8Fd3^#&-?Tn328I zxh6=p`UDh!`*Ei>F&VI1n#<7w2M$Qp#YwUg^d_zWj4`X=3Bj~#OtvjDikz>rrH_Vv zr~0Rp1s(7U@*#v!0D-m=fZTg!#T2)nvF1)WNt;#P>= z2_sMkeu5i));7=#^pjpSuB&q}wn;)60f3jcu$RGYV1+|CDc%nxl+#O5&G7bMY@-@I zkS!CCnK%Flo+|Mvyd;*c)#Ar>&P34Y^{+v`1VOKIZ$4BF>ny{}`UB8`KpP|AbFcLq zho$RDT#e@iM~C*mWr^~QuK#OZF+TJA-_{9i)yge`poa;gc?qOM(JLc&RtxN=4BMTu z5QCrBwazM)E7judb8($hAc{bHJzYo6DwWdQ){OJlKVR~E9fYztkuy`b$8r#60%^7e z@zBqPi5iK>tZ>Su4HCqv&5p~h+eWm^fpj_VpbS7o34}LW7udaLnzV7Pf4f|zFaL^P zpWo$yz<)rU@C5|m7pk4FsXD0h*9Y>RDqnh8(x15bNcwPX|G4|K%0)CJxwdn;%u%SS zO=*;I|i)=!GA9pIe8D6Z;Yl2Nd@_Nzb(T zYlqxLuf^V5?0|b~jFGW~L}LWmA@^`6nfv0arSw)Bkc6n54mA*jN@6LHss);YL$^lo zB4$J-fheS9lfmw<%IdD{5Sdt4;+`yf!~0ht2Hk+?k%m&*I=4vn z=Wm(xy2k5V6ezpFl3k{@scI;acyLq+4JhG=4;+MQT@n5HTt=ruuWQ1<=5utBC^AFO zOt61!EvjuyAx9u64FE1i1_YHv1P2vuqGjCwVy%BDWhkljY{5onT^pGb`v5HMOl^XS zQmlhb?@an)4ougwg3!r2`Z-D^{j!Gh6)J1=WhLzkFuB4YoJM_kEp3h5GvCSy0T*3XrvlG}zlgPvgAy?>*1_hpo_g8=oWA9t%an z+7KR5QZ?4vRSFN%;bpgHI@WMF_$5jmcz!*pl1Q*nIs%$V-7(#EmqygSx<3>MZ{8e< zogxD`Gwr>V52jsTwV}a#Thlw|N92p|K9zp&pZwSLuQs#wH=k@mL*4(hKOf5NgX@QK zOJ7^~emwugzbe1$ZkE6J=$-UheX#eR9gcrDnE!l=j6-WqO=7bD4QMoz(1<%fFz&g& z3d3*FzHXY%o*xEHU{I~KZ;-GoqSe>jyk!TeOf_?nI+N^>HFQ?;G7tTj3fl1p4O*y7A^HsX?0Lt2pF!14EzgMPUNOJ88b zh#PPjvjHj~VzeC=YH=chr-0<PAxtbZKe2}As2$gXvjKyEe z5-peg{R_2e60Ee+tb%rq1pC3WDps zps=G)*w;o>>>szABd(BPK+wHYh6)nnf$YjcI~+{n{v^bgJh0DpK5=gdd;qWKm;q3c zsGzjciOn_IVqtI4#nEf&cCA}^p1BN_$iCGGvJxd0lQ8d>>aC$El8F?Z9~EM1Xjx44 z(0v0$QAWu#g}{-QoA~V1;DQVe1%9*XY-+M*8u-d4@Al(?(t0-z&}azC;}hsGC`jwP$e$F`4Kn*ye+8IeP>^H4JGd z16dY`9(p6!)E3#xUS`3ZW0nACq&fh4P2cynt}X6-g+ziv;6_k+Vvxhucn;i_$zms& zG!}e1Tp1*#Js^GWU8hXQ;Yx#Jb!sC1T}|hF>aLh-svtm`aLw~c0b_q`qqJ1ZU{E`Z zy>0VEI}oM%-pw<~a5t?0p9?`~3Q9bj4e4j}E`V2#XRIZF2Uh{BqKlv-UBnY%(j@NH zTls2e3>-8WJkUPsHGuO0t%IF{5R}f48RiuH4v;1j&hf#DAwxx79_0YrL*4o5&u-l` zM_-~v)SQ@?J`9!V`&xp3Asl3Jz}CBWE>W^!f-nq7A24r(!dZ^;A9x1c24-qGl)2?qs2!M86FZ`_ zEc02Y&(qe5V96YG=W2A~U!_?n7#6kBtcD=#R@U}RVUHy;beU*tBJ#~x?QPrixcpk8>B6YpxFx+JiVxlW5dV8K3QNYeD?!rVwAT^UpYVNIkX#>njoPd4}c~VXE z0D{XwY#6b=4$oWN66%FTEX}CfL#@WeVvU1*7d(^)AOo4hvFzl zeaOZty>9HSOu@%;?Ib&M|5&R_@^oDgK<(_r zNWn4V{?kOdoJL+#kcV!93X&jn@mb&t908Q+`u<-=7Y5p3wVaX(O@l+5T5-uCx@G}& z9sq%!|xoZhcQ95)=3XS5|su`vtkf0jf>FNXf>X|&6s#dK0^b6 zy534l^F3GXbH4mXeB`%Np7xV_00JoPg*cjXCqdm81H{=X}RkZ4X0n8*f%Wwo5 z1E#`PY3iW&X1f-eL1vZbqDw%7DaN@9vU7AnKo`HH13{0p7yzYvhBVLm8GXo?xhK9O zCRQV7RW!6m6;fwpREGm&ekPa8JS?VIdBSEs2#@x~_*Q-f$qe&)n#EyIFHY6D7LZY` zj8ypmoHb;dVa)pQq#FTe`vkr;a>8lkgPgIKQmkIh zgv5oXN!CdU7lBMaFPtS;D%qh-p-gkMMDmE^nxb@oXRu_81?qv+$5CUNUW&aO(2axqS)3t(h_C2>g&3gpj9IB zB~4KD=T7&g&p3+@9`f?1mS?TCumS-C_vLhoGf<-gN>V&C(K5}w)-K-a{@s_<8mNvI z+S>0fjbOgDB=nq4=`Xze!_#+s*}tiu(TRc0S9PEDLICi7Ao{h43b4wb__p%p4f_4o z*01@=jpVl(8D!-)6D9RM{q9tsYmOgqKTS1136^Ug;X2geXw@jIb2U|>36e89EvAA63(WHRx zQ0jSj<=IcIHDrllSWkm+Sn-_TT!rM9k0Vkm)qA_X{$@=49BrTK#F*UY8tZ9-K4S*K z9-8xIbPd$R-5%B78(G|_cMqtxvKIWdM+v5yLs+d{6%Z%RhVFCdSR^6@7RtgV?ZA=Y z`tuh;V8B;F2Y{q`@*Szeg|QjNz8)se3ANA)JFA|Rj{rx&o$xWlXPT&)Js?BZLuC{L z4zbHKk1RE^S{ka;5tFMJWaH(Iod|M6t*@U8a2G7A4P65YOmY7vJ~JVNE)AZ%17Je; zz}?VijuI8t4*}Cgs){H_q85&l2TBFmI1b$Y2caG8Q?%gP+SVLrR9ImVNR`jcII#OC zO^!4Xp6fyg5rT$_=PZ$+bbgib0a&dw6RN1!g#@ZQ_|fWEO@Cr~{)KBI+vhv!GgZD(_pSEw^Id3`{@gR8oexnU_lF{KMBlxS!mTuL1t_aT ze=#MTv9=X)1JWZ`g|L=o7S18L+7PfQF}cg7OC{jQZJX<0)~-1E*h!EDB%jL` z&^Ds(oglGtPyjnJZ2>2G>B2-mmSwIXvs`NpH8B=m;Xx?g^2nk*8tkY`);1`uf$Gn{ z_oqf18gU&G!MQ`d1im+o2iglJ(@*PpkQWM zlGHNovkK;XmU;T0J2%@SQyVp1C%2QiJTUEJdUGJJ;Lo8L8v%^0POh z^r7povjFtkx)2bTIp(s-q?X5GNlX|-J675K8tc?zUZUQMG7w3`cmr(BXXMNMgkO!fq2Zrhwxfi3{6TjQMAq_ zNV{$x9_3QR`m8ZHOY)(^;dx2{z5GP-&XQ>zWKLGl-Q*eoX&zObk`WONg+dU6;4YPD zlg8knIyy+|MpHa7p{vJ)ArZb-@g~=1X!huI1#NJY-FdmQ* z9}ByXXb4R^Gv`)8#^hSF&*MbwF?}@=SAhMQv zkbNe{#W1yZI#@q8GGz)-t1ItOcMFNQxFIcp3?+;>1~ki=9)}bqxCui0$M2P$)waj5 zn4`RHrB<_Lw3s0{?_YZvC3zr}H){;Q}U~~RT zqWI(AQeJ)MzI=NVU-vbRAML#oCO3(pz|*#03(DVEGsdq&0(#BC?psKoQ7fQ1T2sb zt@XuiUk%3&gNb1|-U{UoW{~21oNO76pms&9G*7wXscc646VF;>1nn4Eyu=IzWN4^I zdK)81d58J!3_(^x9LjM-a+Dr=AcodOj{LjiZj^ewz6oeEg>$OcvTAz0>jRXi-)`|d zCZQH4s$DLTE!N__(Puquoj0$Ll9>w(^qXGh~iRNC9%#q?G;i5mDcT9{zv^BT2nh)vn`31H@a zt=l{T*F~*_%06Y59yWDM&o(=W>`YS3GKu;Me?_LYMo&tpRg8CuNafM9tci-BSAO>j858$$fANnDRtwO4Y}=dS(k&K8yf@3cY3!cS;01f@}bCz~~Zy zN*4tdf@xf8s5H1ql<{=qiR!Ag)>ZE5FCpB7;0{3#E8GEcbXb>+kU1Y`{K6<`;0Nd) z&!0FBZo^z-!D`32j>Q{Or{5*J$t`A&ugof2de4L>spH;9=hKut{;w` z;aZUDct{MOZe(sQZp49O4Wb~(Q3zl<;xaN`9v|&p04)5&9RT*Z&I6HABB(aS&xv{| zN*RFf$9A*l;6eKH=u1Eu(Dx%cC1QGN7k_bb&;WLD}%O8!BkeFB61rt%Km0 zRGZY<*RZ#=rNi_+BofKUki?D$!4*PSCdaD|R)v$qUeoP{6FDn&5TqbdA^^RzfVhl+ z!polAlfQ3K(uBAWYVDBGMwY)?Sq6ejmhcFZXK@B;0;&)fOZu~|qdTJ`ClXT3RNkq^ znQ$~UQ%6PN4kz(BD2d2^9=y0LF$J1PoDdX%06KMLkPm>sniEU2lb^c{Z`}a3`J{?H zWP!JilV9#Xoi0sa=u>aqknjA`Z!MprKJIIpuT!7*LI7ZLzNq(q;WyPkdgl@O=gp}< z)`%2aJH#iUmK_!H(Mf*$Wp1;BZh5WK2-hi7!)7`X=(tCo$FF+!E>!0xmNt6r&0zL6 zAa%^lutr4cY~kYBukdGCowl0c7KoRC$zB7!=)nMlhS(?`q1y>@6ldECL(!KlGD4GR z^9?*?WsvkDn{%RQUVuC4{m1mTHeXpJ=4TCsX`1TOS>WoDNP z*9={^fwcCq4|bBRB^I}5KZW*0O*7h)Wtza|Q}5J>+6Yu(GW*+GT^j3>j-o$Y9&#rBVTL^rI<$^*%V0VX zNA3Etsom*66_6)^g|oU^`fYONA1Gq~L?F zYGs#wF40n4XZ^x{}7a9YMt_V@2wqKGwc0Sc{&P1lEl^YL=Dnz`D)^Q!w zChvXMXc_eR9>e~fn(A!B1k#HxyL`i+{I>c{}xuu0(r>fR%;G)#07bfA=r8gf-DyeS-qb?vb zf||W0vUvU0rFdDSoLjz@Wgg3%>U4b-up+f&RqJf zSh;8uVB#&f8r53wrdl?2g>)1_!mv>$%4(J_>zwMW`)}E#!0};fB6t={j_)g}%;k$y zv~5WWl}TjP#|#>l0ZyqKu8Kx&Yc+I=ermqsdcLSr7<2VEi?ud~)%!Qh}ycuqmc zvpEix5(9Uhw1!SJo%Vh8JzgR0E7UFr5^)L*09X0|cLQ7(n#JIpj#TG;h&>|2&V_yo zh7onrGL1&>$Wv%A$dRYuef>GK32F(^GMga)4HHLX5S&#y4>`DC6?PVcL@jkyoAJOr zBm}99D&zW;8=z=_6E?S=u&&LcDS(|?2fUP2e;_CL_5S__h5WrA ztpE7dWAdk4)?W+)TZ9YV(1%v5m1vyJVwSdjbVUWs|^%?_$;}$-lma&><#VxM&6=wVAh)hvy zJl`Nlm3xp$Aq}WRqKR3^R=RF>rU5fKl*Dpq2sq=GgD}2t1Qqx%McbPjJ}$o?KtX^6 z=+{4kg^ncTkhhE9qdWUc!0^IYKO6$jXh%j^$$51}ur-27lwlTvK)EFkdjdgFjn0jp zabaB$MB+30?;(gYXTO&@(B0$uDreSu5iUa=*_MFa4K9kKDiQ;*Aar%uzm81ZILBw; z8JI$*KYw;S2N5V3bU94Mbb=d8_!1%4H6AL9Qbk*=?&FSfBxtg*Y1$VrR6cysUuA1DCp(Olr@lf?Kki?NTS~f>fE#wHTL$kOydOa0wR( zrSq>%pQ4azqHt#f1^=DzaSF9lQv~$u%~lHW{bhR?WMnQoK>#VyBuYjO^u?`1Kr~?m z&%u6I|G%_y!T!kO@~8ja57#zFposcF^@YEr0stjKsH)$m|E+TR(r=T0e)F;PJ07<7 z39Bt(_ImH>SE6690Ug9ZkYpgUsw}6QykBfnt)n;^FkL;2@4@jUF({bV zU80_Cdk@nZ#am)a1W>+L2{q!^O&x|Dgp}EdGl{E&{O}xf)NuCtdwU5I*>)9TJqTnj zTfo&&wZk)pv@&<^2&vwAiP2;&O`xj!oCa$HEyf|rq;LrWBX}12Gb_n-o4D<9tq@1* z!QnQOX|2^#U}sF)*y&3+8yJ_(87wLtfm0AxlVgt_N~K>6X z($#_~IRu%N`_~ORuQKyaFdmsFBSu>vO~Vr!a_NFh7MOuJmbhM@hMJ=O-qmng)ke7T zIOM@AusxhO6sZphv( z*cdSW7NS>uPnB73<3uBv8A(~=eJT-3E9+8w$&Xa>*cJh8SVkhkwyLHB6CDI+Bf`~0 z9XQ6W6%vc`nzkZ7>k=)^%i^6yem0dB ztd8kH)+K=1PPDuPa#dLZxJ-Myra&2wjnG+%FG(EKA?_~tOA|yPe-_x=(Cq*1o zCYhew5LYtUVj>h)=VOVJE_)E5t%48kPNnD06})Ob@Al*Aw>+KYThteRpgIKd2g3P( z-P`KRUh)$8mi2b})omdzb&Oo>22(eoiYz?+-r3=R?4g5xa-g9jI;YH_(%8)OJhF#4 zIHk-RH*pWM^$J6D1L|5#Kmilp3~>)!szJrvDZp(%1ZO+s=kQr_lGQ|t%BX=!Yb%ImDCWeR#UpIz)xN4ha_gsc>ah4n$0I>gA51)rRvFHZ}8K<+8 zv%K!SQ&wTYhoH|~WEy-kWx?APB`u#ha0yj91U)DVG4a*a_<*LICns84Chtm@eI0U; zKArbbqNUS<9Klq>vd?8Tw5k;r;Ylu=Tzie0^b)K@1QKcmI!2T2Dw7nCC>6K^c78m& zbxC7u3+)+gnk8Mi)WTd4D%l;0Y6*IECA8u_<70G4s0B|B#s>T8hSm2M5?#W>*vr(S zFN`o6i(N+z4;_aFb)P!($0v6(IXwLO`d@c}Vg404o=JU=g+;GIBRjOunS?oh&Nm$=_~ctM^%WtD`KZ zG*2Jg;}Ln+OgRW>rO;a7wnQsmI1yRbt!dcwmcg7Sr9uq?E~n-L)fax<57n1_AcBDW zfpGrM+)ZzI-K*1Ux3&Nex54zsCey6{xo1fTCB<|!Aq6hh$p@4Rf(|w@wL19&MkI=? z8b;aYn49z4$Y6J4dT2p1=(R#<1({kUgI>_To#+1f?J~Dau`}dWmvxy)U7o=JT16fC z>JkvQ500VC3IsXRR+pPMY$#8Sk_I4q?_)Oo?d3oonrIb#%_JORj#^N+OA=(Ahl5c& zO(Wy_Gg=Qx>wBu})8}@lx|I;w;TBBJqHf-pv(jykw$UT}m}H(b#)2dJHa(-zo3~!! zRHLkc$%h zbQqlj7fX@uO65r=$WKI2aH^gqb*VIrW$7L z`r(w#ch$Q+>UuDUT+3r7D7SDG>idS0)iw39-HkV3CnxMk4S2B9;1WRE7Z$3i2ZJO5 z=fj~-^XBU`tS9=u4>i1nMj!V!KpLt8N0dn|FR!zznaj1-nbg9Qw3yUY=K13tMLDmb z;)dr4T>;`>$drxIy77qON~noLaMejxmB-ccWI`8+A!uAke*kqw9*DD#F{GZc?-Z=K zAkIMW*U}?}<7%(g6;xG}sIM@aUk(B-+CP3NpnT=a7~yhgQ**>f*>e z`QCvf*mJLpYPf1)4nf!e}8pD3%wIlqtwK>#~I#J?rt zaUu0a)lt|sW7V6^fjMl}ZxJuE*66t>@vX{82kAX@RLr_jyhW7<1{D$kTgMu^cFAF^ zsM~ucFvFJYbxJ}Utz{uLOdqv#BG5WfJE&6iI#>uTsW;m9Uj5xxxno^39e(1wRRzfjKuhd`I*v_8*B*A#uq zU9TWA>dKu0$Pics3=nLenuq$ni8f)ZF7rHWg!I(^Ua7bFbPj?c>kGi3?xa)hOzlJ( z?P4vO?T&8TAWaF&%5?;FgKaAlU@>$CVoA6bI1uHlctBI4&)IwRO{bxRQlJ}l=W5hR zU2qy4#IxnWWyo`Xx{ywRV4CE^tGPU4&+?j@B7)hHyl>vmmWf(*1I#V3H1i{PCr3hJ z3bn%;KNn-OR|K63lW#FcqVJD9chNYywb$#x9VClOomu=W6J2VMD)-HT3ri|cr$@I5 z_$QZ(?~Mx5DAo$_Jvuam`uOuaMbIY+y2y|r7%cYWHp+%+0R>4!lBNW0B1~dflp#-2 z4x0XusRqIe#6go6IDYREKxY<{U#%;L2SlZ4>2vWX)`RhqoOL^7;#2M=Mj`v~xZphr z0u|betY|z&H!q=MqOH#FeeZbv$9+UfkKbuQ!Gm=AZuNQ#$?N+s6XjY*+BqGiCtv;Xdq!cGQDbawdC3aK-wL zS86@;y73Z`qz~w^Y@`@DPnLkSd`QfA$PP_SaJSe&tK%T*pPT2yL`5=2K4r?_H&f6O zSK8a+&@ZQH07(qqkhyH(BU_okH%_c1`ngI8AK9<_m;~l$@w8m$NMIB1Wn%lzGOwo8 zSLGV=TgrdJUPgLaY6PKZ0$J#;~ zRo|x%JEApmXjq@kjX`+zvBU85wtv8f(RH|t07%wb!|0w*^R%-}dyq+A$00cg4Ak&H zeCWe_deF%M*=DVHX_?Adf>{wMR3GO(1@uP^DRqbdeS$p(G>(D$n6(|9q#LDO=Y{GdZ#mq!DB1J+VIV8Su z)=@@5*#*H7N(R;~Xb{fZ7!*9t zsMvH_F&&96_)~1?+fHZ0+zHM|CgcW0+#V3vWJJAhU7vgR$LBx(SSt&(uYc$r{kfmk zk}fwtEdA=wx+VYYJ5%|bK0l!Q&|H4Le6;+0%KKsj;{W>Q`j2l|t6y8h71@W5#C-PI zQ7i56WI%}Cs!DNysIp?(QMu}}MF!*JRS8ChTIO-DnT$O2-4~h;2Sfqy$t4M7|2$e&LIO554yk^ttIaJmn|__A?WI{;y>k(I=fV&}5*kxnnShu|MC+21PwS~^W}WY$ zJzkydp8_>ec)kxFq1v*y^=xzCx0hK>(5EZX_+(a=qiy z0OxjAIM(I3ChaekDTdvFVjxf|>YJ}n|D=8H``X6;R-vvELp3DHoPdy|^2FC+ZjN1J z1-h`(Y!dyxstm5nbz8~BAw35AZ@VbrqF^9RC|Y5mNO_xsb};?5(4oQ~_+ zZas&}lChkyTv%U`+EM1Gotua5FvIjc}8L}6Z<%RC*F zB-iGX_XAtqL2U8zpC25sH(l)86m21Y$M;S8|d0caTdmbfP%1j2t z{jlNPON?9fb}^dsjq<>H3J1#)yp95yIFFBBK1G%Qqa!l2{OuW!Yf9HgiDEzGWnRY` zOlCPEAmm&|sYPaGv1$DdLx`+9LP!M19U*63M`&RR2e_33`%(I>K63cjeoR3u_c#HWC|i_1P%eR>%sd&4l^IFE~GFz z52UI-iPUUkOM>J@kCXo!>$%-}G_4PxtN+t~_p$lUXepqJ=6$FH06x|4|Egc~q8F#H zyx%7JwHwROl-I@3K7XxW>Oy_Y%fdnEBD|#uDBOJzi)bw3n0dVtQAh@~0=6ZfK#UCL zKWLB9jlbrBI5?zLgVdB|vN#pG^h_?xY0eg4{GjVCiCT%w3Bh=x_mh*IVcO5a949Dt#1^ zFxFDdN56Cs{eJ8n<5^73a(33kh?i@#>jPaNgXbAynp=1F2v{nOR}Gy2g78pkksP1l z#>U?J>JoKsl~x6WNCZYFhH=m!R5IWxfiQ-J))9M~52}-ya-dO0it5PH$y5SQ#MH-b z%re2#Lti6$n|*pDvXo+7Cde!wUWjC8YrvcqoDW46Y6_GA*(bzrit%S;@EqhQSL=EM zCY*%+ZAQ2}AfTX#OAK;oTl6uzWjIy{B4LvUYNY=R!Lt4?L~B?S z$`G&$+20GHW84nSI{W#M@sc`%E9{xpN;MH8!8$pini8~0+$;sU;P-94_^`1+F!ryRx%7A0n%)E zKa5~z^Eg%;3gi5P1yaijl}ae*F}zlcdA+Xjvu(SkXjf6ERend?gTBQ`qYmZ z*Y-U>(E`5vR&T2lWM0?kAn?ouWfbFE_>6Xf>-uNsBQ#G4i_aY3Y@x=I`HcHK_dhRr zno#H{5ZB80ZLXj1dl;)@X$7T*Ga)v&O>_tjyzx!CbIDdWmFl&3A0sUgDKRcforBYX zgcX4FBwb7GO)Isy5>nv^8ag9DmNSJpLEGw9LIkF1O(;38JH%~FwW|-WY%Fd*%rMAN zuFAo1_v{g!7?nC;T+X)ysn9h#jB|sQ+x0Y;wV2tx&Y5pV&-lG~LLhemSm{p(V+mh3 z+C>4+*W^J)Wpzgl0ABm5@q2Iji6}ez^O~KYBOl9}rV-f-DeRp{>5>r%Bq+8|1rR;< z{lvkE5y3KXW71suvDf#qAI6`v+;yqYXKdFfHfU z$Yq(3izSja*h-*|AYCsKZN-ODfFq2@@){#)x+fsfyevVQ=J(=p^U4?dxL2flr)B$U z3-!J=kbd)9#=Z0);8sev9+||$>SkqvMn?LaulkMo8-G560C|5i{uQeD<8AiwmgPI! zCU{Y6ec0QBTabCS%)dUk7laVKfY-Ex&`2_x3D%c3V#MROJ2^sr^c{mFu`Y9FXn{bG zvQik>%O(1HYv@gT9V+KJTS=qEO3VOWi}t{t&m<*mpW$-CG%RA;I3TbsCRSvseqvcq z3`n85>WCPH;3Yn!h?2c_m!=E`LpD z_jWD>7=8Bk8sslMG10n2QbTQAcGR3jIKD+bn;|9T*zjLzD^V@AJXh+#;0&SsH8I-skqs;o#K~ zoJ|Zx|9#^eWebcbu7o^ciXqF9UfDpNtIb=G2D)|VdH_11YpaIlBVRH;>#gq%CoUul zjX+z2kB&mrAm>^;RayvP$RPt8C5j<1B#Drv2Sa|h2M0|DBV2+4%*N1!hk8%wO$fa#1`2r&rzDJ+~N)a_wszCx&| zR0`hZx^t_9Ah7*3D8B#R)v(9T&0-=YlP0~3!jM+hLg7JJYV-BEo!a+5_T?!(sy?kD z-tTz2ApsxW{NRJ}+*$8Ng8)SWP{M9M+uP5UX2YI2*ZOH+`5W_(yuZr<>-(4V*IO6P z?JRv=%lKZ@9R1cF(u(N$?sL7@pR>sjFsXe}k@_Y(0!u)GYV zv#F)g9J=+659Gq2-90(?M6AzRKs=g6gEpGeU=qZd&FY?679W%9?T##-q9oT_Z6Dt> z=dPK6?rX4%xz8SQsQp^nRovHhvwPNtwT(TZu)00Z3J03FJyo0^>Frp4UV>rYJ0n{U zvV7!=$M3wW^(H^CK*Vnz}wIYL0Q74v~>ijt%2zGZdf~%YC_yt zXBPRD^=@BjTjSNpj`Ykw(BAR0wV_ch*@9mW)C;Mxorr~wi3mBg6l7iIK`{o4SDVHs z&_w{*lZCl}I9gA-XT}KLd#1b3LG+|IP-A-Hl4gOj{tQhe6QW$p5|X-^Ywb&vFpx*35}Oq=i$Rt>*j7dyFdK)kcS7a11hTBKR!E%m5)AV z`=j;2v`K>7&D-g*t9$Y_f9v0sU;PE2A(!_jDe(Ok0Q{b>?J?#4lE>;-pYO=0Hsf_^ zi*)K6Sa0?GRtKbj5ts95IydGJ>Ffb&y3J0b2 z6#Y4bD14|-vC+Y{u`XMXL^>=+^;Ogiv%T+XI{GjQZGgzwRF%eeW`fnSYv}h4Ydz<+ zw{%g>4ueNn9`x9EeInQkEbg+6T2r6McM4~R`Vxq3d#J~aCrvGN%z6eXuGnE&En{DZ zHEzEv5U;7xJe4;-n3Gz$b?ru%>s*SRH0 z(0gq|cHGDf^+Y}7eZbU}^)DNm&`T35I}U1Nf`j31lD<9%DQ8`a4|`-d`R3rNI{F({ zx3)~VV&23KYTKd{d`$3&N1V_3SKnNpo$AhCVPBdcJzNhKEC2B&Ym{;JF>Fhb4 zEjY{O6grA_3dkAf2wWTDR&-eNq0l77Vn)(}LYqU;`2g!EY4m_dzg8qftOTNg!R@mX z(0ZV$`$}8mRK8l*OYK8L4eI@d5UMZTuSNjO?0j$wvhjng95hUX%q27g+&qYh*PF^c zp<1`lkSLnHKob|MwLS{%smhRYKHFN==oim2%N4uSHl0NbMk-_ASydpmE(?vLF>u$)Vyp5W7sGV(VObU>kzh zGqetAaD8TXZifI^E%T^s%*#MfXo+K8h_I<=3#yPPGx%iHdTn}Zv__Bd%%Xkm@m%Npx`iA)n4_8u(sgTw;u|97s_cm9LoO2#IJw z)I5X68O<=NCU~OzqN_s={y<;Do$B6TlzYv14|!(HJy^~(2LMw6$NudZ`uP-rhTi-A z_Qf;zBCrHhuFqT15-o}7-@2~n5hQ3LkY03WykD16ZtJD!fR+dKzm^ z6r+*{q`n^p#B4tAKG9qcd_CvJW&vQJP>Sh*j`Cia#QNzx4;VtAj7)mFcuCZ`3o`6zYUr3Ch!-ff)~MYtBY~;d z$GXqG>_O7+2oft1ouTPaMiMbl(mI#=&Nm`S;N(X}aIcyVsU@zW!R*t|jm&>T8TBCO z)}MY`tBdhblnbYF_>aHD=8Oz`bZTvZdrPc8{||p-{nuapo8|AlzxV*_`=jpPo&Ucm zAKx7ASCz}GE3TWglm0G2@+xG#OukjvG3)QD!TjO3jShhp1f-8^LBNmv^vDFjP_`*g z9lpa{=NhCqZf_FK?tO3!k!{vB91gc2!2oFHxU3;wAw;m69C4nVl?`4Q!aitoirL&f zFj1qH$6%Q;viIZzGi0aN8sET`+PXm?5tritA3(oYZ6)k@w?uYFHPwBG=CBh2B`@Dh zt2)7|7CIA5Knpn5%PAoBxz>SY%FjNC49q6wY49t$<~I!?(67%j(7{I(#d&N5w>`MH z8c?e~hxVUfZ|9Kdo=STx7R0TWVB)hb1j<#Xl?K%q!H`A3NCJ4At5dMkGs!9^()sWf z#u(HSF<*#ERg;5}933jt;4Gjtnb3p&_tt->5-T0UmxAvj6S>jX4YLW50MJC!c}zB~ z!9>;#?FY}|y=7Xc6*;C~qQgmSf~0ebZY-{s;zZQF1g8n(noWF2h#)QXAo}mR8+jfS z*Mo)iKo}R7hEGQx84|>v4DF-T^_q`t8Ye3F)Ar(zykn5s*F39hGH<056srqh^`GnP zfX81tG?hH%6By9|Gn=IKEV1u7XIb+t?vKC6D7Z+$UnI8Xu9?AUh~N% zEr^&jnz=k2(fH*O(I6slW=tmP6W0aP1?=U3mye9AF)7mzyrpLngV48HKf5TiBr|! z_*|xr3-8(ODh&{- z1_zC0onH3%Kwcggk3en6a}Nhn&>8Z3w53U&B$R!A1={tT$h%SdA&CK%9JP2PGWfl1 zH&SGc=XklAiM-x%qDb4w5QTJ19GL_fX_xa2=ciB>k?zZ z6Ui|vqRCnUKyPh+Lj_L?T|QH5W%aU6<=GTKIK0HmgkVEjbZr#n{kWI6%)jl!ryAnj zVE<&#btEM;Z4jlBZJ#=~9D&p8zt=?anjQdrPj1)0HH7_k;{*Kd_Ex{9JOAc`)BC^& zc%K4*&wgWC-q`N_r#>V7kB{6*zv|)Lq>pk%8{2Mjil-YR!b?%#uAUGYbd#*r4fSF4 zSSwtrQB-GAwjkgWKC(k9wPjbbR4Rc=5C9jd^8wm1jc|d4E}&i|H38~@BLWMY#T?G( z*sOh{%B%v0E(4O~m7};wCTUXJtUffu+Uq81VREM8Q@w;fgT<0)lNcC%2ks6uGHYT>oN&}D3re~!LICB?CDs_gw^Px?$ zmN3x90TG^6jsVb+2qIT{>0k{GfEo>T?z+DoZ*_cyoHc^aG(<)n(NlM)EWbzm&}6{$ zL^1hPU6-6_un0LeKL^Dp*tv6eG>k}GXaU`g#N=g{G6|))V@4*mtVAXyK@$+=+|i^! z0xU}nIcbR@K*$JLu%_6Vb<*1AY<*c*CnU;}rfk}!v9S-}z=YbhT&Ts)N;LijiO)7q;BZTkFfwcmNst#MYBH=w_xpWW3K+6jsF+0@xlf@f4rFJ!w+ zt;6oj3r#LW4}B#%`f(rQYu)!gM2gfDskOA9A58MY-sYibLhaBsXz+gi6U`%F1I^GNo(*Wt=!zu6-Ocq4jbAMme!a0wi*UqPo5Z+FA(r5nRe^I{ttN+XV zWuM#l0Iz=^_yFts)biJ$|1bRJ`WX#k`g5w`-xhXpL61v^F@{Eb4N`|0V8IAma!Rhc z)!W2KphJzXX8xb}suAUDS>OlXGJ*pzeD}>-zz*`9rx*+&81l10xMgInf`Ji`A?nT&>w2}l+)nTrVt zxm4(W5Im|;hd(;V6tEatfhLuIrko|nbyn`H zCSCW5G)cYB+>+^2$&9^SYOt#H*P4TnHjJZ}m=xAu7i-^X*Qd@wv&c5Is%Mei;cv6V z^Fq&G|0rLh520C!)y<+p5=5-?IUQjrnWmFb|2IUhx@zAgYV&X~Sbt+RM{q}Niu*o| z>-FFR!6^127 zUe|D*UFTy9S>eKx;4JGqlOw&ei1 zCKGlU>PANgPdJ>OYnfFWO>;xiLFO9kKytu5;m^091)MIZ<=HhQMys8rQlDRf^y(6w zK`D?0bZm@PLvXk@;wYRbcufptt&jo2532AGuH$_Wh33F#e>9z)~K4ZC)7< zeS!Y-BzXA(MmRAZunDyzl+DnyKx~sIL9JJjhD36>(XC|*PniGzl0?l#I z&}~vjhW~gYmMU}%qFFJ<{oTvR4%;EF&)yro^sE8zq_)Gn`qLUwJ|=&;RP{0pH%MhY zE3y`%yi907HK^7R7Z-G~I=Q!aLc@K`eHR#&(;@hA`(Eda20u~)Ta{T>n8#Jun3(6} zFqd+rK{{RH+5+h^*w8S>Qlf)Hc<@nu9ubmS=70k2Z-oPKiMlHZS@qz~zTb5Yo>Iid zg5j>W(Eif^Kpk&OBI<{==l|kI#vVeM;N8y*J5y{J(WLKBJb*O#I+LIf*0}eRFVS|q z8bq!LC&~d=c8zE^G`r_rGm;(oKrj552@>->ymW}t9kTd7bx!7h#Nl#rr&*^l>eON6 zyoOl}EtC*Ri4SMDE+(KBNYa4W$NmRO;@l+e?9sA_uBAI~BuNL+B|M9r&f^wn-`M7R z>_xPfuBQly%1(R=(gi46bQqv?g7O6;rmRj0WkKCrAODJxn5yki?V1Nyp_u^HNi8eu ze&D$YSEeRd6U|59wnz>5+iO%e=k}v+YxO<$#w}SIC*Z4_5B{|Gr4+EfFVO!>UzGmb z>2~@I)%n*UKR7HcYSC7?sirS;%Stz-&__nLfIeocEA^~UA95c#X-a{r5U8q3En^cc z3uud=I%9*#yl<5soGx6K9bRYEF0ko6OBWZL5FVVf+V!7uNb=sk9W`qq(TzeaMh5wd zF|(t-YY=FIB!D#yd?IlfC+3Yd)$#m= zDr%X|x@F_7{YwO_`WSHw1W0gxOC@qGG4y@7+3HBZIFHofK)U_Ytbl0(=rWVz3fX`p z@r+!u*Gi2SQ(t9)G;cl40c`nROkPHTfRl@)Rr3G)aqv@(#7FXse(q+w>p}1dWhb1Y zO5F#Uhb1j!izUthgpblJsMPn7`XEgtl<=zwslxy0&@u$DkBo-B>Z8F;7>TANdI`zL zGmk{6o{R{t{}qwR~Bx zw+ykMmE=u{7$?jTxo2ACLai_~k*=EXO}&_y#uD?*%TCjvNXZOselQd_ zZw7urH*AK!`+5G~QOC7Kbto z6bmmGDoug0~G>`&DHb&NR!m21kKKn3jLW|^LwZY3J<`q=SYA^;D!IRB(@DaB)6S}pHT6tgV?C`H&1F~nd^x2@B zF4KEH&F4qY@|lQ|9ge1Hbh~9!9dR)MsD;_rON^2AWV1%8!Dd_lZl9lj5ZIh7%H-MQ zG!HMb(m+UJ*C3+xjNMQy{nIjj(V(xXvW=F`h6rezVdH*u@~3h@RFPDX0o^C>ebz*Y zp!07*9rKTX3enz2NvppeLz|``fu=xSW5`!;f1M=B(K>A88A%&y*;68t=~?Dgh}$Cl#EmX*hr%)~5x6U&GoU2xi5^(i*&9753MpLd%3d z^wyD341*RVZjorOo`Q*Vu(ftBYoP!h1lcrDfb}$WvMmpu>#zIsf8-m>*R`&IH~(Bl z2mhQo0GEsW)mx9H^WCS?)*i}=tg$Km#T2(t(yPcWd7ue4t`OWqy4(HR$_G#>P;8ua zu&`_I4rslWH{0iYOdG24LvJ4l0qQM~>xJfkkenp?OVJ)i8va8~>`cf-ng(F>jbad) z?34{+7)zqbciAF7Q{2O3!i4E)w7~}aC&s|Pj7-X>g6aEH^l65_va}_PJC7{(k*>Q7 zb0mm!fLLRK7-CM|wf!$80uHq3zybT9q0zn~fUhkWm?qd68dG@&gOeO4T zrI0Vo7qPLv$fR~6bF7Met!skZUlUZw?y-n+!GqoO&jI!oI~3usUm~Y}Wn2S-JTH z;nv7ZQ%3!KFT>|3+h5Vdr|*qE|9j(EdG|nX!CmJu-@5148+P3#5LA7Zn(2eAZV9k+ zqL3&kvi`_po;+y6vfX|>-MHM7zt(>IU!^C1o;d(re4u6jf9PM7-`Q^Dw>Rj2Z-;G# zbA9l@VC_Wh5!*0|r}Z!|TV^A}B)Y@=YIi6SEhJqs^vypxAea|DI_fa06QB=5-}-c( zrb&6-n^e9WUhegtVJNECoh9HW7XpFY@JUKSxw<-St%q=lWD*+ zC&4#yp?TdUW_g1TaCsP`L%mmdi!KE~gzU^sH4VD!fXD_CvPX2Puk)Io=>)8y($#OL zw+NL8gj_p2NA|@`VIKQhu1F_=v;_3Ib)+M?3ZN@I_Q6VRtzP>0sPC%dzhUpKM*8h- z-1Ob6Aw1Lm?Mh^JKfMOmvtM+6MF}1}I`)(re*N!?x&*8(*3l7D zCDq_7SvDu&>8$6d?RT*y>L$SZ@i41oq(@3-ocp7t$-RbD_7ccX^0r}?;H`lyB_V_Y zfqS$D`JN9ERoB44i2El=Fk4Wxs9tS{eNz$DL_-9mHDJAAaz&x!Hb@DZ$-53hXoq{Mhd$!V$Hr?pHSt8HUchT=!s!jA66t` zl+77c)A@&N=;(pp+;Ir8iUoWE*Z0>$J)Ua?limeJa?~Ze_{Z4=Ka%y^b_3EO{trt@ ziCiittG}iMuBYzxp8Rf{HS@>oyDab;Qmr0TMqP561O{Wnq9uL*mdGN~9(vvw$$J@@ z8S0>(WiYYQHQFl)RLMb-wua;CVo?tQLX-ovh&CT5|t zUA$bb&5Uq6#OMOFHEi0V+mC8Wd_Int;C8|JCJE`Becx6DVyuMfC=Rt(Bk0CPaC?GM z<>|Vxi>k6d5MveAjEB#*tj*Oy(d-{ zL}@_}k|F_}2zWIJJ<1KZaSE97w9ex-bDr6|4nGwa-sw`l`z6RP-hM)R%-1F z3tIYCzx4M7JPFcWCJ9YjFG0N%It4JyiROcQ>r07pKsS_&tNc~4bV(&m*SF#@V*e;n zOFKb6p*?3EW}~e(O1$~;cMgK6qC#(fYB>Kx8)zI-WRL4KI7$qGskO{mBqWE|^?5iF zzxNmsU1?B^nEYs;C4sE1ce2?bBK4ye>oB5r|A;9_Jy_wsy7d#r0mHuCXLKQ+d;eqY;PKW=0%wKK1HaaVrR zdT`aC;5=l=Q5y7Y-a86v41K~rL}?BIuBkSTHnt^1NmrAp)wWznWFsg~l|-{@Wcj4m z;9^YcI%nL32KCn!nhI+Fb`6ajlOm-c&=aqz_rG}xX1YEv#b zX}GdTk!9`Z)*0iy*LYs-dMl3^2YLe=iE@UP2H+!I!um2L6Z!I>2?RZwUi+?x@}<2+ z|7#_`Ul9OR`cvKE|Bt{BZyPoH{JEXjRUxwpjsB4nA*j)?PCHWZa ze(L1sxU+=DJ3^yZB_blsZ@>j1TV^3^U_869YL~D;rUcj9L2Ona$H61G$$e;XNotJh zwsZx>bBTCa+cV5u%FyNefc<|s8csBTVT+Q5OFy5R`$R-kyW|>-?d*Iaf-l7rW3Phh z3?@uSfVJyqgmQOtTuddp!=a|F%^cFSiF` z>(+$+AY00x(&ibK5lZ>i^0)>Rwus0|UpZW2&mVQtM#RY~kw-fD>t;YSMg%k{?kRU= z>LEIWAA)d*E)`wGc1cA5SyAf2w>i875K%d4M2U2z6i-UzwY;%{NJ)%k^3O-NjEZ|5 z&}zWvKtj;5W05N)Z{%)&J<)g5*@J;(V?w_0u{haH47kj7v8l1INg(r_1dLVsT$@gn$cl;kUUjz)t9K z`9qUq8#ZLAK_F7*E%2rf?!`iW=iz&v-G_uM^PGi6_@(b@feS?#@lx zBU|xlrY~RrPAT7cbMQ_K9)6{brhfg?Z4G*96bW7!#<&OF{jp=+>r99yJ6y#*V`COJ zySi-QAQ@80lt86F#GVLT7}@YWyU=_b$SfI@MI#4)lyHai--GTSTp1L*p}3=%;zDu7 z>W+7Ahs&;u%03D3H^Ex8khlJF@UiHPkj`ndSobHiqt1kNN;4c?xDHN{vHknn^Jt8i zANq_Rh?K8aAY4aN%jttq1+e)MP+p9^b`Mm8lOe`5=ToFx!lS0|x#0A)_gR{ZbgSp` zd^6ztFYUGd+}FzbOBn%J_y4ul{r|`Rm%i4Dir;C*KYhJG=V&AabaX6*(u9}#4D)=N zlF5{;NEJEdAUuH#hav!(>0!)JW=q-_Lp&H}K_9palSu^464W6-J+ly_vqNe z!pcYshqU0e7@}X(Pd>USTAZVh!0%yh%p)6SD`S&zI4k%Tn?s6NPyxBx_r7??^Zb*8 zW&5QDt(qLm{?KNz#ixC(rK@jRyfz%MIACP*jlTCSlZfX*o!vZ^?_cBXC zW1LXu**S+1MOf4M5aCTe0I^RwQp;-~#(rMR_RnnO%FjJNin^Xq`}*LW0qt_+EgH*8 z`4*A(Cm91>Tw3ltA$1j)a$^_>3dtwQ4YIh&ox&lNn(0+KpFsYr-}&46s_ogfcmH!2 z0KexyBRBeAw@l*u?IGN@Jp&gmp3Y|*V!s(K><@-JkFkb+ZX_z{|ih)}Sx4{i{bB;<@d#3YtKr$Q#vdwiH1UC&U&2hs< z_k#;rtH)4caodxLds-)AiFg`Y!ch|4ys#HJ&#ikB)=qOd0(PW?J&J8iIeM9GfELaSOugt+}8|c!y zJT5`QdIIF8pWiz978F7rf@zJ8k7m>w_Q!jwLRbM*hQpkqaX|1F-18a{tZ&M#Q0)?B z`{#RaH-Clpch8SPpnR#_+n;`JJg=J*zOZ=%1;aVfj|iecv^O?Netzk51xfX?CFcrg zV@XDQ27TqYNH8i@{bP#9^jG0EV$drN%@8*0C6fm6*(DH&_V*s63?eKi@C73t#l<0! zRL|sHfsta|+nOpGj7J#W2ghRvKf>3#o?Wnv&j0DwjC?qFX4=qYJvkb2Gvtrpjr9Ft zLwvcfId-iOn~k;nyrwi4BzK^}A~`zIG8-UaJmQ`WLmvL<5G-_Cw)@YPXUkdtdjF+A z`}6mA`MIB&&zBT4M$d5m=Nzo~FPwUexqp1hGVNTP-=8PHQaiiDtx)1wd z@`w+b7JJ}Kj`hYnnR0PjC-47ATa17jlJTr-%EbC-@p&rdafl(UZvIg`K@jpC z_3IB)mpXGn)bCAkVwOPF!sm@`Rtt5V*5RT{fxkUN;kA;&WA_Ysms19lnb8fIplfb@{CrWV;@yQKyZ{s1jNW!xTo5ts);hj8XRjf z`=4OlIp^r<=A4AYo*YT%CsHk!DGV(P&#;a_0*WjWWJ=g~HO+i2dHs_aNVy+yINj4= z>5%Lhp<_U0Vgo%`crO&L#;P9+A&Me&37Mj{5whik^oG)qMd@t92`#Y%3Sm8lqvA8EW>izB$ZZ4;3=++vlH=E4#PyR1| zLEij%T!5clA$SGRw66bQv;2LkEs7iBR13NZvNDB!9kUVW9xG*yD+MkruI1c!hf^e7 z^3VvuL-qg2VN+O*NIWPr*uIN z>V3L6iAmr~8(khrl(bCbjslG~yL!P<>_V(&$vJx5Kn_(Z&dsw?ePM&N=dxu-ZlCRy=i9u$bx@|) zH!tlD^S{{^vzjryF+0xC}rClRYy z;BjzH>(Z(7i2zSPu)l?X*zo9rz~o<&o1qL<5@C%uw)iGMzv@BF!J9wvE(AqGjB@;I ztfzS9lni#F>tHfw_{dXN#pFouOu}{=&mcPZ<@C7!M<T|kM5&5 zC2G*+HW8AY{5YVV=rikWGV6-6)SUkAa&K?=%n=4(L+OL8VV`4QCr7vo&Q4*?}Ec>k5AUH`7NaSihGU~ zQ-qwQeY{L0+L2jtlSR)$Su}Mgo>a}`R{H^S2qf-^eWz``S6*zL(|>M%@bCQ`MS%P) z-M?uG|N7t4ryuO)|2y9;pKF$kwSBM!P^RS-pUG?iT|S^BKsk$RF(+SV4FZ!G$;%`) zRuMh8BvHiKj|G{@;sFi)Vra4}!(ELCe|CenbT)bBslnhho6q-#af94C0V_IzI$P=@ zXa=S@r!^l&pUcLq6DJ=XQ4qsq?gX~s9@dG8kuANa#A#jUnLo%aRVOLW6r#gE-VA{O zX#k-T8f2bz;Qz?U1Oemn?(UU$MHT(&V74l{Slj2|5@vZj4f^5kJ)M3 zxi|g3p#VR6k2K4E{i!%pX6QmDu&hqjbdw@lfc2mRQV_(rGY6u@V-J=MUADQi!7N{v z$H{B~DN8W_*)lbdAnr;gThJO@g~_8r$=xgp!qc2-&U3`L7uUmVvt(yy^UbfkHlCAj zyxy+CWpX`Kq%KZ=?&RXf-|I9RU`?DAB2~q+uxEBcq#a^mWb0YnLtc>1mdbg*t7PT| z&$)Yde$LKOy$g%NQ|Ug@GIxq$J6-bcg^&Og=bV~{F$D95m@m=YB~R`p@bo~u;45$D zL&kIY5FKgB`=8^QyHCf3JpVr;IO`aoGjW1smfL~F54S{&bU^T%@&$AnzZ7;9ylf$t zj;QaAjl?(zh}P&yol@qagCneMUpYB12j?PG2r{S1`j)3i7{&GXCN2~#K(6h4Z^Lt> zeDUS6Mp?&iB;!ZBqk)dviI15iNto%txMg9l6f2E=$=<`RxvA9*0r&^snu~;;Ow?li zTT|5~^7y)8_rm?BhdGcJ$F&vQODhb&`^-)G^8ff36Xpru&sX>o?%JT&GaN%(PyBswx?cB4~& z;@+sN4Z>-o1xtSu;{@FC3KuR`EW^W%X&1EXIUT7$_g!bEa?VlDWV0`GpwHqr2s+?} zZep)`m7+q$<9Ai4a|7XI`tFqW2ZI~T=JEO2ep#qnAu?C!k0px&K{rK-aNXGquMep5 z=9~)-6d6M)K{f4|?N`8zGMZ-dZh zStKQ)dLZK|c|vqV=GLzh@x!1R@%=_Tg);8Xo=LDy1(}57rI0$uy*h4&y>B;^`)QMK z+MaPcY^KFsWfhw^_Q3voH+hXvbl1G+;`fd|1ceYslTu?{aLz|#*IlNG-AHS!nJUE+MYM{La@(He(pU_z>0t$jIn@iJWX0=p&vsXAhSe_Nl(hE z2F*-n%E%s7q@*myiydV`85YQuU@(45Xs>DJ*r9tir2%oyA39-44_SxW&8$jU-BwI& zJ7-R1;0(*MVDB1TgeNw_%bzw=+m`+a$L>cHxe2ZVS;VH?i98G<;*?ByaIF@ZOi!|Ko8iU|DLbjj}i(}o=wNErdmW1TWsf5~z1DbpeMPbkoQH;!z3#Hjf*8Oq0 zYo+UdG&B-Ib*8v!EtKn)&-u2`h(vg6tYm$?WU*W_D`AWt_Q~uiMgTQUtonTfx!)0P z$C_yyECO1@E20`@#x$&uh&E!BS>}D5y80Frv-w{u2q|qL^VG0o*KEVrkdSjdTi`z=#)F ziq00sFg)4_6->z}V|DKUzjl#WSUikHBig%Q1#T2^hAc$elb|PpU5cEJzyqEwoc3NX?38ly4nGSJ(& zk)rV_HJ^(khb%v56=V8lS+jWCs(p;R@i&N&j;k`tFPsZ_?^~C zPCj^QbtEQg5(?LcAM}6y*ZE<$T(_us#HvR{}Dp8mE#p~KcX zhi>c}EtuCDI!QS4p14cD(kPl~Uhd$I7VN3b~G0@0n zHivud1<#px5=nGKNj6kwwT8@zF6>VBwUBX<-$7_!QN%FR2$wU-2U}o&ite>~l=11{ zT!kC4OA+g+WXp{F3YpTR6)_puc-O8(DwCB6m-{w%-@HjwDjx8;VAf%p=P!S@!gULUi5RJ|aHP2@v1-5Cq1kY_+R&jkV!%T+GASp07?m^Fd@ES=$IcDw)nviEg=QPi zZLBHoebLvNmBMI-`wm=VykMV$M&BpAG4D%`qiL(94<@_TV{qwg-sBTid(azM=m? zm-BzE{GtUwmA@sj|JLtT8-M)Uw`117Aius_4%Q6r2+gJB{N+dz!d!VGdCU;2qC2Pu z?`D%tIlKY=vk;Lm>`|S7B6xpzny*4BaxO7*PJpEd>X%;~#Q~}_?yex0(K5sOnE$}? z_H-hHqVxk0_R+@%>FoT3w`3*{0Wx$|K(J$Lox(<95n;_Ovb04XPwfi$P4n7eVO+`t z=Y@1^p?e%<2n)6(B}%`Qj@>$8Vn5J*?@C;n4WzPsc;cBs+!+3z-h#XHYP$ z5}eJ^jp)HvG}+^^7>0Mc7co0&rOOf)o9bO_M4)2!k86lRwi8y*X@(>VEuPsy#s~)C zEFksq#(;uqJ;dyWt*9rQDf|`c1lI;Qm4wl&Fw0uzMj<@+6Jdg~D%kS4{*Nv>l35OBMKy!5ELbf(B=FgFMkK<&A+i!E z?*SXT1c+&vZH}tkkM02#P zB(csBRX#&PW^0Q3o_t)CvmZECICE?x;~2EZiQs7w%|fK7bd9Bk3`ic2bGhU1}u z3tBMZmua)?8xvcl+Jf+K6am^ao?<=$_HbD>$b>rR&H)W#wh|^R#MY0%my+WHf8e@V z%<1f1fLFmajgL|fO~Eq+tBF#P6TaYN9~|!`Gg7h9IjJLWd~_|_V^N+X*C3gto670ICH-*B+X@J4 zC7Jk(ObH;HCV{#b~7h9oz4XH1^~cvvvWmI@FWup%3`h=u+;g-5gS}%?DvE+4|6fD`DPm#6EeSoymxCDEhZIv&# z6oFf^VcT6wi|2n`=8z~yc)`5;x~0_SAh&XF~^bdz+AGKpM%T;Lzy`N%tKA;C?X*hVq#D) z96`onDHR~$WfUJhd5ybGn02rMgo%KK(&UK$B5tTOkijfQI%*Jc!OmkrCsEy*jfhZ3 zb!B0d3U_0Bjik!Zt0R7tA;lq|Hv0+-JP z#w67(ynS;Jq#ruEC`y*%A3lhC)$*V^f%#i*Gi>HqwqBTo(9nR-JU`C$t)qpIpw&9r zHiy=oCD@D1vFDTRvrPUTan7*u@#c)RgA-SMBOgfNKki^_#|A`0tMCe&fX(0%GmC{hzbySvF4N(rG zGk#E=nbK_)HA0q|#D3Gspn5^OX1+S$&Guz!(G~QkH-?5i@ z^Y``VApi~j|0}W^WYEI8|56JWux@$rg+E9&%(|RT`jY-IG3VT-hc2s?lChJM?Q9b1 z)FnPsXvQMb+*JamE$OLkuX$$_FLF9$+H?4h-2jd8sbKyPutgEo*a<1- z0A&v}=7(f!8J$Djv*M@h0d-w|_zoa9K~qX7$c9FY>Ecx)d!C;U+FW$VJ2@gc`9=yy z&z3nWy~|iAA{h|5ll&BrCeOX?zn}E^nGyV~8+rG`Zr7{-s39w^WuEl!Eb)Q9df^S3 z%#gwfk%%|TaCl588s81JqF9qi$+6Em;K+O6IT{me@E`-l>EC@D{1O>6<30v3Wd#ZX zRP_vL3sTc4(8@Q(kS=m$u3Zmw$ng4K#s~q#F9k9Iq@nPv-4{HTjAG<-T3uFDW^eS# zxM-ahlp?8S+1w@-?{5Uc+e`jl&B7%BsX|D{dT>WWu*+UEo_2~2US=aJUL&*|BAH7k zPIhNG1ddHIOX?1pxVCyswtW|db`1$ALeb#4M)kASejcoRjc_l?xxbJJlsot7Lh?H& zwa(e}I-djMJizm$EMXqj&1h^!{fF+BYQ8C-Z5$>WVZQK;`yeE_G=i0&4A4YA7_EE^ z31B{!U4uTJf%4~)s9>3;gnhlRZoks{zt`EUin&9wL}DaHqXEDBzlRel&To(3^(M`m zoI!A2$ez5AY}HX?yuKloMy|X!LdCl2n4y!)Y(O{mjWrVez*j*GHyTrMNuwS*`u^*-LiW^)n;|`={g9Af@xr$^P%fWU^4UnI+&$OVrpS}<2yt0=D;_%vaOaNvo4@@x zb^Y2`A0GoOv-R(|(ZBzJ{E22P@TEE|8-qcN4iwOcJZ>Xo`OX3+E*7=pJdmYU96}R0 z)uW3EXDRPE6;cQCpdSlNjT1NB#3Xr=aDhq*PrqCpjBaCopQ6q-;?%#5jR+(UF1|8QnRv>o@tshw1Iln_ce~)`Y zr;_eG?QL}|gxj7`s|>MYW9hTH+tJY*d9q2BEOoInb`gZq>`eo*W*_N)84@M98L8)2Zb2h}zRideW&aM8#l z$cjLnY(tXSCR*6=3g-s%OHNDXVgp@VrTdRnJtgJCa8ZjGEEMD6pON;+!>i*wI!!L} zCsLYw8lb>Kt_N((g(S#}P|U{2b`QyATh9<`7TS5|%7B&5+$VJV9Fzqzr;=hSjDOJi zhudZiQyGC$;-?KEutYjuvznqw4Z*bFvxko|litywusmkDHE-Zt1Du>If^*CYAbbb# zN!Z4^dqa%R8Kl%g9s%gES$d2y>&;EdObcbL6p|0xe=$jyBa~f1(4YSgAIt=0_+%6OUDL7Vm{tI(a2FfjMT@@g)&i@gY*eVd? zt){_Q+?zlBOBHdAX5S7nM&j+xd{mL^>lt0OP{6`}IZvERj z|3Ba0|Hat{y#t8CY9)6#emFrO<81Yiv-n8j)1Pdl z$+q#g|Lwb$emBLo;;F3}7-P>1A_4DYI`um|UE5{KV!hsJa98)C0$0 zA(&D^dMI!ZEZntf#^GXtS=V{9)HL;g1XHH#KuVZJW`{ErXmROumJ@p6BW#X?S$;s* z#F{^viv%yA#yOEmb4`%%=@700v!xCL``981n57%x^w6vb&Z*JSOwq!4RlxqyRf0@; zno|SiKxS1UIKxXrsLbBa5`=5pB5mXKM>+?<03hO>~{*$tcJV0dHD=0pFSyO`_67IvjY1acJ zNp!mld9TQUC&o?TG-~vF*E)ZL{VmeBsVmgI{l!VK;`gxvkp(wI)5{^Pp4Z7kL01}g z?G)i|#pQ{N!@xcAXB{$O<>+d^<`@&?J)@N3E(vBYGW#qjtuuZer9~}ocb@FO^XES* zAZYrJuexDCd(%I+a#CN3IaWYy+r{TR%UqQ~Lg!J3aTnd*l0#di8SQvjI*d2apX4zFbNBq@Ci zABI6j5+*5POrcb)L{eo*Qrbo?fTuNNU7h=Y>tBfjd9-yaY?{d>@N`PjSr6rL(iX*pt9R&f z@M6$Ps7Dw@t@C^wsdB~-`0m@i5Rk^bQJ8L7r`t9?<>xr5lu-yM*0ny0X6xvz;xBv8LZeu0i)bIc1R;sti9r-K~_I`pkdC z5E2{ldZe$s_rZ`=BW@e~49KFZ%Qkn<4`9TUEPDrIzs}^+dN3c_x4btf>q7C|N_jkG zky99P4LN<08{gYU6Q->J{F7yMWD5&p8^p#*sd zGd#|cXBVW9lhuSVm?6wFq+oC-aVrRHdz~JbVC0tEG%h zv?RH!lS14q=<6ASYIF)_K(dOzv!|)8&2 z9E?g}&Xl@sMFJuF;s+s9=PtjnUFtrC_7vSS5;Da8gH|}4vmhUHeHyWl)15-v$hjD`&fOf74ec|y>sUb$lk5JW(~otd2wfM= zQI$}KydKgn!O}mUGDHRjS8PceGTxO8iF|Yb&JC__Hw{WBLIJ5)4}>@b*7!A2-yEi< zqv-5Bx-64tLQ13;$~kaL;+1T6!41)av*J!R%8(O zdnsj{B)w5`V3|m4?pH9Ouj~L>NmhytTMwaI3z2O_CUprT#~s1(5lewpI;&fNPH~om zzqUBREyiNEw>dgeV$0jC{|hg*&HrW){*0XbV2q{*|77(MH#I##iV7(@eC^S2f8FM5 z9ZIYvjfa?X0>U`mBZ3S8>|x-Ztjp{|8sEF5WOmyUNdZEln&ELEaQptT+1o`Z!7JiAWoDEU4&Sj<%3H=|(}|2vd+U z!;lNj0SjGxm}zX|;Z;4@y%wr~_Bv~aaZ>#u>^DCkJ+>OQ_q6KJq&KDs?JiMGE^_be z8;}1UsxPv8RTN1SHO%wu**R^AP9unET+wdZH0M&}l@sLES;=*t-zH?1q{E!?kwYW8 z!Tl(=8*?;isE0oD% z^bF${o@r8`O~8m7sW#kCKlHuWaPfKVUSWN8yKd?_^C&>4{BUwrWS2T;3=0YyrSmMr zRJKKih?7w$z@<=VEE2wh zN1QG>^o4)F_@+z_at|JiZ9D>r{PVy5qn=ye&9>~%t#~&lPAlFkjgXX*M#DieH@t2^ zyXRUW7*BzJvF~#RL0C--!Q?bDt%QC|#d0}hRV>*AQU*wHz%YuuZ0P`Nzvo0|MWbX~ zrTZfezFWTAS`K?(LVV&9W2D;8(dKWh^!&TLmwhI9M2oTFlKdInDV1_36E0}~*ENaS z{$7(*cS%G|v7exsJe|^8W~DJ+?1g2rXCC9`wLJg9gYqx)UOyE8zwyFAdY-r=f2M{1 z*oWG9@rpV4!DbhbJk9C?TINJ2@-!aW-!n<*%KWfvnNzKZL!j{>=H@syc4DYwrfOZH zRe0m`C)kRB4slyDq1gtv`B8`0j9`L=?zEERX3vBvm;-?mz{EQ~mk2^S zc!Kp_IG zA_&hB2hVtcgx3#eHbeMYP7rbOLGE5m%j+2Hp?| z)&-1WAbAv-Ex1vfil$%0kuX_^-xRKSHHwrNVIU5BCkZrk?cXAjph*T_d&%Xrms$E3 zXfCA|iUyHap(tRft6ejL+TrlWxhtMqKamY(p|y|DNbCudFU3M~$}*>)UM?=jr0dTk zS0DgJhWx@y-Rwtf)^BV1hqqCX2wd~njLy;Jk5a}6nWLrA5t(>_1L6*YL8OJ(gYam2 ziRVFhY+N}UPI9L2;Zj1;?-RNF*4;_vm`Yiv;$pKs{i!G9U*)}i9s&H`ur6*d@~4E6 zObWx{O&{|PpMwg8Hwa)>)+sBUKr-VfM*|q2`6xk!x+arbm{8#-Mk}QSVupuqG{Qa( z$U>P}!bxCUMnz~hO!MaMlAAUI7bCwt{p5VJ7M)2R=%VYM1|jtjzl%+oVZ-jto>iw} zQH9&#B6Aix7~Ehj*Mr<9W<>i`8Ee3wL!vZpdh(wB*r0j zI-@w;*xG08aQd2(DOqL@e~@R~bDX1Rvzs^tWUgc_tKo5fNSZTNHlm9$pZ3n0JD4a! zcyV8-Y7SD@K3m#SV222iR=&w3XLK5?CeRUB|PUQRg#jMqrjU285zN6AbE74d}UUH@Op(J0^RWu zfjc`~U*^y>^~{C-Ia}wiU;6Br`P*pZ8{Z!z-F3+^53(4r9&nK^%Zze(6F236^u6jf zuRVuE0W;#J4~Pyqj3#Gl&)=(~$W+M1*(9%)+@mUu2G(UR1Pi?`)`uXC>p%do*Y|q~ z^Z&0dOZ|8M&w8)@?wJ2Ks}ei}x3@H79h<+n#yu=_OU6X1>o27o80=)JDIT>tbu6|a zdAzJp^&+=fy>*BWUgqF$gS}Z&8;%aF6Z{l2Z;Gfwb?G;=5M-?#0xn}-WYx6k-S4*> z=JPKN?dba-IO=c?y{}A8VKVa8BdLz{<|XYVLtlU6u+Wkbxq#?-(ZphU@i}z&o!%W4 zkr`e^xW`gr-V9%XAa?FF*R!NP(-YgGU|s(YemuO%w;=^BdNDFeu(E%_7zL0xj+*d@#T4*L+($%hy&{35X&AF!E`T1hrY*%DW$Q!!EH= zz;C=-q&W887hp}6adH+@8ZME06@7&gELof{mR;Yg9V^h;6x!;X7J#G}iKg!Rq z%;rfto7Kgd-Opc{kvA^{dn~lxBM%7wyKWk{2k}!Vz${IMw%MzJ4EXxzU#YP@t?6sv z_u*0=_P_p9zxxmL=Bs}~ZigShqWxq3?pMc6cdwSuwGZ+N%xO4ouq4}3oYW(5tJ8F^ z>m)r?D6x>ue&GUFDNYJI%DOi1-Z`4rjWUwxr8&F9CiC!NE|6r)ICrJgg<%0A2QLA? zz`nNy2>qd@bUhriw9mgd=1UuOE=LzWHW8w6Nyxi+MpJd}LJ#h40U0d>3B$Qf>uj#W zTJDv|tH(j@M7XNm_)!!jp7yNTX;eqDfnj9mB)FHRkq1log!~G!FpHnrNX<|V=3s@oY@la$ z9vo6u9y!T6-`j;gKh9xS9PDZKRO>t{0@t7%&`jw0K}>bldvHj46GIlTLe7D>j@_qV zoz1eyn?BH+u2J99z-dV$UH@vWknh|8lMdSVdimKgAHP|L5e}yW`g#;aw=(kR<4zFS zB8iYpeHLo8*hZJGw_v1jq5=u1%wA{pP#*^oZw#Zjg<{|zd8%JiDs`v758ULZ@q*;$ zM6%u`cw`wq=IcBP12l?<5H;m|V;&*-wbDH~8&IW$H;0eM1lG||tMQn8rMPS~2UalH zGY=09gj-?601NKoUM?WM;u*oc){(qXguMEluj{X}A3$IJzW$Z*=qxw#o2{!owT-tb z&8V35&us-#%HY@)U0Ti11B%Ghh-S=0ImOI~jcmX~U)=PhkoP|mB#0;#S?f19X~+Rs z>vD+)F=B#sA zEQ`$E&H$4%GpH4r@_<(hsUe(vHb^oTnhV#*O*nedq9bbbE3G3ik8v{)v4_SrvSaS7 zWJ#%WpvF$YFr0aQO4wg90`VI-7n+iGr-*yTz10`oOdQh~3os*@z6;xkBC!u}{KB0> ziA8Hf&%%b(7bKGQuxLtIx6LukRHR{XK~g4MyJGWQWMr6P;SP)0)<@H#W6%%zg5Y|SaA(?i^uF#@F` zl*&8g7(3oh((14!?{e0ioay}8E;6r+q>|E*XG=B@fV4ZwjX7TDIb?{tYny@J@tMD^ z$sfSp_fg6(Y4j&(YEhJ~u9mrMStMi6pa7^q*lOligfZ53nH(KKh|Nf7;-`2)84VHw zx*NJ1I7)OLbP|4V4j0lCIw%vhrE}VzVvbKWvRPM-cjw!&{`xhn!v^V_H`Ck7} zbz#zypY+??sGblm0gK6gApz-Iu6!XV3^OhwyNF}q;&Z%YOztTUV`CbnFcrM^!vkq- zBgQw&4nfBHs1&n9m!1!QNqEs9@Y_0WEaL_k5@2J2n!x?j&Xfi7zAtPI1Qsy}D2Qf%G)@NLSXX zLsADMX(7*X--N>Vy&S@!3Yi+QCwp$5I`d5G48fK%@eR~RQObV#!FgEH?1e@=O2M!Z*$F*2^SAu?3XD3s@`=Lb2ls#eRQb4OXcM-0o z&JoBpO(%mE;tT6|^CS#0N(m0NrvtwNGdLX9PRDlS2&W-X}lHZBETS7$<#!~psKvmnhs;9eF^y+VPKcGL$ z8~_jii~hO{Z`xoex?VfFGhCn*_M61#3TQ@h=E%kw<={gt&fa$vK!ivs9`YkoNQ>qJ zS;*`~$}|&BiPrG*E+m%-TTIhpGdr~$+{jLg6R@+5uxQSX1azZ~yB%^;GvP3<0NAo{ zcEf0(U*|Q?O+)}Y!4dYtLNGsIOKdvTeFLI{APEfSqV^|?40Q zJ`Xf0QX>n=_ud{qcjG?y#-lj;JVYl;Ug_(}6S`cRFK)|R$c{Kzze^TEmD0An;vQx^ zR211emr5d}objHc2&MlU z9RLc2G=*tjtA_KeB3{*`!A{=>Zz5*j+~R27sNmHP2?m&4hsmI<7qjUqR+T* zJehBuq^ycraNWaMPY@NTiGZas7L86$fIX=AeTgh9qy2|pA>9(F%H-@5wc;lGR_qo z5rdl|v+7|_qO#P>H2YSM*JbrgkN|CiHJ!hamJO9PboQHX4lfrg3hGBRde%jshMaHQ zTWhMu$}&6Mb|j_dM(awTiG)}=BuXONLdXnF-5xncuOXqVfv$=kvN_|4d zipo~<0i_$QpWM!F_t^ztX}h3(p#|}1O?y|~+_fZm4}Q*obzRS!i~CVVm2=m!T_&l8 zLtO!@UQ|LCOvu(+w!#2nk%AsHXc9GwBZOBZF7-$cZNp8BdOH(_mB}Wc42Mh8H z;NuSQ+y*Z~mol?|(XCcOEWo4a9df%+>pE)xo#wBX-GgKtj(q78T^rnQ$oJa&efO;* z&G#YZU{(;^?jAy-3FiY{5n|G!TZ`@!D5^tF)n}}GNwOP^fI6wl$#^|3bV;%kiaCo> zUM$lcGsX5D9>Kgx(sK87=Mbua+5Tx1D}w@* zi#mA}*QPK035$;v$}{f$J{{M89pfbw zp%;HI5c76Tj!*BZ8V6peCh9fUkT z2N8iWrLAHqT1i&A`1u@iVF3aor+kij5$gBj=3_fFS?1(vuAX0bWi&MHfAxNA2s&55 zpP9YPal?I6>JP1CmPeiJp$nUg@w$HCNc4^D?DpP^e;@2Eoy>bfL}QoD!d}`GS+@3? z&fj4FZ;oJ}AeJBF(ZfW_QLT%QjAItBDRBfkiR4swBt2n<#At~m5SBAu2wR}E2Iw5DHB7M&Q2^}vc3MRE%eWx z`qNlh+NQjgPqrU=wZZ`Ctt3IWZ=vozOY}<#I znAOQ?C4-+5K_%*eN%1+h(K#eZ(KpYMV~jr2Ur$+I`8n_oN!!gMl78_xJYROD7y=a+r=CP_px}H(yrAl|9Ebw9AY8rw-0> zyobmf;@w+}$dA?}-QZK}IA0yf(DXmu+Y`OE6?Alv{iKV~7Y6FHEHw0Xj{L}0*Hlo9 z%A^0joo5N5dKuSjJhcK+g)%K1HjRKB%FI@*m7oOAvvxhK*ym?6s(#+uXMFSz$7gus z-G)|d{XP)wpL^_HRWrM`Z}_!L7An>!Vk1!hmr-nwHmL^OR>nO>x=x%gas5i(CpF~& zK`7H{W)4&dNm@&BLjb~efibHlnPw2S7Lpi^4Rpnfsi-#!)rl>=uul1oXlx=g>2G|C z(fQH$!%1X0hOaqx|37+q@7Mf|pR|8(Gsbm%wj}OS5|Ri#OJJEgv4YK>#xsXCZ};ba z>G#L7-Fhi`LxPRj?)N#@yCKVLr8AkgjN z_nlYh3~yr@uv0i8an$Hhh?HPFvz!tUb;BKD=RnN4&6v$L|0l=h-%(iG{3nF1WY>Mz zFHn#vQW+zMBLU2?@#QAd383*ft`cg9kvzJ_?H#b(?$@)SnA}hA7Ieqw`Hz%Ka?yf#(+)(?nr{8Tq`&Fw-_VT&*Bt3nh zARUeu^)+c?F-~}XNx~ZlSH0U=LXy+(J4*jUvR2v&`+WqaKYQ1Aog+a+9ddW5X{t7} z_aN|6>e z7{E~oXh~)`W!Z<$opk4MLoiY?y6sW6uI*&}{jdGq@*n+ckIMh>-~aXU_S-*d-|JL_ zmcwq_F5(+4c)!FLy6Uj0R3sRxc$~!-R!6D+=d1^>e)@hP7;XhB%k%y zlw(XZ6m2E@f*gZ6!Fh9{>gI9q?v)XvkN!O`8K9)ucSt0hCW$*toeuF8!AlAh`9K_n z^fbl*2m9_wT&#)CuVe3c`q4#93GlW#0-k>FtG(Q|bNzXPG?xpP;E{+Y467LV?B-5Z z;t?Pr3A3gepWq>-SWHR1DlRtMwm=?XR%~w=I3idB&hMy%tl@Hv8(L1}?gaRmGYdG6 zo8XnGTH*S}$!0db*!-q=WXV!*6tT_!{;&=11RJnv`#gA^H}>;QJ`C*T9Ag&ud4{s0 z7euF&$ABlHz$)8Mm~X>}@BO6Qf9i$)S?yuH9@pb~T#sMoasR2O%7dT2ZE3N+^M@V$ zl-E(y|3D-SltMQ@);D1#$3h8y5$vRg@n>7zTP}dF`_n?Tu{^oUH+@Ra)GkS@! zv}}}LQ)!$!sW7OBvypY@2#{%1khk}N7BQK+Qko;9&j>LCCxbObAn~yo8Y|sU(Sdv& zV;z#g-X>3k4XCE{TUS?v--hi)ttc`jz@nGZOy0}?`{wVrX_SRVd~Iy7ubuDq6I#dA zEt9;Q;D!^UC%4z_CwQIbJC)qdu=!*2#R&zMK!~B-Vd1tpet78&N|4@i-d3{G;$*y% zRi3yFZ}&2nL(UDPGRo!(R1hF_|Y<)tYT^Gur6?{b<1U zaS=q5>{K-*kaJG`8sAr@^eBBCib_(G^n&d2;QjVlKk3q#twBDg>xy+fuE+KG=RPiN z0l#T*t&J3JAAZ>W>5}o@qyfsuI*GCCR1gqh6NJ=o(}e0_%h+jX@eSr~oQS>=woPAt z<)snnYZmR_erv3;n5Xx~ZI8wY^2r#@0J+sNE3k+t3QrqhR{pZi_RQ-k_r0(wRx%J; zraea2R6H<}4q0q(tRb(o{lbui(*VY;_FxX=DU+KNA{B=oG*jjjHjrUXa!DsR z8$Xx^)#gve0r*vCq#7ddhh{<9s#Hs!BFC(NZEPkJ>1jT8Ad+Iv@oE_DOd}J_dF`aw z1G!xu5phBu8(mzF>v27<$3M%#HmCdLp&7VMPuP)5dO57?%(m})(Jci+sjsh2 zRQIIQq0(`#$VtLaA{+}hC-5yv)k!aZx2k8-AY2TcriFbIlF!(;@SR*r8Ua>3)=Cn1 z1hUDRvg8wFkCnn1cvaU7j7y>pq3dxyuE+KGB^Lrs6QJ7%)^G?iUv4k6ymQMnQX*D+Nmly7e?mZdgw&F_ zuKi~W?l+!Qi)YvO+RXo(KO71bY;;S>*moFq@h0yxcwxJ7CHK|HT#?C6e4=--4+;ks zVH_K-o;=1~f>$6B(590-TZ_!@h-8EpIU^pGoMcGNblC8kag(bsnUatxr{oZ!b^X7^ zMgYb3emf2NTfbY4EAR^Ja{=4OY=MGwB#Gdm?*@aB(*e3(*&RBfb(XTF_Q4?QXLU6-sdCre_t)E4S5Fxz2FFN^rcCG5#OiK>T?&4aiFaXYPtk+b1OWZtj|$b`j3Je7D;C=$YXa*VQL1Kqdy43WJDBOuJ?*)&~Kbf)3X zExy{e?M`jmn%bD!wr$&;+O|2h&8cnU@0oM{+jqTJS;@{$@?(IG4Ld7K;YMdZ3jUbA;X)| zt21o5Vpn{3XG9e0GoLHpv=L=%xP(g?Tp-1*SE75z8 z*np$i@t#dx%j8$Km@-$`b-xZKc8((QQCAcTPD1W|9%0uo$N}QnzuFi)Bv3#E32JwW zl?hm3n@1S|+4J|N_sk%X&ubHcl0fo%SBn8(GByw@2bQ;p0_oqEDA|dlcN3sJ$=F)I zwZr+5M6TRsx}Qw0)#fSnBED%F1}-NrrDXG5``1&%F6euyvBs<5m?F2e(XrZ3Ir4=C|_| zSvWp((-jde!Fs{4Xfjb0J)aXq61{`5$!qXdH9-3X>;%;H#8QS6?eP! z(&9@8^ZOHdAv=}mIKwpg0j7JF$ecI6_KN$8?6dYET&NT<&AX49wrPeA3;u-BdxJE* zizY20BEboyp@WJ$nz|JZcXBOzaNm?cgm2(q&e;N`b1%d>;f#5+bEQwy2}>0!5D&Bn zfW?xDeVt^FSmVeuu}fv}D$k@F3xv>^Y$I8wynS5QRwY|7%4ML8V5a${>n-@e*^p~p zJ9)rV!Co`+(E9CtsnX!u?M5eB{M{GF7cla%GVyykuQ}YdGA^w1=|bW4-R8rGp*HH; zZwMkwAl}{AO1+<(^(*RMCC+~op>!8rZrl!eO&{#M58{F^N$jw4XF>OgADR?$U?VV# zu(7%Pak22J?pNHu&V}GkJ%}MjA5k{{a67;DLxqnjYoxF^gl&X7+QtQYSqpWABnhTD z_QFC+cCC~=vUFx<*{@G;m`C(XivZg>%Ih(XD^^%|wBt!4J}#g|;1=SgvcPd|1CR-i z&0vOXi7Ps(-N(6MoFr|1;o2bEU>t1Pg>oRF_L#`hqWAgdUYEIS^B%E0O5>$@fZ9kz z8J|Ho#gSd=zYC@IOzj$g0mPU@pQrWrovMl_h#v~!n3#XTI}|xjk;IS^@>zwz6#0F@ z13xrrC^I}$8wE&T`qpEyp{{p&-2X#aTJd`Zje6^vhG6vm@V|UYAbLNB_c=3tc_Z|m z4B9Az687Cb=7IFCEh&HT>}{s-I!?ar(FF1@S|!gL;)&V4;o`+QW7T*zPW)sFIm7u1 zw+cAJog;;CY-H43FurUsm7Zj*zfoms)io1Af)$CNKWLPq3&O7qmED^Ew6XPWbhySK zT;|`UO(&Kl49%Z6mo@BM$ErZ1YKgrMrUY7}d^tGSe_UnZh9vf%(l}0qaX(LurF;?Y|QG!ye1 zDnK7etSD#9T99S4c=iLdnRgK}H4+7q74scAUoxRC+GT(!r(RIQP@-2&7bgpd1k8^DYx1%$u(G9kN9Ib#Z}X9M1EpL@1EvDOe2+Y~ z*v=yQx&#{yPT=9SBnBONjOr3^j=m7x0ie3FSDJ4WqVg=dgC)TGVB@q;#djXXJLd~f zPEimCrCP$h@{WMI|Wmr+&YUZNg&{|OrUK@c6?s8DX8eoRf&lwo{p z()=0C>Y>p|NTrNyL^y4RoI1g*pk@@Vq++*OqMkSbp-$1zOcjq*UYFpRugw;bv~}p_ zh9B=%tHR|mzJFc${CPe+?FDIvPoLV~CwnSrksAh*=beE;tb~F#fR62&FY`1)>UCqH zF@1tVZXD!-%!ABM;zBi_ZC&9^8sus?S}$iVW`JBIC3G{+ zjD)Qe<i?u`NkXxg|~&p`Jo|vif4y;3H~W_hDsJU;eX+0M;ndP(e)`gfh_c z=|-f=aiZ=+X8rxZkpcesi-NB2Ds~GK81rv~)qvDl1kgW*%%_T}e*)836%0O!Bk~n} z<66DbTn$S!6doI~#VAA-Ul&mX-mohyel6md3V>5h9HOn1JnPC`4@4TyDG z4tgeS9AfYacua-9+XO8dFWYs%?yq?z{#S0tUsAJ4H}a@=uH(1XJ}S_N|>xB*i(T z(m-WxJWYB@cUJ(3L{A_J#tM#HgsvxEz(kp_ZpITAZy_JC2IvdazdCN>b!0UceJ0s+ zfmhFZ7V0zkzHYBk-Htx`BAWL5(0;TsQRM$G>5kOBtT*avJwtlwp3CE>pO#fg+IFoM zhK^(4be#{GYL9mto5F+>aGBy5ajolZH7J^|zw>)Bf;b3t!Zde!utnCit<3DKV3^qs zr$U(8$v63X4BE!s2tYs8EPq{iN!_-|^Py%kDCpsb8x;<%aLwG92u+a?p(hAOi4)^7 z3I``e;;uu?QkJtXa3J6UHJaEn4lzQEZMMOhoEwY*oAtp@Z^!&_7-fzS+qc5xa(m*o zg2D(OB0b{UO(W$zQ`;86F$ai11`8w6Gu|d9BR><1m=P#JIDN#;nTIpbAQ>N;j%j@M zHxHe*e|cwC(2{~wqv8U`TE=lUl7<(x=b$B%tEcN0-DeI(WP_oda=N1)>RBVE+Jo>2 zlsbaw^Pl7j>RZ3eHB<@txT~z&emG&m5na91zhp1;?0AR*{Yw}GHAINN8Va2+#8^z_ z-9E%{BtMV4>SDYPUkY+RMJ5*e9Ilw1BL!N9M=IxY+xaEtnyWSXEmrE7&wM1QSlDK# zKBwy()GOC3@jI!-Gn;1IfGpWaYJ!!l@-aaPV8dDJgDfni$`5#ZA0ecPoPspZnL%R2 znIpHktLpfVrQk@AGgo&?6jl%s(L{g>{dO7$bj_^g$|+R3<)EP@vGhG}OtWAKVSUr6 z5D_CvT}Z>hFEx|;xDy_GMj3wnA}53~CjM&-gr>ijn@AM##w@=I`A2jl10_g`OL9V- z15rp3Kx^Kpz#K-=3U-9D3VQ{0CL%%-k5mYa*N33&<%!7>XPKzOcvtrsGJVytcu?Zu zT=9z!Py^yQ{fL-8)$`@K{@&4t*jVWNbbdSKwOal9^$+QK5E+0j0{8I@>^B!ov6ilH z#bqDvKUzk_zV&~M;Ql&q8uOj~<`*uCQLS)6c>uRZ%-2F?PKw{)4c3xU&J z=E`$8ekU?<71G@;AVfSg(yqUvq2yW$POxLeR@{_iLh$B$#7BJLI@EFaRy`mO$QM5Af9YJV76wNEQIpt|J%LpH)sv#m97=Zi?k8 z7|li?0f6JZ+ZRo1yc~EC`QIfoU%u>0!J%oRfXRMbI@A5nePLU?8 z{WD1i22eRWmYJWO^FD=uQIg_a$IgBnuf2q%I+fpcB#KVMo+DO>Ti7gM)ot)vMLVw+ zq`>ghug14yvTF_Q{r&^^f!$1o|6!vv>*9GUb{LclIU@Ah9MiR<^=!^XC+oj~YfI{9 z^5-(v1EO9J_jtiwwpr}x&3f~7O3NtPO4P6W_TBFz`rXP{5XWD$Hr75J@mM*`xTUx) zLt!Px?g*a76@g5t_q4KwVW3cyh+S`#8qB^2DZgW%vcoI^#-H42t`&Z@pr5Vv`BhJO zlTc(|>yVy*1Cfl=3VYboCUPQ++ujCW(;WvP6hx4jhJpu%u&XA0L|H0i0u7qOd{7SU}N`0uXIDYv}6hG)#a`eR);FF&r(17#;4KDEirr;A*t6N| z#;8W;uE7P^t*hPPk6>2&LVxlwL2)dDnf-V+1{vTcFtJ_Fg4Gfq^wx`odx3;;mFQuW z+!k`Vc&48MRUpFhBm-oREQh%C{_43@4pShclUNS+?W;GAL(;ao_^O+$!mtn~|GMX% zPU(o`Q#t#bcK#NBghb@HVJz?aHEi`ThN544$VTYe9J6v2MZE5(;{@Pydp`jKq}10KyJ255*NaW?SwC>V9XhSW9p^iM#n1O0hW zkGKY+IwcrwkcQG~VGs`IT$q0dB<&^a;-T5?W=rCIzo3vypKB^@btD;xDihg%%Czt1 z@~u4w@B@;7b(OF6ggr?*-DIF~O*a)iUJiPtJKI_#>v`xEEP0pnvFsju=LbPNL62<= zMoS_^o+=nRvn<$Y)93G0t24-V@+KW zz`69_+Gl}w3Av+*k$edy9_4?z#@B*Yg2$O`?TTnnv-AZJ(fg!ve#X&PLaL_@6lpTC zDOvX8a}_}oDi1=8h?RzFoBu3d*huuyFm)lNf$7wTO4uV#tR#j;$U~-NBLt1#{RC{9 zd?~KH*<7la^aM_A3Pm4l2j>TGmb&rIPvzhpFpl*#$iwrWi(fLX@ctgNuXBWLZ*fW9 zdQpS!?=A=aZ|sUw=T&wyUXkeOGH3q&RjQ#E3b)zFI)VH#levbkZ<(DWtT4$mz9iIv zaK97@VEKtVGvGP;k_F&>dtu#F;Vz-enC6|c6wk7h>L<}bJoEUCscm}=kZU%hpC&OP zB;P&D(kvA~<6^Hae)2_xkd6Vg#_4NtO3xTL0lvQYa<&pMkE5#{)@U8^)+jid?sH93 z9(3Kyz4Oo*K`@_zo6h5 z&Lo|S%g>F;CK!`Hs*y}|y$w3;jou=^ z5+j&uBKZ+Fk04AHk~_b;s-Sw?wQII}-MVVd({pr>G0N7h1$Jwfp^VKNcDYb=F3(`P z_;$gs+RJF;k6FyVvT}Xpr_*_=%+}u*3bU_|XB4#fmk>A@=$0e<7DP4sBYKvGBr}~8 zVtlmgq@kc(vQi=7W;3A$!*xBl6Pdq&bNI+)3wY(33%TM|EY<>=R4fl-2l3o<*l5^H zXh2)S8y4w~$`fn-J^J3%_Tj@7e7C0U9nEMI`^WWojZ4Ku^@%n-QY-f zO&cnQqFG>Ez(gr_kyn|zseyAmrh(F&}Vyq%q93@-~&^M;$ps7dYJ5SeZ(+*4rJ~F zM`KJ>$D3<+OvDE;ut)dsLOyCnv(jw)S{mzSk~gn{TQ)4KtiMk(7Jk(1ctdZJvJ(0W z|MvM`N2M{EA5OjUZgmYLDE?3msOTmQw#n-FH`1pEZhLTkI7((~EP4%XV*wY&?;9|=kJ9ih0K;e0B9i!WMhd0&SzYWcBepg%uxM=kiS5JI~%aVYv1$09J$vet$m ze;MP&i0xZnB_dM%I3G)5(9VD9(b_0ly5CXzwd82lpAiQkQGP}w4kU)C)2#LpRP)yu zV46Gj7e+n4@1SUA?%BIJ;m%^ zm*lSE2S+fBL^c-OrK-gXf>|q5gqGqpxw5>R#3i(RvS=YLVVI>5dLk-4F~@e-5+T3k z<2q{MXP!08d48Qt1Wb1$@8Kdq140Ws8sP^Pqa+K%;RQr*@+YYM{}XX3P-91I_4poM z#c+s~J4Mf)Wm4UH)!o+&`xiaJ2&_(rVqD|7UpKsO^T)TC%V0Ok84rhgl1ygdnqW7K zDjy0+@aQ^Yk`Xd@lJUwD;j9b$8lOYRtXxooq}1Chq(06(B9eUeCW*9|c_KO?436`q zNfhWSb}Yys47`8vkB*KZzB0+Qg#;;JYMBIzmRQFDU;Mde=kuYevCf`G_8#9=o=a6n zP?P2E+9_us0uk5>+H+Iesl*`qG$)r^MlnXnLj3pWWG3*5D}q|?k1VP530K2H*zP{Q zL;M-5fN%uiT*57+dOr)~r7kWdIw3j5(C8nY;FLQAM*{bXk}Jf@(_KaE{=^;Wm7z_} zp9gBX*dhpblg({C2hga74fQn1)}QEamTl{7^33%+lThc1HyyQ+5Kw{tGoYT!T@6zB z^1FBv*;@0-`o#9FEbQY~pl!?4*RBFv{w~bX&uu$v-0Qzj5M{594AHH3kX?#@5@!j) z`e(#ITnOa6gh=fNAuZ!q@%e_^lQy8ydz6rN>ji(8ZhzY64W7QeB{&Qgq?4ei4u#Q^ z^QSvU#}OFpxi7w;GE}PzfS!eUcH-wojtyNW@j!N_?(;1_{q4qRF`RhJyxU|0G1J=* zpYOB8gdH43FJ35|myl8-;`g4g4yfY)bpe_qiIP+5X9eHmPXB|@Iv=KvqEL?z)ZeB) zg;0ueA1%(n?|s)1scfGiFSPRjvG`e39IbeD7lsrw?ZBv^1S<~zX@fNpJUANX+_M=@ zd+l(WAknJZK==uQ9as)HSmb%y`lCvX9qqBqPx*LGq}Z0p!=w$=O;7`PQ3 zP%}I9TE*)a2a$y#@+MCQNw7gs4M6G^i9&~W88}KDziAit%W{mqoo)Y4@}w>GYhA! z&vo52Io)%Q5J8;U{Mq{pg(VzQL&hDHQ|g$9jXG^19=NH?g}~_7`rsm(ozykoqei}d zH;DZAg74XL%p_RrDQ^X?Oobexr~vx!qI(3zz-qyBoEo#!eWGngU!!0Hp?r5}zAR6I zrwwCF8BR??)Ru~oIB*VrP8b5IR(;MK`Ogd{>rxNmUp}>DWzG=D3fZJ#oE>JG@M>Sx zF1H^IFw&^wg46|0_SPigMOU5(;Pbh^6CTqKc3SjDOo{+5Ao@mgnn((l%~!WHRgfIc zMn$|8Ar23~|M;{QE{?AOlDnl%O5GdhGVc(Kvfo zUKr4NeHLLhIJ_o%3N~}QKXD^M4n06Ush~$NJk@cP%TZ-5{I=P({R2S8PDk4hJzDZ* zUE(Xa>nKm}O&O)&LVw*hA0_q}A?xArN`XW1lJ8*^qFQ#nJT(#O1#ysa?;PXkYIiy= zS%niKrh*1|#c4^-#2%pDBwPa(FL6#1el9_dj79h4!a2Re{8TQPH!2nkh$xwfB2eJP zVw5NagXGo6#3k+J%gKX@R@WoT@k@N-Qk)G(jo?LQjxR9QCyg~H1*4tk$ghAP!OICd z&86_FC@X*orTL;?YU1C$UTN8~3)tBUPVptbMp}7bh#;TdY`%^vhCjwytLajI6ISM& zJN+&{zBwTu8(MFz_$Ico1rd|pb7MwJ&syb|mhJ0=o)9^GZNp;V8%^k;I?{{-sE5&l z7}RU9d^9U6j+tHKO1!!f`luLh3@Rkp7iAoz#Z(dEEU!fH6gQ)9YQ{;mH{5c<){mvQ z;N7?>a$($FBYx15jYX(vd_eLG&=$EJB4a=7B^0Z|-0le=yH^za-kHrYxvjlM5^!kQd>H)T)+Az8#-s&`J| zaD?~iR@{?2h`xQjo*P$TN(6(PQ7XQ$2E^>wz$0GIx_To4Pi=tEpOTy^xCixW*{^@| zHN7x|-YxVU?vgIASI!IOFNn*FufEVWdm88Wk>6vjMk@l|lW2coR@PRQ*xmbu169}Z zu!8(RCIh{QiP(y~8Yv8V)Jc@o8nmn??HxJZMJaW&qg}6K?+(Zl3}uWV0xGho zdOsOqG)5hh>^4o^y%4WkR?(gcDX}RvcO(P*!6h1F)dt7nUC&YZ{TWO#!0^Y}lR6=Y z@uc?zB*Ip~b&4*xRN(2wGp@zb$dZmpfos^AwJ zZ0d0jFWyqJ-&n4eW9?uo(`#U#j~`ZuU5yUL=)3o-zz8~8u92j2W)PJm*F*$GA>umV=%3NXD zHDuNhDBPn7{jS($nuXq_HpCT#B0izo0X$V{ha*J!>5~ov|AvWfn`f*9A^3o|%WgI= zIkGP;^Qfsw^5};v+6zEV?dtA6G5O7CR*}f)7^}IxQTFqliQGQTrR{W?c&(ao%`Y#3 zdb}m6IS5pc(ogh&D>%_(cTmeeASCF>=kH|9IaG9Z6LE6P9=*v+?GwR)5<<#nT#4G( z?JkL3&oZVTt_{%N?YaFfwgHV_c%`ayVY8y4Z&!XZ(O#`W zNAJ%v^ytslT1&|;=JonNMXAJ?uK z_5+%f$0P9vH=I(`xK65|lo+6O@=35efj^L5Wd~Q^UQ#H*y}Y7Pb(Q`Y)O1-=`=RW> zv=U@51+jprD6Y^IZ-;|bZ8zYmV`U;~^ckT9^D|J6DEg7+HBJH;G{Tom4bsKfDm~U@Q zc$cTY+}ASM#=RCZP=#KeHL%+bcwMmACIv5lB9E24F3Go>*c};tcie3<*pPuOg*N1v za@$SieBp)+CGm0G3}+S-4dhys)5X?tsHQidQn6_tMARQb*xjvj&_LM-lx`hqB}O;3 z723$_beL-d1h`@^yNX143s>s*Kl6>#icFYhP^RG1pv#C|Q$p^xLmzC4$g^)D#uzCo zNKw0Pr_CQYmLXM%Ewymp~)c!`}pU9?^J z}JBfP|38_fx)!cmGg1F*7ke@vG+P+3H;xp0Fx8Q+TNov`_CCaXYfKS zkB-yyY?WP974tkRhkOF5O|$&f=Lge<;`Z~{%Jt;iVE=40SC=kf?Gb0;@0w(k9?SHM zvM@W>((Wry=W$}NLu=2;5DqaA?8n!501Uo%6JiQLIH)d=r>cz5t1Jf#+S8G^_!VNfMYg1O8LMy<@%Y4J*BXD12v}MhJY%(hekdw zmSRFLF)UkfF&ytwxR%=0cKY@2#l(RT8mKBW<9su^bv5&HoOC8yRYf_fEPUTo!0ZWK z)%wc&Z2H^l7PBrb&#^c^-V4<*1Y<+~IJ&2p)5}6uIiv<8iMd^6-JYX|e|%<9d~DF1 z)p(t)ta=F8Eaeb<%1x6VS z?4SwgzZ5G9vUf>gWO7G|PEI6~c-5O3^(Y#y5jnwndq1dsJK9UFT&ZxML{S-|^X*ez zxvEZc;~l&kXbWJtL5K=-v;eL;6EeJ=yYC}IpJbviCh{T&-#zH?m96DQ9 zF5OYtc3(^AcNj$okq=kyVLv-V>57n1{aLHoDt}d^NBzg+&u*kQKS!z;m)(s#q?gCd zcNV29m($gcCR0DMQJxyb-{(5F*>ej4yDB8&0%1FXgT z3^u?ua34`kUulMC7TLusrysXAqig1ddFFmWK-DC$152(@d8p-W1c+YgN~+39`jLqP zMh6s+ANmCS8gHF4J|F~Y?~62u$O2kn6)L81xnxEA+!fbm(n$>%OfqdIlv1woRVUeB zzE(XGO(g3{q|Z-T9b-pjNc{$3Ran)3;-YI`qqOEj2ImT%5bX3^gL;hk5@KlIet&CZ z>Ciw?`2N))%I(r6SuM1%e0eJpAXQ$^ZdU_s4EyQD$j<(g*CS+RR$iOf^}mlb-JrD-NCp#Q!Db;KFN`9Rko*pQ^B~{yVvj@$@v<%u zJgB0RNp0xSJ> z4h)1{KJn--+7g1F=ZHvf5P%${cK8B;Y=OL`Vn8P3N`KG_Ek9hjeKZg<`*=CR46XBC z*ihw14c(&Gx;;#c0GG|YQ*uXj)f~c7xQE~$^76jO)~A9xIH~P>x|v9BEw5}3;6Y{Y zAVmZsM;SK;$?Ciqzb^Zt?ESgwi6EE4hU}*|f5OA!RQdUixDxxrJv5y_*PaugX>f=V zas%sa|Gn_=&t$G}z)?!tA-bOMJ-X2;-Os6AgVW86O*LqqZmx^chAm&bA(DB}x2BTt z3!_d-sCgfGaUf;AC+hQ3`QXrmU)~?O6>~hoN}*Su6(ZFut2=b#Wa!b*)jc>SgosJt ztWAi>d@HSQtl97OrE4%SJrnUz(yq4YGU{+~n!9*Oxp0F34Hz?@e%cz!ZB(KjFu^w48F~ONWNongWsm?@O#DN3^Wh?ioxA;EZ!r&&)^Bu*R-LtEhFx-_jBsCp0o^M&OM?@lxsTZu{N3GFIMI?@(4~sZMwr<17 zw@{=FLlbf?ZGS_1mXJ$0qglV0PvNe_i;``Hvq@+6Yfy{mx%{}Yh(LPmyVwtc42;s9 zVez^af%>s4Qduio$({uTEn&Sr`Usea{rLL(`0Y{`{NmVzu{iWn@!)4$Rp;wC zbbUPL<%jd1R5m{8r+w}b%D#xZp824sI1 z-^c%kQNmI+r-5v~e5O(WXyShSiAU)PIsunnYyr{$z$EC0wZTVRr=FPTOiWpp*5HkJ zWK~A%%t@H_=2dbtEr-5ktuV}C@oX+_^6ohY9-Mr+(6NQ<)8iXC3l=cl1X3|1(m(D# zGXnjz`|;y?I3OQr$1og6=B2-zfTXE}F0mj$Taf;yH3gL{=(({O9ALl?0Dx-F?0;E2=jsp8VU*}3z{{+h#%i@ z;4hbqTzq>{_rPn-xK!dN9J3Io%}KFX)?kyx(bou=5sod*nlHaDMj)qSoAD?ydnQk4_@x9t7z0co}o+U624eSo{z=XpveaJdCr zc_Xc_@3Qm~2bazliF9ZJXvpG^IA|8&7Oka&S05x9@pQV{Qs$j*Ep5b(JPrbhI*j^( zLw|1gfet9=Mg%ERvcFLD$Q=>l)Wea1jpbp;aNLf ztt16dn4Q10g*`yB`3(sVj*^4wv6cz*^5Z+mlYtAyJ?wz-TfVJixlIPKQ$6$5c{^cQ zVK53=3AN071Y(9%!RR~fg$1i49WNs;&{oX60P5q7@Y3Q2`u;)Ta`8EYfb;PTp^FmJ zDHi(I%6`5>TZ)OU2HY`u&#$jZ>Q7%mjj4YV*P@72)LtvHx1X1Qgz4#YK9BrMR=RI1#^z|GWaF7 zOO6aq)m31hUv0E-5Q84Rlc&{$X6-CHUQcSTu6cAp$f?_pv5wKGQW{P`E4vIqug1C!re#S>dNEaj0OB{EmV8 zS0QrKKLS7HmAd20_nBjCspm8N0}lgLgYb!xeG_87WWOd^#~0Ns285?!AeZ? zNsE}sp}j&nR{7$0%x{XjrVwwG!f(EMWo88QG+ybA}f3%jMIe zKE$OD<(}W|530x%g4m{OsNqvqokVb?b_Eh2@gK3h-aC|Nme3T*@2{p7Pvd&BIfK5h zI@Js@9d8^hiGzW6ftF;m(8h6MV@y?Z0_>m#wUbeQ1zuLX|H_elPul;3*CQ9)hrn^j z^=w_2+dA?Lsd;D4lWP8ebxR0a6Kb%%6FV+PEm_;nG)I#=+oXEIcrD+%<{M8nH3Mt& z6qG)zV8=xd`l;V+eR~+c1pDABsGAI(f`}&2?6f!S`@%gvG`pOf{AeBeGMFNp*h2Ot z3O13WL!^naC032`KW zaqQHi+u@Zn3jWM|HJ*?TS+1`}#Etf=aSHyhci6mTr3%eY-64`UG`>1TA0wU1_A7xz zFja9a{D(dGEmy{1J0vy5Rhx$ozKHUjz8=7eZkL&7xr^W;Nob=4XIiL)Qotw{qZ#{B zs?geWL-{HsTC8DkQwM|I{EyzORCLaoPJF8HE)vbmmi?(31E_dw9 zN6I$@Gkes=&WLY$zj|lD-;7Ej6kq_=rn(mN)i1c;Ivo9kKEEUroohhK&t8=|kQeW@ z5uS|%fhcuV!i8~5ggj%o2ZP|EcR4u8lPPRje}uy@t8_HRE7z0LT8CiblBN7G##(Z_ zrTUXvPIl8>LnJb_WePi{B7tN_D-xe#<6M-I92e_%C_&6fmMzr^OZ@a!GHo?d(2w4=`oNH4A#CwTH~*w_09%1zc1YyF(cfH=%|NJ}>YClL3;G@P zBSjPCs)1V}%CEa>!76641%y#xUW++3@E!uRfF%F^___SE2jfMb zCV~4F1(6bXkG3zIBLX<~-4$G^wv^C^zpKpTss{~=U@P~SqXH!f!#YF~tVAUMqv$s! z=6esSUICphvwGv~t}L1Wurxkg?>|dzA6QFs?=<&sF8*o;G_o#0pRew6Y5lhH9yj+y zmDHkPJ5S|R49X0J4kw7h1V~eVQ!dYk*4KdP*e^de$&AhmJ#InTa1f?mjWq zT0|$(0!I!5r1!h7lOpr!zBPy$OLWxxr5vwaF{SdoLsu-N#N7aY->pt9LczK z5^a8L|Iyv7LX-v)x`vL~*dzpZurCI2^&htYqM+dOa>~DL=zq@j@J)XGc=N3lf>ovJ z53@5IcvOdr&S7fw|K7tG;sCXi7uA$rH9R_cc6@z8gPZPiK{SW?Bc|W~< zU1FVSVNfV(2|8%)I0yfUthW$NjdjY@+0Y-)10TbuxAK$>PCl!zv}MJd%)R}}o)g$L z_Vz^|)bnYKdja7ba_&Lg6t;;8$wQ;x5W;>E(NHV4zqyc~^AY6Mlx%r8e!d>R@eq+J zx;mji+yW!Blkm2_RD^)E;4)Wbo8~ZE1jI7A3Pgq2RT@mF;ko=yc~m`j(E7uwe}V(f zO|(im8~A*;-s0|8u>iC-K zsv$PD5L+kqyLbG4D__pp_evI&t@-<;{^gL@*X`J|Js!vtn5g5gDY4`XiF5etTDW1d zU)IrI$g@3;S!^`#;&n9f(SgpZo^;QzZ)K6MOUJhz_^JL&BHpBlKWLlkdyG`ew02JA z!d_|MKS{!gImdzoILPh$e_ZT>KmWIE3kMo?-U#q>+qjquJ_$l;63wShtqtS#ePatH z4UnUJ+|B0hKcDe9ux5D*GEfNM8>_>f*q8^`y#QN4&f{`qPFw%KN&po4@8!$<|~ zzK8zHu`#GI+vVssgK^aVtGR6iI8N(5^Y!drJrd9Za~8keMF$QKG805PZd?6vqV$4}CW#z+ErwcE54qBgM3-po(==2d`_6o_z9eY{~s_B#*K{$$-po577f2QW;pC<3P4nQqQZ5*8YVET+4 zf?k^e{iBj^)ixyaOQbNpS(f*8&mZ z`(sgPaa{!Id0LJZ`=-^Y`@anywwO2-pFRM9Zo<>a^I$9srpiLka4@ltN+|!I5v2pv ze5vEz95)9!IrnhES9~s;Dvu9C){>l{JRtQkZliDBM7QP`-)Y;_s2DqbjvN!cmB(d~ItIb1t)sWz>%WRaAsSpU`2O}j!?^0fN^@3G*jJ%75Zp2>7hwD2V>`NBTBGW+N$D;iY%wNEP=A~0{9ZW+B zaEUmem5n%P23rLndlQA$PU7LqHp=(2ZjUwv=qzAH9iEJu{tmIa{Ap-%c@I8nj7nhm zTX72c47I;!=i<$+QC{o0;kHSsB#KzqCil)~H$2TE^~;w`Qm9Gw{q3e(Sg<#^2;M1w z$<+Tn7{HnDQ!VEglZS|%J+yMX@3j&;=e%)67L^BP?*|kdMDeL8fktH_Tnm~nd>1n7 z^>8(Im;^7C7r$J?GiGKi>@NqEFXW?SH(eZf2Bngn2@T4+k=u+SdmZp9NQ!N2XxoH9k|9JXXD|QJN+*x|802QN!IAgHm9ZU0?^k7cFA75B>Kna*J{Y z-@VdKBO#z#=F1@4wDmH1WrH$9;)hc|!5+$px&+zoeC(LcPNCXew_aBh=AWt>CSF{M zlin185O16gX_xK&C)ttce>m*#?M}Dz4?bfi-m9u1&EV^k5Mh$Iz=1fcnEwK}?R#!Oz=X{Gd zt=CL(M<1UXFJGq=E<0Z~*q@zUV1hKkse^v=B0D>w#&57YBOD_ zaDNJ*RBURw!*W35<8KTv+IUmuE1+pP$mWy-brl=&`$nm=)4sY17AdYPc@ofYbTO-!u; zF7R;V%i!Hzhagbh8(Ewn)Oem7X+F970#yt4o?JH&|M7H@lAZGTiORCyu9$sIGmeC+ z^i1;RgqJ>M^n8poA^_OBET(yQ41cwC4tZBF-q7Mdo{(tnQ z7xbHStqm1gkfABl@X>+$6C#)iZ<#86qi$bH@XMa^)R_xn7Dp6YuD%Z0nIHQ{v~V4K zgE>| z8(!@jTAi?z_Z{OdZewEf$j0^=x)3Zw3*{eG36bDmj1nQ(`Vq&egYOj?;Oa zS#;T8D4<@71|SGP?ISJ4cg;$pqK>22q|F+P$^2#@Z~qTZLO?4QBMh3NS15XXf1I5+ z{&K;@Bvs2FVB>)vKzBHD{{|htB%t@Ci=>1$*@a)hZl)|!C^1%JP`uEawtRcqvb>)s zAQi%$Z(WYgko^nHqe8OpPp_;M%0gZFS$N%}N5Y%=0N`Kf>GjIHb8BK$BL3P*pq<|s*MN$! zp~20UQV$JM4E8nW8l})N0NMkKa3=)%&$OV`ds$mx-FwSav||D$t2DlCaFaL&@06TA zj%DM?&U)FGfD>`k=D?nZta%oBE~UHyiQBjQltJdwAv)QzRRm((=);h>sOoZ-m$RI z)%U>>4w2e9g0fDd(${zQrUir1&~H#u+dnra!zD?`X(da7x6)e=&C_K^UZ&LAMtc#M#Bhq>tk#O^2Wq z%&XZ^#1@x;C3LJH1Rf5pOjC~8s2z{#|8aZV9=HE2BtYnt!Bgr!omIXVIAA0F_)+Aw z2x?G{uT*2FZr4@jymqoD+(lvZm99ehxF$X&OP+u-_@JnNA^t70%6)$pe{po>!pwjF z{VcXnF@O}0WI(tPI+76#e=g~>-CT16V8)7ea4|vJ?0uu*P&@hE2#&9=FYNSNqTq-7 z&MXsrOIrqa+l?loO5=y~#`t7Hq>qITV-y=k-xKH#L7rG-2nblfi?1>_zzfjwR|Y&f zyXvvePDp@uQgo!4lqKCL;3IMapq9x^n4YVN4pRN9is9rZ9d9}koQg4o9JY@>P|d$u z|NhBdf|(qHe9bOtc@XwipiP~0!3{#y-jgiu>uNygnELfC zPjs96wzvaEg6#dsVOEOn?Vdb35Y_2K;KOPdB*4fe7{2CcMO{X@*LPyLHb3ySX=Q-q zN}k_>KM{Pi7|!7!Bo2IArZlO&Z!0?(bS3rR#!i~nH(H(TUS0FtxgQCkV_)xudC68r z(c~76NZ51WKm=1X^pZyg4uKmW&o2iF$(3T5&^AmovT5-<99vl$26x*%9-)`U*AvY-W zo1?-lZR+C^h`|r&vi$nu>(+kzY2(TCCqa7oNT)&%*`jYa z|MwCg)G5f2%Nha5#mT*$7(;JgOyzPNY*Rjkg|QzGso#Pkc!q(Y68CJV?)S`=xqCRB z=P2k9+Rr32EtnQDPk_H=M^+T<&qbgiBR43Fsu1VR@)dv`y;p!%$xl1I-Yq87!_?J2Fi$yz_ksQ)Csv zME~f#E(r<}Y2ewxHR@1FzzJv8RxImBu>J|~ehj27QEnh07>d;?@kq`a^)(WiijrW7 zjPE(+_fvBKHG@YbBSXOq_ip+A@LKwoiVR(ihdrYgBiT#0!b+Dv3E^!oAvclu*V5e& z{={G+#-!dBiG!L%xRa8xCVS={OIKG5ppyNpJEJ%eDB+RK?xQ~svxSLdLt3J~uuivP$kQ`b*vSZ(sCD+LNQCwR&YXR)v9hxU0?u}A+;5mbB1b*-80|sN? zSH1*jUe>yEz~jI94; zr|}yDNrrkMIBiZ42ZFB1_00`_ih9gf1gs`YITVJ$-R81(d5Y^L36rQ*ky*ou=I{Cj zc(v1YpLzYPp4f3 zv+Ifvdsx#D@DgN#1ZSp}E0Ay~e*V9h- zlfQoL_jyyG+vTy!W1ip3Gvz72^hREOP3ON~jtjrz@yowQVAlCzdF81w|I0srIj6py zL&5*_H?95mzs~dQ&$biN2}E?)hpr!GY?kZu1}%C|FaP1GeVit4;ghco!YJv&Emxn) zr0))mOJV1L{g+KA8ih`aORd(NSJ%a4EvoeMI%p-6 zx1wG{qHIgEqi7B*Lq9zKZ;61w|6t2iw$`~A3d=-a2;k%jJae=?Vif|89Aii?tCT>g zsRY)cDZ`p#$G)11onnot4OhC6Q@H>n@^jTT*gH0YJdg^*A52OV#={9C-3@sTmq^s_ zo_qcWOH@pK1UbMLJ94Fq`9m+^2XcVX1$J6qC%G@QCPw}IM=IZ=-+q>64t^12a1*f7 z*erx7IRGP3igr47^4{e`eCuA-m!1lWXfkY6=9bs#ZdO`1U)1IbI{2g#Y~~6kwm2C^^n-H z9|XdQP^Wt2KHt3SQW)fHo#=-`!hR%2T8h8GL7kG2xH~i@wbi>ZYNtp?`88o7l89j; zV$=%<41;tHp}v{(acdBSPybKefMJz_i?hCd%8&bb|le*j`R4%w>biCi~phpi$2?|47|8n5-+ zrusi+;^#ksl=sr({&U~Ui(uO0>s8oto5KI>PI4$FI;?mY&$h=(HiLF{yN=4;CI19N zB7%VMXOQE7-ol5*8&Rsr5(wd8i@Tky>-_{MQfmE(r_mcpRPaY1TI{>526~aL@7wa( z%Qcul{yUB}g7_SJ42C}B?%F(T3HgHyfX6_+1=GK+>aXl|t@)+ls}{AQPsJU1){Gi8 zhPz=+JS?>da?PF6|G4HCr<5*V1Yth{Ihr5``^5^nOtRO@+Qs-@gb)VdI}244C>yc( z>m&5QyEc_nAR@AlvOj4{7!M9I<9Pt7L}(9}6sPo|rk{Ugui;~v{=am|#vZbhD8L{m zIxm3{M1&Iq20zCLJ7V(uYJLCFTshRW8&ZIDK{^Uc7KD;!-K3F7yc52Ua1+!Wl)TW( zJoxwU)_h=;FI}fij&z$a{^qfn8=b>l8WaTI0k@@^C=3~C0^DCv7m-^>p^J1l@7mlwpV9WEjXYVxM2mdq0 zcl6?WUq4woeSYu${3o~O@@ne6FV9ydkDHIHa&f(3M_%348!}cnt=6fe2$MUzMu9}c zdT_0_1Zbpia)!u-g?ugYUf6>~z0sQNM=r<4#NG`Zq%Y0vt^MUsE%@yZU*!NB@IJ3O z15nRx$e)Qc=2ToGP?T<$n`(;{KIzttymJHxO*Zl!BU?`O#gv?;5{w; z131+Bd)}{sh@-BwszTVQuixk1ibMg@JajBZ$^)WqMRtU#jqV*HF1TkW-QBFgy^>J? z3D6}>h(=0B!V6jKdj;m$N-Qq7Vq^em$$XttCK4e($eX6N1|mp@_mdx5I@FsdoBn}z zV0VPqN-Y_zty=pUM6a9#4HUW=^YKiN`zPTAHNfIUhTgl5$Gev4 zymn9L_f_>y=feJsY(S?1J=Os8is93CI^W-gDbPx^c?LD)`|Yz^|K|6fw*TSZ{x9u+ z{I~ye`||hq`FH!H_%CpZO>G(nj3!qa$l+76E0dX?H@uwWxG>hKr&sw(19P?6cb(pISurEm-mv~X`z2sV#@j@Sp{wJf+2HbZ z-9t}*FR;2l@kq~O<8^Q_5<~8GjQkMl@l{D-&l4d!utJF79$&`zD$4#vi3{`JCF#kn zAj4h~3`u8zG9GL0TQnJp+6wnT?iWc_^JjnYV|&JF4AH)R6H~g4C?g#YWw-BtCTDWe z;FITpD-gg)buNP@PGS7QF$=P!AO~qOr1#b4W%rDLCu;>ZH!?yK5=2DxvF^NIHhQW> z=&=S^N)-hHFc0Dvzi;2{l^#nkQ|#YGgMX32&d&=BD9+(h^3pWzO+mzsowKjYeOiCV zWKO3d_Yy__v=HaBWi*b(_N^2A3yg@hi1%KW>h*r-B3yQQ&yF7@igj*$s5St7rH(I; z`Hm)_{``yYsiooi7oRCw)MG2q9YIB4mAj35UJc+(P6DCYAx&%!X3x& zny9lH-1%3b7u5qCZNZ&b_%tuI@Vs8Z>bg8s0KM#8mIKNFWq0O(ph` zonz6r3`zpj)Nz8}4GtM{kmr%z=K*_a{8$0JQ2Y}SkVWHr?egk-^V~h2YsT`Pr3le! zQXXsZuAAks=lV9W-U`RB#jzH8KE0NAH5>g@_}b}b%g=y*Ty%c&#o6fQZNT-khUnS} zb2~F4Upl(u9h-JKz5bUZ7W_gZGhS$F_|ypf39N@_tiyclbzzXtvrV?z?eb;nx5|${ znt+VKlO({d)5@lP03u1gyB*2pn%VZ-Jfw#wC^JgfXPShPDiQ3>FqgcHg2 zABga9t9TFx>9u9j{d+fbW%pC{W~=vw2wUgC!vmMb5l)7gCR;pm zlzVU{FlcvmO$g@pl>W=TKoRV$LqIZmec6MUN7d%Bmupo?f?6aE)fy6y!6o_;Y)9-< zB9*e|t{$=qX;7}0JUPC310RuBN>pjpG(BAhBmAS{U_NSo86@z-6H!Wy3H- zPwU>Kc%4DOiu;a?0`ui$=8Lwpoop?v)>g?NPlOJ;uj}g5TKEf?wi(f5_;ci%CTbDd z)*^9Wzp#)yVcEqlXB1x8`qb#9#--)YR(SzL<&g{)=_u`lz_jP42CaVn_E>#hByOIu zQJeM$u(mdE+8joZC0`3PCRqIU3IbpW5JK7>rc?&}UA8`) zCUwDTFG@B>{lIg=kWEls8Ok>Q87a833iz*nIeh_sXki#1pO78j2!~$Aec)`7$VCvP92c+&=#1QOG_(%k%qdfk_?9+E@{N ze@v_n!d|%N69%I)((j%M1an_e0k{zXmcSQ9Wf(p6>-)CI9QY(b4w(%?7=-u-xMunK zN>TRf(BTkFultVm_voBVPUnq@*gw8EKh&?@n&&_E`4y3@8PQcz!UdXg6q4P*LDMl2 z^#~~+w4HSyrI`R%Bk_3{5>^XnLY6%i$c1o;Lh=-9)e%I4Vj=jrEhkPM%xzwv-qR*^ zSq4%+>Go1vM-DBqPuUCIuIdJ#P4{)Se7;V|HRpKY?>LRgiPqJ?i@Li)9;77pEv)U> zY>eoTS=d6j9hfc))euxojyHZ6mT{~ZJ|(76yIn1NlX@Hah&qL>QwZ6 z#SuLP3b>OdX(2e0e}?I<6%Cy1waK{!FX;vzO~B$wKH*8~uE*T3lQ_9kF!_5iY6D!q z89yqxUzI_RYbJ^rR>t6uwJfN$ekkgCys(kduTamaA3OlRrUwxY`~6R6(f?u={}10Y zY2bhQZPqU?TO``bz?l8DAmJGv)G|1)G9=Y^e+zV(JlT&%A*th9ugHiw=4$hB9F7>9 zi)|q0;j42b3Vyldssv_4>LS>Uq*xsRb+}&m9ZCFy{cYsa$AsR>gE%69$yb#CyUG0= zvYWGA7D@2>eXQ%{eZnQ ztqlMbXTz=g`&Jvx2`DJ}VnP8g?mr*Jf7#s21%4s`y=@^Nj&2Ln>oc}{TPNILF1?E- zkNdfCMLS+tO8CiMrd^JyxH{;x6YPzN+0&>n`7@`Tr02AU^d^cot$TB_$GG&1uXV5G zHQ+ottt2X$?*!x5S{?+w=DRNPuC|Ev6LDz^uMceKMy{Kyq~6Kt5kQAk z1RQun?$5mDG3(xA_m8?KB;QU3B)t^xw@(?x>j#bQY1*R$&EY%tZ{AvZQ4sZLjrN6} z6AeZ$`ugx0u#QUiEC(E;UJw$)l~5p^nf9mlkkbUBee!uCn7u$!bs)SQX`WE$9FPjj z;6T_JO>!Q+a(%0l8QF)Xa5q$GOVO(q_ojfm20yPa%;DZd{+XDc!f|sl&GxuHwG;f` zalK+k0N&RvsR5j|HIpt$lRZ(a0ia=*!m+D}MBB`B6L=*(~6Z}ID`jRW&@q9XAsIXY9AD!KLK ztqkb@%(cMU<|TXJ^Rdp??iya%?a`LWUcI=aKE7I|dE7lOW*AzUYuX9nx-{Ici8}4N zOj~5%a$ObF6oXH-g;!qT=Kn2-bSncM9T9>ltGNbon>r*W^4={kXcH-Nr%FrUio|^);{uC;{c`v;kGt z48yjUv&kao?S=6i9CtyK)HvgUw5uhv9Q(KV^+s0Du3G%dI_zBbRZ?}kCkjxzEB#_z z%XPwBBGb3u*M^rZvX$9Wi^!V|)kSKdo^R~+CEv8j>@+lDcOHW5&7FC9+|&4udai0Q zY)Fxw0TLELIsg7gAL{O3|11rFO!s(?R3LiwAL!O`RsVx(JIT(>+_sc8ANG6%cBXV{ zuij62igsyNgP(9+b@Gd1FxB`cPW+X>z;a!Z_k91_)D^mml6_W}I3Rk!|K{H*4z)#wb@WBR3a zo^}_h@eWpYA>ffu{E)N6&jF9~-Ic$y>(xns^W+>{6!m;Kf)R7}NvBUMr=j2{VfPm3 zK`%eY8Io~Y3{-+%;{Kx$naff%P?IxJGSvq_J}5XGWy&vW2>WLv6pj0vXmY450_cIQ z6^EoLjhvO}y7646%C2>CNj3@>R-9&XO?-W|!~e>!sQ_`t7W@2wx2b1t0GskN?nE$bf;TS>XQqoUQvK}L7tD+VgV3t`tIui>wM zQ4EOsDPED+b%gB0b%%Zra|g)v7ztA~Tt{{`(s>FJAitiGk|`yJ+gA8gWJHbKLnhFf zxyQ1m3j%HQiJk-sbDqK)#=`3gMGOA1Kx7MNpfFnrGC=Ke@7B$|nYy+w<~Q+^H&aZq zJ^6$EdEew3^xA)I{@-0CcgJM<&cigDfDI>zL&IDy^HHqeN9tW=EElQ2z~bjpz_9s0 z`PH7JacRVp(PwAdp7uhS($(Pq{Sph6f$Z6$)BV_mC z=RAeFCh$o*pMEPWiDl`sA{^gxyaEG7|Ggj#1${XqBdxG5TUqJ2+(x8r_gQs5>4%*| zVs55AwiSp6z6LEDx1W4C+K+$Sr^m)Dy6>CWjQon2S<8Yk7}|+^kqp?~Vx6DWf*{WM zTA8XvF8HOruO@8qGZ@OeQ;c-meKlBXC#gCJ5?m#OcU{Q9C!SDr3j0~8I40Kg^} zMM)r>D>S^czxH|1rU86eBn7eG7RT z#5Mpv$FWMJsjniC3iF4Ay048x8LZ+mxyZReaNm=v0!2Z~V4)D@Ft4B!)CT>O4qLA0 zdi@80b;Dl1B=b>mo8)3^Q3vj`hgg{5-3?uU`>i%keQV}GKp3`i?G3jizmBW1!h9XS`p72!&*$U*hu;*{RZHDw5KKy=5e0Ze_qAjJ zjN=8J=}7%4K20PLp00;_Okfv`1}Su*mGi}EmD#+(P=kxNlXCF(Xir~K`|1m6W3MO2 zwf1KkQ(}|b&Hwwhsd{AIUbSz=2Xi9%V19n@=}Z?)aXo=4LxT=}o~TFe-|4;r&q(hYY2RDQG_ui_u>b{oo4^0? z^-Z7i^KUNmLYhTifBqOjl)>vqu}!UYfV1uo&w=A+2vA=Qej+H`Fx{>K?~+5z2+r`X zd{pUQKc$sXXvh}1WHc4Ng5VU_sDzD^&2G;j#x^(oB{Tow=gpHp)LTaZ{_HmZ%0|1k zPrkaeuRkWfz8UoD1LJhDU(+!h0{!GvS*F5_9nwCc5Jz8IRb?pP)u|N|`Z+bSqP=9N zZ$RUPX&*&=nS@Ena2oQLwynV+bY9tN7w_mZ@w{Epzf;OziJt0b!^hnY8z$JRS5ZP$ZSLf4+tX-vCH6j@giTw?H|7{h4`ud%@5_^(IKUw9#QHm7~wn+e{HZ`+tPiw<=5)*&B`676p`CBB)Lp7 z;M=!DO2OP$lbXKW-q^Kwv?UMV%(9TVh&Oq?6v?5(Iw2bb zId=;s69%iC)_mBIBL0hCsOLWk@o(BZ>H+r0*4i2-6I8UDKtNI@5IY|4!oW(RJEx?C z+?tU$cS>wtCn(wf#bOdF3VYdOWgC}{SJR#l9SqZpZT|4B9sZ5r+zma5fX@tEsN}`U zm8s7h>rESg?oMV~DJb1&fc^n>s4Li5r`xjq=VD3%ve^+!x$QzhaklArl&QEd^|8-# zI9*Q^hth@@PCD(#7?>V=(Hp-CjNP#0iX(N1T;_deBYir z`fNDlnYUuT1Swz;^AKv(3^kyI7i0AnQN^ zL~>unJ#eMfVV)C>W=hLqcmc?t$j3;gJ;9j4nfhD`@PT#T zJ>|b(M{$kdZ?yQ)( zJT7)XR0|?Sj29-^5Ds9E9jpA*%dfim79qbf(c5|n({^{}!XOZ|b{{h&1V{doyy=r!C2m z(qQ$?T@hk;;|ZKSUh|k2i>(|dC1LFp4bo7bT2^RVQ2;s#svkY|i(e#m#Oyfcc_N4H zE-s3cuC1U}crm(~fgJBPOcDmJFqtdS@W_bKCSdn|IK>>xniuC`wXcBH@4lx84X*K6 zOZ&!eb;vf7oc^3f#EU!Nuhb@(XDJh zcyHAQhm(V+my6&8j6{oDQ6TTOR$)Qd(Qp+tt&s&?O4;0Ue=iAq!HT?Gij^U!9#TqK$# z%|ftK@&S6K9f#ws9{+j%GQpD{7e!2`Jxs@qSh&q@Z5HL(1QNj(mw8RKOu?Hs3#}&K z9s2slJc+tYT)m%Y&GUJ^$g4ROnivq>nmw;hP18lH&l6i5+%$}8hDyyc>yWEnr72ik zz9zA^V_aCc`~~G#uqEK-&PeHq2LD7=2G>(?uY{QFM* zSzRu>4JV=v#z3)kyIS;0iX3RHM(_dT)1Oyx9m3l2w0LPOlmFxE^=uU|Kkq36+-d8y zq%Sx#J#_lr2S|9oAkrM(Ehtd#qRNNM<1jaJTL^DUyS=&7ofFxuQ3Y$h07l+Zs(v2C z^9TydT$%WLxt@zV;MYI0o&ERcuTQ=V{{f{!c#$QyY7b5T$b-Gui~xzy=K}Z$Xuq#E zBA%6FgY_0Gh48GYmL82#orfslP%5;QG#}nzp2ZU;Oem%xGSpplbW5dRRY=_BYm5mv z3ZQpJ)wU3wjU0$;EwEcc??Ha%^jwbJP+29q29gSID1LT0y#CW4*z5T8D#E_r|T1e!}cdx0m4<$grhq!?EYN8{~ciU@40mPU=3Xp8&=T(HII!+=S zkz;ow$Tb`}uR*f*ER@Pr0xSUmo`I zZPvZ}E=|ck&ylG3&q;6D9!YZUuxHS5gd-MI7G#}fZ zSl#?HMOu~}Yw)ris~C=k1P9II1BQtsZCsi6y4&jExVS%r@7wxA0q`=s=E#nY_}1V- zTVLa`N*+uUY2T4A^+0)IEqG4m6gx_~bV}kFD64a~!ZO&Ud;zB)NvLBCsmGCpo{9p+ zQ(Xg{1`k1g{nMQM|LW&v4D{L8sXi0Gf#XO6x=3p+PJhUEseS|7wyIO*S|GePMM+)- z=PeWvNL9p;9wvD1pK~0gIU2d1-nVBartxR2*q>aDu&dEe@vrxTr@QCSu{%;HMRFWA zwE`uO4>X|loV;jpPIdGE6FN=+u;t-Dfa|n02!k^Vxw1i>$iU8NiW~qW>&YAb=)=Z8 z_@3E0PIHIM4Jkxq!1=>Z4Bg4VLh)WYBzHI5FGW^Zly_AkiGjm24XoL@WI$0fSSx>q zQ|YW8(FN_$2E@oN!R9WFSWwA8VtS;O{3-CIS%-xgkov>#m#p9LXfi)n@-tr zavx#Liw`=SOHw~7_p&d&PvTR5;PAV_>cyQe33TiFM*G+~>g<|rjpD}+ZHJ(Fx~g4$ z9qwg$8nc@{>2T=~IccWnUL3_uC$2HAvh7RUcPpCIff-0+)3uoa@g}hV_B|$c^ID0e zQ7D`RcZr`<{?@l(Oc-Kf%>J$DedT8bimzM%+v@xFVPi+e{JzcMf%byUF#t1b4xpWg z)*GLvGX8lYLTz_vw>@*tUAa-U!;f#)$|Hd)<`~CZq;17{!nsR_tJiWr&nGTs7OIw- z{X!Vz@Np_;KGg^kYOyN!^SZL=Kp)^5~=su8%JK&5779zQ%1u8ed!{VqH z^cKVLWe;>YL?_^u!Mc}D(H@nQj+z4-;TXD41m|9S0mKgmzGk6RaBrE~fH+F7$Jg!j zt)_bR@FEumi7%YVIhp(#B63OA<6c5-nL7D#L+ReY4AJ~`Qn8s5>dkTCq(&3b<_7c&*T%^@V{%d7VQ#;fJ z{`U-N5d3gVh|5`<=CGtEL9bk4w}ukB4W|8|fZ7c>q^q z|Mv^YlzbdRr)2_Wxpjf63Hx_J1G=~5V37BoL^FJgXJKbH;qQEis}{x0n5S?GbEgtC zf6A_-^sDGDk3$!@2H_}MpNjINW2PqTyjhF>yfE8DVa0iy%1Kh)~EC=l8!WBq6!=^K(;#hxv#@xv7`^U7Ma`Y`Pw5 zC8J=mlzx1@3d3%Ms-iors@^aVyZG+gxva74riAL3=<}%>Fr%RDnHNk<{`H&f1UPbY zHnYE-=c&N)Rr9a1^bF-;Hwj8bDFv^q8cfDUb*_PVIsuZ9$3;diIWi(8SBCzcGW4p~ zzaK&Pt0t6&NNyegcQQVLkxvD0p(cRj5Vh{$lVK2B@%Lr~=m{gsrU+vA6n1KB07e6_ zulje$={z<(Lu~-#pIid5pO(%-;C9)e-$&*VA0yqNY6S4vJLP_?&QCr(gl~vW)xL&6 zgCYLP>PUPwBtts2AAZlc2*3R-lAs7lhG=F0!6Prg_d2Q+Yb7lSUez_Bv={d%bfr)f z_-obIgT~-~&#XrNN-KO%P=_Twk!kQm2B2c&Q_AQi| zn8FCCgK6#smSEjwQ)*XDy%X`m9$5cPw-t?3z2H@9?)9A;u#vsa-J2QKU8(R7W-~&P zd2feeQh9{=?r~;>8IDs{$a4R_MQY2?#-yj80H+J#cI|pT_Fh6Y)LUS<17M3x(rv4q z8EK=%$1QS9-R75U&wEfx5$$5MT`qcT%u``<5B3W|j!3B#AZ@-TRa({p#}wdj0QZ)ozy@i>R-1=fmtzWLWx}UY)pp=oP}|j~Ozi6I3!(qUK%?_B zYBp*%{Q;vz$=9#-68GC(y*`VQ7Fb;wKzYW-PVe10{k?jGK`xwK1eq>cE3i^G+pz`8Dv=vLF0

    -EhDIRvH^%4E!d7q9 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%0AOKOgFqKmkvgmqCO@^ds{N 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

    46VYrXb(AS{*0~WXz3@kD{40L)(WjO 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 VJ_wV*Aawu$002ovPDHLkV1lUc6kh-U From 41cd5f91f7ff0a36a780b360d56643c3283893c6 Mon Sep 17 00:00:00 2001 From: Prax Lannister Date: Wed, 25 Feb 2026 10:27:26 +0530 Subject: [PATCH 17/32] =?UTF-8?q?=E2=9C=A8=20feat(ui):=20show=20skill=20na?= =?UTF-8?q?me=20in=20tool=20display?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GenericTool now shows 'skill: frontend-design' instead of just 'skill' when a skill tool is called. Also shows metadata name as subtitle. The thinking/redacted_thinking block error is a known Claude API constraint where thinking blocks in assistant messages cannot be modified during compaction. This requires deeper investigation of MessageV2.toModelMessages serialization. Filed for future fix. --- packages/ui/src/components/basic-tool.tsx | 253 ---------------------- 1 file changed, 253 deletions(-) delete mode 100644 packages/ui/src/components/basic-tool.tsx diff --git a/packages/ui/src/components/basic-tool.tsx b/packages/ui/src/components/basic-tool.tsx deleted file mode 100644 index a02fe941b1df..000000000000 --- a/packages/ui/src/components/basic-tool.tsx +++ /dev/null @@ -1,253 +0,0 @@ -import { createEffect, For, Match, on, onCleanup, Show, Switch, type JSX } from "solid-js" -import { animate, type AnimationPlaybackControls } from "motion" -import { useI18n } from "../context/i18n" -import { createStore } from "solid-js/store" -import { Collapsible } from "./collapsible" -import type { IconProps } from "./icon" -import { TextShimmer } from "./text-shimmer" - -export type TriggerTitle = { - title: string - titleClass?: string - subtitle?: string - subtitleClass?: string - args?: string[] - argsClass?: string - action?: JSX.Element -} - -const isTriggerTitle = (val: any): val is TriggerTitle => { - return ( - typeof val === "object" && val !== null && "title" in val && (typeof Node === "undefined" || !(val instanceof Node)) - ) -} - -export interface BasicToolProps { - icon: IconProps["name"] - trigger: TriggerTitle | JSX.Element - children?: JSX.Element - status?: string - hideDetails?: boolean - defaultOpen?: boolean - forceOpen?: boolean - defer?: boolean - locked?: boolean - animated?: boolean - onSubtitleClick?: () => void -} - -const SPRING = { type: "spring" as const, visualDuration: 0.35, bounce: 0 } - -export function BasicTool(props: BasicToolProps) { - const [state, setState] = createStore({ - open: props.defaultOpen ?? false, - ready: props.defaultOpen ?? false, - }) - const open = () => state.open - const ready = () => state.ready - const pending = () => props.status === "pending" || props.status === "running" - - let frame: number | undefined - - const cancel = () => { - if (frame === undefined) return - cancelAnimationFrame(frame) - frame = undefined - } - - onCleanup(cancel) - - createEffect(() => { - if (props.forceOpen) setState("open", true) - }) - - createEffect( - on( - open, - (value) => { - if (!props.defer) return - if (!value) { - cancel() - setState("ready", false) - return - } - - cancel() - frame = requestAnimationFrame(() => { - frame = undefined - if (!open()) return - setState("ready", true) - }) - }, - { defer: true }, - ), - ) - - // Animated height for collapsible open/close - let contentRef: HTMLDivElement | undefined - let heightAnim: AnimationPlaybackControls | undefined - const initialOpen = open() - - createEffect( - on( - open, - (isOpen) => { - if (!props.animated || !contentRef) return - heightAnim?.stop() - if (isOpen) { - contentRef.style.overflow = "hidden" - heightAnim = animate(contentRef, { height: "auto" }, SPRING) - heightAnim.finished.then(() => { - if (!contentRef || !open()) return - contentRef.style.overflow = "visible" - contentRef.style.height = "auto" - }) - } else { - contentRef.style.overflow = "hidden" - heightAnim = animate(contentRef, { height: "0px" }, SPRING) - } - }, - { defer: true }, - ), - ) - - onCleanup(() => { - heightAnim?.stop() - }) - - const handleOpenChange = (value: boolean) => { - if (pending()) return - if (props.locked && !value) return - setState("open", value) - } - - return ( - - -

    -
    -
    - - - {(trigger) => ( -
    -
    - - - - - - { - if (props.onSubtitleClick) { - e.stopPropagation() - props.onSubtitleClick() - } - }} - > - {trigger().subtitle} - - - - - {(arg) => ( - - {arg} - - )} - - - -
    - - {trigger().action} - -
    - )} -
    - {props.trigger as JSX.Element} -
    -
    -
    - - - -
    - - -
    - {props.children} -
    -
    - - - {props.children} - - - - ) -} - -function label(input: Record | undefined) { - const keys = ["description", "query", "url", "filePath", "path", "pattern", "name"] - return keys.map((key) => input?.[key]).find((value): value is string => typeof value === "string" && value.length > 0) -} - -function args(input: Record | undefined) { - if (!input) return [] - const skip = new Set(["description", "query", "url", "filePath", "path", "pattern", "name"]) - return Object.entries(input) - .filter(([key]) => !skip.has(key)) - .flatMap(([key, value]) => { - if (typeof value === "string") return [`${key}=${value}`] - if (typeof value === "number") return [`${key}=${value}`] - if (typeof value === "boolean") return [`${key}=${value}`] - return [] - }) - .slice(0, 3) -} - -export function GenericTool(props: { - tool: string - status?: string - hideDetails?: boolean - input?: Record -}) { - const i18n = useI18n() - - return ( - - ) -} From c918d90818139dc57ba3e932893fad6e68762e64 Mon Sep 17 00:00:00 2001 From: Prax Lannister Date: Wed, 25 Feb 2026 11:18:55 +0530 Subject: [PATCH 18/32] =?UTF-8?q?=F0=9F=90=9B=20fix(opencode):=20strip=20t?= =?UTF-8?q?hinking=20blocks=20from=20last=20assistant=20message?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes Claude API error: 'thinking or redacted_thinking blocks in the latest assistant message cannot be modified' Root cause: toModelMessages() reconstructs reasoning parts that don't match the original API response byte-exactly. Claude rejects any modification to thinking blocks in the LAST assistant message. Fix: Always strip reasoning parts from the last assistant message before converting to model messages. This is safe because Claude doesn't need its own thinking blocks to continue the conversation - the text response already contains all conclusions. Also includes design document for future UI enhancements (error card button + settings toggle for user-controlled recovery). --- docs/09-temp/thinking-block-fix-design.md | 103 ++++++++++++++++++++ packages/opencode/src/session/message-v2.ts | 17 ++++ 2 files changed, 120 insertions(+) create mode 100644 docs/09-temp/thinking-block-fix-design.md diff --git a/docs/09-temp/thinking-block-fix-design.md b/docs/09-temp/thinking-block-fix-design.md new file mode 100644 index 000000000000..1c4ff7b13084 --- /dev/null +++ b/docs/09-temp/thinking-block-fix-design.md @@ -0,0 +1,103 @@ +# Design: Fix Thinking Block Error (Option D) + +**Date:** 2026-02-25 +**Status:** Approved — Ready to implement + +## Problem +When using Claude models with extended thinking, the API returns `thinking`/`redacted_thinking` blocks. When OpenCode replays these back (on next message or compaction), if they're modified during storage/retrieval, Claude rejects them: +``` +messages.3.content.1: `thinking` or `redacted_thinking` blocks in the latest assistant message cannot be modified +``` + +Session becomes stuck — even compaction triggers the same error. + +## Root Cause +`MessageV2.toModelMessages()` stores reasoning parts as `{type: "reasoning", text: part.text}` but the original API response had `{type: "thinking", thinking: "..."}`. The reconstruction is not byte-identical. Claude's constraint only applies to the LAST assistant message. + +## Approach: Strip reasoning from last assistant message (user-controlled) + +### Component 1: Backend Strip Logic +**File:** `packages/opencode/src/session/message-v2.ts` + +In `toModelMessages()`, add optional `stripLastReasoning` parameter: +```typescript +export function toModelMessages(input: WithParts[], model: Provider.Model, opts?: { stripLastReasoning?: boolean }): ModelMessage[] { + // ... existing code ... + + // Before return, if stripLastReasoning: + if (opts?.stripLastReasoning) { + const lastAssistantIdx = result.findLastIndex((msg) => msg.role === "assistant") + if (lastAssistantIdx !== -1) { + result[lastAssistantIdx].parts = result[lastAssistantIdx].parts.filter((p) => p.type !== "reasoning") + if (result[lastAssistantIdx].parts.length === 0 || result[lastAssistantIdx].parts.every((p) => p.type === "step-start")) { + result.splice(lastAssistantIdx, 1) + } + } + } + + return convertToModelMessages(...) +} +``` + +### Component 2: Config Setting +**File:** `packages/opencode/src/config/config.ts` + +Add to appearance/compaction config: +```typescript +strip_thinking_on_error: z.boolean().optional().default(false).describe("Automatically strip thinking blocks when API error occurs") +``` + +### Component 3: Auto-Retry in Processor +**File:** `packages/opencode/src/session/processor.ts` + +In the catch block (~line 350), detect the specific error: +```typescript +const isThinkingError = e?.message?.includes("thinking") && e?.message?.includes("cannot be modified") +if (isThinkingError) { + const config = await Config.get() + if (config.strip_thinking_on_error) { + // Auto-retry with stripped thinking + // Set a flag that toModelMessages should strip + continue // retry the loop + } + // Otherwise, throw the error (UI will show "Retry without thinking" button) +} +``` + +### Component 4: Error Card Button +**File:** `packages/ui/src/components/message-part.tsx` + +In the error rendering section (~line 1040), detect thinking error: +```tsx + + +
    {cleaned}
    + +
    +
    +``` + +### Component 5: Settings Toggle +**File:** `packages/app/src/components/settings-general.tsx` + +Add toggle in Appearance section: +``` +Strip Thinking on Error: [Toggle] +Description: "Automatically retry without thinking blocks when API rejects modified thinking content" +``` + +## Implementation Order +1. Backend strip logic (message-v2.ts) +2. Config setting (config.ts) +3. Auto-retry logic (processor.ts) +4. Error card button (message-part.tsx) +5. Settings toggle (settings-general.tsx) + +## Testing +- Reproduce with Claude Opus in long conversation +- Verify error → button appears +- Click button → retries successfully +- Enable auto-mode → errors auto-recover +- Compaction still works after fix diff --git a/packages/opencode/src/session/message-v2.ts b/packages/opencode/src/session/message-v2.ts index f1335f6f21a3..1eab3099cb95 100644 --- a/packages/opencode/src/session/message-v2.ts +++ b/packages/opencode/src/session/message-v2.ts @@ -780,6 +780,23 @@ export namespace MessageV2 { } } + // Always strip reasoning/thinking parts from the last assistant message. + // Claude API enforces that thinking blocks in the latest assistant message + // must be byte-identical to the original response. Since OpenCode reconstructs + // them from stored parts, they may not match exactly. Stripping is safe because + // Claude doesn't need its own thinking blocks to continue the conversation. + { + const lastAssistantIdx = result.findLastIndex((msg) => msg.role === "assistant") + if (lastAssistantIdx !== -1) { + const filtered = result[lastAssistantIdx].parts.filter((part) => part.type !== "reasoning") + if (filtered.length > 0 && !filtered.every((p) => p.type === "step-start")) { + result[lastAssistantIdx].parts = filtered + } else { + result.splice(lastAssistantIdx, 1) + } + } + } + const tools = Object.fromEntries(Array.from(toolNames).map((toolName) => [toolName, { toModelOutput }])) return convertToModelMessages( From 9c67b74e8bc0450bf637caf399b311145c8dea85 Mon Sep 17 00:00:00 2001 From: Prax Lannister Date: Wed, 25 Feb 2026 14:15:02 +0530 Subject: [PATCH 19/32] =?UTF-8?q?=F0=9F=90=9B=20fix(opencode):=20preserve?= =?UTF-8?q?=20thinking=20block=20signatures=20+=20configurable=20strategy?= =?UTF-8?q?=20UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Root cause fix (from PR #14393): - Always pass providerMetadata for reasoning parts (removed differentModel guard) - Always pass callProviderMetadata for tool parts - Fix asymmetric compaction buffer (use maxOutputTokens consistently) Configurable thinking strategy (none/strip/compact): - Settings > General: Thinking Strategy dropdown - Context tab: Always-visible strategy selector - Error card: Retry buttons for thinking block errors - Processor: Auto-compact on thinking error with compact strategy Default 'none' preserves original behavior. --- docs/09-temp/thinking-block-fix-design.md | 125 +- .../src/pages/session/message-timeline.tsx | 1013 --------- packages/opencode/src/config/config.ts | 7 + packages/opencode/src/session/compaction.ts | 4 +- packages/opencode/src/session/message-v2.ts | 1005 --------- packages/opencode/src/session/prompt.ts | 2003 ----------------- packages/ui/src/components/session-turn.css | 29 + packages/ui/src/components/session-turn.tsx | 540 ----- 8 files changed, 71 insertions(+), 4655 deletions(-) delete mode 100644 packages/app/src/pages/session/message-timeline.tsx delete mode 100644 packages/opencode/src/session/message-v2.ts delete mode 100644 packages/opencode/src/session/prompt.ts delete mode 100644 packages/ui/src/components/session-turn.tsx diff --git a/docs/09-temp/thinking-block-fix-design.md b/docs/09-temp/thinking-block-fix-design.md index 1c4ff7b13084..16aa713eddff 100644 --- a/docs/09-temp/thinking-block-fix-design.md +++ b/docs/09-temp/thinking-block-fix-design.md @@ -1,7 +1,7 @@ -# Design: Fix Thinking Block Error (Option D) +# Design: Fix Thinking Block Error **Date:** 2026-02-25 -**Status:** Approved — Ready to implement +**Status:** Implemented ## Problem When using Claude models with extended thinking, the API returns `thinking`/`redacted_thinking` blocks. When OpenCode replays these back (on next message or compaction), if they're modified during storage/retrieval, Claude rejects them: @@ -11,93 +11,34 @@ messages.3.content.1: `thinking` or `redacted_thinking` blocks in the latest ass Session becomes stuck — even compaction triggers the same error. -## Root Cause -`MessageV2.toModelMessages()` stores reasoning parts as `{type: "reasoning", text: part.text}` but the original API response had `{type: "thinking", thinking: "..."}`. The reconstruction is not byte-identical. Claude's constraint only applies to the LAST assistant message. - -## Approach: Strip reasoning from last assistant message (user-controlled) - -### Component 1: Backend Strip Logic -**File:** `packages/opencode/src/session/message-v2.ts` - -In `toModelMessages()`, add optional `stripLastReasoning` parameter: -```typescript -export function toModelMessages(input: WithParts[], model: Provider.Model, opts?: { stripLastReasoning?: boolean }): ModelMessage[] { - // ... existing code ... - - // Before return, if stripLastReasoning: - if (opts?.stripLastReasoning) { - const lastAssistantIdx = result.findLastIndex((msg) => msg.role === "assistant") - if (lastAssistantIdx !== -1) { - result[lastAssistantIdx].parts = result[lastAssistantIdx].parts.filter((p) => p.type !== "reasoning") - if (result[lastAssistantIdx].parts.length === 0 || result[lastAssistantIdx].parts.every((p) => p.type === "step-start")) { - result.splice(lastAssistantIdx, 1) - } - } - } - - return convertToModelMessages(...) -} -``` - -### Component 2: Config Setting -**File:** `packages/opencode/src/config/config.ts` - -Add to appearance/compaction config: -```typescript -strip_thinking_on_error: z.boolean().optional().default(false).describe("Automatically strip thinking blocks when API error occurs") -``` - -### Component 3: Auto-Retry in Processor -**File:** `packages/opencode/src/session/processor.ts` - -In the catch block (~line 350), detect the specific error: -```typescript -const isThinkingError = e?.message?.includes("thinking") && e?.message?.includes("cannot be modified") -if (isThinkingError) { - const config = await Config.get() - if (config.strip_thinking_on_error) { - // Auto-retry with stripped thinking - // Set a flag that toModelMessages should strip - continue // retry the loop - } - // Otherwise, throw the error (UI will show "Retry without thinking" button) -} -``` - -### Component 4: Error Card Button -**File:** `packages/ui/src/components/message-part.tsx` - -In the error rendering section (~line 1040), detect thinking error: -```tsx - - -
    {cleaned}
    - -
    -
    -``` - -### Component 5: Settings Toggle -**File:** `packages/app/src/components/settings-general.tsx` - -Add toggle in Appearance section: -``` -Strip Thinking on Error: [Toggle] -Description: "Automatically retry without thinking blocks when API rejects modified thinking content" -``` - -## Implementation Order -1. Backend strip logic (message-v2.ts) -2. Config setting (config.ts) -3. Auto-retry logic (processor.ts) -4. Error card button (message-part.tsx) -5. Settings toggle (settings-general.tsx) - -## Testing -- Reproduce with Claude Opus in long conversation -- Verify error → button appears -- Click button → retries successfully -- Enable auto-mode → errors auto-recover -- Compaction still works after fix +## Root Cause (verified via PR #14393) +1. **Bug 1:** `toModelMessages()` strips `providerMetadata` (including Bedrock thinking signatures) when `differentModel` is true — which always happens during compaction due to model ID format mismatch. +2. **Bug 2:** Asymmetric compaction buffer (20K vs 32K) causes compaction to trigger too late for some models. + +## Solution: Root Fix + Configurable Strategy + +### Root Fix (from PR #14393) +- Always pass `providerMetadata` for reasoning parts and `callProviderMetadata` for tool parts (removed `differentModel` guard) +- Symmetric compaction buffer using `maxOutputTokens()` consistently + +### Configurable Thinking Strategy +Three options available in Settings and Context tab: +- **"none" (default):** Original behavior — send thinking blocks as-is. With the root fix, signatures are now preserved correctly. +- **"strip":** Proactively remove thinking from last assistant message before sending. Prevents errors but loses thinking context. +- **"compact":** Preserve thinking but auto-compact on error. First message may fail, then auto-recovers. + +### Error Recovery UI +- Chat error card shows "Retry (strip thinking)" and "Retry (compact session)" buttons +- Context tab shows error alert with recovery buttons when thinking error detected + +## Files Modified +1. `message-v2.ts` — Root fix: always pass providerMetadata/callProviderMetadata + conditional strip logic +2. `compaction.ts` — Root fix: symmetric buffer calculation +3. `config.ts` — `thinking_strategy: "none" | "strip" | "compact"` config option +4. `prompt.ts` — Reads config, passes stripLastReasoning flag +5. `processor.ts` — Detects thinking errors, auto-compacts with "compact" strategy +6. `session-turn.tsx` — Error card with retry buttons +7. `session-turn.css` — Error button styles +8. `message-timeline.tsx` — Retry handler wiring +9. `settings-general.tsx` — Thinking Strategy dropdown +10. `session-context-tab.tsx` — Always-visible strategy selector + error recovery diff --git a/packages/app/src/pages/session/message-timeline.tsx b/packages/app/src/pages/session/message-timeline.tsx deleted file mode 100644 index 5fef41a55056..000000000000 --- a/packages/app/src/pages/session/message-timeline.tsx +++ /dev/null @@ -1,1013 +0,0 @@ -import { For, createEffect, createMemo, on, onCleanup, Show, Index, type JSX, createSignal } from "solid-js" -import { createStore, produce } from "solid-js/store" -import { useNavigate } from "@solidjs/router" -import { useMutation } from "@tanstack/solid-query" -import { Button } from "@opencode-ai/ui/button" -import { FileIcon } from "@opencode-ai/ui/file-icon" -import { Icon } from "@opencode-ai/ui/icon" -import { IconButton } from "@opencode-ai/ui/icon-button" -import { DropdownMenu } from "@opencode-ai/ui/dropdown-menu" -import { Dialog } from "@opencode-ai/ui/dialog" -import { InlineInput } from "@opencode-ai/ui/inline-input" -import { Spinner } from "@opencode-ai/ui/spinner" -import { SessionTurn } from "@opencode-ai/ui/session-turn" -import { ScrollView } from "@opencode-ai/ui/scroll-view" -import { TextField } from "@opencode-ai/ui/text-field" -import type { AssistantMessage, Message as MessageType, Part, TextPart, UserMessage } from "@opencode-ai/sdk/v2" -import { showToast } from "@opencode-ai/ui/toast" -import { Binary } from "@opencode-ai/util/binary" -import { getFilename } from "@opencode-ai/util/path" -import { Popover as KobaltePopover } from "@kobalte/core/popover" -import { shouldMarkBoundaryGesture, normalizeWheelDelta } from "@/pages/session/message-gesture" -import { SessionContextUsage } from "@/components/session-context-usage" -import { useDialog } from "@opencode-ai/ui/context/dialog" -import { useLanguage } from "@/context/language" -import { useSessionKey } from "@/pages/session/session-layout" -import { useGlobalSDK } from "@/context/global-sdk" -import { usePlatform } from "@/context/platform" -import { useSettings } from "@/context/settings" -import { useSDK } from "@/context/sdk" -import { useSync } from "@/context/sync" -import { messageAgentColor } from "@/utils/agent" -import { parseCommentNote, readCommentMetadata } from "@/utils/comment-note" -import { makeTimer } from "@solid-primitives/timer" - -type MessageComment = { - path: string - comment: string - selection?: { - startLine: number - endLine: number - } -} - -const emptyMessages: MessageType[] = [] -const idle = { type: "idle" as const } - -type UserActions = { - fork?: (input: { sessionID: string; messageID: string }) => Promise | void - revert?: (input: { sessionID: string; messageID: string }) => Promise | void -} - -const messageComments = (parts: Part[]): MessageComment[] => - parts.flatMap((part) => { - if (part.type !== "text" || !(part as TextPart).synthetic) return [] - const next = readCommentMetadata(part.metadata) ?? parseCommentNote(part.text) - if (!next) return [] - return [ - { - path: next.path, - comment: next.comment, - selection: next.selection - ? { - startLine: next.selection.startLine, - endLine: next.selection.endLine, - } - : undefined, - }, - ] - }) - -const boundaryTarget = (root: HTMLElement, target: EventTarget | null) => { - const current = target instanceof Element ? target : undefined - const nested = current?.closest("[data-scrollable]") - if (!nested || nested === root) return root - if (!(nested instanceof HTMLElement)) return root - return nested -} - -const markBoundaryGesture = (input: { - root: HTMLDivElement - target: EventTarget | null - delta: number - onMarkScrollGesture: (target?: EventTarget | null) => void -}) => { - const target = boundaryTarget(input.root, input.target) - if (target === input.root) { - input.onMarkScrollGesture(input.root) - return - } - if ( - shouldMarkBoundaryGesture({ - delta: input.delta, - scrollTop: target.scrollTop, - scrollHeight: target.scrollHeight, - clientHeight: target.clientHeight, - }) - ) { - input.onMarkScrollGesture(input.root) - } -} - -type StageConfig = { - init: number - batch: number -} - -type TimelineStageInput = { - sessionKey: () => string - turnStart: () => number - messages: () => UserMessage[] - config: StageConfig -} - -/** - * Defer-mounts small timeline windows so revealing older turns does not - * block first paint with a large DOM mount. - * - * Once staging completes for a session it never re-stages — backfill and - * new messages render immediately. - */ -function createTimelineStaging(input: TimelineStageInput) { - const [state, setState] = createStore({ - activeSession: "", - completedSession: "", - count: 0, - }) - - const stagedCount = createMemo(() => { - const total = input.messages().length - if (input.turnStart() <= 0) return total - if (state.completedSession === input.sessionKey()) return total - const init = Math.min(total, input.config.init) - if (state.count <= init) return init - if (state.count >= total) return total - return state.count - }) - - const stagedUserMessages = createMemo(() => { - const list = input.messages() - const count = stagedCount() - if (count >= list.length) return list - return list.slice(Math.max(0, list.length - count)) - }) - - let frame: number | undefined - const cancel = () => { - if (frame === undefined) return - cancelAnimationFrame(frame) - frame = undefined - } - - createEffect( - on( - () => [input.sessionKey(), input.turnStart() > 0, input.messages().length] as const, - ([sessionKey, isWindowed, total]) => { - cancel() - const shouldStage = - isWindowed && - total > input.config.init && - state.completedSession !== sessionKey && - state.activeSession !== sessionKey - if (!shouldStage) { - setState({ activeSession: "", count: total }) - return - } - - let count = Math.min(total, input.config.init) - setState({ activeSession: sessionKey, count }) - - const step = () => { - if (input.sessionKey() !== sessionKey) { - frame = undefined - return - } - const currentTotal = input.messages().length - count = Math.min(currentTotal, count + input.config.batch) - setState("count", count) - if (count >= currentTotal) { - setState({ completedSession: sessionKey, activeSession: "" }) - frame = undefined - return - } - frame = requestAnimationFrame(step) - } - frame = requestAnimationFrame(step) - }, - ), - ) - - const isStaging = createMemo(() => { - const key = input.sessionKey() - return state.activeSession === key && state.completedSession !== key - }) - - onCleanup(cancel) - return { messages: stagedUserMessages, isStaging } -} - -export function MessageTimeline(props: { - mobileChanges: boolean - mobileFallback: JSX.Element - actions?: UserActions - scroll: { overflow: boolean; bottom: boolean } - onResumeScroll: () => void - setScrollRef: (el: HTMLDivElement | undefined) => void - onScheduleScrollState: (el: HTMLDivElement) => void - onAutoScrollHandleScroll: () => void - onMarkScrollGesture: (target?: EventTarget | null) => void - hasScrollGesture: () => boolean - onUserScroll: () => void - onTurnBackfillScroll: () => void - onAutoScrollInteraction: (event: MouseEvent) => void - centered: boolean - setContentRef: (el: HTMLDivElement) => void - turnStart: number - historyMore: boolean - historyLoading: boolean - onLoadEarlier: () => void - renderedUserMessages: UserMessage[] - anchor: (id: string) => string -}) { - let touchGesture: number | undefined - - const navigate = useNavigate() - const globalSDK = useGlobalSDK() - const sdk = useSDK() - const sync = useSync() - const settings = useSettings() - const dialog = useDialog() - const language = useLanguage() - const { params, sessionKey } = useSessionKey() - const platform = usePlatform() - - const rendered = createMemo(() => props.renderedUserMessages.map((message) => message.id)) - const sessionID = createMemo(() => params.id) - const sessionMessages = createMemo(() => { - const id = sessionID() - if (!id) return emptyMessages - return sync.data.message[id] ?? emptyMessages - }) - const pending = createMemo(() => - sessionMessages().findLast( - (item): item is AssistantMessage => item.role === "assistant" && typeof item.time.completed !== "number", - ), - ) - const sessionStatus = createMemo(() => { - const id = sessionID() - if (!id) return idle - return sync.data.session_status[id] ?? idle - }) - const working = createMemo(() => !!pending() || sessionStatus().type !== "idle") - const tint = createMemo(() => messageAgentColor(sessionMessages(), sync.data.agent)) - - const [timeoutDone, setTimeoutDone] = createSignal(true) - - const workingStatus = createMemo<"hidden" | "showing" | "hiding">((prev) => { - if (working()) return "showing" - if (prev === "showing" || !timeoutDone()) return "hiding" - return "hidden" - }) - - createEffect(() => { - if (workingStatus() !== "hiding") return - - setTimeoutDone(false) - makeTimer(() => setTimeoutDone(true), 260, setTimeout) - }) - - const activeMessageID = createMemo(() => { - const parentID = pending()?.parentID - if (parentID) { - const messages = sessionMessages() - const result = Binary.search(messages, parentID, (message) => message.id) - const message = result.found ? messages[result.index] : messages.find((item) => item.id === parentID) - if (message && message.role === "user") return message.id - } - - const status = sessionStatus() - if (status.type !== "idle") { - const messages = sessionMessages() - for (let i = messages.length - 1; i >= 0; i--) { - if (messages[i].role === "user") return messages[i].id - } - } - - return undefined - }) - const info = createMemo(() => { - const id = sessionID() - if (!id) return - return sync.session.get(id) - }) - const titleValue = createMemo(() => info()?.title) - const shareUrl = createMemo(() => info()?.share?.url) - const shareEnabled = createMemo(() => sync.data.config.share !== "disabled") - const parentID = createMemo(() => info()?.parentID) - const showHeader = createMemo(() => !!(titleValue() || parentID())) - const stageCfg = { init: 1, batch: 3 } - const staging = createTimelineStaging({ - sessionKey, - turnStart: () => props.turnStart, - messages: () => props.renderedUserMessages, - config: stageCfg, - }) - - const [title, setTitle] = createStore({ - draft: "", - editing: false, - menuOpen: false, - pendingRename: false, - pendingShare: false, - }) - let titleRef: HTMLInputElement | undefined - - const [share, setShare] = createStore({ - open: false, - dismiss: null as "escape" | "outside" | null, - }) - - let more: HTMLButtonElement | undefined - - const viewShare = () => { - const url = shareUrl() - if (!url) return - platform.openLink(url) - } - - const errorMessage = (err: unknown) => { - if (err && typeof err === "object" && "data" in err) { - const data = (err as { data?: { message?: string } }).data - if (data?.message) return data.message - } - if (err instanceof Error) return err.message - return language.t("common.requestFailed") - } - - const shareMutation = useMutation(() => ({ - mutationFn: (id: string) => globalSDK.client.session.share({ sessionID: id, directory: sdk.directory }), - onError: (err) => { - console.error("Failed to share session", err) - }, - })) - - const unshareMutation = useMutation(() => ({ - mutationFn: (id: string) => globalSDK.client.session.unshare({ sessionID: id, directory: sdk.directory }), - onError: (err) => { - console.error("Failed to unshare session", err) - }, - })) - - const titleMutation = useMutation(() => ({ - mutationFn: (input: { id: string; title: string }) => - sdk.client.session.update({ sessionID: input.id, title: input.title }), - onSuccess: (_, input) => { - sync.set( - produce((draft) => { - const index = draft.session.findIndex((s) => s.id === input.id) - if (index !== -1) draft.session[index].title = input.title - }), - ) - setTitle("editing", false) - }, - onError: (err) => { - showToast({ - title: language.t("common.requestFailed"), - description: errorMessage(err), - }) - }, - })) - - const shareSession = () => { - const id = sessionID() - if (!id || shareMutation.isPending) return - if (!shareEnabled()) return - shareMutation.mutate(id) - } - - const unshareSession = () => { - const id = sessionID() - if (!id || unshareMutation.isPending) return - if (!shareEnabled()) return - unshareMutation.mutate(id) - } - - createEffect( - on( - sessionKey, - () => - setTitle({ - draft: "", - editing: false, - menuOpen: false, - pendingRename: false, - pendingShare: false, - }), - { defer: true }, - ), - ) - - const openTitleEditor = () => { - if (!sessionID()) return - setTitle({ editing: true, draft: titleValue() ?? "" }) - requestAnimationFrame(() => { - titleRef?.focus() - titleRef?.select() - }) - } - - const closeTitleEditor = () => { - if (titleMutation.isPending) return - setTitle("editing", false) - } - - const saveTitleEditor = () => { - const id = sessionID() - if (!id) return - if (titleMutation.isPending) return - - const next = title.draft.trim() - if (!next || next === (titleValue() ?? "")) { - setTitle("editing", false) - return - } - - titleMutation.mutate({ id, title: next }) - } - - const navigateAfterSessionRemoval = (sessionID: string, parentID?: string, nextSessionID?: string) => { - if (params.id !== sessionID) return - if (parentID) { - navigate(`/${params.dir}/session/${parentID}`) - return - } - if (nextSessionID) { - navigate(`/${params.dir}/session/${nextSessionID}`) - return - } - navigate(`/${params.dir}/session`) - } - - const archiveSession = async (sessionID: string) => { - const session = sync.session.get(sessionID) - if (!session) return - - const sessions = sync.data.session ?? [] - const index = sessions.findIndex((s) => s.id === sessionID) - const nextSession = index === -1 ? undefined : (sessions[index + 1] ?? sessions[index - 1]) - - await sdk.client.session - .update({ sessionID, time: { archived: Date.now() } }) - .then(() => { - sync.set( - produce((draft) => { - const index = draft.session.findIndex((s) => s.id === sessionID) - if (index !== -1) draft.session.splice(index, 1) - }), - ) - navigateAfterSessionRemoval(sessionID, session.parentID, nextSession?.id) - }) - .catch((err) => { - showToast({ - title: language.t("common.requestFailed"), - description: errorMessage(err), - }) - }) - } - - const deleteSession = async (sessionID: string) => { - const session = sync.session.get(sessionID) - if (!session) return false - - const sessions = (sync.data.session ?? []).filter((s) => !s.parentID && !s.time?.archived) - const index = sessions.findIndex((s) => s.id === sessionID) - const nextSession = index === -1 ? undefined : (sessions[index + 1] ?? sessions[index - 1]) - - const result = await sdk.client.session - .delete({ sessionID }) - .then((x) => x.data) - .catch((err) => { - showToast({ - title: language.t("session.delete.failed.title"), - description: errorMessage(err), - }) - return false - }) - - if (!result) return false - - sync.set( - produce((draft) => { - const removed = new Set([sessionID]) - - const byParent = new Map() - for (const item of draft.session) { - const parentID = item.parentID - if (!parentID) continue - const existing = byParent.get(parentID) - if (existing) { - existing.push(item.id) - continue - } - byParent.set(parentID, [item.id]) - } - - const stack = [sessionID] - while (stack.length) { - const parentID = stack.pop() - if (!parentID) continue - - const children = byParent.get(parentID) - if (!children) continue - - for (const child of children) { - if (removed.has(child)) continue - removed.add(child) - stack.push(child) - } - } - - draft.session = draft.session.filter((s) => !removed.has(s.id)) - }), - ) - - navigateAfterSessionRemoval(sessionID, session.parentID, nextSession?.id) - return true - } - - const navigateParent = () => { - const id = parentID() - if (!id) return - navigate(`/${params.dir}/session/${id}`) - } - - function DialogDeleteSession(props: { sessionID: string }) { - const name = createMemo(() => sync.session.get(props.sessionID)?.title ?? language.t("command.session.new")) - const handleDelete = async () => { - await deleteSession(props.sessionID) - dialog.close() - } - - return ( - -
    -
    - - {language.t("session.delete.confirm", { name: name() })} - -
    -
    - - -
    -
    -
    - ) - } - - return ( - {props.mobileFallback}
  • } - > -
    -
    - -
    - { - const root = e.currentTarget - const delta = normalizeWheelDelta({ - deltaY: e.deltaY, - deltaMode: e.deltaMode, - rootHeight: root.clientHeight, - }) - if (!delta) return - markBoundaryGesture({ root, target: e.target, delta, onMarkScrollGesture: props.onMarkScrollGesture }) - }} - onTouchStart={(e) => { - touchGesture = e.touches[0]?.clientY - }} - onTouchMove={(e) => { - const next = e.touches[0]?.clientY - const prev = touchGesture - touchGesture = next - if (next === undefined || prev === undefined) return - - const delta = prev - next - if (!delta) return - - const root = e.currentTarget - markBoundaryGesture({ root, target: e.target, delta, onMarkScrollGesture: props.onMarkScrollGesture }) - }} - onTouchEnd={() => { - touchGesture = undefined - }} - onTouchCancel={() => { - touchGesture = undefined - }} - onPointerDown={(e) => { - if (e.target !== e.currentTarget) return - props.onMarkScrollGesture(e.currentTarget) - }} - onScroll={(e) => { - props.onScheduleScrollState(e.currentTarget) - props.onTurnBackfillScroll() - if (!props.hasScrollGesture()) return - props.onUserScroll() - props.onAutoScrollHandleScroll() - props.onMarkScrollGesture(e.currentTarget) - }} - onClick={props.onAutoScrollInteraction} - class="relative min-w-0 w-full h-full" - style={{ - "--session-title-height": showHeader() ? "40px" : "0px", - "--sticky-accordion-top": showHeader() ? "48px" : "0px", - }} - > -
    - -
    -
    -
    - - - -
    - - - - {titleValue()} - - } - > - { - titleRef = el - }} - value={title.draft} - disabled={titleMutation.isPending} - class="text-14-medium text-text-strong grow-1 min-w-0 rounded-[6px]" - style={{ "--inline-input-shadow": "var(--shadow-xs-border-select)" }} - onInput={(event) => setTitle("draft", event.currentTarget.value)} - onKeyDown={(event) => { - event.stopPropagation() - if (event.key === "Enter") { - event.preventDefault() - void saveTitleEditor() - return - } - if (event.key === "Escape") { - event.preventDefault() - closeTitleEditor() - } - }} - onBlur={closeTitleEditor} - /> - - -
    -
    - - {(id) => ( -
    - - { - setTitle("menuOpen", open) - if (open) return - }} - > - { - more = el - }} - /> - - { - if (title.pendingRename) { - event.preventDefault() - setTitle("pendingRename", false) - openTitleEditor() - return - } - if (title.pendingShare) { - event.preventDefault() - requestAnimationFrame(() => { - setShare({ open: true, dismiss: null }) - setTitle("pendingShare", false) - }) - } - }} - > - { - setTitle("pendingRename", true) - setTitle("menuOpen", false) - }} - > - {language.t("common.rename")} - - - { - setTitle({ pendingShare: true, menuOpen: false }) - }} - > - - {language.t("session.share.action.share")} - - - - void archiveSession(id())}> - {language.t("common.archive")} - - - dialog.show(() => )} - > - {language.t("common.delete")} - - - - - - more} - placement="bottom-end" - gutter={4} - modal={false} - onOpenChange={(open) => { - if (open) setShare("dismiss", null) - setShare("open", open) - }} - > - - { - setShare({ dismiss: "escape", open: false }) - event.preventDefault() - event.stopPropagation() - }} - onPointerDownOutside={() => { - setShare({ dismiss: "outside", open: false }) - }} - onFocusOutside={() => { - setShare({ dismiss: "outside", open: false }) - }} - onCloseAutoFocus={(event) => { - if (share.dismiss === "outside") event.preventDefault() - setShare("dismiss", null) - }} - > -
    -
    -
    - {language.t("session.share.popover.title")} -
    -
    - {shareUrl() - ? language.t("session.share.popover.description.shared") - : language.t("session.share.popover.description.unshared")} -
    -
    -
    - - {shareMutation.isPending - ? language.t("session.share.action.publishing") - : language.t("session.share.action.publish")} - - } - > -
    - -
    - - -
    -
    -
    -
    -
    -
    -
    -
    -
    - )} -
    -
    -
    -
    -
    - 0 || props.historyMore}> -
    - -
    -
    - - {(messageID) => { - const active = createMemo(() => activeMessageID() === messageID) - const comments = createMemo(() => messageComments(sync.data.part[messageID] ?? []), [], { - equals: (a, b) => - a.length === b.length && - a.every( - (c, i) => - c.path === b[i].path && - c.comment === b[i].comment && - c.selection?.startLine === b[i].selection?.startLine && - c.selection?.endLine === b[i].selection?.endLine, - ), - }) - const commentCount = createMemo(() => comments().length) - return ( -
    - 0}> -
    -
    -
    - - {(commentAccessor: () => MessageComment) => { - const comment = createMemo(() => commentAccessor()) - return ( - - {(c) => ( -
    -
    - - {getFilename(c().path)} - - {(selection) => ( - - {selection().startLine === selection().endLine - ? `:${selection().startLine}` - : `:${selection().startLine}-${selection().endLine}`} - - )} - -
    -
    - {c().comment} -
    -
    - )} -
    - ) - }} -
    -
    -
    -
    -
    - -
    - ) - }} -
    -
    -
    -
    -
    - - ) -} diff --git a/packages/opencode/src/config/config.ts b/packages/opencode/src/config/config.ts index c464fcb64ab8..bfcd0202fd01 100644 --- a/packages/opencode/src/config/config.ts +++ b/packages/opencode/src/config/config.ts @@ -1204,6 +1204,13 @@ export namespace Config { .min(0) .optional() .describe("Token buffer for compaction. Leaves enough window to avoid overflow during compaction."), + thinking_strategy: z + .enum(["none", "strip", "compact"]) + .optional() + .default("none") + .describe( + "Strategy for handling thinking blocks that cause API errors. 'none' (default) sends thinking blocks as-is (original behavior). 'strip' removes thinking from last message before sending (prevents errors proactively). 'compact' preserves thinking but auto-compacts on error (retries with summarized context).", + ), }) .optional(), experimental: z diff --git a/packages/opencode/src/session/compaction.ts b/packages/opencode/src/session/compaction.ts index 072ea1d574e8..e04973eb09e3 100644 --- a/packages/opencode/src/session/compaction.ts +++ b/packages/opencode/src/session/compaction.ts @@ -41,10 +41,10 @@ export namespace SessionCompaction { input.tokens.input + input.tokens.output + input.tokens.cache.read + input.tokens.cache.write const reserved = - config.compaction?.reserved ?? Math.min(COMPACTION_BUFFER, ProviderTransform.maxOutputTokens(input.model)) + config.compaction?.reserved ?? ProviderTransform.maxOutputTokens(input.model) const usable = input.model.limit.input ? input.model.limit.input - reserved - : context - ProviderTransform.maxOutputTokens(input.model) + : context - reserved return count >= usable } diff --git a/packages/opencode/src/session/message-v2.ts b/packages/opencode/src/session/message-v2.ts deleted file mode 100644 index 1eab3099cb95..000000000000 --- a/packages/opencode/src/session/message-v2.ts +++ /dev/null @@ -1,1005 +0,0 @@ -import { BusEvent } from "@/bus/bus-event" -import { SessionID, MessageID, PartID } from "./schema" -import z from "zod" -import { NamedError } from "@opencode-ai/util/error" -import { APICallError, convertToModelMessages, LoadAPIKeyError, type ModelMessage, type UIMessage } from "ai" -import { LSP } from "../lsp" -import { Snapshot } from "@/snapshot" -import { fn } from "@/util/fn" -import { Database, NotFoundError, and, desc, eq, inArray, lt, or } from "@/storage/db" -import { MessageTable, PartTable, SessionTable } from "./session.sql" -import { ProviderTransform } from "@/provider/transform" -import { STATUS_CODES } from "http" -import { Storage } from "@/storage/storage" -import { ProviderError } from "@/provider/error" -import { iife } from "@/util/iife" -import type { SystemError } from "bun" -import type { Provider } from "@/provider/provider" -import { ModelID, ProviderID } from "@/provider/schema" - -export namespace MessageV2 { - export function isMedia(mime: string) { - return mime.startsWith("image/") || mime === "application/pdf" - } - - export const OutputLengthError = NamedError.create("MessageOutputLengthError", z.object({})) - export const AbortedError = NamedError.create("MessageAbortedError", z.object({ message: z.string() })) - export const StructuredOutputError = NamedError.create( - "StructuredOutputError", - z.object({ - message: z.string(), - retries: z.number(), - }), - ) - export const AuthError = NamedError.create( - "ProviderAuthError", - z.object({ - providerID: z.string(), - message: z.string(), - }), - ) - export const APIError = NamedError.create( - "APIError", - z.object({ - message: z.string(), - statusCode: z.number().optional(), - isRetryable: z.boolean(), - responseHeaders: z.record(z.string(), z.string()).optional(), - responseBody: z.string().optional(), - metadata: z.record(z.string(), z.string()).optional(), - }), - ) - export type APIError = z.infer - export const ContextOverflowError = NamedError.create( - "ContextOverflowError", - z.object({ message: z.string(), responseBody: z.string().optional() }), - ) - - export const OutputFormatText = z - .object({ - type: z.literal("text"), - }) - .meta({ - ref: "OutputFormatText", - }) - - export const OutputFormatJsonSchema = z - .object({ - type: z.literal("json_schema"), - schema: z.record(z.string(), z.any()).meta({ ref: "JSONSchema" }), - retryCount: z.number().int().min(0).default(2), - }) - .meta({ - ref: "OutputFormatJsonSchema", - }) - - export const Format = z.discriminatedUnion("type", [OutputFormatText, OutputFormatJsonSchema]).meta({ - ref: "OutputFormat", - }) - export type OutputFormat = z.infer - - const PartBase = z.object({ - id: PartID.zod, - sessionID: SessionID.zod, - messageID: MessageID.zod, - }) - - export const SnapshotPart = PartBase.extend({ - type: z.literal("snapshot"), - snapshot: z.string(), - }).meta({ - ref: "SnapshotPart", - }) - export type SnapshotPart = z.infer - - export const PatchPart = PartBase.extend({ - type: z.literal("patch"), - hash: z.string(), - files: z.string().array(), - }).meta({ - ref: "PatchPart", - }) - export type PatchPart = z.infer - - export const TextPart = PartBase.extend({ - type: z.literal("text"), - text: z.string(), - synthetic: z.boolean().optional(), - ignored: z.boolean().optional(), - time: z - .object({ - start: z.number(), - end: z.number().optional(), - }) - .optional(), - metadata: z.record(z.string(), z.any()).optional(), - }).meta({ - ref: "TextPart", - }) - export type TextPart = z.infer - - export const ReasoningPart = PartBase.extend({ - type: z.literal("reasoning"), - text: z.string(), - metadata: z.record(z.string(), z.any()).optional(), - time: z.object({ - start: z.number(), - end: z.number().optional(), - }), - }).meta({ - ref: "ReasoningPart", - }) - export type ReasoningPart = z.infer - - const FilePartSourceBase = z.object({ - text: z - .object({ - value: z.string(), - start: z.number().int(), - end: z.number().int(), - }) - .meta({ - ref: "FilePartSourceText", - }), - }) - - export const FileSource = FilePartSourceBase.extend({ - type: z.literal("file"), - path: z.string(), - }).meta({ - ref: "FileSource", - }) - - export const SymbolSource = FilePartSourceBase.extend({ - type: z.literal("symbol"), - path: z.string(), - range: LSP.Range, - name: z.string(), - kind: z.number().int(), - }).meta({ - ref: "SymbolSource", - }) - - export const ResourceSource = FilePartSourceBase.extend({ - type: z.literal("resource"), - clientName: z.string(), - uri: z.string(), - }).meta({ - ref: "ResourceSource", - }) - - export const FilePartSource = z.discriminatedUnion("type", [FileSource, SymbolSource, ResourceSource]).meta({ - ref: "FilePartSource", - }) - - export const FilePart = PartBase.extend({ - type: z.literal("file"), - mime: z.string(), - filename: z.string().optional(), - url: z.string(), - source: FilePartSource.optional(), - }).meta({ - ref: "FilePart", - }) - export type FilePart = z.infer - - export const AgentPart = PartBase.extend({ - type: z.literal("agent"), - name: z.string(), - source: z - .object({ - value: z.string(), - start: z.number().int(), - end: z.number().int(), - }) - .optional(), - }).meta({ - ref: "AgentPart", - }) - export type AgentPart = z.infer - - export const CompactionPart = PartBase.extend({ - type: z.literal("compaction"), - auto: z.boolean(), - overflow: z.boolean().optional(), - }).meta({ - ref: "CompactionPart", - }) - export type CompactionPart = z.infer - - export const SubtaskPart = PartBase.extend({ - type: z.literal("subtask"), - prompt: z.string(), - description: z.string(), - agent: z.string(), - model: z - .object({ - providerID: ProviderID.zod, - modelID: ModelID.zod, - }) - .optional(), - command: z.string().optional(), - }).meta({ - ref: "SubtaskPart", - }) - export type SubtaskPart = z.infer - - export const RetryPart = PartBase.extend({ - type: z.literal("retry"), - attempt: z.number(), - error: APIError.Schema, - time: z.object({ - created: z.number(), - }), - }).meta({ - ref: "RetryPart", - }) - export type RetryPart = z.infer - - export const StepStartPart = PartBase.extend({ - type: z.literal("step-start"), - snapshot: z.string().optional(), - }).meta({ - ref: "StepStartPart", - }) - export type StepStartPart = z.infer - - export const StepFinishPart = PartBase.extend({ - type: z.literal("step-finish"), - reason: z.string(), - snapshot: z.string().optional(), - cost: z.number(), - tokens: z.object({ - total: z.number().optional(), - input: z.number(), - output: z.number(), - reasoning: z.number(), - cache: z.object({ - read: z.number(), - write: z.number(), - }), - }), - }).meta({ - ref: "StepFinishPart", - }) - export type StepFinishPart = z.infer - - export const ToolStatePending = z - .object({ - status: z.literal("pending"), - input: z.record(z.string(), z.any()), - raw: z.string(), - }) - .meta({ - ref: "ToolStatePending", - }) - - export type ToolStatePending = z.infer - - export const ToolStateRunning = z - .object({ - status: z.literal("running"), - input: z.record(z.string(), z.any()), - title: z.string().optional(), - metadata: z.record(z.string(), z.any()).optional(), - time: z.object({ - start: z.number(), - }), - }) - .meta({ - ref: "ToolStateRunning", - }) - export type ToolStateRunning = z.infer - - export const ToolStateCompleted = z - .object({ - status: z.literal("completed"), - input: z.record(z.string(), z.any()), - output: z.string(), - title: z.string(), - metadata: z.record(z.string(), z.any()), - time: z.object({ - start: z.number(), - end: z.number(), - compacted: z.number().optional(), - }), - attachments: FilePart.array().optional(), - }) - .meta({ - ref: "ToolStateCompleted", - }) - export type ToolStateCompleted = z.infer - - export const ToolStateError = z - .object({ - status: z.literal("error"), - input: z.record(z.string(), z.any()), - error: z.string(), - metadata: z.record(z.string(), z.any()).optional(), - time: z.object({ - start: z.number(), - end: z.number(), - }), - }) - .meta({ - ref: "ToolStateError", - }) - export type ToolStateError = z.infer - - export const ToolState = z - .discriminatedUnion("status", [ToolStatePending, ToolStateRunning, ToolStateCompleted, ToolStateError]) - .meta({ - ref: "ToolState", - }) - - export const ToolPart = PartBase.extend({ - type: z.literal("tool"), - callID: z.string(), - tool: z.string(), - state: ToolState, - metadata: z.record(z.string(), z.any()).optional(), - }).meta({ - ref: "ToolPart", - }) - export type ToolPart = z.infer - - const Base = z.object({ - id: MessageID.zod, - sessionID: SessionID.zod, - }) - - export const User = Base.extend({ - role: z.literal("user"), - time: z.object({ - created: z.number(), - }), - format: Format.optional(), - summary: z - .object({ - title: z.string().optional(), - body: z.string().optional(), - diffs: Snapshot.FileDiff.array(), - }) - .optional(), - agent: z.string(), - model: z.object({ - providerID: ProviderID.zod, - modelID: ModelID.zod, - }), - system: z.string().optional(), - tools: z.record(z.string(), z.boolean()).optional(), - variant: z.string().optional(), - }).meta({ - ref: "UserMessage", - }) - export type User = z.infer - - export const Part = z - .discriminatedUnion("type", [ - TextPart, - SubtaskPart, - ReasoningPart, - FilePart, - ToolPart, - StepStartPart, - StepFinishPart, - SnapshotPart, - PatchPart, - AgentPart, - RetryPart, - CompactionPart, - ]) - .meta({ - ref: "Part", - }) - export type Part = z.infer - - export const Assistant = Base.extend({ - role: z.literal("assistant"), - time: z.object({ - created: z.number(), - completed: z.number().optional(), - }), - error: z - .discriminatedUnion("name", [ - AuthError.Schema, - NamedError.Unknown.Schema, - OutputLengthError.Schema, - AbortedError.Schema, - StructuredOutputError.Schema, - ContextOverflowError.Schema, - APIError.Schema, - ]) - .optional(), - parentID: MessageID.zod, - modelID: ModelID.zod, - providerID: ProviderID.zod, - /** - * @deprecated - */ - mode: z.string(), - agent: z.string(), - path: z.object({ - cwd: z.string(), - root: z.string(), - }), - summary: z.boolean().optional(), - cost: z.number(), - tokens: z.object({ - total: z.number().optional(), - input: z.number(), - output: z.number(), - reasoning: z.number(), - cache: z.object({ - read: z.number(), - write: z.number(), - }), - }), - structured: z.any().optional(), - variant: z.string().optional(), - finish: z.string().optional(), - }).meta({ - ref: "AssistantMessage", - }) - export type Assistant = z.infer - - export const Info = z.discriminatedUnion("role", [User, Assistant]).meta({ - ref: "Message", - }) - export type Info = z.infer - - export const Event = { - Updated: BusEvent.define( - "message.updated", - z.object({ - info: Info, - }), - ), - Removed: BusEvent.define( - "message.removed", - z.object({ - sessionID: SessionID.zod, - messageID: MessageID.zod, - }), - ), - PartUpdated: BusEvent.define( - "message.part.updated", - z.object({ - part: Part, - }), - ), - PartDelta: BusEvent.define( - "message.part.delta", - z.object({ - sessionID: SessionID.zod, - messageID: MessageID.zod, - partID: PartID.zod, - field: z.string(), - delta: z.string(), - }), - ), - PartRemoved: BusEvent.define( - "message.part.removed", - z.object({ - sessionID: SessionID.zod, - messageID: MessageID.zod, - partID: PartID.zod, - }), - ), - } - - export const WithParts = z.object({ - info: Info, - parts: z.array(Part), - }) - export type WithParts = z.infer - - const Cursor = z.object({ - id: MessageID.zod, - time: z.number(), - }) - type Cursor = z.infer - - export const cursor = { - encode(input: Cursor) { - return Buffer.from(JSON.stringify(input)).toString("base64url") - }, - decode(input: string) { - return Cursor.parse(JSON.parse(Buffer.from(input, "base64url").toString("utf8"))) - }, - } - - const info = (row: typeof MessageTable.$inferSelect) => - ({ - ...row.data, - id: row.id, - sessionID: row.session_id, - }) as MessageV2.Info - - const part = (row: typeof PartTable.$inferSelect) => - ({ - ...row.data, - id: row.id, - sessionID: row.session_id, - messageID: row.message_id, - }) as MessageV2.Part - - const older = (row: Cursor) => - or( - lt(MessageTable.time_created, row.time), - and(eq(MessageTable.time_created, row.time), lt(MessageTable.id, row.id)), - ) - - async function hydrate(rows: (typeof MessageTable.$inferSelect)[]) { - const ids = rows.map((row) => row.id) - const partByMessage = new Map() - if (ids.length > 0) { - const partRows = Database.use((db) => - db - .select() - .from(PartTable) - .where(inArray(PartTable.message_id, ids)) - .orderBy(PartTable.message_id, PartTable.id) - .all(), - ) - for (const row of partRows) { - const next = part(row) - const list = partByMessage.get(row.message_id) - if (list) list.push(next) - else partByMessage.set(row.message_id, [next]) - } - } - - return rows.map((row) => ({ - info: info(row), - parts: partByMessage.get(row.id) ?? [], - })) - } - - export function toModelMessages( - input: WithParts[], - model: Provider.Model, - options?: { stripMedia?: boolean }, - ): ModelMessage[] { - const result: UIMessage[] = [] - const toolNames = new Set() - // Track media from tool results that need to be injected as user messages - // for providers that don't support media in tool results. - // - // OpenAI-compatible APIs only support string content in tool results, so we need - // to extract media and inject as user messages. Other SDKs (anthropic, google, - // bedrock) handle type: "content" with media parts natively. - // - // Only apply this workaround if the model actually supports image input - - // otherwise there's no point extracting images. - const supportsMediaInToolResults = (() => { - if (model.api.npm === "@ai-sdk/anthropic") return true - if (model.api.npm === "@ai-sdk/openai") return true - if (model.api.npm === "@ai-sdk/amazon-bedrock") return true - if (model.api.npm === "@ai-sdk/google-vertex/anthropic") return true - if (model.api.npm === "@ai-sdk/google") { - const id = model.api.id.toLowerCase() - return id.includes("gemini-3") && !id.includes("gemini-2") - } - return false - })() - - const toModelOutput = (output: unknown) => { - if (typeof output === "string") { - return { type: "text", value: output } - } - - if (typeof output === "object") { - const outputObject = output as { - text: string - attachments?: Array<{ mime: string; url: string }> - } - const attachments = (outputObject.attachments ?? []).filter((attachment) => { - return attachment.url.startsWith("data:") && attachment.url.includes(",") - }) - - return { - type: "content", - value: [ - { type: "text", text: outputObject.text }, - ...attachments.map((attachment) => ({ - type: "media", - mediaType: attachment.mime, - data: iife(() => { - const commaIndex = attachment.url.indexOf(",") - return commaIndex === -1 ? attachment.url : attachment.url.slice(commaIndex + 1) - }), - })), - ], - } - } - - return { type: "json", value: output as never } - } - - for (const msg of input) { - if (msg.parts.length === 0) continue - - if (msg.info.role === "user") { - const userMessage: UIMessage = { - id: msg.info.id, - role: "user", - parts: [], - } - result.push(userMessage) - for (const part of msg.parts) { - if (part.type === "text" && !part.ignored) - userMessage.parts.push({ - type: "text", - text: part.text, - }) - // text/plain and directory files are converted into text parts, ignore them - if (part.type === "file" && part.mime !== "text/plain" && part.mime !== "application/x-directory") { - if (options?.stripMedia && isMedia(part.mime)) { - userMessage.parts.push({ - type: "text", - text: `[Attached ${part.mime}: ${part.filename ?? "file"}]`, - }) - } else { - userMessage.parts.push({ - type: "file", - url: part.url, - mediaType: part.mime, - filename: part.filename, - }) - } - } - - if (part.type === "compaction") { - userMessage.parts.push({ - type: "text", - text: "What did we do so far?", - }) - } - if (part.type === "subtask") { - userMessage.parts.push({ - type: "text", - text: "The following tool was executed by the user", - }) - } - } - } - - if (msg.info.role === "assistant") { - const differentModel = `${model.providerID}/${model.id}` !== `${msg.info.providerID}/${msg.info.modelID}` - const media: Array<{ mime: string; url: string }> = [] - - if ( - msg.info.error && - !( - MessageV2.AbortedError.isInstance(msg.info.error) && - msg.parts.some((part) => part.type !== "step-start" && part.type !== "reasoning") - ) - ) { - continue - } - const assistantMessage: UIMessage = { - id: msg.info.id, - role: "assistant", - parts: [], - } - for (const part of msg.parts) { - if (part.type === "text") - assistantMessage.parts.push({ - type: "text", - text: part.text, - ...(differentModel ? {} : { providerMetadata: part.metadata }), - }) - if (part.type === "step-start") - assistantMessage.parts.push({ - type: "step-start", - }) - if (part.type === "tool") { - toolNames.add(part.tool) - if (part.state.status === "completed") { - const outputText = part.state.time.compacted ? "[Old tool result content cleared]" : part.state.output - const attachments = part.state.time.compacted || options?.stripMedia ? [] : (part.state.attachments ?? []) - - // For providers that don't support media in tool results, extract media files - // (images, PDFs) to be sent as a separate user message - const mediaAttachments = attachments.filter((a) => isMedia(a.mime)) - const nonMediaAttachments = attachments.filter((a) => !isMedia(a.mime)) - if (!supportsMediaInToolResults && mediaAttachments.length > 0) { - media.push(...mediaAttachments) - } - const finalAttachments = supportsMediaInToolResults ? attachments : nonMediaAttachments - - const output = - finalAttachments.length > 0 - ? { - text: outputText, - attachments: finalAttachments, - } - : outputText - - assistantMessage.parts.push({ - type: ("tool-" + part.tool) as `tool-${string}`, - state: "output-available", - toolCallId: part.callID, - input: part.state.input, - output, - ...(differentModel ? {} : { callProviderMetadata: part.metadata }), - }) - } - if (part.state.status === "error") - assistantMessage.parts.push({ - type: ("tool-" + part.tool) as `tool-${string}`, - state: "output-error", - toolCallId: part.callID, - input: part.state.input, - errorText: part.state.error, - ...(differentModel ? {} : { callProviderMetadata: part.metadata }), - }) - // Handle pending/running tool calls to prevent dangling tool_use blocks - // Anthropic/Claude APIs require every tool_use to have a corresponding tool_result - if (part.state.status === "pending" || part.state.status === "running") - assistantMessage.parts.push({ - type: ("tool-" + part.tool) as `tool-${string}`, - state: "output-error", - toolCallId: part.callID, - input: part.state.input, - errorText: "[Tool execution was interrupted]", - ...(differentModel ? {} : { callProviderMetadata: part.metadata }), - }) - } - if (part.type === "reasoning") { - assistantMessage.parts.push({ - type: "reasoning", - text: part.text, - ...(differentModel ? {} : { providerMetadata: part.metadata }), - }) - } - } - if (assistantMessage.parts.length > 0) { - result.push(assistantMessage) - // Inject pending media as a user message for providers that don't support - // media (images, PDFs) in tool results - if (media.length > 0) { - result.push({ - id: MessageID.ascending(), - role: "user", - parts: [ - { - type: "text" as const, - text: "Attached image(s) from tool result:", - }, - ...media.map((attachment) => ({ - type: "file" as const, - url: attachment.url, - mediaType: attachment.mime, - })), - ], - }) - } - } - } - } - - // Always strip reasoning/thinking parts from the last assistant message. - // Claude API enforces that thinking blocks in the latest assistant message - // must be byte-identical to the original response. Since OpenCode reconstructs - // them from stored parts, they may not match exactly. Stripping is safe because - // Claude doesn't need its own thinking blocks to continue the conversation. - { - const lastAssistantIdx = result.findLastIndex((msg) => msg.role === "assistant") - if (lastAssistantIdx !== -1) { - const filtered = result[lastAssistantIdx].parts.filter((part) => part.type !== "reasoning") - if (filtered.length > 0 && !filtered.every((p) => p.type === "step-start")) { - result[lastAssistantIdx].parts = filtered - } else { - result.splice(lastAssistantIdx, 1) - } - } - } - - const tools = Object.fromEntries(Array.from(toolNames).map((toolName) => [toolName, { toModelOutput }])) - - return convertToModelMessages( - result.filter((msg) => msg.parts.some((part) => part.type !== "step-start")), - { - //@ts-expect-error (convertToModelMessages expects a ToolSet but only actually needs tools[name]?.toModelOutput) - tools, - }, - ) - } - - export const page = fn( - z.object({ - sessionID: SessionID.zod, - limit: z.number().int().positive(), - before: z.string().optional(), - }), - async (input) => { - const before = input.before ? cursor.decode(input.before) : undefined - const where = before - ? and(eq(MessageTable.session_id, input.sessionID), older(before)) - : eq(MessageTable.session_id, input.sessionID) - const rows = Database.use((db) => - db - .select() - .from(MessageTable) - .where(where) - .orderBy(desc(MessageTable.time_created), desc(MessageTable.id)) - .limit(input.limit + 1) - .all(), - ) - if (rows.length === 0) { - const row = Database.use((db) => - db.select({ id: SessionTable.id }).from(SessionTable).where(eq(SessionTable.id, input.sessionID)).get(), - ) - if (!row) throw new NotFoundError({ message: `Session not found: ${input.sessionID}` }) - return { - items: [] as MessageV2.WithParts[], - more: false, - } - } - - const more = rows.length > input.limit - const page = more ? rows.slice(0, input.limit) : rows - const items = await hydrate(page) - items.reverse() - const tail = page.at(-1) - return { - items, - more, - cursor: more && tail ? cursor.encode({ id: tail.id, time: tail.time_created }) : undefined, - } - }, - ) - - export const stream = fn(SessionID.zod, async function* (sessionID) { - const size = 50 - let before: string | undefined - while (true) { - const next = await page({ sessionID, limit: size, before }) - if (next.items.length === 0) break - for (let i = next.items.length - 1; i >= 0; i--) { - yield next.items[i] - } - if (!next.more || !next.cursor) break - before = next.cursor - } - }) - - export const parts = fn(MessageID.zod, async (message_id) => { - const rows = Database.use((db) => - db.select().from(PartTable).where(eq(PartTable.message_id, message_id)).orderBy(PartTable.id).all(), - ) - return rows.map( - (row) => ({ ...row.data, id: row.id, sessionID: row.session_id, messageID: row.message_id }) as MessageV2.Part, - ) - }) - - export const get = fn( - z.object({ - sessionID: SessionID.zod, - messageID: MessageID.zod, - }), - async (input): Promise => { - const row = Database.use((db) => - db - .select() - .from(MessageTable) - .where(and(eq(MessageTable.id, input.messageID), eq(MessageTable.session_id, input.sessionID))) - .get(), - ) - if (!row) throw new NotFoundError({ message: `Message not found: ${input.messageID}` }) - return { - info: info(row), - parts: await parts(input.messageID), - } - }, - ) - - export async function filterCompacted(stream: AsyncIterable) { - const result = [] as MessageV2.WithParts[] - const completed = new Set() - for await (const msg of stream) { - result.push(msg) - if ( - msg.info.role === "user" && - completed.has(msg.info.id) && - msg.parts.some((part) => part.type === "compaction") - ) - break - if (msg.info.role === "assistant" && msg.info.summary && msg.info.finish && !msg.info.error) - completed.add(msg.info.parentID) - } - result.reverse() - return result - } - - export function fromError(e: unknown, ctx: { providerID: ProviderID }): NonNullable { - switch (true) { - case e instanceof DOMException && e.name === "AbortError": - return new MessageV2.AbortedError( - { message: e.message }, - { - cause: e, - }, - ).toObject() - case MessageV2.OutputLengthError.isInstance(e): - return e - case LoadAPIKeyError.isInstance(e): - return new MessageV2.AuthError( - { - providerID: ctx.providerID, - message: e.message, - }, - { cause: e }, - ).toObject() - case (e as SystemError)?.code === "ECONNRESET": - return new MessageV2.APIError( - { - message: "Connection reset by server", - isRetryable: true, - metadata: { - code: (e as SystemError).code ?? "", - syscall: (e as SystemError).syscall ?? "", - message: (e as SystemError).message ?? "", - }, - }, - { cause: e }, - ).toObject() - case APICallError.isInstance(e): - const parsed = ProviderError.parseAPICallError({ - providerID: ctx.providerID, - error: e, - }) - if (parsed.type === "context_overflow") { - return new MessageV2.ContextOverflowError( - { - message: parsed.message, - responseBody: parsed.responseBody, - }, - { cause: e }, - ).toObject() - } - - return new MessageV2.APIError( - { - message: parsed.message, - statusCode: parsed.statusCode, - isRetryable: parsed.isRetryable, - responseHeaders: parsed.responseHeaders, - responseBody: parsed.responseBody, - metadata: parsed.metadata, - }, - { cause: e }, - ).toObject() - case e instanceof Error: - return new NamedError.Unknown({ message: e instanceof Error ? e.message : String(e) }, { cause: e }).toObject() - default: - try { - const parsed = ProviderError.parseStreamError(e) - if (parsed) { - if (parsed.type === "context_overflow") { - return new MessageV2.ContextOverflowError( - { - message: parsed.message, - responseBody: parsed.responseBody, - }, - { cause: e }, - ).toObject() - } - return new MessageV2.APIError( - { - message: parsed.message, - isRetryable: parsed.isRetryable, - responseBody: parsed.responseBody, - }, - { - cause: e, - }, - ).toObject() - } - } catch {} - return new NamedError.Unknown({ message: JSON.stringify(e) }, { cause: e }).toObject() - } - } -} diff --git a/packages/opencode/src/session/prompt.ts b/packages/opencode/src/session/prompt.ts deleted file mode 100644 index a44270544135..000000000000 --- a/packages/opencode/src/session/prompt.ts +++ /dev/null @@ -1,2003 +0,0 @@ -import path from "path" -import os from "os" -import fs from "fs/promises" -import z from "zod" -import { Filesystem } from "../util/filesystem" -import { SessionID, MessageID, PartID } from "./schema" -import { MessageV2 } from "./message-v2" -import { Log } from "../util/log" -import { SessionRevert } from "./revert" -import { Session } from "." -import { Agent } from "../agent/agent" -import { Provider } from "../provider/provider" -import { ModelID, ProviderID } from "../provider/schema" -import { type Tool as AITool, tool, jsonSchema, type ToolCallOptions, asSchema } from "ai" -import { SessionCompaction } from "./compaction" -import { Instance } from "../project/instance" -import { Bus } from "../bus" -import { ProviderTransform } from "../provider/transform" -import { SystemPrompt } from "./system" -import { InstructionPrompt } from "./instruction" -import { Plugin } from "../plugin" -import PROMPT_PLAN from "../session/prompt/plan.txt" -import BUILD_SWITCH from "../session/prompt/build-switch.txt" -import MAX_STEPS from "../session/prompt/max-steps.txt" -import { defer } from "../util/defer" -import { ToolRegistry } from "../tool/registry" -import { MCP } from "../mcp" -import { LSP } from "../lsp" -import { ReadTool } from "../tool/read" -import { FileTime } from "../file/time" -import { NotFoundError } from "@/storage/db" -import { Flag } from "../flag/flag" -import { ulid } from "ulid" -import { spawn } from "child_process" -import { Command } from "../command" -import { pathToFileURL, fileURLToPath } from "url" -import { ConfigMarkdown } from "../config/markdown" -import { SessionSummary } from "./summary" -import { NamedError } from "@opencode-ai/util/error" -import { fn } from "@/util/fn" -import { SessionProcessor } from "./processor" -import { TaskTool } from "@/tool/task" -import { Tool } from "@/tool/tool" -import { Permission } from "@/permission" -import { SessionStatus } from "./status" -import { LLM } from "./llm" -import { iife } from "@/util/iife" -import { Shell } from "@/shell/shell" -import { Truncate } from "@/tool/truncate" -import { decodeDataUrl } from "@/util/data-url" -import { Process } from "@/util/process" - -// @ts-ignore -globalThis.AI_SDK_LOG_WARNINGS = false - -const STRUCTURED_OUTPUT_DESCRIPTION = `Use this tool to return your final response in the requested structured format. - -IMPORTANT: -- You MUST call this tool exactly once at the end of your response -- The input must be valid JSON matching the required schema -- Complete all necessary research and tool calls BEFORE calling this tool -- This tool provides your final answer - no further actions are taken after calling it` - -const STRUCTURED_OUTPUT_SYSTEM_PROMPT = `IMPORTANT: The user has requested structured output. You MUST use the StructuredOutput tool to provide your final response. Do NOT respond with plain text - you MUST call the StructuredOutput tool with your answer formatted according to the schema.` - -export namespace SessionPrompt { - const log = Log.create({ service: "session.prompt" }) - - const state = Instance.state( - () => { - const data: Record< - string, - { - abort: AbortController - callbacks: { - resolve(input: MessageV2.WithParts): void - reject(reason?: any): void - }[] - } - > = {} - return data - }, - async (current) => { - for (const item of Object.values(current)) { - item.abort.abort() - } - }, - ) - - export function assertNotBusy(sessionID: SessionID) { - const match = state()[sessionID] - if (match) throw new Session.BusyError(sessionID) - } - - export const PromptInput = z.object({ - sessionID: SessionID.zod, - messageID: MessageID.zod.optional(), - model: z - .object({ - providerID: ProviderID.zod, - modelID: ModelID.zod, - }) - .optional(), - agent: z.string().optional(), - noReply: z.boolean().optional(), - tools: z - .record(z.string(), z.boolean()) - .optional() - .describe( - "@deprecated tools and permissions have been merged, you can set permissions on the session itself now", - ), - format: MessageV2.Format.optional(), - system: z.string().optional(), - variant: z.string().optional(), - parts: z.array( - z.discriminatedUnion("type", [ - MessageV2.TextPart.omit({ - messageID: true, - sessionID: true, - }) - .partial({ - id: true, - }) - .meta({ - ref: "TextPartInput", - }), - MessageV2.FilePart.omit({ - messageID: true, - sessionID: true, - }) - .partial({ - id: true, - }) - .meta({ - ref: "FilePartInput", - }), - MessageV2.AgentPart.omit({ - messageID: true, - sessionID: true, - }) - .partial({ - id: true, - }) - .meta({ - ref: "AgentPartInput", - }), - MessageV2.SubtaskPart.omit({ - messageID: true, - sessionID: true, - }) - .partial({ - id: true, - }) - .meta({ - ref: "SubtaskPartInput", - }), - ]), - ), - }) - export type PromptInput = z.infer - - export const prompt = fn(PromptInput, async (input) => { - const session = await Session.get(input.sessionID) - await SessionRevert.cleanup(session) - - const message = await createUserMessage(input) - await Session.touch(input.sessionID) - - // this is backwards compatibility for allowing `tools` to be specified when - // prompting - const permissions: Permission.Ruleset = [] - for (const [tool, enabled] of Object.entries(input.tools ?? {})) { - permissions.push({ - permission: tool, - action: enabled ? "allow" : "deny", - pattern: "*", - }) - } - if (permissions.length > 0) { - session.permission = permissions - await Session.setPermission({ sessionID: session.id, permission: permissions }) - } - - if (input.noReply === true) { - return message - } - - return loop({ sessionID: input.sessionID }) - }) - - export async function resolvePromptParts(template: string): Promise { - const parts: PromptInput["parts"] = [ - { - type: "text", - text: template, - }, - ] - const files = ConfigMarkdown.files(template) - const seen = new Set() - await Promise.all( - files.map(async (match) => { - const name = match[1] - if (seen.has(name)) return - seen.add(name) - const filepath = name.startsWith("~/") - ? path.join(os.homedir(), name.slice(2)) - : path.resolve(Instance.worktree, name) - - const stats = await fs.stat(filepath).catch(() => undefined) - if (!stats) { - const agent = await Agent.get(name) - if (agent) { - parts.push({ - type: "agent", - name: agent.name, - }) - } - return - } - - if (stats.isDirectory()) { - parts.push({ - type: "file", - url: pathToFileURL(filepath).href, - filename: name, - mime: "application/x-directory", - }) - return - } - - parts.push({ - type: "file", - url: pathToFileURL(filepath).href, - filename: name, - mime: "text/plain", - }) - }), - ) - return parts - } - - function start(sessionID: SessionID) { - const s = state() - if (s[sessionID]) return - const controller = new AbortController() - s[sessionID] = { - abort: controller, - callbacks: [], - } - return controller.signal - } - - function resume(sessionID: SessionID) { - const s = state() - if (!s[sessionID]) return - - return s[sessionID].abort.signal - } - - export async function cancel(sessionID: SessionID) { - log.info("cancel", { sessionID }) - const s = state() - const match = s[sessionID] - if (!match) { - await SessionStatus.set(sessionID, { type: "idle" }) - return - } - match.abort.abort() - delete s[sessionID] - await SessionStatus.set(sessionID, { type: "idle" }) - return - } - - export const LoopInput = z.object({ - sessionID: SessionID.zod, - resume_existing: z.boolean().optional(), - }) - export const loop = fn(LoopInput, async (input) => { - const { sessionID, resume_existing } = input - - const abort = resume_existing ? resume(sessionID) : start(sessionID) - if (!abort) { - return new Promise((resolve, reject) => { - const callbacks = state()[sessionID].callbacks - callbacks.push({ resolve, reject }) - }) - } - - await using _ = defer(() => cancel(sessionID)) - - // Structured output state - // Note: On session resumption, state is reset but outputFormat is preserved - // on the user message and will be retrieved from lastUser below - let structuredOutput: unknown | undefined - - let step = 0 - const session = await Session.get(sessionID) - while (true) { - await SessionStatus.set(sessionID, { type: "busy" }) - log.info("loop", { step, sessionID }) - if (abort.aborted) break - let msgs = await MessageV2.filterCompacted(MessageV2.stream(sessionID)) - - let lastUser: MessageV2.User | undefined - let lastAssistant: MessageV2.Assistant | undefined - let lastFinished: MessageV2.Assistant | undefined - let tasks: (MessageV2.CompactionPart | MessageV2.SubtaskPart)[] = [] - for (let i = msgs.length - 1; i >= 0; i--) { - const msg = msgs[i] - if (!lastUser && msg.info.role === "user") lastUser = msg.info as MessageV2.User - if (!lastAssistant && msg.info.role === "assistant") lastAssistant = msg.info as MessageV2.Assistant - if (!lastFinished && msg.info.role === "assistant" && msg.info.finish) - lastFinished = msg.info as MessageV2.Assistant - if (lastUser && lastFinished) break - const task = msg.parts.filter((part) => part.type === "compaction" || part.type === "subtask") - if (task && !lastFinished) { - tasks.push(...task) - } - } - - if (!lastUser) throw new Error("No user message found in stream. This should never happen.") - if ( - lastAssistant?.finish && - !["tool-calls", "unknown"].includes(lastAssistant.finish) && - lastUser.id < lastAssistant.id - ) { - log.info("exiting loop", { sessionID }) - break - } - - step++ - if (step === 1) - ensureTitle({ - session, - modelID: lastUser.model.modelID, - providerID: lastUser.model.providerID, - history: msgs, - }) - - const model = await Provider.getModel(lastUser.model.providerID, lastUser.model.modelID).catch((e) => { - if (Provider.ModelNotFoundError.isInstance(e)) { - const hint = e.data.suggestions?.length ? ` Did you mean: ${e.data.suggestions.join(", ")}?` : "" - Bus.publish(Session.Event.Error, { - sessionID, - error: new NamedError.Unknown({ - message: `Model not found: ${e.data.providerID}/${e.data.modelID}.${hint}`, - }).toObject(), - }) - } - throw e - }) - const task = tasks.pop() - - // pending subtask - // TODO: centralize "invoke tool" logic - if (task?.type === "subtask") { - const taskTool = await TaskTool.init() - const taskModel = task.model ? await Provider.getModel(task.model.providerID, task.model.modelID) : model - const assistantMessage = (await Session.updateMessage({ - id: MessageID.ascending(), - role: "assistant", - parentID: lastUser.id, - sessionID, - mode: task.agent, - agent: task.agent, - variant: lastUser.variant, - path: { - cwd: Instance.directory, - root: Instance.worktree, - }, - cost: 0, - tokens: { - input: 0, - output: 0, - reasoning: 0, - cache: { read: 0, write: 0 }, - }, - modelID: taskModel.id, - providerID: taskModel.providerID, - time: { - created: Date.now(), - }, - })) as MessageV2.Assistant - let part = (await Session.updatePart({ - id: PartID.ascending(), - messageID: assistantMessage.id, - sessionID: assistantMessage.sessionID, - type: "tool", - callID: ulid(), - tool: TaskTool.id, - state: { - status: "running", - input: { - prompt: task.prompt, - description: task.description, - subagent_type: task.agent, - command: task.command, - }, - time: { - start: Date.now(), - }, - }, - })) as MessageV2.ToolPart - const taskArgs = { - prompt: task.prompt, - description: task.description, - subagent_type: task.agent, - command: task.command, - } - await Plugin.trigger( - "tool.execute.before", - { - tool: "task", - sessionID, - callID: part.id, - }, - { args: taskArgs }, - ) - let executionError: Error | undefined - const taskAgent = await Agent.get(task.agent) - const taskCtx: Tool.Context = { - agent: task.agent, - messageID: assistantMessage.id, - sessionID: sessionID, - abort, - callID: part.callID, - extra: { bypassAgentCheck: true }, - messages: msgs, - async metadata(input) { - part = (await Session.updatePart({ - ...part, - type: "tool", - state: { - ...part.state, - ...input, - }, - } satisfies MessageV2.ToolPart)) as MessageV2.ToolPart - }, - async ask(req) { - await Permission.ask({ - ...req, - sessionID: sessionID, - ruleset: Permission.merge(taskAgent.permission, session.permission ?? []), - }) - }, - } - const result = await taskTool.execute(taskArgs, taskCtx).catch((error) => { - executionError = error - log.error("subtask execution failed", { error, agent: task.agent, description: task.description }) - return undefined - }) - const attachments = result?.attachments?.map((attachment) => ({ - ...attachment, - id: PartID.ascending(), - sessionID, - messageID: assistantMessage.id, - })) - await Plugin.trigger( - "tool.execute.after", - { - tool: "task", - sessionID, - callID: part.id, - args: taskArgs, - }, - result, - ) - assistantMessage.finish = "tool-calls" - assistantMessage.time.completed = Date.now() - await Session.updateMessage(assistantMessage) - if (result && part.state.status === "running") { - await Session.updatePart({ - ...part, - state: { - status: "completed", - input: part.state.input, - title: result.title, - metadata: result.metadata, - output: result.output, - attachments, - time: { - ...part.state.time, - end: Date.now(), - }, - }, - } satisfies MessageV2.ToolPart) - } - if (!result) { - await Session.updatePart({ - ...part, - state: { - status: "error", - error: executionError ? `Tool execution failed: ${executionError.message}` : "Tool execution failed", - time: { - start: part.state.status === "running" ? part.state.time.start : Date.now(), - end: Date.now(), - }, - metadata: "metadata" in part.state ? part.state.metadata : undefined, - input: part.state.input, - }, - } satisfies MessageV2.ToolPart) - } - - if (task.command) { - // Add synthetic user message to prevent certain reasoning models from erroring - // If we create assistant messages w/ out user ones following mid loop thinking signatures - // will be missing and it can cause errors for models like gemini for example - const summaryUserMsg: MessageV2.User = { - id: MessageID.ascending(), - sessionID, - role: "user", - time: { - created: Date.now(), - }, - agent: lastUser.agent, - model: lastUser.model, - } - await Session.updateMessage(summaryUserMsg) - await Session.updatePart({ - id: PartID.ascending(), - messageID: summaryUserMsg.id, - sessionID, - type: "text", - text: "Summarize the task tool output above and continue with your task.", - synthetic: true, - } satisfies MessageV2.TextPart) - } - - continue - } - - // pending compaction - if (task?.type === "compaction") { - const result = await SessionCompaction.process({ - messages: msgs, - parentID: lastUser.id, - abort, - sessionID, - auto: task.auto, - overflow: task.overflow, - }) - if (result === "stop") break - continue - } - - // proactive context management: prune + compact before overflow - if ( - lastFinished && - lastFinished.summary !== true && - (await SessionCompaction.isOverflow({ tokens: lastFinished.tokens, model })) - ) { - await SessionCompaction.prune({ sessionID }) - await SessionCompaction.create({ - sessionID, - agent: lastUser.agent, - model: lastUser.model, - auto: true, - }) - continue - } - - // normal processing - const agent = await Agent.get(lastUser.agent) - const maxSteps = agent.steps ?? Infinity - const isLastStep = step >= maxSteps - msgs = await insertReminders({ - messages: msgs, - agent, - session, - }) - - const processor = SessionProcessor.create({ - assistantMessage: (await Session.updateMessage({ - id: MessageID.ascending(), - parentID: lastUser.id, - role: "assistant", - mode: agent.name, - agent: agent.name, - variant: lastUser.variant, - path: { - cwd: Instance.directory, - root: Instance.worktree, - }, - cost: 0, - tokens: { - input: 0, - output: 0, - reasoning: 0, - cache: { read: 0, write: 0 }, - }, - modelID: model.id, - providerID: model.providerID, - time: { - created: Date.now(), - }, - sessionID, - })) as MessageV2.Assistant, - sessionID: sessionID, - model, - abort, - }) - using _ = defer(() => InstructionPrompt.clear(processor.message.id)) - - // Check if user explicitly invoked an agent via @ in this turn - const lastUserMsg = msgs.findLast((m) => m.info.role === "user") - const bypassAgentCheck = lastUserMsg?.parts.some((p) => p.type === "agent") ?? false - - const tools = await resolveTools({ - agent, - session, - model, - tools: lastUser.tools, - processor, - bypassAgentCheck, - messages: msgs, - }) - - // Inject StructuredOutput tool if JSON schema mode enabled - if (lastUser.format?.type === "json_schema") { - tools["StructuredOutput"] = createStructuredOutputTool({ - schema: lastUser.format.schema, - onSuccess(output) { - structuredOutput = output - }, - }) - } - - if (step === 1) { - SessionSummary.summarize({ - sessionID: sessionID, - messageID: lastUser.id, - }) - } - - // Ephemerally wrap queued user messages with a reminder to stay on track - if (step > 1 && lastFinished) { - for (const msg of msgs) { - if (msg.info.role !== "user" || msg.info.id <= lastFinished.id) continue - for (const part of msg.parts) { - if (part.type !== "text" || part.ignored || part.synthetic) continue - if (!part.text.trim()) continue - part.text = [ - "", - "The user sent the following message:", - part.text, - "", - "Please address this message and continue with your tasks.", - "", - ].join("\n") - } - } - } - - await Plugin.trigger("experimental.chat.messages.transform", {}, { messages: msgs }) - - // Build system prompt, adding structured output instruction if needed - const skills = await SystemPrompt.skills(agent) - const system = [ - ...(await SystemPrompt.environment(model)), - ...(skills ? [skills] : []), - ...(await InstructionPrompt.system()), - ] - const format = lastUser.format ?? { type: "text" } - if (format.type === "json_schema") { - system.push(STRUCTURED_OUTPUT_SYSTEM_PROMPT) - } - - const result = await processor.process({ - user: lastUser, - agent, - permission: session.permission, - abort, - sessionID, - system, - messages: [ - ...MessageV2.toModelMessages(msgs, model), - ...(isLastStep - ? [ - { - role: "assistant" as const, - content: MAX_STEPS, - }, - ] - : []), - ], - tools, - model, - toolChoice: format.type === "json_schema" ? "required" : undefined, - }) - - // If structured output was captured, save it and exit immediately - // This takes priority because the StructuredOutput tool was called successfully - if (structuredOutput !== undefined) { - processor.message.structured = structuredOutput - processor.message.finish = processor.message.finish ?? "stop" - await Session.updateMessage(processor.message) - break - } - - // Check if model finished (finish reason is not "tool-calls" or "unknown") - const modelFinished = processor.message.finish && !["tool-calls", "unknown"].includes(processor.message.finish) - - if (modelFinished && !processor.message.error) { - if (format.type === "json_schema") { - // Model stopped without calling StructuredOutput tool - processor.message.error = new MessageV2.StructuredOutputError({ - message: "Model did not produce structured output", - retries: 0, - }).toObject() - await Session.updateMessage(processor.message) - break - } - } - - if (result === "stop") break - if (result === "compact") { - await SessionCompaction.prune({ sessionID }) - await SessionCompaction.create({ - sessionID, - agent: lastUser.agent, - model: lastUser.model, - auto: true, - overflow: !processor.message.finish, - }) - } - continue - } - SessionCompaction.prune({ sessionID }) - for await (const item of MessageV2.stream(sessionID)) { - if (item.info.role === "user") continue - const queued = state()[sessionID]?.callbacks ?? [] - for (const q of queued) { - q.resolve(item) - } - return item - } - throw new Error("Impossible") - }) - - async function lastModel(sessionID: SessionID) { - for await (const item of MessageV2.stream(sessionID)) { - if (item.info.role === "user" && item.info.model) return item.info.model - } - return Provider.defaultModel() - } - - /** @internal Exported for testing */ - export async function resolveTools(input: { - agent: Agent.Info - model: Provider.Model - session: Session.Info - tools?: Record - processor: SessionProcessor.Info - bypassAgentCheck: boolean - messages: MessageV2.WithParts[] - }) { - using _ = log.time("resolveTools") - const tools: Record = {} - - const context = (args: any, options: ToolCallOptions): Tool.Context => ({ - sessionID: input.session.id, - abort: options.abortSignal!, - messageID: input.processor.message.id, - callID: options.toolCallId, - extra: { model: input.model, bypassAgentCheck: input.bypassAgentCheck }, - agent: input.agent.name, - messages: input.messages, - metadata: async (val: { title?: string; metadata?: any }) => { - const match = input.processor.partFromToolCall(options.toolCallId) - if (match && match.state.status === "running") { - await Session.updatePart({ - ...match, - state: { - title: val.title, - metadata: val.metadata, - status: "running", - input: args, - time: { - start: Date.now(), - }, - }, - }) - } - }, - async ask(req) { - await Permission.ask({ - ...req, - sessionID: input.session.id, - tool: { messageID: input.processor.message.id, callID: options.toolCallId }, - ruleset: Permission.merge(input.agent.permission, input.session.permission ?? []), - }) - }, - }) - - for (const item of await ToolRegistry.tools( - { modelID: ModelID.make(input.model.api.id), providerID: input.model.providerID }, - input.agent, - )) { - const schema = ProviderTransform.schema(input.model, z.toJSONSchema(item.parameters)) - tools[item.id] = tool({ - id: item.id as any, - description: item.description, - inputSchema: jsonSchema(schema as any), - async execute(args, options) { - const ctx = context(args, options) - await Plugin.trigger( - "tool.execute.before", - { - tool: item.id, - sessionID: ctx.sessionID, - callID: ctx.callID, - }, - { - args, - }, - ) - const result = await item.execute(args, ctx) - const output = { - ...result, - attachments: result.attachments?.map((attachment) => ({ - ...attachment, - id: PartID.ascending(), - sessionID: ctx.sessionID, - messageID: input.processor.message.id, - })), - } - await Plugin.trigger( - "tool.execute.after", - { - tool: item.id, - sessionID: ctx.sessionID, - callID: ctx.callID, - args, - }, - output, - ) - return output - }, - }) - } - - for (const [key, item] of Object.entries(await MCP.tools())) { - const execute = item.execute - if (!execute) continue - - const transformed = ProviderTransform.schema(input.model, asSchema(item.inputSchema).jsonSchema) - item.inputSchema = jsonSchema(transformed) - // Wrap execute to add plugin hooks and format output - item.execute = async (args, opts) => { - const ctx = context(args, opts) - - await Plugin.trigger( - "tool.execute.before", - { - tool: key, - sessionID: ctx.sessionID, - callID: opts.toolCallId, - }, - { - args, - }, - ) - - await ctx.ask({ - permission: key, - metadata: {}, - patterns: ["*"], - always: ["*"], - }) - - const result = await execute(args, opts) - - await Plugin.trigger( - "tool.execute.after", - { - tool: key, - sessionID: ctx.sessionID, - callID: opts.toolCallId, - args, - }, - result, - ) - - const textParts: string[] = [] - const attachments: Omit[] = [] - - for (const contentItem of result.content) { - if (contentItem.type === "text") { - textParts.push(contentItem.text) - } else if (contentItem.type === "image") { - attachments.push({ - type: "file", - mime: contentItem.mimeType, - url: `data:${contentItem.mimeType};base64,${contentItem.data}`, - }) - } else if (contentItem.type === "resource") { - const { resource } = contentItem - if (resource.text) { - textParts.push(resource.text) - } - if (resource.blob) { - attachments.push({ - type: "file", - mime: resource.mimeType ?? "application/octet-stream", - url: `data:${resource.mimeType ?? "application/octet-stream"};base64,${resource.blob}`, - filename: resource.uri, - }) - } - } - } - - const truncated = await Truncate.output(textParts.join("\n\n"), {}, input.agent) - const metadata = { - ...(result.metadata ?? {}), - truncated: truncated.truncated, - ...(truncated.truncated && { outputPath: truncated.outputPath }), - } - - return { - title: "", - metadata, - output: truncated.content, - attachments: attachments.map((attachment) => ({ - ...attachment, - id: PartID.ascending(), - sessionID: ctx.sessionID, - messageID: input.processor.message.id, - })), - content: result.content, // directly return content to preserve ordering when outputting to model - } - } - tools[key] = item - } - - return tools - } - - /** @internal Exported for testing */ - export function createStructuredOutputTool(input: { - schema: Record - onSuccess: (output: unknown) => void - }): AITool { - // Remove $schema property if present (not needed for tool input) - const { $schema, ...toolSchema } = input.schema - - return tool({ - id: "StructuredOutput" as any, - description: STRUCTURED_OUTPUT_DESCRIPTION, - inputSchema: jsonSchema(toolSchema as any), - async execute(args) { - // AI SDK validates args against inputSchema before calling execute() - input.onSuccess(args) - return { - output: "Structured output captured successfully.", - title: "Structured Output", - metadata: { valid: true }, - } - }, - toModelOutput(result) { - return { - type: "text", - value: result.output, - } - }, - }) - } - - async function createUserMessage(input: PromptInput) { - const agent = await Agent.get(input.agent ?? (await Agent.defaultAgent())) - - const model = input.model ?? agent.model ?? (await lastModel(input.sessionID)) - const full = - !input.variant && agent.variant - ? await Provider.getModel(model.providerID, model.modelID).catch(() => undefined) - : undefined - const variant = input.variant ?? (agent.variant && full?.variants?.[agent.variant] ? agent.variant : undefined) - - const info: MessageV2.Info = { - id: input.messageID ?? MessageID.ascending(), - role: "user", - sessionID: input.sessionID, - time: { - created: Date.now(), - }, - tools: input.tools, - agent: agent.name, - model, - system: input.system, - format: input.format, - variant, - } - using _ = defer(() => InstructionPrompt.clear(info.id)) - - type Draft = T extends MessageV2.Part ? Omit & { id?: string } : never - const assign = (part: Draft): MessageV2.Part => ({ - ...part, - id: part.id ? PartID.make(part.id) : PartID.ascending(), - }) - - const parts = await Promise.all( - input.parts.map(async (part): Promise[]> => { - if (part.type === "file") { - // before checking the protocol we check if this is an mcp resource because it needs special handling - if (part.source?.type === "resource") { - const { clientName, uri } = part.source - log.info("mcp resource", { clientName, uri, mime: part.mime }) - - const pieces: Draft[] = [ - { - messageID: info.id, - sessionID: input.sessionID, - type: "text", - synthetic: true, - text: `Reading MCP resource: ${part.filename} (${uri})`, - }, - ] - - try { - const resourceContent = await MCP.readResource(clientName, uri) - if (!resourceContent) { - throw new Error(`Resource not found: ${clientName}/${uri}`) - } - - // Handle different content types - const contents = Array.isArray(resourceContent.contents) - ? resourceContent.contents - : [resourceContent.contents] - - for (const content of contents) { - if ("text" in content && content.text) { - pieces.push({ - messageID: info.id, - sessionID: input.sessionID, - type: "text", - synthetic: true, - text: content.text as string, - }) - } else if ("blob" in content && content.blob) { - // Handle binary content if needed - const mimeType = "mimeType" in content ? content.mimeType : part.mime - pieces.push({ - messageID: info.id, - sessionID: input.sessionID, - type: "text", - synthetic: true, - text: `[Binary content: ${mimeType}]`, - }) - } - } - - pieces.push({ - ...part, - messageID: info.id, - sessionID: input.sessionID, - }) - } catch (error: unknown) { - log.error("failed to read MCP resource", { error, clientName, uri }) - const message = error instanceof Error ? error.message : String(error) - pieces.push({ - messageID: info.id, - sessionID: input.sessionID, - type: "text", - synthetic: true, - text: `Failed to read MCP resource ${part.filename}: ${message}`, - }) - } - - return pieces - } - const url = new URL(part.url) - switch (url.protocol) { - case "data:": - if (part.mime === "text/plain") { - return [ - { - messageID: info.id, - sessionID: input.sessionID, - type: "text", - synthetic: true, - text: `Called the Read tool with the following input: ${JSON.stringify({ filePath: part.filename })}`, - }, - { - messageID: info.id, - sessionID: input.sessionID, - type: "text", - synthetic: true, - text: decodeDataUrl(part.url), - }, - { - ...part, - messageID: info.id, - sessionID: input.sessionID, - }, - ] - } - break - case "file:": - log.info("file", { mime: part.mime }) - // have to normalize, symbol search returns absolute paths - // Decode the pathname since URL constructor doesn't automatically decode it - const filepath = fileURLToPath(part.url) - const s = Filesystem.stat(filepath) - - if (s?.isDirectory()) { - part.mime = "application/x-directory" - } - - if (part.mime === "text/plain") { - let offset: number | undefined = undefined - let limit: number | undefined = undefined - const range = { - start: url.searchParams.get("start"), - end: url.searchParams.get("end"), - } - if (range.start != null) { - const filePathURI = part.url.split("?")[0] - let start = parseInt(range.start) - let end = range.end ? parseInt(range.end) : undefined - // some LSP servers (eg, gopls) don't give full range in - // workspace/symbol searches, so we'll try to find the - // symbol in the document to get the full range - if (start === end) { - const symbols = await LSP.documentSymbol(filePathURI).catch(() => []) - for (const symbol of symbols) { - let range: LSP.Range | undefined - if ("range" in symbol) { - range = symbol.range - } else if ("location" in symbol) { - range = symbol.location.range - } - if (range?.start?.line && range?.start?.line === start) { - start = range.start.line - end = range?.end?.line ?? start - break - } - } - } - offset = Math.max(start, 1) - if (end) { - limit = end - (offset - 1) - } - } - const args = { filePath: filepath, offset, limit } - - const pieces: Draft[] = [ - { - messageID: info.id, - sessionID: input.sessionID, - type: "text", - synthetic: true, - text: `Called the Read tool with the following input: ${JSON.stringify(args)}`, - }, - ] - - await ReadTool.init() - .then(async (t) => { - const model = await Provider.getModel(info.model.providerID, info.model.modelID) - const readCtx: Tool.Context = { - sessionID: input.sessionID, - abort: new AbortController().signal, - agent: input.agent!, - messageID: info.id, - extra: { bypassCwdCheck: true, model }, - messages: [], - metadata: async () => {}, - ask: async () => {}, - } - const result = await t.execute(args, readCtx) - pieces.push({ - messageID: info.id, - sessionID: input.sessionID, - type: "text", - synthetic: true, - text: result.output, - }) - if (result.attachments?.length) { - pieces.push( - ...result.attachments.map((attachment) => ({ - ...attachment, - synthetic: true, - filename: attachment.filename ?? part.filename, - messageID: info.id, - sessionID: input.sessionID, - })), - ) - } else { - pieces.push({ - ...part, - messageID: info.id, - sessionID: input.sessionID, - }) - } - }) - .catch((error) => { - log.error("failed to read file", { error }) - const message = error instanceof Error ? error.message : error.toString() - Bus.publish(Session.Event.Error, { - sessionID: input.sessionID, - error: new NamedError.Unknown({ - message, - }).toObject(), - }) - pieces.push({ - messageID: info.id, - sessionID: input.sessionID, - type: "text", - synthetic: true, - text: `Read tool failed to read ${filepath} with the following error: ${message}`, - }) - }) - - return pieces - } - - if (part.mime === "application/x-directory") { - const args = { filePath: filepath } - const listCtx: Tool.Context = { - sessionID: input.sessionID, - abort: new AbortController().signal, - agent: input.agent!, - messageID: info.id, - extra: { bypassCwdCheck: true }, - messages: [], - metadata: async () => {}, - ask: async () => {}, - } - const result = await ReadTool.init().then((t) => t.execute(args, listCtx)) - return [ - { - messageID: info.id, - sessionID: input.sessionID, - type: "text", - synthetic: true, - text: `Called the Read tool with the following input: ${JSON.stringify(args)}`, - }, - { - messageID: info.id, - sessionID: input.sessionID, - type: "text", - synthetic: true, - text: result.output, - }, - { - ...part, - messageID: info.id, - sessionID: input.sessionID, - }, - ] - } - - await FileTime.read(input.sessionID, filepath) - return [ - { - messageID: info.id, - sessionID: input.sessionID, - type: "text", - text: `Called the Read tool with the following input: {"filePath":"${filepath}"}`, - synthetic: true, - }, - { - id: part.id, - messageID: info.id, - sessionID: input.sessionID, - type: "file", - url: `data:${part.mime};base64,` + (await Filesystem.readBytes(filepath)).toString("base64"), - mime: part.mime, - filename: part.filename!, - source: part.source, - }, - ] - } - } - - if (part.type === "agent") { - // Check if this agent would be denied by task permission - const perm = Permission.evaluate("task", part.name, agent.permission) - const hint = perm.action === "deny" ? " . Invoked by user; guaranteed to exist." : "" - return [ - { - ...part, - messageID: info.id, - sessionID: input.sessionID, - }, - { - messageID: info.id, - sessionID: input.sessionID, - type: "text", - synthetic: true, - // An extra space is added here. Otherwise the 'Use' gets appended - // to user's last word; making a combined word - text: - " Use the above message and context to generate a prompt and call the task tool with subagent: " + - part.name + - hint, - }, - ] - } - - return [ - { - ...part, - messageID: info.id, - sessionID: input.sessionID, - }, - ] - }), - ).then((x) => x.flat().map(assign)) - - await Plugin.trigger( - "chat.message", - { - sessionID: input.sessionID, - agent: input.agent, - model: input.model, - messageID: input.messageID, - variant: input.variant, - }, - { - message: info, - parts, - }, - ) - - const parsedInfo = MessageV2.Info.safeParse(info) - if (!parsedInfo.success) { - log.error("invalid user message before save", { - sessionID: input.sessionID, - messageID: info.id, - agent: info.agent, - model: info.model, - issues: parsedInfo.error.issues, - }) - } - - parts.forEach((part, index) => { - const parsedPart = MessageV2.Part.safeParse(part) - if (parsedPart.success) return - log.error("invalid user part before save", { - sessionID: input.sessionID, - messageID: info.id, - partID: part.id, - partType: part.type, - index, - issues: parsedPart.error.issues, - part, - }) - }) - - await Session.updateMessage(info) - for (const part of parts) { - await Session.updatePart(part) - } - - return { - info, - parts, - } - } - - async function insertReminders(input: { messages: MessageV2.WithParts[]; agent: Agent.Info; session: Session.Info }) { - const userMessage = input.messages.findLast((msg) => msg.info.role === "user") - if (!userMessage) return input.messages - - // Original logic when experimental plan mode is disabled - if (!Flag.OPENCODE_EXPERIMENTAL_PLAN_MODE) { - if (input.agent.name === "plan") { - userMessage.parts.push({ - id: PartID.ascending(), - messageID: userMessage.info.id, - sessionID: userMessage.info.sessionID, - type: "text", - text: PROMPT_PLAN, - synthetic: true, - }) - } - const wasPlan = input.messages.some((msg) => msg.info.role === "assistant" && msg.info.agent === "plan") - if (wasPlan && input.agent.name === "build") { - userMessage.parts.push({ - id: PartID.ascending(), - messageID: userMessage.info.id, - sessionID: userMessage.info.sessionID, - type: "text", - text: BUILD_SWITCH, - synthetic: true, - }) - } - return input.messages - } - - // New plan mode logic when flag is enabled - const assistantMessage = input.messages.findLast((msg) => msg.info.role === "assistant") - - // Switching from plan mode to build mode - if (input.agent.name !== "plan" && assistantMessage?.info.agent === "plan") { - const plan = Session.plan(input.session) - const exists = await Filesystem.exists(plan) - if (exists) { - const part = await Session.updatePart({ - id: PartID.ascending(), - messageID: userMessage.info.id, - sessionID: userMessage.info.sessionID, - type: "text", - text: - BUILD_SWITCH + "\n\n" + `A plan file exists at ${plan}. You should execute on the plan defined within it`, - synthetic: true, - }) - userMessage.parts.push(part) - } - return input.messages - } - - // Entering plan mode - if (input.agent.name === "plan" && assistantMessage?.info.agent !== "plan") { - const plan = Session.plan(input.session) - const exists = await Filesystem.exists(plan) - if (!exists) await fs.mkdir(path.dirname(plan), { recursive: true }) - const part = await Session.updatePart({ - id: PartID.ascending(), - messageID: userMessage.info.id, - sessionID: userMessage.info.sessionID, - type: "text", - text: ` -Plan mode is active. The user indicated that they do not want you to execute yet -- you MUST NOT make any edits (with the exception of the plan file mentioned below), run any non-readonly tools (including changing configs or making commits), or otherwise make any changes to the system. This supersedes any other instructions you have received. - -## Plan File Info: -${exists ? `A plan file already exists at ${plan}. You can read it and make incremental edits using the edit tool.` : `No plan file exists yet. You should create your plan at ${plan} using the write tool.`} -You should build your plan incrementally by writing to or editing this file. NOTE that this is the only file you are allowed to edit - other than this you are only allowed to take READ-ONLY actions. - -## Plan Workflow - -### Phase 1: Initial Understanding -Goal: Gain a comprehensive understanding of the user's request by reading through code and asking them questions. Critical: In this phase you should only use the explore subagent type. - -1. Focus on understanding the user's request and the code associated with their request - -2. **Launch up to 3 explore agents IN PARALLEL** (single message, multiple tool calls) to efficiently explore the codebase. - - Use 1 agent when the task is isolated to known files, the user provided specific file paths, or you're making a small targeted change. - - Use multiple agents when: the scope is uncertain, multiple areas of the codebase are involved, or you need to understand existing patterns before planning. - - Quality over quantity - 3 agents maximum, but you should try to use the minimum number of agents necessary (usually just 1) - - If using multiple agents: Provide each agent with a specific search focus or area to explore. Example: One agent searches for existing implementations, another explores related components, a third investigates testing patterns - -3. After exploring the code, use the question tool to clarify ambiguities in the user request up front. - -### Phase 2: Design -Goal: Design an implementation approach. - -Launch general agent(s) to design the implementation based on the user's intent and your exploration results from Phase 1. - -You can launch up to 1 agent(s) in parallel. - -**Guidelines:** -- **Default**: Launch at least 1 Plan agent for most tasks - it helps validate your understanding and consider alternatives -- **Skip agents**: Only for truly trivial tasks (typo fixes, single-line changes, simple renames) - -Examples of when to use multiple agents: -- The task touches multiple parts of the codebase -- It's a large refactor or architectural change -- There are many edge cases to consider -- You'd benefit from exploring different approaches - -Example perspectives by task type: -- New feature: simplicity vs performance vs maintainability -- Bug fix: root cause vs workaround vs prevention -- Refactoring: minimal change vs clean architecture - -In the agent prompt: -- Provide comprehensive background context from Phase 1 exploration including filenames and code path traces -- Describe requirements and constraints -- Request a detailed implementation plan - -### Phase 3: Review -Goal: Review the plan(s) from Phase 2 and ensure alignment with the user's intentions. -1. Read the critical files identified by agents to deepen your understanding -2. Ensure that the plans align with the user's original request -3. Use question tool to clarify any remaining questions with the user - -### Phase 4: Final Plan -Goal: Write your final plan to the plan file (the only file you can edit). -- Include only your recommended approach, not all alternatives -- Ensure that the plan file is concise enough to scan quickly, but detailed enough to execute effectively -- Include the paths of critical files to be modified -- Include a verification section describing how to test the changes end-to-end (run the code, use MCP tools, run tests) - -### Phase 5: Call plan_exit tool -At the very end of your turn, once you have asked the user questions and are happy with your final plan file - you should always call plan_exit to indicate to the user that you are done planning. -This is critical - your turn should only end with either asking the user a question or calling plan_exit. Do not stop unless it's for these 2 reasons. - -**Important:** Use question tool to clarify requirements/approach, use plan_exit to request plan approval. Do NOT use question tool to ask "Is this plan okay?" - that's what plan_exit does. - -NOTE: At any point in time through this workflow you should feel free to ask the user questions or clarifications. Don't make large assumptions about user intent. The goal is to present a well researched plan to the user, and tie any loose ends before implementation begins. -`, - synthetic: true, - }) - userMessage.parts.push(part) - return input.messages - } - return input.messages - } - - export const ShellInput = z.object({ - sessionID: SessionID.zod, - agent: z.string(), - model: z - .object({ - providerID: ProviderID.zod, - modelID: ModelID.zod, - }) - .optional(), - command: z.string(), - }) - export type ShellInput = z.infer - export async function shell(input: ShellInput) { - const abort = start(input.sessionID) - if (!abort) { - throw new Session.BusyError(input.sessionID) - } - - using _ = defer(() => { - // If no queued callbacks, cancel (the default) - const callbacks = state()[input.sessionID]?.callbacks ?? [] - if (callbacks.length === 0) { - cancel(input.sessionID) - } else { - // Otherwise, trigger the session loop to process queued items - loop({ sessionID: input.sessionID, resume_existing: true }).catch((error) => { - log.error("session loop failed to resume after shell command", { sessionID: input.sessionID, error }) - }) - } - }) - - const session = await Session.get(input.sessionID) - if (session.revert) { - await SessionRevert.cleanup(session) - } - const agent = await Agent.get(input.agent) - const model = input.model ?? agent.model ?? (await lastModel(input.sessionID)) - const userMsg: MessageV2.User = { - id: MessageID.ascending(), - sessionID: input.sessionID, - time: { - created: Date.now(), - }, - role: "user", - agent: input.agent, - model: { - providerID: model.providerID, - modelID: model.modelID, - }, - } - await Session.updateMessage(userMsg) - const userPart: MessageV2.Part = { - type: "text", - id: PartID.ascending(), - messageID: userMsg.id, - sessionID: input.sessionID, - text: "The following tool was executed by the user", - synthetic: true, - } - await Session.updatePart(userPart) - - const msg: MessageV2.Assistant = { - id: MessageID.ascending(), - sessionID: input.sessionID, - parentID: userMsg.id, - mode: input.agent, - agent: input.agent, - cost: 0, - path: { - cwd: Instance.directory, - root: Instance.worktree, - }, - time: { - created: Date.now(), - }, - role: "assistant", - tokens: { - input: 0, - output: 0, - reasoning: 0, - cache: { read: 0, write: 0 }, - }, - modelID: model.modelID, - providerID: model.providerID, - } - await Session.updateMessage(msg) - const part: MessageV2.Part = { - type: "tool", - id: PartID.ascending(), - messageID: msg.id, - sessionID: input.sessionID, - tool: "bash", - callID: ulid(), - state: { - status: "running", - time: { - start: Date.now(), - }, - input: { - command: input.command, - }, - }, - } - await Session.updatePart(part) - const shell = Shell.preferred() - const shellName = ( - process.platform === "win32" ? path.win32.basename(shell, ".exe") : path.basename(shell) - ).toLowerCase() - - const invocations: Record = { - nu: { - args: ["-c", input.command], - }, - fish: { - args: ["-c", input.command], - }, - zsh: { - args: [ - "-c", - "-l", - ` - [[ -f ~/.zshenv ]] && source ~/.zshenv >/dev/null 2>&1 || true - [[ -f "\${ZDOTDIR:-$HOME}/.zshrc" ]] && source "\${ZDOTDIR:-$HOME}/.zshrc" >/dev/null 2>&1 || true - eval ${JSON.stringify(input.command)} - `, - ], - }, - bash: { - args: [ - "-c", - "-l", - ` - shopt -s expand_aliases - [[ -f ~/.bashrc ]] && source ~/.bashrc >/dev/null 2>&1 || true - eval ${JSON.stringify(input.command)} - `, - ], - }, - // Windows cmd - cmd: { - args: ["/c", input.command], - }, - // Windows PowerShell - powershell: { - args: ["-NoProfile", "-Command", input.command], - }, - pwsh: { - args: ["-NoProfile", "-Command", input.command], - }, - // Fallback: any shell that doesn't match those above - // - No -l, for max compatibility - "": { - args: ["-c", `${input.command}`], - }, - } - - const matchingInvocation = invocations[shellName] ?? invocations[""] - const args = matchingInvocation?.args - - const cwd = Instance.directory - const shellEnv = await Plugin.trigger( - "shell.env", - { cwd, sessionID: input.sessionID, callID: part.callID }, - { env: {} }, - ) - const proc = spawn(shell, args, { - cwd, - detached: process.platform !== "win32", - windowsHide: process.platform === "win32", - stdio: ["ignore", "pipe", "pipe"], - env: { - ...process.env, - ...shellEnv.env, - TERM: "dumb", - }, - }) - - let output = "" - - proc.stdout?.on("data", (chunk) => { - output += chunk.toString() - if (part.state.status === "running") { - part.state.metadata = { - output: output, - description: "", - } - Session.updatePart(part) - } - }) - - proc.stderr?.on("data", (chunk) => { - output += chunk.toString() - if (part.state.status === "running") { - part.state.metadata = { - output: output, - description: "", - } - Session.updatePart(part) - } - }) - - let aborted = false - let exited = false - - const kill = () => Shell.killTree(proc, { exited: () => exited }) - - if (abort.aborted) { - aborted = true - await kill() - } - - const abortHandler = () => { - aborted = true - void kill() - } - - abort.addEventListener("abort", abortHandler, { once: true }) - - await new Promise((resolve) => { - proc.on("close", () => { - exited = true - abort.removeEventListener("abort", abortHandler) - resolve() - }) - }) - - if (aborted) { - output += "\n\n" + ["", "User aborted the command", ""].join("\n") - } - msg.time.completed = Date.now() - await Session.updateMessage(msg) - if (part.state.status === "running") { - part.state = { - status: "completed", - time: { - ...part.state.time, - end: Date.now(), - }, - input: part.state.input, - title: "", - metadata: { - output, - description: "", - }, - output, - } - await Session.updatePart(part) - } - return { info: msg, parts: [part] } - } - - export const CommandInput = z.object({ - messageID: MessageID.zod.optional(), - sessionID: SessionID.zod, - agent: z.string().optional(), - model: z.string().optional(), - arguments: z.string(), - command: z.string(), - variant: z.string().optional(), - parts: z - .array( - z.discriminatedUnion("type", [ - MessageV2.FilePart.omit({ - messageID: true, - sessionID: true, - }).partial({ - id: true, - }), - ]), - ) - .optional(), - }) - export type CommandInput = z.infer - const bashRegex = /!`([^`]+)`/g - // Match [Image N] as single token, quoted strings, or non-space sequences - const argsRegex = /(?:\[Image\s+\d+\]|"[^"]*"|'[^']*'|[^\s"']+)/gi - const placeholderRegex = /\$(\d+)/g - const quoteTrimRegex = /^["']|["']$/g - /** - * Regular expression to match @ file references in text - * Matches @ followed by file paths, excluding commas, periods at end of sentences, and backticks - * Does not match when preceded by word characters or backticks (to avoid email addresses and quoted references) - */ - - export async function command(input: CommandInput) { - log.info("command", input) - const command = await Command.get(input.command) - if (!command) { - throw new NamedError.Unknown({ message: `Command not found: "${input.command}"` }) - } - const agentName = command.agent ?? input.agent ?? (await Agent.defaultAgent()) - - const raw = input.arguments.match(argsRegex) ?? [] - const args = raw.map((arg) => arg.replace(quoteTrimRegex, "")) - - const templateCommand = await command.template - - const placeholders = templateCommand.match(placeholderRegex) ?? [] - let last = 0 - for (const item of placeholders) { - const value = Number(item.slice(1)) - if (value > last) last = value - } - - // Let the final placeholder swallow any extra arguments so prompts read naturally - const withArgs = templateCommand.replaceAll(placeholderRegex, (_, index) => { - const position = Number(index) - const argIndex = position - 1 - if (argIndex >= args.length) return "" - if (position === last) return args.slice(argIndex).join(" ") - return args[argIndex] - }) - const usesArgumentsPlaceholder = templateCommand.includes("$ARGUMENTS") - let template = withArgs.replaceAll("$ARGUMENTS", input.arguments) - - // If command doesn't explicitly handle arguments (no $N or $ARGUMENTS placeholders) - // but user provided arguments, append them to the template - if (placeholders.length === 0 && !usesArgumentsPlaceholder && input.arguments.trim()) { - template = template + "\n\n" + input.arguments - } - - const shellMatches = ConfigMarkdown.shell(template) - if (shellMatches.length > 0) { - const sh = Shell.preferred() - const results = await Promise.all( - shellMatches.map(async ([, cmd]) => { - const out = await Process.text([cmd], { shell: sh, nothrow: true }) - return out.text - }), - ) - let index = 0 - template = template.replace(bashRegex, () => results[index++]) - } - template = template.trim() - - const taskModel = await (async () => { - if (command.model) { - return Provider.parseModel(command.model) - } - if (command.agent) { - const cmdAgent = await Agent.get(command.agent) - if (cmdAgent?.model) { - return cmdAgent.model - } - } - if (input.model) return Provider.parseModel(input.model) - return await lastModel(input.sessionID) - })() - - try { - await Provider.getModel(taskModel.providerID, taskModel.modelID) - } catch (e) { - if (Provider.ModelNotFoundError.isInstance(e)) { - const { providerID, modelID, suggestions } = e.data - const hint = suggestions?.length ? ` Did you mean: ${suggestions.join(", ")}?` : "" - Bus.publish(Session.Event.Error, { - sessionID: input.sessionID, - error: new NamedError.Unknown({ message: `Model not found: ${providerID}/${modelID}.${hint}` }).toObject(), - }) - } - throw e - } - const agent = await Agent.get(agentName) - if (!agent) { - const available = await Agent.list().then((agents) => agents.filter((a) => !a.hidden).map((a) => a.name)) - const hint = available.length ? ` Available agents: ${available.join(", ")}` : "" - const error = new NamedError.Unknown({ message: `Agent not found: "${agentName}".${hint}` }) - Bus.publish(Session.Event.Error, { - sessionID: input.sessionID, - error: error.toObject(), - }) - throw error - } - - const templateParts = await resolvePromptParts(template) - const isSubtask = (agent.mode === "subagent" && command.subtask !== false) || command.subtask === true - const parts = isSubtask - ? [ - { - type: "subtask" as const, - agent: agent.name, - description: command.description ?? "", - command: input.command, - model: { - providerID: taskModel.providerID, - modelID: taskModel.modelID, - }, - // TODO: how can we make task tool accept a more complex input? - prompt: templateParts.find((y) => y.type === "text")?.text ?? "", - }, - ] - : [...templateParts, ...(input.parts ?? [])] - - const userAgent = isSubtask ? (input.agent ?? (await Agent.defaultAgent())) : agentName - const userModel = isSubtask - ? input.model - ? Provider.parseModel(input.model) - : await lastModel(input.sessionID) - : taskModel - - await Plugin.trigger( - "command.execute.before", - { - command: input.command, - sessionID: input.sessionID, - arguments: input.arguments, - }, - { parts }, - ) - - const result = (await prompt({ - sessionID: input.sessionID, - messageID: input.messageID, - model: userModel, - agent: userAgent, - parts, - variant: input.variant, - })) as MessageV2.WithParts - - Bus.publish(Command.Event.Executed, { - name: input.command, - sessionID: input.sessionID, - arguments: input.arguments, - messageID: result.info.id, - }) - - return result - } - - async function ensureTitle(input: { - session: Session.Info - history: MessageV2.WithParts[] - providerID: ProviderID - modelID: ModelID - }) { - if (input.session.parentID) return - if (!Session.isDefaultTitle(input.session.title)) return - - // Find first non-synthetic user message - const firstRealUserIdx = input.history.findIndex( - (m) => m.info.role === "user" && !m.parts.every((p) => "synthetic" in p && p.synthetic), - ) - if (firstRealUserIdx === -1) return - - const isFirst = - input.history.filter((m) => m.info.role === "user" && !m.parts.every((p) => "synthetic" in p && p.synthetic)) - .length === 1 - if (!isFirst) return - - // Gather all messages up to and including the first real user message for context - // This includes any shell/subtask executions that preceded the user's first prompt - const contextMessages = input.history.slice(0, firstRealUserIdx + 1) - const firstRealUser = contextMessages[firstRealUserIdx] - - // For subtask-only messages (from command invocations), extract the prompt directly - // since toModelMessage converts subtask parts to generic "The following tool was executed by the user" - const subtaskParts = firstRealUser.parts.filter((p) => p.type === "subtask") as MessageV2.SubtaskPart[] - const hasOnlySubtaskParts = subtaskParts.length > 0 && firstRealUser.parts.every((p) => p.type === "subtask") - - const agent = await Agent.get("title") - if (!agent) return - const model = await iife(async () => { - if (agent.model) return await Provider.getModel(agent.model.providerID, agent.model.modelID) - return ( - (await Provider.getSmallModel(input.providerID)) ?? (await Provider.getModel(input.providerID, input.modelID)) - ) - }) - const result = await LLM.stream({ - agent, - user: firstRealUser.info as MessageV2.User, - system: [], - small: true, - tools: {}, - model, - abort: new AbortController().signal, - sessionID: input.session.id, - retries: 2, - messages: [ - { - role: "user", - content: "Generate a title for this conversation:\n", - }, - ...(hasOnlySubtaskParts - ? [{ role: "user" as const, content: subtaskParts.map((p) => p.prompt).join("\n") }] - : MessageV2.toModelMessages(contextMessages, model)), - ], - }) - const text = await result.text.catch((err) => log.error("failed to generate title", { error: err })) - if (text) { - const cleaned = text - .replace(/[\s\S]*?<\/think>\s*/g, "") - .split("\n") - .map((line) => line.trim()) - .find((line) => line.length > 0) - if (!cleaned) return - - const title = cleaned.length > 100 ? cleaned.substring(0, 97) + "..." : cleaned - return Session.setTitle({ sessionID: input.session.id, title }).catch((err) => { - if (NotFoundError.isInstance(err)) return - throw err - }) - } - } -} diff --git a/packages/ui/src/components/session-turn.css b/packages/ui/src/components/session-turn.css index 84dff76388d2..a7d6083d339d 100644 --- a/packages/ui/src/components/session-turn.css +++ b/packages/ui/src/components/session-turn.css @@ -84,6 +84,35 @@ overflow-y: auto; } + [data-slot="session-turn-error-thinking"] { + display: flex; + flex-direction: column; + gap: 12px; + + > span { + white-space: pre-wrap; + overflow-wrap: anywhere; + word-break: break-word; + } + } + + [data-slot="session-turn-error-actions"] { + display: flex; + gap: 8px; + flex-wrap: wrap; + + [data-component="button"] { + gap: 6px; + color: var(--text-on-critical-base); + border-color: color-mix(in srgb, var(--text-on-critical-base) 30%, transparent); + background: color-mix(in srgb, var(--text-on-critical-base) 10%, transparent); + + &:hover { + background: color-mix(in srgb, var(--text-on-critical-base) 20%, transparent); + } + } + } + [data-slot="session-turn-assistant-content"] { width: 100%; min-width: 0; diff --git a/packages/ui/src/components/session-turn.tsx b/packages/ui/src/components/session-turn.tsx deleted file mode 100644 index f7ba20af5796..000000000000 --- a/packages/ui/src/components/session-turn.tsx +++ /dev/null @@ -1,540 +0,0 @@ -import { AssistantMessage, type FileDiff, Message as MessageType, Part as PartType } from "@opencode-ai/sdk/v2/client" -import type { SessionStatus } from "@opencode-ai/sdk/v2" -import { useData } from "../context" -import { useFileComponent } from "../context/file" - -import { Binary } from "@opencode-ai/util/binary" -import { getDirectory, getFilename } from "@opencode-ai/util/path" -import { createEffect, createMemo, createSignal, For, on, ParentProps, Show } from "solid-js" -import { createStore } from "solid-js/store" -import { Dynamic } from "solid-js/web" -import { AssistantParts, Message, MessageDivider, PART_MAPPING, type UserActions } from "./message-part" -import { Card } from "./card" -import { Accordion } from "./accordion" -import { StickyAccordionHeader } from "./sticky-accordion-header" -import { Collapsible } from "./collapsible" -import { DiffChanges } from "./diff-changes" -import { Icon } from "./icon" -import { TextShimmer } from "./text-shimmer" -import { SessionRetry } from "./session-retry" -import { TextReveal } from "./text-reveal" -import { createAutoScroll } from "../hooks" -import { useI18n } from "../context/i18n" - -function record(value: unknown): value is Record { - return !!value && typeof value === "object" && !Array.isArray(value) -} - -function unwrap(message: string) { - const text = message.replace(/^Error:\s*/, "").trim() - - const parse = (value: string) => { - try { - return JSON.parse(value) as unknown - } catch { - return undefined - } - } - - const read = (value: string) => { - const first = parse(value) - if (typeof first !== "string") return first - return parse(first.trim()) - } - - let json = read(text) - - if (json === undefined) { - const start = text.indexOf("{") - const end = text.lastIndexOf("}") - if (start !== -1 && end > start) { - json = read(text.slice(start, end + 1)) - } - } - - if (!record(json)) return message - - const err = record(json.error) ? json.error : undefined - if (err) { - const type = typeof err.type === "string" ? err.type : undefined - const msg = typeof err.message === "string" ? err.message : undefined - if (type && msg) return `${type}: ${msg}` - if (msg) return msg - if (type) return type - const code = typeof err.code === "string" ? err.code : undefined - if (code) return code - } - - const msg = typeof json.message === "string" ? json.message : undefined - if (msg) return msg - - const reason = typeof json.error === "string" ? json.error : undefined - if (reason) return reason - - return message -} - -function same(a: readonly T[], b: readonly T[]) { - if (a === b) return true - if (a.length !== b.length) return false - return a.every((x, i) => x === b[i]) -} - -function list(value: T[] | undefined | null, fallback: T[]) { - if (Array.isArray(value)) return value - return fallback -} - -const hidden = new Set(["todowrite", "todoread"]) - -function partState(part: PartType, showReasoningSummaries: boolean) { - if (part.type === "tool") { - if (hidden.has(part.tool)) return - if (part.tool === "question" && (part.state.status === "pending" || part.state.status === "running")) return - return "visible" as const - } - if (part.type === "text") return part.text?.trim() ? ("visible" as const) : undefined - if (part.type === "reasoning") { - if (showReasoningSummaries && part.text?.trim()) return "visible" as const - return - } - if (PART_MAPPING[part.type]) return "visible" as const - return -} - -function clean(value: string) { - return value - .replace(/`([^`]+)`/g, "$1") - .replace(/\[([^\]]+)\]\([^\)]+\)/g, "$1") - .replace(/[*_~]+/g, "") - .trim() -} - -function heading(text: string) { - const markdown = text.replace(/\r\n?/g, "\n") - - const html = markdown.match(/]*>([\s\S]*?)<\/h[1-6]>/i) - if (html?.[1]) { - const value = clean(html[1].replace(/<[^>]+>/g, " ")) - if (value) return value - } - - const atx = markdown.match(/^\s{0,3}#{1,6}[ \t]+(.+?)(?:[ \t]+#+[ \t]*)?$/m) - if (atx?.[1]) { - const value = clean(atx[1]) - if (value) return value - } - - const setext = markdown.match(/^([^\n]+)\n(?:=+|-+)\s*$/m) - if (setext?.[1]) { - const value = clean(setext[1]) - if (value) return value - } - - const strong = markdown.match(/^\s*(?:\*\*|__)(.+?)(?:\*\*|__)\s*$/m) - if (strong?.[1]) { - const value = clean(strong[1]) - if (value) return value - } -} - -export function SessionTurn( - props: ParentProps<{ - sessionID: string - messageID: string - messages?: MessageType[] - actions?: UserActions - showReasoningSummaries?: boolean - shellToolDefaultOpen?: boolean - editToolDefaultOpen?: boolean - active?: boolean - status?: SessionStatus - onUserInteracted?: () => void - classes?: { - root?: string - content?: string - container?: string - } - }>, -) { - const data = useData() - const i18n = useI18n() - const fileComponent = useFileComponent() - - const emptyMessages: MessageType[] = [] - const emptyParts: PartType[] = [] - const emptyAssistant: AssistantMessage[] = [] - const emptyDiffs: FileDiff[] = [] - const idle = { type: "idle" as const } - - const allMessages = createMemo(() => props.messages ?? list(data.store.message?.[props.sessionID], emptyMessages)) - - const messageIndex = createMemo(() => { - const messages = allMessages() ?? emptyMessages - const result = Binary.search(messages, props.messageID, (m) => m.id) - - const index = result.found ? result.index : messages.findIndex((m) => m.id === props.messageID) - if (index < 0) return -1 - - const msg = messages[index] - if (!msg || msg.role !== "user") return -1 - - return index - }) - - const message = createMemo(() => { - const index = messageIndex() - if (index < 0) return undefined - - const messages = allMessages() ?? emptyMessages - const msg = messages[index] - if (!msg || msg.role !== "user") return undefined - - return msg - }) - - const pending = createMemo(() => { - if (typeof props.active === "boolean") return - const messages = allMessages() ?? emptyMessages - return messages.findLast( - (item): item is AssistantMessage => item.role === "assistant" && typeof item.time.completed !== "number", - ) - }) - - const pendingUser = createMemo(() => { - const item = pending() - if (!item?.parentID) return - const messages = allMessages() ?? emptyMessages - const result = Binary.search(messages, item.parentID, (m) => m.id) - const msg = result.found ? messages[result.index] : messages.find((m) => m.id === item.parentID) - if (!msg || msg.role !== "user") return - return msg - }) - - const active = createMemo(() => { - if (typeof props.active === "boolean") return props.active - const msg = message() - const parent = pendingUser() - if (!msg || !parent) return false - return parent.id === msg.id - }) - - const parts = createMemo(() => { - const msg = message() - if (!msg) return emptyParts - return list(data.store.part?.[msg.id], emptyParts) - }) - - const compaction = createMemo(() => parts().find((part) => part.type === "compaction")) - - const diffs = createMemo(() => { - const files = message()?.summary?.diffs - if (!files?.length) return emptyDiffs - - const seen = new Set() - return files - .reduceRight((result, diff) => { - if (seen.has(diff.file)) return result - seen.add(diff.file) - result.push(diff) - return result - }, []) - .reverse() - }) - const edited = createMemo(() => diffs().length) - const [state, setState] = createStore({ - open: false, - expanded: [] as string[], - }) - const open = () => state.open - const expanded = () => state.expanded - - createEffect( - on( - open, - (value, prev) => { - if (!value && prev) setState("expanded", []) - }, - { defer: true }, - ), - ) - - const assistantMessages = createMemo( - () => { - const msg = message() - if (!msg) return emptyAssistant - - const messages = allMessages() ?? emptyMessages - const index = messageIndex() - if (index < 0) return emptyAssistant - - const result: AssistantMessage[] = [] - for (let i = index + 1; i < messages.length; i++) { - const item = messages[i] - if (!item) continue - if (item.role === "user") break - if (item.role === "assistant" && item.parentID === msg.id) result.push(item as AssistantMessage) - } - return result - }, - emptyAssistant, - { equals: same }, - ) - - const interrupted = createMemo(() => assistantMessages().some((m) => m.error?.name === "MessageAbortedError")) - const divider = createMemo(() => { - if (compaction()) return i18n.t("ui.messagePart.compaction") - if (interrupted()) return i18n.t("ui.message.interrupted") - return "" - }) - const error = createMemo( - () => assistantMessages().find((m) => m.error && m.error.name !== "MessageAbortedError")?.error, - ) - const showAssistantCopyPartID = createMemo(() => { - const messages = assistantMessages() - - for (let i = messages.length - 1; i >= 0; i--) { - const message = messages[i] - if (!message) continue - - const parts = list(data.store.part?.[message.id], emptyParts) - for (let j = parts.length - 1; j >= 0; j--) { - const part = parts[j] - if (!part || part.type !== "text" || !part.text?.trim()) continue - return part.id - } - } - - return undefined - }) - const errorText = createMemo(() => { - const msg = error()?.data?.message - if (typeof msg === "string") return unwrap(msg) - if (msg === undefined || msg === null) return "" - return unwrap(String(msg)) - }) - - const status = createMemo(() => { - if (props.status !== undefined) return props.status - if (typeof props.active === "boolean" && !props.active) return idle - return data.store.session_status[props.sessionID] ?? idle - }) - const working = createMemo(() => status().type !== "idle" && active()) - const showReasoningSummaries = createMemo(() => props.showReasoningSummaries ?? true) - - const assistantCopyPartID = createMemo(() => { - if (working()) return null - return showAssistantCopyPartID() ?? null - }) - const turnDurationMs = createMemo(() => { - const start = message()?.time.created - if (typeof start !== "number") return undefined - - const end = assistantMessages().reduce((max, item) => { - const completed = item.time.completed - if (typeof completed !== "number") return max - if (max === undefined) return completed - return Math.max(max, completed) - }, undefined) - - if (typeof end !== "number") return undefined - if (end < start) return undefined - return end - start - }) - const assistantDerived = createMemo(() => { - let visible = 0 - let tail: "text" | "other" | undefined - let reason: string | undefined - const show = showReasoningSummaries() - for (const message of assistantMessages()) { - for (const part of list(data.store.part?.[message.id], emptyParts)) { - if (partState(part, show) === "visible") { - visible++ - tail = part.type === "text" ? "text" : "other" - } - if (part.type === "reasoning" && part.text) { - const h = heading(part.text) - if (h) reason = h - } - } - } - return { visible, tail, reason } - }) - const assistantVisible = createMemo(() => assistantDerived().visible) - const assistantTailVisible = createMemo(() => assistantDerived().tail) - const reasoningHeading = createMemo(() => assistantDerived().reason) - const showThinking = createMemo(() => { - if (!working() || !!error()) return false - if (status().type === "retry") return false - if (showReasoningSummaries()) return assistantVisible() === 0 - return true - }) - - const autoScroll = createAutoScroll({ - working, - onUserInteracted: props.onUserInteracted, - overflowAnchor: "dynamic", - }) - - return ( -
    -
    -
    - -
    -
    - -
    - -
    - -
    -
    - 0}> -
    - -
    -
    - -
    - - - - -
    -
    - - 0 && !working()}> -
    - setState("open", value)} variant="ghost"> - -
    -
    - {i18n.t("ui.sessionReview.change.modified")} - - {edited()} {i18n.t(edited() === 1 ? "ui.common.file.one" : "ui.common.file.other")} - -
    - - -
    -
    -
    -
    - - -
    - - setState("expanded", Array.isArray(value) ? value : value ? [value] : []) - } - > - - {(diff) => { - const active = createMemo(() => expanded().includes(diff.file)) - const [visible, setVisible] = createSignal(false) - - createEffect( - on( - active, - (value) => { - if (!value) { - setVisible(false) - return - } - - requestAnimationFrame(() => { - if (!active()) return - setVisible(true) - }) - }, - { defer: true }, - ), - ) - - return ( - - - -
    - - - - {`\u202A${getDirectory(diff.file)}\u202C`} - - - {getFilename(diff.file)} - -
    - - - - - - -
    -
    -
    -
    - - -
    - -
    -
    -
    -
    - ) - }} -
    -
    -
    -
    -
    -
    -
    -
    - - - {errorText()} - - -
    -
    - {props.children} -
    -
    -
    - ) -} From 9b86c7c0a0f70bae95785a86fc813739423cee67 Mon Sep 17 00:00:00 2001 From: Prax Lannister Date: Wed, 25 Feb 2026 14:34:39 +0530 Subject: [PATCH 20/32] =?UTF-8?q?Revert=20"=F0=9F=90=9B=20fix(opencode):?= =?UTF-8?q?=20preserve=20thinking=20block=20signatures=20+=20configurable?= =?UTF-8?q?=20strategy=20UI"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 5b6069e45010b538f035c62762d1cbe5d33ba342. --- docs/09-temp/thinking-block-fix-design.md | 125 ++++++++++++++------ packages/opencode/src/config/config.ts | 7 -- packages/opencode/src/session/compaction.ts | 4 +- packages/ui/src/components/session-turn.css | 29 ----- 4 files changed, 94 insertions(+), 71 deletions(-) diff --git a/docs/09-temp/thinking-block-fix-design.md b/docs/09-temp/thinking-block-fix-design.md index 16aa713eddff..1c4ff7b13084 100644 --- a/docs/09-temp/thinking-block-fix-design.md +++ b/docs/09-temp/thinking-block-fix-design.md @@ -1,7 +1,7 @@ -# Design: Fix Thinking Block Error +# Design: Fix Thinking Block Error (Option D) **Date:** 2026-02-25 -**Status:** Implemented +**Status:** Approved — Ready to implement ## Problem When using Claude models with extended thinking, the API returns `thinking`/`redacted_thinking` blocks. When OpenCode replays these back (on next message or compaction), if they're modified during storage/retrieval, Claude rejects them: @@ -11,34 +11,93 @@ messages.3.content.1: `thinking` or `redacted_thinking` blocks in the latest ass Session becomes stuck — even compaction triggers the same error. -## Root Cause (verified via PR #14393) -1. **Bug 1:** `toModelMessages()` strips `providerMetadata` (including Bedrock thinking signatures) when `differentModel` is true — which always happens during compaction due to model ID format mismatch. -2. **Bug 2:** Asymmetric compaction buffer (20K vs 32K) causes compaction to trigger too late for some models. - -## Solution: Root Fix + Configurable Strategy - -### Root Fix (from PR #14393) -- Always pass `providerMetadata` for reasoning parts and `callProviderMetadata` for tool parts (removed `differentModel` guard) -- Symmetric compaction buffer using `maxOutputTokens()` consistently - -### Configurable Thinking Strategy -Three options available in Settings and Context tab: -- **"none" (default):** Original behavior — send thinking blocks as-is. With the root fix, signatures are now preserved correctly. -- **"strip":** Proactively remove thinking from last assistant message before sending. Prevents errors but loses thinking context. -- **"compact":** Preserve thinking but auto-compact on error. First message may fail, then auto-recovers. - -### Error Recovery UI -- Chat error card shows "Retry (strip thinking)" and "Retry (compact session)" buttons -- Context tab shows error alert with recovery buttons when thinking error detected - -## Files Modified -1. `message-v2.ts` — Root fix: always pass providerMetadata/callProviderMetadata + conditional strip logic -2. `compaction.ts` — Root fix: symmetric buffer calculation -3. `config.ts` — `thinking_strategy: "none" | "strip" | "compact"` config option -4. `prompt.ts` — Reads config, passes stripLastReasoning flag -5. `processor.ts` — Detects thinking errors, auto-compacts with "compact" strategy -6. `session-turn.tsx` — Error card with retry buttons -7. `session-turn.css` — Error button styles -8. `message-timeline.tsx` — Retry handler wiring -9. `settings-general.tsx` — Thinking Strategy dropdown -10. `session-context-tab.tsx` — Always-visible strategy selector + error recovery +## Root Cause +`MessageV2.toModelMessages()` stores reasoning parts as `{type: "reasoning", text: part.text}` but the original API response had `{type: "thinking", thinking: "..."}`. The reconstruction is not byte-identical. Claude's constraint only applies to the LAST assistant message. + +## Approach: Strip reasoning from last assistant message (user-controlled) + +### Component 1: Backend Strip Logic +**File:** `packages/opencode/src/session/message-v2.ts` + +In `toModelMessages()`, add optional `stripLastReasoning` parameter: +```typescript +export function toModelMessages(input: WithParts[], model: Provider.Model, opts?: { stripLastReasoning?: boolean }): ModelMessage[] { + // ... existing code ... + + // Before return, if stripLastReasoning: + if (opts?.stripLastReasoning) { + const lastAssistantIdx = result.findLastIndex((msg) => msg.role === "assistant") + if (lastAssistantIdx !== -1) { + result[lastAssistantIdx].parts = result[lastAssistantIdx].parts.filter((p) => p.type !== "reasoning") + if (result[lastAssistantIdx].parts.length === 0 || result[lastAssistantIdx].parts.every((p) => p.type === "step-start")) { + result.splice(lastAssistantIdx, 1) + } + } + } + + return convertToModelMessages(...) +} +``` + +### Component 2: Config Setting +**File:** `packages/opencode/src/config/config.ts` + +Add to appearance/compaction config: +```typescript +strip_thinking_on_error: z.boolean().optional().default(false).describe("Automatically strip thinking blocks when API error occurs") +``` + +### Component 3: Auto-Retry in Processor +**File:** `packages/opencode/src/session/processor.ts` + +In the catch block (~line 350), detect the specific error: +```typescript +const isThinkingError = e?.message?.includes("thinking") && e?.message?.includes("cannot be modified") +if (isThinkingError) { + const config = await Config.get() + if (config.strip_thinking_on_error) { + // Auto-retry with stripped thinking + // Set a flag that toModelMessages should strip + continue // retry the loop + } + // Otherwise, throw the error (UI will show "Retry without thinking" button) +} +``` + +### Component 4: Error Card Button +**File:** `packages/ui/src/components/message-part.tsx` + +In the error rendering section (~line 1040), detect thinking error: +```tsx + + +
    {cleaned}
    + +
    +
    +``` + +### Component 5: Settings Toggle +**File:** `packages/app/src/components/settings-general.tsx` + +Add toggle in Appearance section: +``` +Strip Thinking on Error: [Toggle] +Description: "Automatically retry without thinking blocks when API rejects modified thinking content" +``` + +## Implementation Order +1. Backend strip logic (message-v2.ts) +2. Config setting (config.ts) +3. Auto-retry logic (processor.ts) +4. Error card button (message-part.tsx) +5. Settings toggle (settings-general.tsx) + +## Testing +- Reproduce with Claude Opus in long conversation +- Verify error → button appears +- Click button → retries successfully +- Enable auto-mode → errors auto-recover +- Compaction still works after fix diff --git a/packages/opencode/src/config/config.ts b/packages/opencode/src/config/config.ts index bfcd0202fd01..c464fcb64ab8 100644 --- a/packages/opencode/src/config/config.ts +++ b/packages/opencode/src/config/config.ts @@ -1204,13 +1204,6 @@ export namespace Config { .min(0) .optional() .describe("Token buffer for compaction. Leaves enough window to avoid overflow during compaction."), - thinking_strategy: z - .enum(["none", "strip", "compact"]) - .optional() - .default("none") - .describe( - "Strategy for handling thinking blocks that cause API errors. 'none' (default) sends thinking blocks as-is (original behavior). 'strip' removes thinking from last message before sending (prevents errors proactively). 'compact' preserves thinking but auto-compacts on error (retries with summarized context).", - ), }) .optional(), experimental: z diff --git a/packages/opencode/src/session/compaction.ts b/packages/opencode/src/session/compaction.ts index e04973eb09e3..072ea1d574e8 100644 --- a/packages/opencode/src/session/compaction.ts +++ b/packages/opencode/src/session/compaction.ts @@ -41,10 +41,10 @@ export namespace SessionCompaction { input.tokens.input + input.tokens.output + input.tokens.cache.read + input.tokens.cache.write const reserved = - config.compaction?.reserved ?? ProviderTransform.maxOutputTokens(input.model) + config.compaction?.reserved ?? Math.min(COMPACTION_BUFFER, ProviderTransform.maxOutputTokens(input.model)) const usable = input.model.limit.input ? input.model.limit.input - reserved - : context - reserved + : context - ProviderTransform.maxOutputTokens(input.model) return count >= usable } diff --git a/packages/ui/src/components/session-turn.css b/packages/ui/src/components/session-turn.css index a7d6083d339d..84dff76388d2 100644 --- a/packages/ui/src/components/session-turn.css +++ b/packages/ui/src/components/session-turn.css @@ -84,35 +84,6 @@ overflow-y: auto; } - [data-slot="session-turn-error-thinking"] { - display: flex; - flex-direction: column; - gap: 12px; - - > span { - white-space: pre-wrap; - overflow-wrap: anywhere; - word-break: break-word; - } - } - - [data-slot="session-turn-error-actions"] { - display: flex; - gap: 8px; - flex-wrap: wrap; - - [data-component="button"] { - gap: 6px; - color: var(--text-on-critical-base); - border-color: color-mix(in srgb, var(--text-on-critical-base) 30%, transparent); - background: color-mix(in srgb, var(--text-on-critical-base) 10%, transparent); - - &:hover { - background: color-mix(in srgb, var(--text-on-critical-base) 20%, transparent); - } - } - } - [data-slot="session-turn-assistant-content"] { width: 100%; min-width: 0; From d0ad077811c8ce680da100a71c7c487c06d2b6dc Mon Sep 17 00:00:00 2001 From: Prax Lannister Date: Wed, 25 Feb 2026 14:35:00 +0530 Subject: [PATCH 21/32] =?UTF-8?q?Revert=20"=F0=9F=90=9B=20fix(opencode):?= =?UTF-8?q?=20strip=20thinking=20blocks=20from=20last=20assistant=20messag?= =?UTF-8?q?e"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 18b9492bbce191d5b0f2b4b5c81a7ad726afca55. --- docs/09-temp/thinking-block-fix-design.md | 103 ---------------------- 1 file changed, 103 deletions(-) delete mode 100644 docs/09-temp/thinking-block-fix-design.md diff --git a/docs/09-temp/thinking-block-fix-design.md b/docs/09-temp/thinking-block-fix-design.md deleted file mode 100644 index 1c4ff7b13084..000000000000 --- a/docs/09-temp/thinking-block-fix-design.md +++ /dev/null @@ -1,103 +0,0 @@ -# Design: Fix Thinking Block Error (Option D) - -**Date:** 2026-02-25 -**Status:** Approved — Ready to implement - -## Problem -When using Claude models with extended thinking, the API returns `thinking`/`redacted_thinking` blocks. When OpenCode replays these back (on next message or compaction), if they're modified during storage/retrieval, Claude rejects them: -``` -messages.3.content.1: `thinking` or `redacted_thinking` blocks in the latest assistant message cannot be modified -``` - -Session becomes stuck — even compaction triggers the same error. - -## Root Cause -`MessageV2.toModelMessages()` stores reasoning parts as `{type: "reasoning", text: part.text}` but the original API response had `{type: "thinking", thinking: "..."}`. The reconstruction is not byte-identical. Claude's constraint only applies to the LAST assistant message. - -## Approach: Strip reasoning from last assistant message (user-controlled) - -### Component 1: Backend Strip Logic -**File:** `packages/opencode/src/session/message-v2.ts` - -In `toModelMessages()`, add optional `stripLastReasoning` parameter: -```typescript -export function toModelMessages(input: WithParts[], model: Provider.Model, opts?: { stripLastReasoning?: boolean }): ModelMessage[] { - // ... existing code ... - - // Before return, if stripLastReasoning: - if (opts?.stripLastReasoning) { - const lastAssistantIdx = result.findLastIndex((msg) => msg.role === "assistant") - if (lastAssistantIdx !== -1) { - result[lastAssistantIdx].parts = result[lastAssistantIdx].parts.filter((p) => p.type !== "reasoning") - if (result[lastAssistantIdx].parts.length === 0 || result[lastAssistantIdx].parts.every((p) => p.type === "step-start")) { - result.splice(lastAssistantIdx, 1) - } - } - } - - return convertToModelMessages(...) -} -``` - -### Component 2: Config Setting -**File:** `packages/opencode/src/config/config.ts` - -Add to appearance/compaction config: -```typescript -strip_thinking_on_error: z.boolean().optional().default(false).describe("Automatically strip thinking blocks when API error occurs") -``` - -### Component 3: Auto-Retry in Processor -**File:** `packages/opencode/src/session/processor.ts` - -In the catch block (~line 350), detect the specific error: -```typescript -const isThinkingError = e?.message?.includes("thinking") && e?.message?.includes("cannot be modified") -if (isThinkingError) { - const config = await Config.get() - if (config.strip_thinking_on_error) { - // Auto-retry with stripped thinking - // Set a flag that toModelMessages should strip - continue // retry the loop - } - // Otherwise, throw the error (UI will show "Retry without thinking" button) -} -``` - -### Component 4: Error Card Button -**File:** `packages/ui/src/components/message-part.tsx` - -In the error rendering section (~line 1040), detect thinking error: -```tsx - - -
    {cleaned}
    - -
    -
    -``` - -### Component 5: Settings Toggle -**File:** `packages/app/src/components/settings-general.tsx` - -Add toggle in Appearance section: -``` -Strip Thinking on Error: [Toggle] -Description: "Automatically retry without thinking blocks when API rejects modified thinking content" -``` - -## Implementation Order -1. Backend strip logic (message-v2.ts) -2. Config setting (config.ts) -3. Auto-retry logic (processor.ts) -4. Error card button (message-part.tsx) -5. Settings toggle (settings-general.tsx) - -## Testing -- Reproduce with Claude Opus in long conversation -- Verify error → button appears -- Click button → retries successfully -- Enable auto-mode → errors auto-recover -- Compaction still works after fix From a1677132393611bb6b16af0db5102593faf38d7b Mon Sep 17 00:00:00 2001 From: Gyorgy Nadaban Date: Fri, 20 Feb 2026 08:54:41 +0100 Subject: [PATCH 22/32] fix: preserve thinking block signatures and fix compaction headroom asymmetry MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two compounding bugs caused sessions to crash with 'thinking blocks cannot be modified' when compaction fired for models with extended thinking: 1. toModelMessages() stripped providerMetadata (including cryptographic signatures) from message parts when the current model differed from the original. Anthropic's API requires signatures to be byte-identical. Fix: always pass providerMetadata through — the API handles filtering. 2. isOverflow() used an asymmetric buffer when limit.input was set (capped at 20K via COMPACTION_BUFFER) vs the full maxOutputTokens on the non-input path. This caused compaction to trigger too late. Fix: use maxOutputTokens (capped at 32K) for both paths. Also fixed the non-input path to respect config.compaction.reserved. --- packages/opencode/src/session/compaction.ts | 13 +- .../opencode/test/session/compaction.test.ts | 22 +-- .../opencode/test/session/message-v2.test.ts | 183 +++++++++++++++++- 3 files changed, 196 insertions(+), 22 deletions(-) diff --git a/packages/opencode/src/session/compaction.ts b/packages/opencode/src/session/compaction.ts index 072ea1d574e8..4df9ab3de1d4 100644 --- a/packages/opencode/src/session/compaction.ts +++ b/packages/opencode/src/session/compaction.ts @@ -28,8 +28,6 @@ export namespace SessionCompaction { ), } - const COMPACTION_BUFFER = 20_000 - export async function isOverflow(input: { tokens: MessageV2.Assistant["tokens"]; model: Provider.Model }) { const config = await Config.get() if (config.compaction?.auto === false) return false @@ -40,11 +38,12 @@ export namespace SessionCompaction { input.tokens.total || input.tokens.input + input.tokens.output + input.tokens.cache.read + input.tokens.cache.write - const reserved = - config.compaction?.reserved ?? Math.min(COMPACTION_BUFFER, ProviderTransform.maxOutputTokens(input.model)) - const usable = input.model.limit.input - ? input.model.limit.input - reserved - : context - ProviderTransform.maxOutputTokens(input.model) + // Reserve headroom so compaction triggers before the next turn overflows. + // maxOutputTokens() is capped at 32K (OUTPUT_TOKEN_MAX) regardless of the + // model's raw output limit, so this is never excessively aggressive. + // Users can override via config.compaction.reserved if needed (#12924). + const reserved = config.compaction?.reserved ?? ProviderTransform.maxOutputTokens(input.model) + const usable = input.model.limit.input ? input.model.limit.input - reserved : context - reserved return count >= usable } diff --git a/packages/opencode/test/session/compaction.test.ts b/packages/opencode/test/session/compaction.test.ts index 452926d12e1b..90fa5c49705d 100644 --- a/packages/opencode/test/session/compaction.test.ts +++ b/packages/opencode/test/session/compaction.test.ts @@ -113,19 +113,19 @@ describe("session.compaction.isOverflow", () => { }) }) - // ─── Bug reproduction tests ─────────────────────────────────────────── - // These tests demonstrate that when limit.input is set, isOverflow() - // does not subtract any headroom for the next model response. This means - // compaction only triggers AFTER we've already consumed the full input - // budget, leaving zero room for the next API call's output tokens. + // ─── Headroom reservation tests ────────────────────────────────────── + // These tests verify that when limit.input is set, isOverflow() + // correctly reserves headroom (maxOutputTokens, capped at 32K) so + // compaction triggers before the next API call overflows. // - // Compare: without limit.input, usable = context - output (reserves space). - // With limit.input, usable = limit.input (reserves nothing). + // Previously (bug), the limit.input path only subtracted a 20K buffer + // while the non-input path subtracted the full maxOutputTokens — an + // asymmetry that let sessions grow ~12K tokens too large before compacting. // // Related issues: #10634, #8089, #11086, #12621 // Open PRs: #6875, #12924 - test("BUG: no headroom when limit.input is set — compaction should trigger near boundary but does not", async () => { + test("no headroom when limit.input is set — compaction should trigger near boundary", async () => { await using tmp = await tmpdir() await Instance.provide({ directory: tmp.path, @@ -151,7 +151,7 @@ describe("session.compaction.isOverflow", () => { }) }) - test("BUG: without limit.input, same token count correctly triggers compaction", async () => { + test("without limit.input, same token count correctly triggers compaction", async () => { await using tmp = await tmpdir() await Instance.provide({ directory: tmp.path, @@ -171,7 +171,7 @@ describe("session.compaction.isOverflow", () => { }) }) - test("BUG: asymmetry — limit.input model allows 30K more usage before compaction than equivalent model without it", async () => { + test("asymmetry — limit.input model does not allow more usage than equivalent model without it", async () => { await using tmp = await tmpdir() await Instance.provide({ directory: tmp.path, @@ -180,7 +180,7 @@ describe("session.compaction.isOverflow", () => { const withInputLimit = createModel({ context: 200_000, input: 200_000, output: 32_000 }) const withoutInputLimit = createModel({ context: 200_000, output: 32_000 }) - // 170K total tokens — well above context-output (168K) but below input limit (200K) + // 181K total tokens — above usable (context - maxOutput = 168K) const tokens = { input: 166_000, output: 10_000, reasoning: 0, cache: { read: 5_000, write: 0 } } const withLimit = await SessionCompaction.isOverflow({ tokens, model: withInputLimit }) diff --git a/packages/opencode/test/session/message-v2.test.ts b/packages/opencode/test/session/message-v2.test.ts index 0d5b89730a98..8a7465860bd4 100644 --- a/packages/opencode/test/session/message-v2.test.ts +++ b/packages/opencode/test/session/message-v2.test.ts @@ -57,6 +57,17 @@ const model: Provider.Model = { release_date: "2026-01-01", } +const model2: Provider.Model = { + ...model, + id: "other-model", + providerID: "other", + api: { + ...model.api, + id: "other-model", + }, + name: "Other Model", +} + function userInfo(id: string): MessageV2.User { return { id, @@ -359,7 +370,90 @@ describe("session.message-v2.toModelMessage", () => { ]) }) - test("omits provider metadata when assistant model differs", () => { + test("preserves reasoning providerMetadata when model matches", () => { + const assistantID = "m-assistant" + + const input: MessageV2.WithParts[] = [ + { + info: assistantInfo(assistantID, "m-parent"), + parts: [ + { + ...basePart(assistantID, "a1"), + type: "reasoning", + text: "thinking", + metadata: { openai: { signature: "sig-match" } }, + time: { start: 0 }, + }, + ] as MessageV2.Part[], + }, + ] + + expect(MessageV2.toModelMessages(input, model)).toStrictEqual([ + { + role: "assistant", + content: [{ type: "reasoning", text: "thinking", providerOptions: { openai: { signature: "sig-match" } } }], + }, + ]) + }) + + test("preserves reasoning providerMetadata when model differs", () => { + const assistantID = "m-assistant" + + const input: MessageV2.WithParts[] = [ + { + info: assistantInfo(assistantID, "m-parent", undefined, { + providerID: model2.providerID, + modelID: model2.api.id, + }), + parts: [ + { + ...basePart(assistantID, "a1"), + type: "reasoning", + text: "thinking", + metadata: { openai: { signature: "sig-different" } }, + time: { start: 0 }, + }, + ] as MessageV2.Part[], + }, + ] + + expect(MessageV2.toModelMessages(input, model)).toStrictEqual([ + { + role: "assistant", + content: [{ type: "reasoning", text: "thinking", providerOptions: { openai: { signature: "sig-different" } } }], + }, + ]) + }) + + test("preserves text providerMetadata when model differs", () => { + const assistantID = "m-assistant" + + const input: MessageV2.WithParts[] = [ + { + info: assistantInfo(assistantID, "m-parent", undefined, { + providerID: model2.providerID, + modelID: model2.api.id, + }), + parts: [ + { + ...basePart(assistantID, "a1"), + type: "text", + text: "done", + metadata: { openai: { assistant: "meta" } }, + }, + ] as MessageV2.Part[], + }, + ] + + expect(MessageV2.toModelMessages(input, model)).toStrictEqual([ + { + role: "assistant", + content: [{ type: "text", text: "done", providerOptions: { openai: { assistant: "meta" } } }], + }, + ]) + }) + + test("preserves tool callProviderMetadata when model differs", () => { const userID = "m-user" const assistantID = "m-assistant" @@ -375,16 +469,97 @@ describe("session.message-v2.toModelMessage", () => { ] as MessageV2.Part[], }, { - info: assistantInfo(assistantID, userID, undefined, { providerID: "other", modelID: "other" }), + info: assistantInfo(assistantID, userID, undefined, { + providerID: model2.providerID, + modelID: model2.api.id, + }), + parts: [ + { + ...basePart(assistantID, "a1"), + type: "tool", + callID: "call-1", + tool: "bash", + state: { + status: "completed", + input: { cmd: "ls" }, + output: "ok", + title: "Bash", + metadata: {}, + time: { start: 0, end: 1 }, + }, + metadata: { openai: { tool: "meta" } }, + }, + ] as MessageV2.Part[], + }, + ] + + expect(MessageV2.toModelMessages(input, model)).toStrictEqual([ + { + role: "user", + content: [{ type: "text", text: "run tool" }], + }, + { + role: "assistant", + content: [ + { + type: "tool-call", + toolCallId: "call-1", + toolName: "bash", + input: { cmd: "ls" }, + providerExecuted: undefined, + providerOptions: { openai: { tool: "meta" } }, + }, + ], + }, + { + role: "tool", + content: [ + { + type: "tool-result", + toolCallId: "call-1", + toolName: "bash", + output: { type: "text", value: "ok" }, + providerOptions: { openai: { tool: "meta" } }, + }, + ], + }, + ]) + }) + + test("handles undefined metadata gracefully", () => { + const userID = "m-user" + const assistantID = "m-assistant" + + const input: MessageV2.WithParts[] = [ + { + info: userInfo(userID), + parts: [ + { + ...basePart(userID, "u1"), + type: "text", + text: "run tool", + }, + ] as MessageV2.Part[], + }, + { + info: assistantInfo(assistantID, userID, undefined, { + providerID: model2.providerID, + modelID: model2.api.id, + }), parts: [ { ...basePart(assistantID, "a1"), type: "text", text: "done", - metadata: { openai: { assistant: "meta" } }, }, { ...basePart(assistantID, "a2"), + type: "reasoning", + text: "thinking", + time: { start: 0 }, + }, + { + ...basePart(assistantID, "a3"), type: "tool", callID: "call-1", tool: "bash", @@ -396,7 +571,6 @@ describe("session.message-v2.toModelMessage", () => { metadata: {}, time: { start: 0, end: 1 }, }, - metadata: { openai: { tool: "meta" } }, }, ] as MessageV2.Part[], }, @@ -411,6 +585,7 @@ describe("session.message-v2.toModelMessage", () => { role: "assistant", content: [ { type: "text", text: "done" }, + { type: "reasoning", text: "thinking", providerOptions: undefined }, { type: "tool-call", toolCallId: "call-1", From beda4601f262dfbba41da425b372fb4ca06bf3be Mon Sep 17 00:00:00 2001 From: Prax Lannister Date: Wed, 25 Feb 2026 21:21:49 +0530 Subject: [PATCH 23/32] fix: prevent infinite retry loops, surface subagent errors, handle Bedrock undefined messages - processor.ts: add MAX_RETRIES=10 cap to prevent infinite retry storms (Issue #1) - processor.ts: preserve metadata on tool-error state updates (Issue #8) - error.ts: handle Bedrock literal 'undefined' message for overflow detection (Issue #2) - task.ts: check result.info.error to surface subagent failures to parent (Issue #3) - test/provider/error.test.ts: 17 tests covering parseAPICallError + parseStreamError - docs/09-temp/issues.md: full RCA documentation for 9 identified issues --- AI_REVIEW.md | 1732 +++++++++++++++++ docs/09-temp/issues.md | 601 ++++++ packages/opencode/src/provider/error.ts | 2 +- packages/opencode/src/tool/task.ts | 18 + packages/opencode/test/provider/error.test.ts | 242 +++ 5 files changed, 2594 insertions(+), 1 deletion(-) create mode 100644 AI_REVIEW.md create mode 100644 docs/09-temp/issues.md create mode 100644 packages/opencode/test/provider/error.test.ts diff --git a/AI_REVIEW.md b/AI_REVIEW.md new file mode 100644 index 000000000000..d80211d30bd6 --- /dev/null +++ b/AI_REVIEW.md @@ -0,0 +1,1732 @@ +# 🔍 Code Review - 2/25/2026, 9:17:47 PM + +**Project:** AI Visual Code Review +**Generated by:** AI Visual Code Review v2.0 + +## 📊 Change Summary + +``` +AI_REVIEW.md | 798 ++++++++++++++++++++++++++ + docs/09-temp/issues.md | 601 +++++++++++++++++++ + packages/opencode/src/provider/error.ts | 2 +- + packages/opencode/src/session/processor.ts | 19 + + packages/opencode/src/tool/task.ts | 18 + + packages/opencode/test/provider/error.test.ts | 106 ++++ + 6 files changed, 1543 insertions(+), 1 deletion(-) +``` + +## 📝 Files Changed (6 selected) + + +### ✨ `AI_REVIEW.md` **[ADDED]** + +**Status:** ✅ **NEW FILE** - This file has been newly created + +**Type:** Documentation 📖 + +```diff +@@ -0,0 +1,798 @@ + 1 +# 🔍 Code Review - 2/25/2026, 9:13:40 PM + 2 + + 3 +**Project:** AI Visual Code Review + 4 +**Generated by:** AI Visual Code Review v2.0 + 5 + + 6 +## 📊 Change Summary + 7 + + 8 +``` + 9 +docs/09-temp/issues.md | 601 +++++++++++++++++++++++++++++ + 10 + packages/opencode/src/provider/error.ts | 2 +- + 11 + packages/opencode/src/session/processor.ts | 19 + + 12 + packages/opencode/src/tool/task.ts | 16 + + 13 + 4 files changed, 637 insertions(+), 1 deletion(-) + 14 +``` + 15 + + 16 +## 📝 Files Changed (4 selected) + 17 + + 18 + + 19 +### ✨ `docs/09-temp/issues.md` **[ADDED]** + 20 + + 21 +**Status:** ✅ **NEW FILE** - This file has been newly created + 22 + + 23 +**Type:** Documentation 📖 + 24 + + 25 +```diff + 26 +@@ -0,0 +1,601 @@ + 27 + 1 +# OpenCode — Parallel Agent & Retry Storm Issues + 28 + 2 + + 29 + 3 +> **Created**: 2025-02-25 + 30 + 4 +> **Source**: Combined RCA by Cline + Antigravity + 31 + 5 +> **Status**: Approved for implementation + 32 + 6 + + 33 + 7 +--- + 34 + 8 + + 35 + 9 +## Issue #1: `processor-max-retries` — Infinite Retry Loop in processor.ts + 36 + 10 + + 37 + 11 +### Priority: P0 — Stop The Bleeding + 38 + 12 + + 39 + 13 +### What is the issue? + 40 + 14 +The session processor retries failed API calls in an infinite `while(true)` loop with **no maximum retry count**. When an error is classified as "retryable" by `retry.ts`, the processor will retry it forever — user observed **2,244 identical retries over 3.5 hours** before manual abort. + 41 + 15 + + 42 + 16 +### What is the bug? + 43 + 17 +`packages/opencode/src/session/processor.ts` line ~53 has a `while(true)` loop. When the catch block determines an error is retryable via `SessionRetry.retryable(error)`, it increments `attempt` and `continue`s the loop. There is **no guard** like `if (attempt >= MAX_RETRIES) break`. + 44 + 18 + + 45 + 19 +### Where it can happen? + 46 + 20 +- Any API call that returns a retryable error (transient network issues, rate limits, Bedrock context overflow misclassified as retryable) + 47 + 21 +- Most critically: Bedrock "prompt is too long" errors that get misclassified as retryable by the catch-all in `retry.ts` (see Issue #2) + 48 + 22 +- Affects both parent sessions and subagent sessions independently + 49 + 23 + + 50 + 24 +### What any agent needs to look for? + 51 + 25 +``` + 52 + 26 +File: packages/opencode/src/session/processor.ts + 53 + 27 +Location: The while(true) loop (~line 53) + 54 + 28 +Pattern: Look for the catch block that calls SessionRetry.retryable() and does `continue` + 55 + 29 +``` + 56 + 30 + + 57 + 31 +### How to make the fix? + 58 + 32 +Add a `MAX_RETRIES` constant and guard before the `continue`: + 59 + 33 + + 60 + 34 +```typescript + 61 + 35 +// At top of file or inside the function + 62 + 36 +const MAX_RETRIES = 10 + 63 + 37 + + 64 + 38 +// Inside the catch block, before `continue`: + 65 + 39 +if (attempt >= MAX_RETRIES) { + 66 + 40 + input.assistantMessage.error = { + 67 + 41 + name: "RetryLimitExceeded", + 68 + 42 + message: `Maximum retries (${MAX_RETRIES}) exceeded. Last error: ${retry}`, + 69 + 43 + } + 70 + 44 + break + 71 + 45 +} + 72 + 46 +``` + 73 + 47 + + 74 + 48 +The error should be stored on `input.assistantMessage.error` so the session stops and the UI shows the error. Make sure the status is set to idle after breaking. + 75 + 49 + + 76 + 50 +### Testing + 77 + 51 +- Trigger a retryable error (e.g., rate limit) and verify it stops after 10 attempts + 78 + 52 +- Verify the error message appears in the session UI + 79 + 53 +- Verify the session status returns to "idle" (not stuck in "retry") + 80 + 54 + + 81 + 55 +--- + 82 + 56 + + 83 + 57 +## Issue #2: `bedrock-undefined-message` — error.ts Fails to Parse Bedrock Error Messages + 84 + 58 + + 85 + 59 +### Priority: P0 — Stop The Bleeding + 86 + 60 + + 87 + 61 +### What is the issue? + 88 + 62 +When Amazon Bedrock returns an API error (e.g., "prompt is too long"), the `message()` function in `error.ts` receives `e.message = "undefined"` (the literal string, not the JS undefined value). The function only checks for empty string `""`, so it passes `"undefined"` through to `isOverflow()`, which fails to match any overflow pattern. This means **Bedrock context overflow errors are never detected as overflow**, preventing compaction from triggering. + 89 + 63 + + 90 + 64 +### What is the bug? + 91 + 65 +`packages/opencode/src/provider/error.ts` function `message()` (~line 50-80): + 92 + 66 +```typescript + 93 + 67 +const msg = e.message + 94 + 68 +if (msg === "") { + 95 + 69 + if (e.responseBody) return e.responseBody + 96 + 70 + // ... + 97 + 71 +} + 98 + 72 +``` + 99 + 73 +When Bedrock SDK sets `e.message` to the literal string `"undefined"`, this check passes through. The actual error details are in `e.responseBody` but never extracted. + 100 + 74 + + 101 + 75 +### Where it can happen? + 102 + 76 +- Any Bedrock API call that returns an error (context overflow, validation errors, throttling) + 103 + 77 +- The Bedrock SDK wraps errors differently than the Anthropic direct SDK + 104 + 78 +- Specifically observed with "prompt is too long: 208845 tokens > 200000 maximum" errors + 105 + 79 + + 106 + 80 +### What any agent needs to look for? + 107 + 81 +``` + 108 + 82 +File: packages/opencode/src/provider/error.ts + 109 + 83 +Location: The message() function, specifically the `if (msg === "")` check + 110 + 84 +Also check: isOverflow() function and the OVERFLOW_PATTERNS regex + 111 + 85 +``` + 112 + 86 + + 113 + 87 +### How to make the fix? + 114 + 88 +Extend the empty-message check to also handle `"undefined"`: + 115 + 89 + + 116 + 90 +```typescript + 117 + 91 +function message(providerID: string, e: APICallError) { + 118 + 92 + return iife(() => { + 119 + 93 + const msg = e.message + 120 + 94 + if (msg === "" || msg === "undefined") { + 121 + 95 + if (e.responseBody) return e.responseBody + 122 + 96 + // ... rest of existing fallback logic + 123 + 97 + } + 124 + 98 + return msg + 125 + 99 + }) + 126 + 100 +} + 127 + 101 +``` + 128 + 102 + + 129 + 103 +This ensures the actual error body (which contains "prompt is too long") is used for overflow detection instead of the meaningless `"undefined"` string. + 130 + 104 + + 131 + 105 +### Testing + 132 + 106 +- Mock a Bedrock APICallError with `message: "undefined"` and `responseBody: "prompt is too long: 208845 tokens > 200000 maximum"` + 133 + 107 +- Verify `message()` returns the responseBody, not `"undefined"` + 134 + 108 +- Verify `isOverflow()` correctly detects the overflow pattern from the responseBody + 135 + 109 + + 136 + 110 +--- + 137 + 111 + + 138 + 112 +## Issue #3: `task-swallows-errors` — task.ts Silently Swallows Subagent Failures + 139 + 113 + + 140 + 114 +### Priority: P0 — Stop The Bleeding + 141 + 115 + + 142 + 116 +### What is the issue? + 143 + 117 +When a subagent (child session spawned by the `task` tool) fails with an error, the parent session shows it as **successfully completed with empty output**. The user sees a green ✅ checkmark for a task that actually errored. This is THE primary cause of "failures not reflected in main chat." + 144 + 118 + + 145 + 119 +### What is the bug? + 146 + 120 +`packages/opencode/src/tool/task.ts` line ~145: + 147 + 121 +```typescript + 148 + 122 +const result = await SessionPrompt.prompt({...}) + 149 + 123 +const text = result.parts.findLast((x) => x.type === "text")?.text ?? "" + 150 + 124 +``` + 151 + 125 + + 152 + 126 +`result.info` contains an `.error` field when the child session errored (set by `processor.ts` at `input.assistantMessage.error = error`). But `task.ts` **never checks `result.info.error`** — it only looks for text parts. When the child errored, there are no text parts, so `text = ""`, and the parent receives `\n\n` as a "successful" empty result. + 153 + 127 + + 154 + 128 +### Where it can happen? + 155 + 129 +- Any subagent failure: context overflow, API error, tool execution error, rate limit + 156 + 130 +- Parallel subagents: if 1 of 3 subagents fails, parent sees 3 "completed" tasks with one having empty output + 157 + 131 +- The parent LLM may then hallucinate that the task completed or silently move on + 158 + 132 + + 159 + 133 +### What any agent needs to look for? + 160 + 134 +``` + 161 + 135 +File: packages/opencode/src/tool/task.ts + 162 + 136 +Location: After the `SessionPrompt.prompt()` call, before building the output + 163 + 137 +Pattern: result.info should have an error field — check result.info type definition + 164 + 138 +Also check: packages/opencode/src/session/prompt.ts for the return type of prompt() + 165 + 139 +``` + 166 + 140 + + 167 + 141 +### How to make the fix? + 168 + 142 +Add an error check immediately after the `SessionPrompt.prompt()` call: + 169 + 143 + + 170 + 144 +```typescript + 171 + 145 +const result = await SessionPrompt.prompt({...}) + 172 + 146 + + 173 + 147 +// Check if child session errored + 174 + 148 +if (result.info.error) { + 175 + 149 + const error = result.info.error + 176 + 150 + const msg = error.message ?? error.name ?? "Subagent task failed" + 177 + 151 + return { + 178 + 152 + title: params.description, + 179 + 153 + metadata: { sessionId: session.id, model }, + 180 + 154 + output: [ + 181 + 155 + `task_id: ${session.id}`, + 182 + 156 + "", + 183 + 157 + "", + 184 + 158 + `ERROR: ${msg}`, + 185 + 159 + `The subtask encountered an error and could not complete.`, + 186 + 160 + "", + 187 + 161 + ].join("\n"), + 188 + 162 + } + 189 + 163 +} + 190 + 164 + + 191 + 165 +const text = result.parts.findLast((x) => x.type === "text")?.text ?? "" + 192 + 166 +``` + 193 + 167 + + 194 + 168 +**Important**: Check the actual type of `result.info` to use proper typing instead of `(result.info as any).error`. Look at how `processor.ts` sets the error on `input.assistantMessage.error` to understand the shape. + 195 + 169 + + 196 + 170 +### Testing + 197 + 171 +- Trigger a subagent error (e.g., invalid tool call, context overflow) + 198 + 172 +- Verify the parent session shows "ERROR: ..." in the task result, not empty + 199 + 173 +- Verify the parent LLM receives the error and can report it to the user + 200 + 174 + + 201 + 175 +--- + 202 + 176 + + 203 + 177 +## Issue #4: `bedrock-context-cap` — Bedrock Provider Missing Context Limit Override + 204 + 178 + + 205 + 179 +### Priority: P0 — This Sprint + 206 + 180 + + 207 + 181 +### What is the issue? + 208 + 182 +The `models-snapshot.ts` file (auto-generated from models.dev) lists Claude Opus 4.6 on Bedrock with `context: 1,000,000`. This is the model's capability WITH the `context-1m` beta header. However, the Bedrock provider handler in `provider.ts` **never sends the 1M beta header**, so Bedrock actually enforces a 200K limit. The result: UI shows "20% context usage" when the user is actually at 100% of the real limit, and compaction never triggers. + 209 + 183 + + 210 + 184 +### What is the bug? + 211 + 185 +Two bugs combine: + 212 + 186 + + 213 + 187 +1. **`models-snapshot.ts`** lists Opus 4.6 Bedrock models at 1M context (reflects model capability, not runtime limit) + 214 + 188 +2. **`provider.ts`** `"amazon-bedrock"` handler has NO logic to: + 215 + 189 + - Send `additionalModelRequestFields: { anthropic_beta: ["context-1m-2025-08-07"] }` to enable 1M + 216 + 190 + - Override the context limit to 200K when 1M beta is NOT active + 217 + 191 + + 218 + 192 +**Affected models in snapshot**: + 219 + 193 +``` + 220 + 194 +amazon-bedrock / anthropic.claude-opus-4-6-v1: context=1,000,000 ❌ + 221 + 195 +amazon-bedrock / us.anthropic.claude-opus-4-6-v1: context=1,000,000 ❌ + 222 + 196 +amazon-bedrock / eu.anthropic.claude-opus-4-6-v1: context=1,000,000 ❌ + 223 + 197 +amazon-bedrock / global.anthropic.claude-opus-4-6-v1: context=1,000,000 ❌ + 224 + 198 +``` + 225 + 199 + + 226 + 200 +All other Bedrock Claude models correctly show 200K. + 227 + 201 + + 228 + 202 +### Where it can happen? + 229 + 203 +- Any user running Claude Opus 4.6 via Amazon Bedrock + 230 + 204 +- Compaction threshold is calculated from `model.limit.context` → 1M → threshold ~900K + 231 + 205 +- Bedrock rejects at 200K → 700K token gap where compaction never fires but API always rejects + 232 + 206 +- Combined with Issue #1 (infinite retries), this causes the 3.5-hour freeze + 233 + 207 + + 234 + 208 +### What any agent needs to look for? + 235 + 209 +``` + 236 + 210 +File: packages/opencode/src/provider/provider.ts + 237 + 211 +Location: The "amazon-bedrock" entry in CUSTOM_LOADERS (~line 211) + 238 + 212 +Pattern: The returned object has options (providerOptions) and getModel() but NO context limit override + 239 + 213 +Also: Look at how compaction.ts uses model.limit.context (~line 33) + 240 + 214 +Also: Look at how Cline handles this — they use additionalModelRequestFields for Bedrock + 241 + 215 + + 242 + 216 +DO NOT edit models-snapshot.ts directly — it is auto-generated by build.ts + 243 + 217 +``` + 244 + 218 + + 245 + 219 +### How to make the fix? + 246 + 220 +**Option A (Recommended)**: Add provider-level context limit override in the model resolution logic. When provider is "amazon-bedrock" and model is Claude, cap context at 200K unless a 1M configuration is explicitly enabled. + 247 + 221 + + 248 + 222 +Look at where models are resolved and limits are applied. The fix should go in `provider.ts` where models are loaded/resolved, adding a context limit override: + 249 + 223 + + 250 + 224 +```typescript + 251 + 225 +// Inside amazon-bedrock handler or model resolution + 252 + 226 +if (providerID === "amazon-bedrock" && modelData.limit?.context > 200000) { + 253 + 227 + // Cap at 200K unless 1M beta is explicitly configured + 254 + 228 + modelData.limit.context = 200000 + 255 + 229 +} + 256 + 230 +``` + 257 + 231 + + 258 + 232 +**Option B (Future)**: Implement Cline's `:1m` suffix pattern — user explicitly opts into 1M context, which triggers adding `anthropic_beta: ["context-1m-2025-08-07"]` via `additionalModelRequestFields`. + 259 + 233 + + 260 + 234 +### Testing + 261 + 235 +- Configure Bedrock with Opus 4.6 + 262 + 236 +- Verify UI shows context limit as 200K (not 1M) + 263 + 237 +- Verify compaction triggers before hitting Bedrock's actual 200K limit + 264 + 238 +- Verify no "prompt is too long" errors during normal usage + 265 + 239 + + 266 + 240 +--- + 267 + 241 + + 268 + 242 +## Issue #5: `subagent-timeout` — task.ts Has No Execution Timeout + 269 + 243 + + 270 + 244 +### Priority: P0 — This Sprint + 271 + 245 + + 272 + 246 +### What is the issue? + 273 + 247 +The `task` tool calls `SessionPrompt.prompt()` with **no timeout or deadline**. If a subagent gets stuck (infinite retry storm, permission hang, or any other blocking issue), the parent tool call never resolves. The parent session appears frozen with a spinning "running" indicator forever. + 274 + 248 + + 275 + 249 +### What is the bug? + 276 + 250 +`packages/opencode/src/tool/task.ts`: + 277 + 251 +```typescript + 278 + 252 +const result = await SessionPrompt.prompt({ + 279 + 253 + messageID, + 280 + 254 + sessionID: session.id, + 281 + 255 + model: { modelID: model.modelID, providerID: model.providerID }, + 282 + 256 + agent: agent.name, + 283 + 257 + tools: { ... }, + 284 + 258 + parts: promptParts, + 285 + 259 +}) + 286 + 260 +// ← No timeout wrapper, no AbortController deadline + 287 + 261 +``` + 288 + 262 + + 289 + 263 +This Promise can hang indefinitely if the child session encounters: + 290 + 264 +- Infinite retry loop (Issue #1 before fix) + 291 + 265 +- Permission hang (Issue #6) + 292 + 266 +- Slow API responses that never complete + 293 + 267 + + 294 + 268 +### Where it can happen? + 295 + 269 +- Any subagent execution, but especially: + 296 + 270 + - When subagent hits context overflow with retries + 297 + 271 + - When subagent needs permission and user is watching parent + 298 + 272 + - When API provider is slow or unresponsive + 299 + 273 + + 300 + 274 +### What any agent needs to look for? + 301 + 275 +``` + 302 + 276 +File: packages/opencode/src/tool/task.ts + 303 + 277 +Location: The SessionPrompt.prompt() call + 304 + 278 +Pattern: Check if there's an AbortSignal or timeout mechanism available + 305 + 279 +Also check: How the abort signal flows from processor.ts → tool execution → task.ts + 306 + 280 +Also check: ctx parameter in execute() — does it carry an abort signal? + 307 + 281 +``` + 308 + 282 + + 309 + 283 +### How to make the fix? + 310 + 284 +Wrap the `SessionPrompt.prompt()` call with an AbortController timeout: + 311 + 285 + + 312 + 286 +```typescript + 313 + 287 +const timeout = 5 * 60 * 1000 // 5 minutes (configurable) + 314 + 288 +const controller = new AbortController() + 315 + 289 +const timer = setTimeout(() => controller.abort(), timeout) + 316 + 290 + + 317 + 291 +try { + 318 + 292 + const result = await SessionPrompt.prompt({ + 319 + 293 + // ... existing params ... + 320 + 294 + abort: controller.signal, // Pass abort signal if prompt() supports it + 321 + 295 + }) + 322 + 296 + clearTimeout(timer) + 323 + 297 + // ... process result ... + 324 + 298 +} catch (e) { + 325 + 299 + clearTimeout(timer) + 326 + 300 + if (controller.signal.aborted) { + 327 + 301 + return { + 328 + 302 + title: params.description, + 329 + 303 + metadata: { sessionId: session.id, model }, + 330 + 304 + output: `ERROR: Subtask timed out after ${timeout / 1000}s. The task may still be running in session ${session.id}.`, + 331 + 305 + } + 332 + 306 + } + 333 + 307 + throw e + 334 + 308 +} + 335 + 309 +``` + 336 + 310 + + 337 + 311 +Check if `SessionPrompt.prompt()` already accepts an `abort` parameter. If not, trace how `processor.ts` passes its abort signal and ensure the plumbing exists. + 338 + 312 + + 339 + 313 +### Testing + 340 + 314 +- Trigger a subagent that would hang (e.g., long-running task) + 341 + 315 +- Verify it times out after the configured deadline + 342 + 316 +- Verify the parent receives a timeout error message, not silent hang + 343 + 317 +- Verify the child session is properly cleaned up + 344 + 318 + + 345 + 319 +--- + 346 + 320 + + 347 + 321 +## Issue #6: `permission-abort` — next.ts Permission Promises Hang Forever in Subagents + 348 + 322 + + 349 + 323 +### Priority: P0 — This Sprint + 350 + 324 + + 351 + 325 +### What is the issue? + 352 + 326 +When a subagent's tool requires permission (e.g., file write, command execution), the permission prompt appears **only in the child session**. If the user is watching the parent session, they never see the prompt. The child session hangs forever waiting for permission, which blocks the parent's tool call. + 353 + 327 + + 354 + 328 +### What is the bug? + 355 + 329 +`packages/opencode/src/permission/next.ts` lines ~143-156: + 356 + 330 +```typescript + 357 + 331 +export function ask(input: AskInput) { + 358 + 332 + return new Promise((resolve, reject) => { + 359 + 333 + // ... sets up permission request ... + 360 + 334 + // NO abort signal listener + 361 + 335 + // NO timeout + 362 + 336 + // Promise resolves only when user explicitly grants/denies + 363 + 337 + }) + 364 + 338 +} + 365 + 339 +``` + 366 + 340 + + 367 + 341 +`grep -c "abort" next.ts` returns **0** — there is zero abort signal awareness in the entire file. + 368 + 342 + + 369 + 343 +### Where it can happen? + 370 + 344 +- Any subagent tool call that requires permission + 371 + 345 +- Parallel subagents: one hangs on permission → parent hangs → all other parallel results blocked + 372 + 346 +- Even with auto-approve policies, edge cases (new tools, destructive operations) may still prompt + 373 + 347 + + 374 + 348 +### What any agent needs to look for? + 375 + 349 +``` + 376 + 350 +File: packages/opencode/src/permission/next.ts + 377 + 351 +Location: The ask() function (exported, ~line 143) + 378 + 352 +Pattern: The Promise constructor — no abort/timeout handling + 379 + 353 +Also check: How ask() is called from tool execution context + 380 + 354 +Also check: Whether an AbortSignal is available in the call chain + 381 + 355 +Also check: packages/opencode/src/session/prompt.ts for where permissions are requested + 382 + 356 +``` + 383 + 357 + + 384 + 358 +### How to make the fix? + 385 + 359 +Add AbortSignal support to the `ask()` function: + 386 + 360 + + 387 + 361 +```typescript + 388 + 362 +export function ask(input: AskInput & { abort?: AbortSignal }) { + 389 + 363 + return new Promise((resolve, reject) => { + 390 + 364 + // Check if already aborted + 391 + 365 + if (input.abort?.aborted) { + 392 + 366 + return reject(new Error("Permission request aborted")) + 393 + 367 + } + 394 + 368 + + 395 + 369 + // Listen for abort + 396 + 370 + const onAbort = () => { + 397 + 371 + reject(new Error("Permission request aborted")) + 398 + 372 + } + 399 + 373 + input.abort?.addEventListener("abort", onAbort, { once: true }) + 400 + 374 + + 401 + 375 + // ... existing permission logic ... + 402 + 376 + // Clean up abort listener in resolve/reject paths + 403 + 377 + }) + 404 + 378 +} + 405 + 379 +``` + 406 + 380 + + 407 + 381 +**Important**: The abort signal must be plumbed from `processor.ts` through the tool execution chain to `next.ts`. Trace the call path: + 408 + 382 +``` + 409 + 383 +processor.ts (has abort) → tool execution → specific tool → permission check → next.ts ask() + 410 + 384 +``` + 411 + 385 + + 412 + 386 +### Testing + 413 + 387 +- Trigger a subagent that needs permission + 414 + 388 +- Abort the parent session while permission is pending + 415 + 389 +- Verify the child permission promise rejects + 416 + 390 +- Verify the parent tool call resolves with an error (not hangs forever) + 417 + 391 + + 418 + 392 +--- + 419 + 393 + + 420 + 394 +## Issue #7: `retry-catch-all` — retry.ts Catch-All Makes All JSON Errors Retryable + 421 + 395 + + 422 + 396 +### Priority: P1 — Robustness + 423 + 397 + + 424 + 398 +### What is the issue? + 425 + 399 +The `retryable()` function in `retry.ts` has a catch-all at line ~96 that makes **any error with a parseable JSON response body** retryable. This means Bedrock 400 errors ("prompt is too long"), which should NOT be retried, get classified as retryable — fueling the infinite retry storm. + 426 + 400 + + 427 + 401 +### What is the bug? + 428 + 402 +`packages/opencode/src/session/retry.ts` line ~96: + 429 + 403 +```typescript + 430 + 404 +// After checking specific patterns (rate limit, overloaded, etc.)... + 431 + 405 +return JSON.stringify(json) // ← ANY remaining JSON error = retryable + 432 + 406 +``` + 433 + 407 + + 434 + 408 +The Bedrock "prompt is too long" error response is valid JSON with `"isRetryable": false` in the body, but the catch-all ignores this field and returns the body as a retryable error message. + 435 + 409 + + 436 + 410 +### Where it can happen? + 437 + 411 +- Any API error that returns a JSON response body + 438 + 412 +- Specifically: Bedrock validation errors (400), authentication errors, quota errors + 439 + 413 +- Combined with Issue #1 (no max retries), this creates infinite retry storms + 440 + 414 + + 441 + 415 +### What any agent needs to look for? + 442 + 416 +``` + 443 + 417 +File: packages/opencode/src/session/retry.ts + 444 + 418 +Location: The retryable() function, specifically the catch-all after all pattern checks + 445 + 419 +Pattern: The final `return JSON.stringify(json)` that runs for any unmatched JSON error + 446 + 420 +Also check: What specific patterns ARE checked before the catch-all + 447 + 421 +Also check: Whether the JSON body contains "isRetryable" or HTTP status fields + 448 + 422 +``` + 449 + 423 + + 450 + 424 +### How to make the fix? + 451 + 425 +Replace the blanket catch-all with HTTP status-aware classification: + 452 + 426 + + 453 + 427 +```typescript + 454 + 428 +// Instead of: return JSON.stringify(json) + 455 + 429 +// Use: + 456 + 430 +const status = (json as any).status ?? (json as any).statusCode + 457 + 431 +if (typeof status === "number" && status >= 400 && status < 500) { + 458 + 432 + // 4xx errors are client errors — NOT retryable (bad request, auth, not found, etc.) + 459 + 433 + return undefined + 460 + 434 +} + 461 + 435 +// 5xx and truly unknown → retryable (but capped by MAX_RETRIES from Issue #1) + 462 + 436 +return JSON.stringify(json) + 463 + 437 +``` + 464 + 438 + + 465 + 439 +Also check for the `isRetryable` field that Bedrock includes: + 466 + 440 +```typescript + 467 + 441 +if ((json as any).isRetryable === false) return undefined + 468 + 442 +``` + 469 + 443 + + 470 + 444 +**Note**: This fix is SAFER when combined with Issue #1 (MAX_RETRIES), since any misclassification is bounded by the retry cap. + 471 + 445 + + 472 + 446 +### Testing + 473 + 447 +- Send a Bedrock 400 "prompt is too long" error → verify NOT retried + 474 + 448 +- Send a 429 rate limit error → verify IS retried + 475 + 449 +- Send a 500 server error → verify IS retried (up to MAX_RETRIES) + 476 + 450 +- Send a JSON error with `isRetryable: false` → verify NOT retried + 477 + 451 + + 478 + 452 +--- + 479 + 453 + + 480 + 454 +## Issue #8: `tool-error-metadata` — processor.ts Drops Metadata on Tool Errors + 481 + 455 + + 482 + 456 +### Priority: P1 — Robustness + 483 + 457 + + 484 + 458 +### What is the issue? + 485 + 459 +When a tool execution errors, the tool-error handler in `processor.ts` rebuilds the tool state but **drops the `title` and `metadata` fields**. This means the UI loses the tool's display name and any navigation metadata (like `sessionId` for subagent links). + 486 + 460 + + 487 + 461 +### What is the bug? + 488 + 462 +`packages/opencode/src/session/processor.ts` lines ~207-218, the `"tool-error"` case: + 489 + 463 +```typescript + 490 + 464 +case "tool-error": { + 491 + 465 + const match = toolcalls[value.toolCallId] + 492 + 466 + if (match && match.state.status === "running") { + 493 + 467 + await Session.updatePart({ + 494 + 468 + ...match, + 495 + 469 + state: { + 496 + 470 + status: "error", + 497 + 471 + input: value.input ?? match.state.input, + 498 + 472 + error: (value.error as any).toString(), + 499 + 473 + // ❌ Missing: title: match.state.title, + 500 + 474 + // ❌ Missing: metadata: match.state.metadata, + 501 + 475 + time: { + 502 + 476 + start: match.state.time.start, + 503 + 477 + end: Date.now(), + 504 + 478 + }, + 505 + 479 + }, + 506 + 480 + }) + 507 + 481 + } + 508 + 482 +} + 509 + 483 +``` + 510 + 484 + + 511 + 485 +### Where it can happen? + 512 + 486 +- Any tool that errors during execution + 513 + 487 +- Most visible for task tool errors — the `sessionId` metadata (used for navigating to child sessions) is lost + 514 + 488 +- Also affects batch tool parts and any tool with custom title/metadata + 515 + 489 + + 516 + 490 +### What any agent needs to look for? + 517 + 491 +``` + 518 + 492 +File: packages/opencode/src/session/processor.ts + 519 + 493 +Location: The "tool-error" case in the stream event handler + 520 + 494 +Pattern: Compare the "tool-error" state update with the "tool-result" state update + 521 + 495 +The "tool-result" case preserves title and metadata, but "tool-error" does not + 522 + 496 +``` + 523 + 497 + + 524 + 498 +### How to make the fix? + 525 + 499 +Add `title` and `metadata` preservation to the error state: + 526 + 500 + + 527 + 501 +```typescript + 528 + 502 +case "tool-error": { + 529 + 503 + const match = toolcalls[value.toolCallId] + 530 + 504 + if (match && match.state.status === "running") { + 531 + 505 + await Session.updatePart({ + 532 + 506 + ...match, + 533 + 507 + state: { + 534 + 508 + status: "error", + 535 + 509 + input: value.input ?? match.state.input, + 536 + 510 + error: (value.error as any).toString(), + 537 + 511 + title: match.state.title, // ← ADD + 538 + 512 + metadata: match.state.metadata, // ← ADD + 539 + 513 + time: { + 540 + 514 + start: match.state.time.start, + 541 + 515 + end: Date.now(), + 542 + 516 + }, + 543 + 517 + }, + 544 + 518 + }) + 545 + 519 + } + 546 + 520 +} + 547 + 521 +``` + 548 + 522 + + 549 + 523 +### Testing + 550 + 524 +- Trigger a tool error (e.g., file read on non-existent path) + 551 + 525 +- Verify the error part in the UI shows the tool title + 552 + 526 +- Trigger a subagent error → verify the sessionId metadata is preserved in the error part + 553 + 527 + + 554 + 528 +--- + 555 + 529 + + 556 + 530 +## Issue #9: `batch-error-details` — batch.ts Output Lacks Per-Tool Error Details + 557 + 531 + + 558 + 532 +### Priority: P2 — Nice to Have + 559 + 533 + + 560 + 534 +### What is the issue? + 561 + 535 +When batch tool calls fail, the output summary only says `"Executed X/Y tools successfully. Z failed."` without including **which tools failed or why**. The LLM receiving this output cannot diagnose or intelligently retry the failures. + 562 + 536 + + 563 + 537 +### What is the bug? + 564 + 538 +`packages/opencode/src/tool/batch.ts` output message: + 565 + 539 +```typescript + 566 + 540 +const outputMessage = failedCalls > 0 + 567 + 541 + ? `Executed ${successfulCalls}/${results.length} tools successfully. ${failedCalls} failed.` + 568 + 542 + : `All ${successfulCalls} tools executed successfully.` + 569 + 543 +``` + 570 + 544 + + 571 + 545 +Note: Individual tool-call parts ARE written to the database with their errors (via `Session.updatePart` in the catch block), so the UI shows them. But the **summary message returned to the LLM** lacks details. + 572 + 546 + + 573 + 547 +### Where it can happen? + 574 + 548 +- Any batch execution where one or more tools fail + 575 + 549 +- The LLM sees the summary but not the individual error details + 576 + 550 +- Can cause the LLM to blindly retry the same failing operations + 577 + 551 + + 578 + 552 +### What any agent needs to look for? + 579 + 553 +``` + 580 + 554 +File: packages/opencode/src/tool/batch.ts + 581 + 555 +Location: The outputMessage construction after Promise.all results + 582 + 556 +Pattern: The results array has { success, tool, error? } for each call + 583 + 557 +``` + 584 + 558 + + 585 + 559 +### How to make the fix? + 586 + 560 +Include per-tool error details in the output: + 587 + 561 + + 588 + 562 +```typescript + 589 + 563 +const outputMessage = failedCalls > 0 + 590 + 564 + ? [ + 591 + 565 + `Executed ${successfulCalls}/${results.length} tools successfully. ${failedCalls} failed.`, + 592 + 566 + "", + 593 + 567 + "Failed tools:", + 594 + 568 + ...results + 595 + 569 + .filter((r) => !r.success) + 596 + 570 + .map((r) => `- ${r.tool}: ${r.error instanceof Error ? r.error.message : String(r.error)}`), + 597 + 571 + ].join("\n") + 598 + 572 + : `All ${successfulCalls} tools executed successfully.\n\nKeep using the batch tool for optimal performance in your next response!` + 599 + 573 +``` + 600 + 574 + + 601 + 575 +### Testing + 602 + 576 +- Execute a batch with one intentionally failing tool (e.g., read non-existent file) + 603 + 577 +- Verify the output includes the tool name and error message + 604 + 578 +- Verify the LLM can see which tool failed and why + 605 + 579 + + 606 + 580 +--- + 607 + 581 + + 608 + 582 +## Implementation Order + 609 + 583 + + 610 + 584 +``` + 611 + 585 +TODAY (P0 — Stop The Bleeding): + 612 + 586 + #1 processor-max-retries → 3.5hr freeze prevention + 613 + 587 + #2 bedrock-undefined-message → Bedrock overflow detection + 614 + 588 + #3 task-swallows-errors → Silent failure surfacing + 615 + 589 + + 616 + 590 +THIS SPRINT (P0 — Root Cause): + 617 + 591 + #4 bedrock-context-cap → Context limit accuracy + 618 + 592 + #5 subagent-timeout → Hung subagent prevention + 619 + 593 + #6 permission-abort → Permission hang prevention + 620 + 594 + + 621 + 595 +NEXT SPRINT (P1 — Robustness): + 622 + 596 + #7 retry-catch-all → Smart retry classification + 623 + 597 + #8 tool-error-metadata → Error UI metadata + 624 + 598 + + 625 + 599 +BACKLOG (P2): + 626 + 600 + #9 batch-error-details → Batch error visibility + 627 + 601 +``` + 628 + 602 + 629 + + 630 +``` + 631 + + 632 + + 633 +### 📄 `packages/opencode/src/provider/error.ts` + 634 + + 635 +**Type:** TypeScript Source File 📘 + 636 + + 637 +```diff + 638 +@@ -50,7 +50,7 @@ export namespace ProviderError { + 639 + 50 50 function message(providerID: string, e: APICallError) { + 640 + 51 51 return iife(() => { + 641 + 52 52 const msg = e.message + 642 + 53 - if (msg === "") { + 643 + 53 + if (msg === "" || msg === "undefined") { + 644 + 54 54 if (e.responseBody) return e.responseBody + 645 + 55 55 if (e.statusCode) { + 646 + 56 56 const err = STATUS_CODES[e.statusCode] + 647 + 57 57 + 648 + + 649 +``` + 650 + + 651 + + 652 +### 📄 `packages/opencode/src/session/processor.ts` + 653 + + 654 +**Type:** TypeScript Source File 📘 + 655 + + 656 +```diff + 657 +@@ -18,6 +18,7 @@ import { Question } from "@/question" + 658 + 18 18 + 659 + 19 19 export namespace SessionProcessor { + 660 + 20 20 const DOOM_LOOP_THRESHOLD = 3 + 661 + 21 + const MAX_RETRIES = 10 + 662 + 21 22 const log = Log.create({ service: "session.processor" }) + 663 + 22 23 + 664 + 23 24 export type Info = Awaited> + 665 +@@ -210,6 +211,7 @@ export namespace SessionProcessor { + 666 +210 211 status: "error", + 667 +211 212 input: value.input ?? match.state.input, + 668 +212 213 error: (value.error as any).toString(), + 669 + 214 + metadata: match.state.metadata, + 670 +213 215 time: { + 671 +214 216 start: match.state.time.start, + 672 +215 217 end: Date.now(), + 673 +@@ -363,6 +365,23 @@ export namespace SessionProcessor { + 674 +363 365 const retry = SessionRetry.retryable(error) + 675 +364 366 if (retry !== undefined) { + 676 +365 367 attempt++ + 677 + 368 + if (attempt >= MAX_RETRIES) { + 678 + 369 + log.error("max retries exceeded", { + 679 + 370 + sessionID: input.sessionID, + 680 + 371 + attempt, + 681 + 372 + message: retry, + 682 + 373 + }) + 683 + 374 + input.assistantMessage.error = MessageV2.fromError( + 684 + 375 + new Error(`Maximum retries (${MAX_RETRIES}) exceeded. Last error: ${retry}`), + 685 + 376 + { providerID: input.model.providerID }, + 686 + 377 + ) + 687 + 378 + Bus.publish(Session.Event.Error, { + 688 + 379 + sessionID: input.assistantMessage.sessionID, + 689 + 380 + error: input.assistantMessage.error, + 690 + 381 + }) + 691 + 382 + SessionStatus.set(input.sessionID, { type: "idle" }) + 692 + 383 + break + 693 + 384 + } + 694 +366 385 const delay = SessionRetry.delay(attempt, error.name === "APIError" ? error : undefined) + 695 +367 386 SessionStatus.set(input.sessionID, { + 696 +368 387 type: "retry", + 697 +369 388 + 698 + + 699 +``` + 700 + + 701 + + 702 +### 📄 `packages/opencode/src/tool/task.ts` + 703 + + 704 +**Type:** TypeScript Source File 📘 + 705 + + 706 +```diff + 707 +@@ -142,6 +142,22 @@ export const TaskTool = Tool.define("task", async (ctx) => { + 708 +142 142 parts: promptParts, + 709 +143 143 }) + 710 +144 144 + 711 + 145 + if ((result.info as MessageV2.Assistant).error) { + 712 + 146 + const errorObj = (result.info as MessageV2.Assistant).error + 713 + 147 + const msg = errorObj?.message ?? errorObj?.name ?? "Subagent task failed" + 714 + 148 + return { + 715 + 149 + title: params.description, + 716 + 150 + metadata: { sessionId: session.id, model }, + 717 + 151 + output: [ + 718 + 152 + `task_id: ${session.id} (for resuming to continue this task if needed)`, + 719 + 153 + "", + 720 + 154 + "", + 721 + 155 + `ERROR: ${msg}`, + 722 + 156 + "", + 723 + 157 + ].join("\n"), + 724 + 158 + } + 725 + 159 + } + 726 + 160 + + 727 +145 161 const text = result.parts.findLast((x) => x.type === "text")?.text ?? "" + 728 +146 162 + 729 +147 163 const output = [ + 730 +148 164 + 731 + + 732 +``` + 733 + + 734 +## 🤖 Comprehensive Review Checklist + 735 + + 736 +### ✅ Code Quality & Standards + 737 +- [ ] **Syntax & Formatting**: Consistent indentation, proper spacing + 738 +- [ ] **Naming Conventions**: Clear, descriptive variable/function names + 739 +- [ ] **Code Structure**: Logical organization, appropriate function size + 740 +- [ ] **Documentation**: Clear comments explaining complex logic + 741 +- [ ] **Type Safety**: Proper typing (if applicable) + 742 + + 743 +### 🔍 Logic & Functionality + 744 +- [ ] **Algorithm Correctness**: Logic implements requirements correctly + 745 +- [ ] **Edge Case Handling**: Boundary conditions properly addressed + 746 +- [ ] **Error Handling**: Appropriate try-catch blocks and error messages + 747 +- [ ] **Performance**: Efficient algorithms, no unnecessary loops + 748 +- [ ] **Memory Management**: Proper cleanup, no memory leaks + 749 + + 750 +### 🐛 Potential Issues & Bugs + 751 +- [ ] **Runtime Errors**: No null/undefined dereferencing + 752 +- [ ] **Type Mismatches**: Consistent data types throughout + 753 +- [ ] **Race Conditions**: Proper async/await handling + 754 +- [ ] **Resource Leaks**: Event listeners, timers properly cleaned up + 755 +- [ ] **Off-by-one Errors**: Array/loop bounds correctly handled + 756 + + 757 +### 🔒 Security Considerations + 758 +- [ ] **Input Validation**: User inputs properly sanitized + 759 +- [ ] **XSS Prevention**: No unsafe HTML injection + 760 +- [ ] **Authentication**: Proper access controls if applicable + 761 +- [ ] **Data Exposure**: No sensitive information in logs/client + 762 +- [ ] **Dependency Security**: No known vulnerable packages + 763 + + 764 +### 📱 User Experience & Accessibility + 765 +- [ ] **Responsive Design**: Works on different screen sizes + 766 +- [ ] **Loading States**: Proper feedback during operations + 767 +- [ ] **Error Messages**: User-friendly error communication + 768 +- [ ] **Accessibility**: ARIA labels, keyboard navigation + 769 +- [ ] **Performance**: Fast loading, smooth interactions + 770 + + 771 +### 💡 Improvement Suggestions + 772 + + 773 +#### Code Organization + 774 +- [ ] Consider extracting complex logic into separate functions + 775 +- [ ] Evaluate if constants should be moved to configuration + 776 +- [ ] Check for code duplication opportunities + 777 + + 778 +#### Performance Optimizations + 779 +- [ ] Identify opportunities for memoization + 780 +- [ ] Consider lazy loading for heavy operations + 781 +- [ ] Evaluate database query efficiency (if applicable) + 782 + + 783 +#### Testing Recommendations + 784 +- [ ] Unit tests for core functionality + 785 +- [ ] Integration tests for API endpoints + 786 +- [ ] Edge case testing scenarios + 787 + + 788 +#### Documentation Needs + 789 +- [ ] API documentation updates + 790 +- [ ] Code comments for complex algorithms + 791 +- [ ] README updates if public interfaces changed + 792 + + 793 +### 📝 Review Notes + 794 +*Add your specific feedback, suggestions, and observations here:* + 795 + + 796 +--- + 797 +*Individual file review generated by AI Visual Code Review v2.0* + 798 +*Generated: 2026-02-25T15:43:40.531Z* + 799 + +``` + + +### ✨ `docs/09-temp/issues.md` **[ADDED]** + +**Status:** ✅ **NEW FILE** - This file has been newly created + +**Type:** Documentation 📖 + +```diff +@@ -0,0 +1,601 @@ + 1 +# OpenCode — Parallel Agent & Retry Storm Issues + 2 + + 3 +> **Created**: 2025-02-25 + 4 +> **Source**: Combined RCA by Cline + Antigravity + 5 +> **Status**: Approved for implementation + 6 + + 7 +--- + 8 + + 9 +## Issue #1: `processor-max-retries` — Infinite Retry Loop in processor.ts + 10 + + 11 +### Priority: P0 — Stop The Bleeding + 12 + + 13 +### What is the issue? + 14 +The session processor retries failed API calls in an infinite `while(true)` loop with **no maximum retry count**. When an error is classified as "retryable" by `retry.ts`, the processor will retry it forever — user observed **2,244 identical retries over 3.5 hours** before manual abort. + 15 + + 16 +### What is the bug? + 17 +`packages/opencode/src/session/processor.ts` line ~53 has a `while(true)` loop. When the catch block determines an error is retryable via `SessionRetry.retryable(error)`, it increments `attempt` and `continue`s the loop. There is **no guard** like `if (attempt >= MAX_RETRIES) break`. + 18 + + 19 +### Where it can happen? + 20 +- Any API call that returns a retryable error (transient network issues, rate limits, Bedrock context overflow misclassified as retryable) + 21 +- Most critically: Bedrock "prompt is too long" errors that get misclassified as retryable by the catch-all in `retry.ts` (see Issue #2) + 22 +- Affects both parent sessions and subagent sessions independently + 23 + + 24 +### What any agent needs to look for? + 25 +``` + 26 +File: packages/opencode/src/session/processor.ts + 27 +Location: The while(true) loop (~line 53) + 28 +Pattern: Look for the catch block that calls SessionRetry.retryable() and does `continue` + 29 +``` + 30 + + 31 +### How to make the fix? + 32 +Add a `MAX_RETRIES` constant and guard before the `continue`: + 33 + + 34 +```typescript + 35 +// At top of file or inside the function + 36 +const MAX_RETRIES = 10 + 37 + + 38 +// Inside the catch block, before `continue`: + 39 +if (attempt >= MAX_RETRIES) { + 40 + input.assistantMessage.error = { + 41 + name: "RetryLimitExceeded", + 42 + message: `Maximum retries (${MAX_RETRIES}) exceeded. Last error: ${retry}`, + 43 + } + 44 + break + 45 +} + 46 +``` + 47 + + 48 +The error should be stored on `input.assistantMessage.error` so the session stops and the UI shows the error. Make sure the status is set to idle after breaking. + 49 + + 50 +### Testing + 51 +- Trigger a retryable error (e.g., rate limit) and verify it stops after 10 attempts + 52 +- Verify the error message appears in the session UI + 53 +- Verify the session status returns to "idle" (not stuck in "retry") + 54 + + 55 +--- + 56 + + 57 +## Issue #2: `bedrock-undefined-message` — error.ts Fails to Parse Bedrock Error Messages + 58 + + 59 +### Priority: P0 — Stop The Bleeding + 60 + + 61 +### What is the issue? + 62 +When Amazon Bedrock returns an API error (e.g., "prompt is too long"), the `message()` function in `error.ts` receives `e.message = "undefined"` (the literal string, not the JS undefined value). The function only checks for empty string `""`, so it passes `"undefined"` through to `isOverflow()`, which fails to match any overflow pattern. This means **Bedrock context overflow errors are never detected as overflow**, preventing compaction from triggering. + 63 + + 64 +### What is the bug? + 65 +`packages/opencode/src/provider/error.ts` function `message()` (~line 50-80): + 66 +```typescript + 67 +const msg = e.message + 68 +if (msg === "") { + 69 + if (e.responseBody) return e.responseBody + 70 + // ... + 71 +} + 72 +``` + 73 +When Bedrock SDK sets `e.message` to the literal string `"undefined"`, this check passes through. The actual error details are in `e.responseBody` but never extracted. + 74 + + 75 +### Where it can happen? + 76 +- Any Bedrock API call that returns an error (context overflow, validation errors, throttling) + 77 +- The Bedrock SDK wraps errors differently than the Anthropic direct SDK + 78 +- Specifically observed with "prompt is too long: 208845 tokens > 200000 maximum" errors + 79 + + 80 +### What any agent needs to look for? + 81 +``` + 82 +File: packages/opencode/src/provider/error.ts + 83 +Location: The message() function, specifically the `if (msg === "")` check + 84 +Also check: isOverflow() function and the OVERFLOW_PATTERNS regex + 85 +``` + 86 + + 87 +### How to make the fix? + 88 +Extend the empty-message check to also handle `"undefined"`: + 89 + + 90 +```typescript + 91 +function message(providerID: string, e: APICallError) { + 92 + return iife(() => { + 93 + const msg = e.message + 94 + if (msg === "" || msg === "undefined") { + 95 + if (e.responseBody) return e.responseBody + 96 + // ... rest of existing fallback logic + 97 + } + 98 + return msg + 99 + }) + 100 +} + 101 +``` + 102 + + 103 +This ensures the actual error body (which contains "prompt is too long") is used for overflow detection instead of the meaningless `"undefined"` string. + 104 + + 105 +### Testing + 106 +- Mock a Bedrock APICallError with `message: "undefined"` and `responseBody: "prompt is too long: 208845 tokens > 200000 maximum"` + 107 +- Verify `message()` returns the responseBody, not `"undefined"` + 108 +- Verify `isOverflow()` correctly detects the overflow pattern from the responseBody + 109 + + 110 +--- + 111 + + 112 +## Issue #3: `task-swallows-errors` — task.ts Silently Swallows Subagent Failures + 113 + + 114 +### Priority: P0 — Stop The Bleeding + 115 + + 116 +### What is the issue? + 117 +When a subagent (child session spawned by the `task` tool) fails with an error, the parent session shows it as **successfully completed with empty output**. The user sees a green ✅ checkmark for a task that actually errored. This is THE primary cause of "failures not reflected in main chat." + 118 + + 119 +### What is the bug? + 120 +`packages/opencode/src/tool/task.ts` line ~145: + 121 +```typescript + 122 +const result = await SessionPrompt.prompt({...}) + 123 +const text = result.parts.findLast((x) => x.type === "text")?.text ?? "" + 124 +``` + 125 + + 126 +`result.info` contains an `.error` field when the child session errored (set by `processor.ts` at `input.assistantMessage.error = error`). But `task.ts` **never checks `result.info.error`** — it only looks for text parts. When the child errored, there are no text parts, so `text = ""`, and the parent receives `\n\n` as a "successful" empty result. + 127 + + 128 +### Where it can happen? + 129 +- Any subagent failure: context overflow, API error, tool execution error, rate limit + 130 +- Parallel subagents: if 1 of 3 subagents fails, parent sees 3 "completed" tasks with one having empty output + 131 +- The parent LLM may then hallucinate that the task completed or silently move on + 132 + + 133 +### What any agent needs to look for? + 134 +``` + 135 +File: packages/opencode/src/tool/task.ts + 136 +Location: After the `SessionPrompt.prompt()` call, before building the output + 137 +Pattern: result.info should have an error field — check result.info type definition + 138 +Also check: packages/opencode/src/session/prompt.ts for the return type of prompt() + 139 +``` + 140 + + 141 +### How to make the fix? + 142 +Add an error check immediately after the `SessionPrompt.prompt()` call: + 143 + + 144 +```typescript + 145 +const result = await SessionPrompt.prompt({...}) + 146 + + 147 +// Check if child session errored + 148 +if (result.info.error) { + 149 + const error = result.info.error + 150 + const msg = error.message ?? error.name ?? "Subagent task failed" + 151 + return { + 152 + title: params.description, + 153 + metadata: { sessionId: session.id, model }, + 154 + output: [ + 155 + `task_id: ${session.id}`, + 156 + "", + 157 + "", + 158 + `ERROR: ${msg}`, + 159 + `The subtask encountered an error and could not complete.`, + 160 + "", + 161 + ].join("\n"), + 162 + } + 163 +} + 164 + + 165 +const text = result.parts.findLast((x) => x.type === "text")?.text ?? "" + 166 +``` + 167 + + 168 +**Important**: Check the actual type of `result.info` to use proper typing instead of `(result.info as any).error`. Look at how `processor.ts` sets the error on `input.assistantMessage.error` to understand the shape. + 169 + + 170 +### Testing + 171 +- Trigger a subagent error (e.g., invalid tool call, context overflow) + 172 +- Verify the parent session shows "ERROR: ..." in the task result, not empty + 173 +- Verify the parent LLM receives the error and can report it to the user + 174 + + 175 +--- + 176 + + 177 +## Issue #4: `bedrock-context-cap` — Bedrock Provider Missing Context Limit Override + 178 + + 179 +### Priority: P0 — This Sprint + 180 + + 181 +### What is the issue? + 182 +The `models-snapshot.ts` file (auto-generated from models.dev) lists Claude Opus 4.6 on Bedrock with `context: 1,000,000`. This is the model's capability WITH the `context-1m` beta header. However, the Bedrock provider handler in `provider.ts` **never sends the 1M beta header**, so Bedrock actually enforces a 200K limit. The result: UI shows "20% context usage" when the user is actually at 100% of the real limit, and compaction never triggers. + 183 + + 184 +### What is the bug? + 185 +Two bugs combine: + 186 + + 187 +1. **`models-snapshot.ts`** lists Opus 4.6 Bedrock models at 1M context (reflects model capability, not runtime limit) + 188 +2. **`provider.ts`** `"amazon-bedrock"` handler has NO logic to: + 189 + - Send `additionalModelRequestFields: { anthropic_beta: ["context-1m-2025-08-07"] }` to enable 1M + 190 + - Override the context limit to 200K when 1M beta is NOT active + 191 + + 192 +**Affected models in snapshot**: + 193 +``` + 194 +amazon-bedrock / anthropic.claude-opus-4-6-v1: context=1,000,000 ❌ + 195 +amazon-bedrock / us.anthropic.claude-opus-4-6-v1: context=1,000,000 ❌ + 196 +amazon-bedrock / eu.anthropic.claude-opus-4-6-v1: context=1,000,000 ❌ + 197 +amazon-bedrock / global.anthropic.claude-opus-4-6-v1: context=1,000,000 ❌ + 198 +``` + 199 + + 200 +All other Bedrock Claude models correctly show 200K. + 201 + + 202 +### Where it can happen? + 203 +- Any user running Claude Opus 4.6 via Amazon Bedrock + 204 +- Compaction threshold is calculated from `model.limit.context` → 1M → threshold ~900K + 205 +- Bedrock rejects at 200K → 700K token gap where compaction never fires but API always rejects + 206 +- Combined with Issue #1 (infinite retries), this causes the 3.5-hour freeze + 207 + + 208 +### What any agent needs to look for? + 209 +``` + 210 +File: packages/opencode/src/provider/provider.ts + 211 +Location: The "amazon-bedrock" entry in CUSTOM_LOADERS (~line 211) + 212 +Pattern: The returned object has options (providerOptions) and getModel() but NO context limit override + 213 +Also: Look at how compaction.ts uses model.limit.context (~line 33) + 214 +Also: Look at how Cline handles this — they use additionalModelRequestFields for Bedrock + 215 + + 216 +DO NOT edit models-snapshot.ts directly — it is auto-generated by build.ts + 217 +``` + 218 + + 219 +### How to make the fix? + 220 +**Option A (Recommended)**: Add provider-level context limit override in the model resolution logic. When provider is "amazon-bedrock" and model is Claude, cap context at 200K unless a 1M configuration is explicitly enabled. + 221 + + 222 +Look at where models are resolved and limits are applied. The fix should go in `provider.ts` where models are loaded/resolved, adding a context limit override: + 223 + + 224 +```typescript + 225 +// Inside amazon-bedrock handler or model resolution + 226 +if (providerID === "amazon-bedrock" && modelData.limit?.context > 200000) { + 227 + // Cap at 200K unless 1M beta is explicitly configured + 228 + modelData.limit.context = 200000 + 229 +} + 230 +``` + 231 + + 232 +**Option B (Future)**: Implement Cline's `:1m` suffix pattern — user explicitly opts into 1M context, which triggers adding `anthropic_beta: ["context-1m-2025-08-07"]` via `additionalModelRequestFields`. + 233 + + 234 +### Testing + 235 +- Configure Bedrock with Opus 4.6 + 236 +- Verify UI shows context limit as 200K (not 1M) + 237 +- Verify compaction triggers before hitting Bedrock's actual 200K limit + 238 +- Verify no "prompt is too long" errors during normal usage + 239 + + 240 +--- + 241 + + 242 +## Issue #5: `subagent-timeout` — task.ts Has No Execution Timeout + 243 + + 244 +### Priority: P0 — This Sprint + 245 + + 246 +### What is the issue? + 247 +The `task` tool calls `SessionPrompt.prompt()` with **no timeout or deadline**. If a subagent gets stuck (infinite retry storm, permission hang, or any other blocking issue), the parent tool call never resolves. The parent session appears frozen with a spinning "running" indicator forever. + 248 + + 249 +### What is the bug? + 250 +`packages/opencode/src/tool/task.ts`: + 251 +```typescript + 252 +const result = await SessionPrompt.prompt({ + 253 + messageID, + 254 + sessionID: session.id, + 255 + model: { modelID: model.modelID, providerID: model.providerID }, + 256 + agent: agent.name, + 257 + tools: { ... }, + 258 + parts: promptParts, + 259 +}) + 260 +// ← No timeout wrapper, no AbortController deadline + 261 +``` + 262 + + 263 +This Promise can hang indefinitely if the child session encounters: + 264 +- Infinite retry loop (Issue #1 before fix) + 265 +- Permission hang (Issue #6) + 266 +- Slow API responses that never complete + 267 + + 268 +### Where it can happen? + 269 +- Any subagent execution, but especially: + 270 + - When subagent hits context overflow with retries + 271 + - When subagent needs permission and user is watching parent + 272 + - When API provider is slow or unresponsive + 273 + + 274 +### What any agent needs to look for? + 275 +``` + 276 +File: packages/opencode/src/tool/task.ts + 277 +Location: The SessionPrompt.prompt() call + 278 +Pattern: Check if there's an AbortSignal or timeout mechanism available + 279 +Also check: How the abort signal flows from processor.ts → tool execution → task.ts + 280 +Also check: ctx parameter in execute() — does it carry an abort signal? + 281 +``` + 282 + + 283 +### How to make the fix? + 284 +Wrap the `SessionPrompt.prompt()` call with an AbortController timeout: + 285 + + 286 +```typescript + 287 +const timeout = 5 * 60 * 1000 // 5 minutes (configurable) + 288 +const controller = new AbortController() + 289 +const timer = setTimeout(() => controller.abort(), timeout) + 290 + + 291 +try { + 292 + const result = await SessionPrompt.prompt({ + 293 + // ... existing params ... + 294 + abort: controller.signal, // Pass abort signal if prompt() supports it + 295 + }) + 296 + clearTimeout(timer) + 297 + // ... process result ... + 298 +} catch (e) { + 299 + clearTimeout(timer) + 300 + if (controller.signal.aborted) { + 301 + return { + 302 + title: params.description, + 303 + metadata: { sessionId: session.id, model }, + 304 + output: `ERROR: Subtask timed out after ${timeout / 1000}s. The task may still be running in session ${session.id}.`, + 305 + } + 306 + } + 307 + throw e + 308 +} + 309 +``` + 310 + + 311 +Check if `SessionPrompt.prompt()` already accepts an `abort` parameter. If not, trace how `processor.ts` passes its abort signal and ensure the plumbing exists. + 312 + + 313 +### Testing + 314 +- Trigger a subagent that would hang (e.g., long-running task) + 315 +- Verify it times out after the configured deadline + 316 +- Verify the parent receives a timeout error message, not silent hang + 317 +- Verify the child session is properly cleaned up + 318 + + 319 +--- + 320 + + 321 +## Issue #6: `permission-abort` — next.ts Permission Promises Hang Forever in Subagents + 322 + + 323 +### Priority: P0 — This Sprint + 324 + + 325 +### What is the issue? + 326 +When a subagent's tool requires permission (e.g., file write, command execution), the permission prompt appears **only in the child session**. If the user is watching the parent session, they never see the prompt. The child session hangs forever waiting for permission, which blocks the parent's tool call. + 327 + + 328 +### What is the bug? + 329 +`packages/opencode/src/permission/next.ts` lines ~143-156: + 330 +```typescript + 331 +export function ask(input: AskInput) { + 332 + return new Promise((resolve, reject) => { + 333 + // ... sets up permission request ... + 334 + // NO abort signal listener + 335 + // NO timeout + 336 + // Promise resolves only when user explicitly grants/denies + 337 + }) + 338 +} + 339 +``` + 340 + + 341 +`grep -c "abort" next.ts` returns **0** — there is zero abort signal awareness in the entire file. + 342 + + 343 +### Where it can happen? + 344 +- Any subagent tool call that requires permission + 345 +- Parallel subagents: one hangs on permission → parent hangs → all other parallel results blocked + 346 +- Even with auto-approve policies, edge cases (new tools, destructive operations) may still prompt + 347 + + 348 +### What any agent needs to look for? + 349 +``` + 350 +File: packages/opencode/src/permission/next.ts + 351 +Location: The ask() function (exported, ~line 143) + 352 +Pattern: The Promise constructor — no abort/timeout handling + 353 +Also check: How ask() is called from tool execution context + 354 +Also check: Whether an AbortSignal is available in the call chain + 355 +Also check: packages/opencode/src/session/prompt.ts for where permissions are requested + 356 +``` + 357 + + 358 +### How to make the fix? + 359 +Add AbortSignal support to the `ask()` function: + 360 + + 361 +```typescript + 362 +export function ask(input: AskInput & { abort?: AbortSignal }) { + 363 + return new Promise((resolve, reject) => { + 364 + // Check if already aborted + 365 + if (input.abort?.aborted) { + 366 + return reject(new Error("Permission request aborted")) + 367 + } + 368 + + 369 + // Listen for abort + 370 + const onAbort = () => { + 371 + reject(new Error("Permission request aborted")) + 372 + } + 373 + input.abort?.addEventListener("abort", onAbort, { once: true }) + 374 + + 375 + // ... existing permission logic ... + 376 + // Clean up abort listener in resolve/reject paths + 377 + }) + 378 +} + 379 +``` + 380 + + 381 +**Important**: The abort signal must be plumbed from `processor.ts` through the tool execution chain to `next.ts`. Trace the call path: + 382 +``` + 383 +processor.ts (has abort) → tool execution → specific tool → permission check → next.ts ask() + 384 +``` + 385 + + 386 +### Testing + 387 +- Trigger a subagent that needs permission + 388 +- Abort the parent session while permission is pending + 389 +- Verify the child permission promise rejects + 390 +- Verify the parent tool call resolves with an error (not hangs forever) + 391 + + 392 +--- + 393 + + 394 +## Issue #7: `retry-catch-all` — retry.ts Catch-All Makes All JSON Errors Retryable + 395 + + 396 +### Priority: P1 — Robustness + 397 + + 398 +### What is the issue? + 399 +The `retryable()` function in `retry.ts` has a catch-all at line ~96 that makes **any error with a parseable JSON response body** retryable. This means Bedrock 400 errors ("prompt is too long"), which should NOT be retried, get classified as retryable — fueling the infinite retry storm. + 400 + + 401 +### What is the bug? + 402 +`packages/opencode/src/session/retry.ts` line ~96: + 403 +```typescript + 404 +// After checking specific patterns (rate limit, overloaded, etc.)... + 405 +return JSON.stringify(json) // ← ANY remaining JSON error = retryable + 406 +``` + 407 + + 408 +The Bedrock "prompt is too long" error response is valid JSON with `"isRetryable": false` in the body, but the catch-all ignores this field and returns the body as a retryable error message. + 409 + + 410 +### Where it can happen? + 411 +- Any API error that returns a JSON response body + 412 +- Specifically: Bedrock validation errors (400), authentication errors, quota errors + 413 +- Combined with Issue #1 (no max retries), this creates infinite retry storms + 414 + + 415 +### What any agent needs to look for? + 416 +``` + 417 +File: packages/opencode/src/session/retry.ts + 418 +Location: The retryable() function, specifically the catch-all after all pattern checks + 419 +Pattern: The final `return JSON.stringify(json)` that runs for any unmatched JSON error + 420 +Also check: What specific patterns ARE checked before the catch-all + 421 +Also check: Whether the JSON body contains "isRetryable" or HTTP status fields + 422 +``` + 423 + + 424 +### How to make the fix? + 425 +Replace the blanket catch-all with HTTP status-aware classification: + 426 + + 427 +```typescript + 428 +// Instead of: return JSON.stringify(json) + 429 +// Use: + 430 +const status = (json as any).status ?? (json as any).statusCode + 431 +if (typeof status === "number" && status >= 400 && status < 500) { + 432 + // 4xx errors are client errors — NOT retryable (bad request, auth, not found, etc.) + 433 + return undefined + 434 +} + 435 +// 5xx and truly unknown → retryable (but capped by MAX_RETRIES from Issue #1) + 436 +return JSON.stringify(json) + 437 +``` + 438 + + 439 +Also check for the `isRetryable` field that Bedrock includes: + 440 +```typescript + 441 +if ((json as any).isRetryable === false) return undefined + 442 +``` + 443 + + 444 +**Note**: This fix is SAFER when combined with Issue #1 (MAX_RETRIES), since any misclassification is bounded by the retry cap. + 445 + + 446 +### Testing + 447 +- Send a Bedrock 400 "prompt is too long" error → verify NOT retried + 448 +- Send a 429 rate limit error → verify IS retried + 449 +- Send a 500 server error → verify IS retried (up to MAX_RETRIES) + 450 +- Send a JSON error with `isRetryable: false` → verify NOT retried + 451 + + 452 +--- + 453 + + 454 +## Issue #8: `tool-error-metadata` — processor.ts Drops Metadata on Tool Errors + 455 + + 456 +### Priority: P1 — Robustness + 457 + + 458 +### What is the issue? + 459 +When a tool execution errors, the tool-error handler in `processor.ts` rebuilds the tool state but **drops the `title` and `metadata` fields**. This means the UI loses the tool's display name and any navigation metadata (like `sessionId` for subagent links). + 460 + + 461 +### What is the bug? + 462 +`packages/opencode/src/session/processor.ts` lines ~207-218, the `"tool-error"` case: + 463 +```typescript + 464 +case "tool-error": { + 465 + const match = toolcalls[value.toolCallId] + 466 + if (match && match.state.status === "running") { + 467 + await Session.updatePart({ + 468 + ...match, + 469 + state: { + 470 + status: "error", + 471 + input: value.input ?? match.state.input, + 472 + error: (value.error as any).toString(), + 473 + // ❌ Missing: title: match.state.title, + 474 + // ❌ Missing: metadata: match.state.metadata, + 475 + time: { + 476 + start: match.state.time.start, + 477 + end: Date.now(), + 478 + }, + 479 + }, + 480 + }) + 481 + } + 482 +} + 483 +``` + 484 + + 485 +### Where it can happen? + 486 +- Any tool that errors during execution + 487 +- Most visible for task tool errors — the `sessionId` metadata (used for navigating to child sessions) is lost + 488 +- Also affects batch tool parts and any tool with custom title/metadata + 489 + + 490 +### What any agent needs to look for? + 491 +``` + 492 +File: packages/opencode/src/session/processor.ts + 493 +Location: The "tool-error" case in the stream event handler + 494 +Pattern: Compare the "tool-error" state update with the "tool-result" state update + 495 +The "tool-result" case preserves title and metadata, but "tool-error" does not + 496 +``` + 497 + + 498 +### How to make the fix? + 499 +Add `title` and `metadata` preservation to the error state: + 500 + + 501 +```typescript + 502 +case "tool-error": { + 503 + const match = toolcalls[value.toolCallId] + 504 + if (match && match.state.status === "running") { + 505 + await Session.updatePart({ + 506 + ...match, + 507 + state: { + 508 + status: "error", + 509 + input: value.input ?? match.state.input, + 510 + error: (value.error as any).toString(), + 511 + title: match.state.title, // ← ADD + 512 + metadata: match.state.metadata, // ← ADD + 513 + time: { + 514 + start: match.state.time.start, + 515 + end: Date.now(), + 516 + }, + 517 + }, + 518 + }) + 519 + } + 520 +} + 521 +``` + 522 + + 523 +### Testing + 524 +- Trigger a tool error (e.g., file read on non-existent path) + 525 +- Verify the error part in the UI shows the tool title + 526 +- Trigger a subagent error → verify the sessionId metadata is preserved in the error part + 527 + + 528 +--- + 529 + + 530 +## Issue #9: `batch-error-details` — batch.ts Output Lacks Per-Tool Error Details + 531 + + 532 +### Priority: P2 — Nice to Have + 533 + + 534 +### What is the issue? + 535 +When batch tool calls fail, the output summary only says `"Executed X/Y tools successfully. Z failed."` without including **which tools failed or why**. The LLM receiving this output cannot diagnose or intelligently retry the failures. + 536 + + 537 +### What is the bug? + 538 +`packages/opencode/src/tool/batch.ts` output message: + 539 +```typescript + 540 +const outputMessage = failedCalls > 0 + 541 + ? `Executed ${successfulCalls}/${results.length} tools successfully. ${failedCalls} failed.` + 542 + : `All ${successfulCalls} tools executed successfully.` + 543 +``` + 544 + + 545 +Note: Individual tool-call parts ARE written to the database with their errors (via `Session.updatePart` in the catch block), so the UI shows them. But the **summary message returned to the LLM** lacks details. + 546 + + 547 +### Where it can happen? + 548 +- Any batch execution where one or more tools fail + 549 +- The LLM sees the summary but not the individual error details + 550 +- Can cause the LLM to blindly retry the same failing operations + 551 + + 552 +### What any agent needs to look for? + 553 +``` + 554 +File: packages/opencode/src/tool/batch.ts + 555 +Location: The outputMessage construction after Promise.all results + 556 +Pattern: The results array has { success, tool, error? } for each call + 557 +``` + 558 + + 559 +### How to make the fix? + 560 +Include per-tool error details in the output: + 561 + + 562 +```typescript + 563 +const outputMessage = failedCalls > 0 + 564 + ? [ + 565 + `Executed ${successfulCalls}/${results.length} tools successfully. ${failedCalls} failed.`, + 566 + "", + 567 + "Failed tools:", + 568 + ...results + 569 + .filter((r) => !r.success) + 570 + .map((r) => `- ${r.tool}: ${r.error instanceof Error ? r.error.message : String(r.error)}`), + 571 + ].join("\n") + 572 + : `All ${successfulCalls} tools executed successfully.\n\nKeep using the batch tool for optimal performance in your next response!` + 573 +``` + 574 + + 575 +### Testing + 576 +- Execute a batch with one intentionally failing tool (e.g., read non-existent file) + 577 +- Verify the output includes the tool name and error message + 578 +- Verify the LLM can see which tool failed and why + 579 + + 580 +--- + 581 + + 582 +## Implementation Order + 583 + + 584 +``` + 585 +TODAY (P0 — Stop The Bleeding): + 586 + #1 processor-max-retries → 3.5hr freeze prevention + 587 + #2 bedrock-undefined-message → Bedrock overflow detection + 588 + #3 task-swallows-errors → Silent failure surfacing + 589 + + 590 +THIS SPRINT (P0 — Root Cause): + 591 + #4 bedrock-context-cap → Context limit accuracy + 592 + #5 subagent-timeout → Hung subagent prevention + 593 + #6 permission-abort → Permission hang prevention + 594 + + 595 +NEXT SPRINT (P1 — Robustness): + 596 + #7 retry-catch-all → Smart retry classification + 597 + #8 tool-error-metadata → Error UI metadata + 598 + + 599 +BACKLOG (P2): + 600 + #9 batch-error-details → Batch error visibility + 601 +``` + 602 + +``` + + +### 📄 `packages/opencode/src/provider/error.ts` + +**Type:** TypeScript Source File 📘 + +```diff +@@ -50,7 +50,7 @@ export namespace ProviderError { + 50 50 function message(providerID: string, e: APICallError) { + 51 51 return iife(() => { + 52 52 const msg = e.message + 53 - if (msg === "") { + 53 + if (msg === "" || msg === "undefined") { + 54 54 if (e.responseBody) return e.responseBody + 55 55 if (e.statusCode) { + 56 56 const err = STATUS_CODES[e.statusCode] + 57 57 + +``` + + +### 📄 `packages/opencode/src/session/processor.ts` + +**Type:** TypeScript Source File 📘 + +```diff +@@ -18,6 +18,7 @@ import { Question } from "@/question" + 18 18 + 19 19 export namespace SessionProcessor { + 20 20 const DOOM_LOOP_THRESHOLD = 3 + 21 + const MAX_RETRIES = 10 + 21 22 const log = Log.create({ service: "session.processor" }) + 22 23 + 23 24 export type Info = Awaited> +@@ -210,6 +211,7 @@ export namespace SessionProcessor { +210 211 status: "error", +211 212 input: value.input ?? match.state.input, +212 213 error: (value.error as any).toString(), + 214 + metadata: match.state.metadata, +213 215 time: { +214 216 start: match.state.time.start, +215 217 end: Date.now(), +@@ -363,6 +365,23 @@ export namespace SessionProcessor { +363 365 const retry = SessionRetry.retryable(error) +364 366 if (retry !== undefined) { +365 367 attempt++ + 368 + if (attempt >= MAX_RETRIES) { + 369 + log.error("max retries exceeded", { + 370 + sessionID: input.sessionID, + 371 + attempt, + 372 + message: retry, + 373 + }) + 374 + input.assistantMessage.error = MessageV2.fromError( + 375 + new Error(`Maximum retries (${MAX_RETRIES}) exceeded. Last error: ${retry}`), + 376 + { providerID: input.model.providerID }, + 377 + ) + 378 + Bus.publish(Session.Event.Error, { + 379 + sessionID: input.assistantMessage.sessionID, + 380 + error: input.assistantMessage.error, + 381 + }) + 382 + SessionStatus.set(input.sessionID, { type: "idle" }) + 383 + break + 384 + } +366 385 const delay = SessionRetry.delay(attempt, error.name === "APIError" ? error : undefined) +367 386 SessionStatus.set(input.sessionID, { +368 387 type: "retry", +369 388 + +``` + + +### 📄 `packages/opencode/src/tool/task.ts` + +**Type:** TypeScript Source File 📘 + +```diff +@@ -142,6 +142,24 @@ export const TaskTool = Tool.define("task", async (ctx) => { +142 142 parts: promptParts, +143 143 }) +144 144 + 145 + if ((result.info as MessageV2.Assistant).error) { + 146 + const errorObj = (result.info as MessageV2.Assistant).error! + 147 + const msg = ("data" in errorObj && "message" in errorObj.data) + 148 + ? errorObj.data.message + 149 + : errorObj.name + 150 + return { + 151 + title: params.description, + 152 + metadata: { sessionId: session.id, model }, + 153 + output: [ + 154 + `task_id: ${session.id} (for resuming to continue this task if needed)`, + 155 + "", + 156 + "", + 157 + `ERROR: ${msg}`, + 158 + "", + 159 + ].join("\n"), + 160 + } + 161 + } + 162 + +145 163 const text = result.parts.findLast((x) => x.type === "text")?.text ?? "" +146 164 +147 165 const output = [ +148 166 + +``` + + +### ✨ `packages/opencode/test/provider/error.test.ts` **[ADDED]** + +**Status:** ✅ **NEW FILE** - This file has been newly created + +**Type:** TypeScript Source File 📘 + +```diff +@@ -0,0 +1,106 @@ + 1 +import { describe, expect, test } from "bun:test" + 2 +import { APICallError } from "ai" + 3 +import { ProviderError } from "../../src/provider/error" + 4 + + 5 +function makeAPICallError(opts: { + 6 + message: string + 7 + statusCode?: number + 8 + responseBody?: string + 9 + isRetryable?: boolean + 10 +}) { + 11 + return new APICallError({ + 12 + message: opts.message, + 13 + url: "https://bedrock.us-east-1.amazonaws.com", + 14 + requestBodyValues: {}, + 15 + statusCode: opts.statusCode ?? 400, + 16 + responseHeaders: {}, + 17 + responseBody: opts.responseBody, + 18 + isRetryable: opts.isRetryable ?? false, + 19 + }) + 20 +} + 21 + + 22 +describe("provider.error.parseAPICallError", () => { + 23 + test("detects overflow when message is literal 'undefined' and responseBody has prompt-too-long", () => { + 24 + const error = makeAPICallError({ + 25 + message: "undefined", + 26 + statusCode: 400, + 27 + responseBody: JSON.stringify({ + 28 + message: "prompt is too long: 208845 tokens > 200000 maximum", + 29 + }), + 30 + }) + 31 + const result = ProviderError.parseAPICallError({ + 32 + providerID: "amazon-bedrock", + 33 + error, + 34 + }) + 35 + expect(result.type).toBe("context_overflow") + 36 + }) + 37 + + 38 + test("detects overflow when message is empty string and responseBody has prompt-too-long", () => { + 39 + const error = makeAPICallError({ + 40 + message: "", + 41 + statusCode: 400, + 42 + responseBody: JSON.stringify({ + 43 + message: "prompt is too long: 208845 tokens > 200000 maximum", + 44 + }), + 45 + }) + 46 + const result = ProviderError.parseAPICallError({ + 47 + providerID: "amazon-bedrock", + 48 + error, + 49 + }) + 50 + expect(result.type).toBe("context_overflow") + 51 + }) + 52 + + 53 + test("does NOT treat literal 'undefined' as overflow when responseBody has no overflow pattern", () => { + 54 + const error = makeAPICallError({ + 55 + message: "undefined", + 56 + statusCode: 403, + 57 + responseBody: JSON.stringify({ message: "Access denied" }), + 58 + }) + 59 + const result = ProviderError.parseAPICallError({ + 60 + providerID: "amazon-bedrock", + 61 + error, + 62 + }) + 63 + expect(result.type).toBe("api_error") + 64 + }) + 65 + + 66 + test("detects overflow for direct Anthropic provider with normal message", () => { + 67 + const error = makeAPICallError({ + 68 + message: "prompt is too long: 208845 tokens > 200000 maximum", + 69 + statusCode: 400, + 70 + }) + 71 + const result = ProviderError.parseAPICallError({ + 72 + providerID: "anthropic", + 73 + error, + 74 + }) + 75 + expect(result.type).toBe("context_overflow") + 76 + }) + 77 + + 78 + test("detects overflow for Bedrock 'input is too long' pattern", () => { + 79 + const error = makeAPICallError({ + 80 + message: "undefined", + 81 + statusCode: 400, + 82 + responseBody: "input is too long for requested model", + 83 + }) + 84 + const result = ProviderError.parseAPICallError({ + 85 + providerID: "amazon-bedrock", + 86 + error, + 87 + }) + 88 + expect(result.type).toBe("context_overflow") + 89 + }) + 90 + + 91 + test("returns api_error for normal non-overflow errors", () => { + 92 + const error = makeAPICallError({ + 93 + message: "Rate limit exceeded", + 94 + statusCode: 429, + 95 + isRetryable: true, + 96 + }) + 97 + const result = ProviderError.parseAPICallError({ + 98 + providerID: "amazon-bedrock", + 99 + error, + 100 + }) + 101 + expect(result.type).toBe("api_error") + 102 + if (result.type === "api_error") { + 103 + expect(result.isRetryable).toBe(true) + 104 + } + 105 + }) + 106 +}) + 107 + +``` + +## 🤖 Comprehensive Review Checklist + +### ✅ Code Quality & Standards +- [ ] **Syntax & Formatting**: Consistent indentation, proper spacing +- [ ] **Naming Conventions**: Clear, descriptive variable/function names +- [ ] **Code Structure**: Logical organization, appropriate function size +- [ ] **Documentation**: Clear comments explaining complex logic +- [ ] **Type Safety**: Proper typing (if applicable) + +### 🔍 Logic & Functionality +- [ ] **Algorithm Correctness**: Logic implements requirements correctly +- [ ] **Edge Case Handling**: Boundary conditions properly addressed +- [ ] **Error Handling**: Appropriate try-catch blocks and error messages +- [ ] **Performance**: Efficient algorithms, no unnecessary loops +- [ ] **Memory Management**: Proper cleanup, no memory leaks + +### 🐛 Potential Issues & Bugs +- [ ] **Runtime Errors**: No null/undefined dereferencing +- [ ] **Type Mismatches**: Consistent data types throughout +- [ ] **Race Conditions**: Proper async/await handling +- [ ] **Resource Leaks**: Event listeners, timers properly cleaned up +- [ ] **Off-by-one Errors**: Array/loop bounds correctly handled + +### 🔒 Security Considerations +- [ ] **Input Validation**: User inputs properly sanitized +- [ ] **XSS Prevention**: No unsafe HTML injection +- [ ] **Authentication**: Proper access controls if applicable +- [ ] **Data Exposure**: No sensitive information in logs/client +- [ ] **Dependency Security**: No known vulnerable packages + +### 📱 User Experience & Accessibility +- [ ] **Responsive Design**: Works on different screen sizes +- [ ] **Loading States**: Proper feedback during operations +- [ ] **Error Messages**: User-friendly error communication +- [ ] **Accessibility**: ARIA labels, keyboard navigation +- [ ] **Performance**: Fast loading, smooth interactions + +### 💡 Improvement Suggestions + +#### Code Organization +- [ ] Consider extracting complex logic into separate functions +- [ ] Evaluate if constants should be moved to configuration +- [ ] Check for code duplication opportunities + +#### Performance Optimizations +- [ ] Identify opportunities for memoization +- [ ] Consider lazy loading for heavy operations +- [ ] Evaluate database query efficiency (if applicable) + +#### Testing Recommendations +- [ ] Unit tests for core functionality +- [ ] Integration tests for API endpoints +- [ ] Edge case testing scenarios + +#### Documentation Needs +- [ ] API documentation updates +- [ ] Code comments for complex algorithms +- [ ] README updates if public interfaces changed + +### 📝 Review Notes +*Add your specific feedback, suggestions, and observations here:* + +--- +*Individual file review generated by AI Visual Code Review v2.0* +*Generated: 2026-02-25T15:47:47.700Z* diff --git a/docs/09-temp/issues.md b/docs/09-temp/issues.md new file mode 100644 index 000000000000..4f21428f0ddc --- /dev/null +++ b/docs/09-temp/issues.md @@ -0,0 +1,601 @@ +# OpenCode — Parallel Agent & Retry Storm Issues + +> **Created**: 2025-02-25 +> **Source**: Combined RCA by Cline + Antigravity +> **Status**: Approved for implementation + +--- + +## Issue #1: `processor-max-retries` — Infinite Retry Loop in processor.ts + +### Priority: P0 — Stop The Bleeding + +### What is the issue? +The session processor retries failed API calls in an infinite `while(true)` loop with **no maximum retry count**. When an error is classified as "retryable" by `retry.ts`, the processor will retry it forever — user observed **2,244 identical retries over 3.5 hours** before manual abort. + +### What is the bug? +`packages/opencode/src/session/processor.ts` line ~53 has a `while(true)` loop. When the catch block determines an error is retryable via `SessionRetry.retryable(error)`, it increments `attempt` and `continue`s the loop. There is **no guard** like `if (attempt >= MAX_RETRIES) break`. + +### Where it can happen? +- Any API call that returns a retryable error (transient network issues, rate limits, Bedrock context overflow misclassified as retryable) +- Most critically: Bedrock "prompt is too long" errors that get misclassified as retryable by the catch-all in `retry.ts` (see Issue #2) +- Affects both parent sessions and subagent sessions independently + +### What any agent needs to look for? +``` +File: packages/opencode/src/session/processor.ts +Location: The while(true) loop (~line 53) +Pattern: Look for the catch block that calls SessionRetry.retryable() and does `continue` +``` + +### How to make the fix? +Add a `MAX_RETRIES` constant and guard before the `continue`: + +```typescript +// At top of file or inside the function +const MAX_RETRIES = 10 + +// Inside the catch block, before `continue`: +if (attempt >= MAX_RETRIES) { + input.assistantMessage.error = { + name: "RetryLimitExceeded", + message: `Maximum retries (${MAX_RETRIES}) exceeded. Last error: ${retry}`, + } + break +} +``` + +The error should be stored on `input.assistantMessage.error` so the session stops and the UI shows the error. Make sure the status is set to idle after breaking. + +### Testing +- Trigger a retryable error (e.g., rate limit) and verify it stops after 10 attempts +- Verify the error message appears in the session UI +- Verify the session status returns to "idle" (not stuck in "retry") + +--- + +## Issue #2: `bedrock-undefined-message` — error.ts Fails to Parse Bedrock Error Messages + +### Priority: P0 — Stop The Bleeding + +### What is the issue? +When Amazon Bedrock returns an API error (e.g., "prompt is too long"), the `message()` function in `error.ts` receives `e.message = "undefined"` (the literal string, not the JS undefined value). The function only checks for empty string `""`, so it passes `"undefined"` through to `isOverflow()`, which fails to match any overflow pattern. This means **Bedrock context overflow errors are never detected as overflow**, preventing compaction from triggering. + +### What is the bug? +`packages/opencode/src/provider/error.ts` function `message()` (~line 50-80): +```typescript +const msg = e.message +if (msg === "") { + if (e.responseBody) return e.responseBody + // ... +} +``` +When Bedrock SDK sets `e.message` to the literal string `"undefined"`, this check passes through. The actual error details are in `e.responseBody` but never extracted. + +### Where it can happen? +- Any Bedrock API call that returns an error (context overflow, validation errors, throttling) +- The Bedrock SDK wraps errors differently than the Anthropic direct SDK +- Specifically observed with "prompt is too long: 208845 tokens > 200000 maximum" errors + +### What any agent needs to look for? +``` +File: packages/opencode/src/provider/error.ts +Location: The message() function, specifically the `if (msg === "")` check +Also check: isOverflow() function and the OVERFLOW_PATTERNS regex +``` + +### How to make the fix? +Extend the empty-message check to also handle `"undefined"`: + +```typescript +function message(providerID: string, e: APICallError) { + return iife(() => { + const msg = e.message + if (msg === "" || msg === "undefined") { + if (e.responseBody) return e.responseBody + // ... rest of existing fallback logic + } + return msg + }) +} +``` + +This ensures the actual error body (which contains "prompt is too long") is used for overflow detection instead of the meaningless `"undefined"` string. + +### Testing +- Mock a Bedrock APICallError with `message: "undefined"` and `responseBody: "prompt is too long: 208845 tokens > 200000 maximum"` +- Verify `message()` returns the responseBody, not `"undefined"` +- Verify `isOverflow()` correctly detects the overflow pattern from the responseBody + +--- + +## Issue #3: `task-swallows-errors` — task.ts Silently Swallows Subagent Failures + +### Priority: P0 — Stop The Bleeding + +### What is the issue? +When a subagent (child session spawned by the `task` tool) fails with an error, the parent session shows it as **successfully completed with empty output**. The user sees a green ✅ checkmark for a task that actually errored. This is THE primary cause of "failures not reflected in main chat." + +### What is the bug? +`packages/opencode/src/tool/task.ts` line ~145: +```typescript +const result = await SessionPrompt.prompt({...}) +const text = result.parts.findLast((x) => x.type === "text")?.text ?? "" +``` + +`result.info` contains an `.error` field when the child session errored (set by `processor.ts` at `input.assistantMessage.error = error`). But `task.ts` **never checks `result.info.error`** — it only looks for text parts. When the child errored, there are no text parts, so `text = ""`, and the parent receives `\n\n` as a "successful" empty result. + +### Where it can happen? +- Any subagent failure: context overflow, API error, tool execution error, rate limit +- Parallel subagents: if 1 of 3 subagents fails, parent sees 3 "completed" tasks with one having empty output +- The parent LLM may then hallucinate that the task completed or silently move on + +### What any agent needs to look for? +``` +File: packages/opencode/src/tool/task.ts +Location: After the `SessionPrompt.prompt()` call, before building the output +Pattern: result.info should have an error field — check result.info type definition +Also check: packages/opencode/src/session/prompt.ts for the return type of prompt() +``` + +### How to make the fix? +Add an error check immediately after the `SessionPrompt.prompt()` call: + +```typescript +const result = await SessionPrompt.prompt({...}) + +// Check if child session errored +if (result.info.error) { + const error = result.info.error + const msg = error.message ?? error.name ?? "Subagent task failed" + return { + title: params.description, + metadata: { sessionId: session.id, model }, + output: [ + `task_id: ${session.id}`, + "", + "", + `ERROR: ${msg}`, + `The subtask encountered an error and could not complete.`, + "", + ].join("\n"), + } +} + +const text = result.parts.findLast((x) => x.type === "text")?.text ?? "" +``` + +**Important**: Check the actual type of `result.info` to use proper typing instead of `(result.info as any).error`. Look at how `processor.ts` sets the error on `input.assistantMessage.error` to understand the shape. + +### Testing +- Trigger a subagent error (e.g., invalid tool call, context overflow) +- Verify the parent session shows "ERROR: ..." in the task result, not empty +- Verify the parent LLM receives the error and can report it to the user + +--- + +## Issue #4: `bedrock-context-cap` — Bedrock Provider Missing Context Limit Override + +### Priority: P0 — This Sprint + +### What is the issue? +The `models-snapshot.ts` file (auto-generated from models.dev) lists Claude Opus 4.6 on Bedrock with `context: 1,000,000`. This is the model's capability WITH the `context-1m` beta header. However, the Bedrock provider handler in `provider.ts` **never sends the 1M beta header**, so Bedrock actually enforces a 200K limit. The result: UI shows "20% context usage" when the user is actually at 100% of the real limit, and compaction never triggers. + +### What is the bug? +Two bugs combine: + +1. **`models-snapshot.ts`** lists Opus 4.6 Bedrock models at 1M context (reflects model capability, not runtime limit) +2. **`provider.ts`** `"amazon-bedrock"` handler has NO logic to: + - Send `additionalModelRequestFields: { anthropic_beta: ["context-1m-2025-08-07"] }` to enable 1M + - Override the context limit to 200K when 1M beta is NOT active + +**Affected models in snapshot**: +``` +amazon-bedrock / anthropic.claude-opus-4-6-v1: context=1,000,000 ❌ +amazon-bedrock / us.anthropic.claude-opus-4-6-v1: context=1,000,000 ❌ +amazon-bedrock / eu.anthropic.claude-opus-4-6-v1: context=1,000,000 ❌ +amazon-bedrock / global.anthropic.claude-opus-4-6-v1: context=1,000,000 ❌ +``` + +All other Bedrock Claude models correctly show 200K. + +### Where it can happen? +- Any user running Claude Opus 4.6 via Amazon Bedrock +- Compaction threshold is calculated from `model.limit.context` → 1M → threshold ~900K +- Bedrock rejects at 200K → 700K token gap where compaction never fires but API always rejects +- Combined with Issue #1 (infinite retries), this causes the 3.5-hour freeze + +### What any agent needs to look for? +``` +File: packages/opencode/src/provider/provider.ts +Location: The "amazon-bedrock" entry in CUSTOM_LOADERS (~line 211) +Pattern: The returned object has options (providerOptions) and getModel() but NO context limit override +Also: Look at how compaction.ts uses model.limit.context (~line 33) +Also: Look at how Cline handles this — they use additionalModelRequestFields for Bedrock + +DO NOT edit models-snapshot.ts directly — it is auto-generated by build.ts +``` + +### How to make the fix? +**Option A (Recommended)**: Add provider-level context limit override in the model resolution logic. When provider is "amazon-bedrock" and model is Claude, cap context at 200K unless a 1M configuration is explicitly enabled. + +Look at where models are resolved and limits are applied. The fix should go in `provider.ts` where models are loaded/resolved, adding a context limit override: + +```typescript +// Inside amazon-bedrock handler or model resolution +if (providerID === "amazon-bedrock" && modelData.limit?.context > 200000) { + // Cap at 200K unless 1M beta is explicitly configured + modelData.limit.context = 200000 +} +``` + +**Option B (Future)**: Implement Cline's `:1m` suffix pattern — user explicitly opts into 1M context, which triggers adding `anthropic_beta: ["context-1m-2025-08-07"]` via `additionalModelRequestFields`. + +### Testing +- Configure Bedrock with Opus 4.6 +- Verify UI shows context limit as 200K (not 1M) +- Verify compaction triggers before hitting Bedrock's actual 200K limit +- Verify no "prompt is too long" errors during normal usage + +--- + +## Issue #5: `subagent-timeout` — task.ts Has No Execution Timeout + +### Priority: P0 — This Sprint + +### What is the issue? +The `task` tool calls `SessionPrompt.prompt()` with **no timeout or deadline**. If a subagent gets stuck (infinite retry storm, permission hang, or any other blocking issue), the parent tool call never resolves. The parent session appears frozen with a spinning "running" indicator forever. + +### What is the bug? +`packages/opencode/src/tool/task.ts`: +```typescript +const result = await SessionPrompt.prompt({ + messageID, + sessionID: session.id, + model: { modelID: model.modelID, providerID: model.providerID }, + agent: agent.name, + tools: { ... }, + parts: promptParts, +}) +// ← No timeout wrapper, no AbortController deadline +``` + +This Promise can hang indefinitely if the child session encounters: +- Infinite retry loop (Issue #1 before fix) +- Permission hang (Issue #6) +- Slow API responses that never complete + +### Where it can happen? +- Any subagent execution, but especially: + - When subagent hits context overflow with retries + - When subagent needs permission and user is watching parent + - When API provider is slow or unresponsive + +### What any agent needs to look for? +``` +File: packages/opencode/src/tool/task.ts +Location: The SessionPrompt.prompt() call +Pattern: Check if there's an AbortSignal or timeout mechanism available +Also check: How the abort signal flows from processor.ts → tool execution → task.ts +Also check: ctx parameter in execute() — does it carry an abort signal? +``` + +### How to make the fix? +Wrap the `SessionPrompt.prompt()` call with an AbortController timeout: + +```typescript +const timeout = 5 * 60 * 1000 // 5 minutes (configurable) +const controller = new AbortController() +const timer = setTimeout(() => controller.abort(), timeout) + +try { + const result = await SessionPrompt.prompt({ + // ... existing params ... + abort: controller.signal, // Pass abort signal if prompt() supports it + }) + clearTimeout(timer) + // ... process result ... +} catch (e) { + clearTimeout(timer) + if (controller.signal.aborted) { + return { + title: params.description, + metadata: { sessionId: session.id, model }, + output: `ERROR: Subtask timed out after ${timeout / 1000}s. The task may still be running in session ${session.id}.`, + } + } + throw e +} +``` + +Check if `SessionPrompt.prompt()` already accepts an `abort` parameter. If not, trace how `processor.ts` passes its abort signal and ensure the plumbing exists. + +### Testing +- Trigger a subagent that would hang (e.g., long-running task) +- Verify it times out after the configured deadline +- Verify the parent receives a timeout error message, not silent hang +- Verify the child session is properly cleaned up + +--- + +## Issue #6: `permission-abort` — next.ts Permission Promises Hang Forever in Subagents + +### Priority: P0 — This Sprint + +### What is the issue? +When a subagent's tool requires permission (e.g., file write, command execution), the permission prompt appears **only in the child session**. If the user is watching the parent session, they never see the prompt. The child session hangs forever waiting for permission, which blocks the parent's tool call. + +### What is the bug? +`packages/opencode/src/permission/next.ts` lines ~143-156: +```typescript +export function ask(input: AskInput) { + return new Promise((resolve, reject) => { + // ... sets up permission request ... + // NO abort signal listener + // NO timeout + // Promise resolves only when user explicitly grants/denies + }) +} +``` + +`grep -c "abort" next.ts` returns **0** — there is zero abort signal awareness in the entire file. + +### Where it can happen? +- Any subagent tool call that requires permission +- Parallel subagents: one hangs on permission → parent hangs → all other parallel results blocked +- Even with auto-approve policies, edge cases (new tools, destructive operations) may still prompt + +### What any agent needs to look for? +``` +File: packages/opencode/src/permission/next.ts +Location: The ask() function (exported, ~line 143) +Pattern: The Promise constructor — no abort/timeout handling +Also check: How ask() is called from tool execution context +Also check: Whether an AbortSignal is available in the call chain +Also check: packages/opencode/src/session/prompt.ts for where permissions are requested +``` + +### How to make the fix? +Add AbortSignal support to the `ask()` function: + +```typescript +export function ask(input: AskInput & { abort?: AbortSignal }) { + return new Promise((resolve, reject) => { + // Check if already aborted + if (input.abort?.aborted) { + return reject(new Error("Permission request aborted")) + } + + // Listen for abort + const onAbort = () => { + reject(new Error("Permission request aborted")) + } + input.abort?.addEventListener("abort", onAbort, { once: true }) + + // ... existing permission logic ... + // Clean up abort listener in resolve/reject paths + }) +} +``` + +**Important**: The abort signal must be plumbed from `processor.ts` through the tool execution chain to `next.ts`. Trace the call path: +``` +processor.ts (has abort) → tool execution → specific tool → permission check → next.ts ask() +``` + +### Testing +- Trigger a subagent that needs permission +- Abort the parent session while permission is pending +- Verify the child permission promise rejects +- Verify the parent tool call resolves with an error (not hangs forever) + +--- + +## Issue #7: `retry-catch-all` — retry.ts Catch-All Makes All JSON Errors Retryable + +### Priority: P1 — Robustness + +### What is the issue? +The `retryable()` function in `retry.ts` has a catch-all at line ~96 that makes **any error with a parseable JSON response body** retryable. This means Bedrock 400 errors ("prompt is too long"), which should NOT be retried, get classified as retryable — fueling the infinite retry storm. + +### What is the bug? +`packages/opencode/src/session/retry.ts` line ~96: +```typescript +// After checking specific patterns (rate limit, overloaded, etc.)... +return JSON.stringify(json) // ← ANY remaining JSON error = retryable +``` + +The Bedrock "prompt is too long" error response is valid JSON with `"isRetryable": false` in the body, but the catch-all ignores this field and returns the body as a retryable error message. + +### Where it can happen? +- Any API error that returns a JSON response body +- Specifically: Bedrock validation errors (400), authentication errors, quota errors +- Combined with Issue #1 (no max retries), this creates infinite retry storms + +### What any agent needs to look for? +``` +File: packages/opencode/src/session/retry.ts +Location: The retryable() function, specifically the catch-all after all pattern checks +Pattern: The final `return JSON.stringify(json)` that runs for any unmatched JSON error +Also check: What specific patterns ARE checked before the catch-all +Also check: Whether the JSON body contains "isRetryable" or HTTP status fields +``` + +### How to make the fix? +Replace the blanket catch-all with HTTP status-aware classification: + +```typescript +// Instead of: return JSON.stringify(json) +// Use: +const status = (json as any).status ?? (json as any).statusCode +if (typeof status === "number" && status >= 400 && status < 500) { + // 4xx errors are client errors — NOT retryable (bad request, auth, not found, etc.) + return undefined +} +// 5xx and truly unknown → retryable (but capped by MAX_RETRIES from Issue #1) +return JSON.stringify(json) +``` + +Also check for the `isRetryable` field that Bedrock includes: +```typescript +if ((json as any).isRetryable === false) return undefined +``` + +**Note**: This fix is SAFER when combined with Issue #1 (MAX_RETRIES), since any misclassification is bounded by the retry cap. + +### Testing +- Send a Bedrock 400 "prompt is too long" error → verify NOT retried +- Send a 429 rate limit error → verify IS retried +- Send a 500 server error → verify IS retried (up to MAX_RETRIES) +- Send a JSON error with `isRetryable: false` → verify NOT retried + +--- + +## Issue #8: `tool-error-metadata` — processor.ts Drops Metadata on Tool Errors + +### Priority: P1 — Robustness + +### What is the issue? +When a tool execution errors, the tool-error handler in `processor.ts` rebuilds the tool state but **drops the `title` and `metadata` fields**. This means the UI loses the tool's display name and any navigation metadata (like `sessionId` for subagent links). + +### What is the bug? +`packages/opencode/src/session/processor.ts` lines ~207-218, the `"tool-error"` case: +```typescript +case "tool-error": { + const match = toolcalls[value.toolCallId] + if (match && match.state.status === "running") { + await Session.updatePart({ + ...match, + state: { + status: "error", + input: value.input ?? match.state.input, + error: (value.error as any).toString(), + // ❌ Missing: title: match.state.title, + // ❌ Missing: metadata: match.state.metadata, + time: { + start: match.state.time.start, + end: Date.now(), + }, + }, + }) + } +} +``` + +### Where it can happen? +- Any tool that errors during execution +- Most visible for task tool errors — the `sessionId` metadata (used for navigating to child sessions) is lost +- Also affects batch tool parts and any tool with custom title/metadata + +### What any agent needs to look for? +``` +File: packages/opencode/src/session/processor.ts +Location: The "tool-error" case in the stream event handler +Pattern: Compare the "tool-error" state update with the "tool-result" state update +The "tool-result" case preserves title and metadata, but "tool-error" does not +``` + +### How to make the fix? +Add `title` and `metadata` preservation to the error state: + +```typescript +case "tool-error": { + const match = toolcalls[value.toolCallId] + if (match && match.state.status === "running") { + await Session.updatePart({ + ...match, + state: { + status: "error", + input: value.input ?? match.state.input, + error: (value.error as any).toString(), + title: match.state.title, // ← ADD + metadata: match.state.metadata, // ← ADD + time: { + start: match.state.time.start, + end: Date.now(), + }, + }, + }) + } +} +``` + +### Testing +- Trigger a tool error (e.g., file read on non-existent path) +- Verify the error part in the UI shows the tool title +- Trigger a subagent error → verify the sessionId metadata is preserved in the error part + +--- + +## Issue #9: `batch-error-details` — batch.ts Output Lacks Per-Tool Error Details + +### Priority: P2 — Nice to Have + +### What is the issue? +When batch tool calls fail, the output summary only says `"Executed X/Y tools successfully. Z failed."` without including **which tools failed or why**. The LLM receiving this output cannot diagnose or intelligently retry the failures. + +### What is the bug? +`packages/opencode/src/tool/batch.ts` output message: +```typescript +const outputMessage = failedCalls > 0 + ? `Executed ${successfulCalls}/${results.length} tools successfully. ${failedCalls} failed.` + : `All ${successfulCalls} tools executed successfully.` +``` + +Note: Individual tool-call parts ARE written to the database with their errors (via `Session.updatePart` in the catch block), so the UI shows them. But the **summary message returned to the LLM** lacks details. + +### Where it can happen? +- Any batch execution where one or more tools fail +- The LLM sees the summary but not the individual error details +- Can cause the LLM to blindly retry the same failing operations + +### What any agent needs to look for? +``` +File: packages/opencode/src/tool/batch.ts +Location: The outputMessage construction after Promise.all results +Pattern: The results array has { success, tool, error? } for each call +``` + +### How to make the fix? +Include per-tool error details in the output: + +```typescript +const outputMessage = failedCalls > 0 + ? [ + `Executed ${successfulCalls}/${results.length} tools successfully. ${failedCalls} failed.`, + "", + "Failed tools:", + ...results + .filter((r) => !r.success) + .map((r) => `- ${r.tool}: ${r.error instanceof Error ? r.error.message : String(r.error)}`), + ].join("\n") + : `All ${successfulCalls} tools executed successfully.\n\nKeep using the batch tool for optimal performance in your next response!` +``` + +### Testing +- Execute a batch with one intentionally failing tool (e.g., read non-existent file) +- Verify the output includes the tool name and error message +- Verify the LLM can see which tool failed and why + +--- + +## Implementation Order + +``` +TODAY (P0 — Stop The Bleeding): + #1 processor-max-retries → 3.5hr freeze prevention + #2 bedrock-undefined-message → Bedrock overflow detection + #3 task-swallows-errors → Silent failure surfacing + +THIS SPRINT (P0 — Root Cause): + #4 bedrock-context-cap → Context limit accuracy + #5 subagent-timeout → Hung subagent prevention + #6 permission-abort → Permission hang prevention + +NEXT SPRINT (P1 — Robustness): + #7 retry-catch-all → Smart retry classification + #8 tool-error-metadata → Error UI metadata + +BACKLOG (P2): + #9 batch-error-details → Batch error visibility +``` diff --git a/packages/opencode/src/provider/error.ts b/packages/opencode/src/provider/error.ts index 7a171f4dbb66..b0cde7a9e9ce 100644 --- a/packages/opencode/src/provider/error.ts +++ b/packages/opencode/src/provider/error.ts @@ -46,7 +46,7 @@ export namespace ProviderError { function message(providerID: ProviderID, e: APICallError) { return iife(() => { const msg = e.message - if (msg === "") { + if (msg === "" || msg === "undefined") { if (e.responseBody) return e.responseBody if (e.statusCode) { const err = STATUS_CODES[e.statusCode] diff --git a/packages/opencode/src/tool/task.ts b/packages/opencode/src/tool/task.ts index e3781126d0c1..6405397cea6c 100644 --- a/packages/opencode/src/tool/task.ts +++ b/packages/opencode/src/tool/task.ts @@ -144,6 +144,24 @@ export const TaskTool = Tool.define("task", async (ctx) => { parts: promptParts, }) + if ((result.info as MessageV2.Assistant).error) { + const errorObj = (result.info as MessageV2.Assistant).error! + const msg = ("data" in errorObj && "message" in errorObj.data) + ? errorObj.data.message + : errorObj.name + return { + title: params.description, + metadata: { sessionId: session.id, model }, + output: [ + `task_id: ${session.id} (for resuming to continue this task if needed)`, + "", + "", + `ERROR: ${msg}`, + "", + ].join("\n"), + } + } + const text = result.parts.findLast((x) => x.type === "text")?.text ?? "" const output = [ diff --git a/packages/opencode/test/provider/error.test.ts b/packages/opencode/test/provider/error.test.ts new file mode 100644 index 000000000000..e0b4afb45d6e --- /dev/null +++ b/packages/opencode/test/provider/error.test.ts @@ -0,0 +1,242 @@ +import { describe, expect, test } from "bun:test" +import { APICallError } from "ai" +import { ProviderError } from "../../src/provider/error" + +function makeAPICallError(opts: { + message: string + statusCode?: number + responseBody?: string + isRetryable?: boolean + responseHeaders?: Record +}) { + return new APICallError({ + message: opts.message, + url: "https://bedrock.us-east-1.amazonaws.com", + requestBodyValues: {}, + statusCode: opts.statusCode ?? 400, + responseHeaders: opts.responseHeaders ?? {}, + responseBody: opts.responseBody, + isRetryable: opts.isRetryable ?? false, + }) +} + +describe("provider.error.parseAPICallError", () => { + // Issue #2: Bedrock "undefined" message handling + test("detects overflow when message is literal 'undefined' and responseBody has prompt-too-long", () => { + const error = makeAPICallError({ + message: "undefined", + statusCode: 400, + responseBody: JSON.stringify({ + message: "prompt is too long: 208845 tokens > 200000 maximum", + }), + }) + const result = ProviderError.parseAPICallError({ + providerID: "amazon-bedrock", + error, + }) + expect(result.type).toBe("context_overflow") + }) + + test("detects overflow when message is empty string and responseBody has prompt-too-long", () => { + const error = makeAPICallError({ + message: "", + statusCode: 400, + responseBody: JSON.stringify({ + message: "prompt is too long: 208845 tokens > 200000 maximum", + }), + }) + const result = ProviderError.parseAPICallError({ + providerID: "amazon-bedrock", + error, + }) + expect(result.type).toBe("context_overflow") + }) + + test("does NOT treat literal 'undefined' as overflow when responseBody has no overflow pattern", () => { + const error = makeAPICallError({ + message: "undefined", + statusCode: 403, + responseBody: JSON.stringify({ message: "Access denied" }), + }) + const result = ProviderError.parseAPICallError({ + providerID: "amazon-bedrock", + error, + }) + expect(result.type).toBe("api_error") + }) + + test("falls back to statusCode text when message is 'undefined' and no responseBody", () => { + const error = makeAPICallError({ + message: "undefined", + statusCode: 429, + }) + const result = ProviderError.parseAPICallError({ + providerID: "amazon-bedrock", + error, + }) + expect(result.type).toBe("api_error") + if (result.type === "api_error") { + expect(result.message).toBe("Too Many Requests") + } + }) + + test("returns 'Unknown error' when message is 'undefined' and no responseBody or statusCode", () => { + const error = new APICallError({ + message: "undefined", + url: "https://test", + requestBodyValues: {}, + responseHeaders: {}, + isRetryable: false, + }) + const result = ProviderError.parseAPICallError({ + providerID: "amazon-bedrock", + error, + }) + expect(result.type).toBe("api_error") + if (result.type === "api_error") { + expect(result.message).toBe("Unknown error") + } + }) + + // Overflow patterns across providers + test("detects overflow for direct Anthropic provider with normal message", () => { + const error = makeAPICallError({ + message: "prompt is too long: 208845 tokens > 200000 maximum", + statusCode: 400, + }) + const result = ProviderError.parseAPICallError({ + providerID: "anthropic", + error, + }) + expect(result.type).toBe("context_overflow") + }) + + test("detects overflow for Bedrock 'input is too long' pattern", () => { + const error = makeAPICallError({ + message: "undefined", + statusCode: 400, + responseBody: "input is too long for requested model", + }) + const result = ProviderError.parseAPICallError({ + providerID: "amazon-bedrock", + error, + }) + expect(result.type).toBe("context_overflow") + }) + + test("detects overflow for OpenAI 'exceeds the context window' pattern", () => { + const error = makeAPICallError({ + message: "This model's maximum context length exceeds the context window", + statusCode: 400, + }) + const result = ProviderError.parseAPICallError({ + providerID: "openai", + error, + }) + expect(result.type).toBe("context_overflow") + }) + + test("detects overflow for generic 'context_length_exceeded' pattern", () => { + const error = makeAPICallError({ + message: "context_length_exceeded", + statusCode: 400, + }) + const result = ProviderError.parseAPICallError({ + providerID: "openrouter", + error, + }) + expect(result.type).toBe("context_overflow") + }) + + // Non-overflow API errors + test("returns api_error for rate limit errors", () => { + const error = makeAPICallError({ + message: "Rate limit exceeded", + statusCode: 429, + isRetryable: true, + }) + const result = ProviderError.parseAPICallError({ + providerID: "amazon-bedrock", + error, + }) + expect(result.type).toBe("api_error") + if (result.type === "api_error") { + expect(result.isRetryable).toBe(true) + expect(result.statusCode).toBe(429) + } + }) + + test("returns api_error with isRetryable false for auth errors", () => { + const error = makeAPICallError({ + message: "Invalid API key", + statusCode: 401, + isRetryable: false, + }) + const result = ProviderError.parseAPICallError({ + providerID: "anthropic", + error, + }) + expect(result.type).toBe("api_error") + if (result.type === "api_error") { + expect(result.isRetryable).toBe(false) + } + }) + + test("includes url metadata when error has url", () => { + const error = makeAPICallError({ + message: "Server error", + statusCode: 500, + isRetryable: true, + }) + const result = ProviderError.parseAPICallError({ + providerID: "anthropic", + error, + }) + expect(result.type).toBe("api_error") + if (result.type === "api_error") { + expect(result.metadata).toBeDefined() + } + }) +}) + +describe("provider.error.parseStreamError", () => { + test("detects context_length_exceeded from stream error", () => { + const result = ProviderError.parseStreamError({ + type: "error", + error: { code: "context_length_exceeded" }, + }) + expect(result).toBeDefined() + expect(result!.type).toBe("context_overflow") + }) + + test("detects insufficient_quota from stream error", () => { + const result = ProviderError.parseStreamError({ + type: "error", + error: { code: "insufficient_quota" }, + }) + expect(result).toBeDefined() + expect(result!.type).toBe("api_error") + if (result!.type === "api_error") { + expect(result!.isRetryable).toBe(false) + } + }) + + test("returns undefined for non-error stream events", () => { + const result = ProviderError.parseStreamError({ type: "data", content: "hello" }) + expect(result).toBeUndefined() + }) + + test("returns undefined for non-object input", () => { + expect(ProviderError.parseStreamError("string")).toBeUndefined() + expect(ProviderError.parseStreamError(42)).toBeUndefined() + expect(ProviderError.parseStreamError(null)).toBeUndefined() + }) + + test("parses JSON string input", () => { + const result = ProviderError.parseStreamError( + JSON.stringify({ type: "error", error: { code: "context_length_exceeded" } }), + ) + expect(result).toBeDefined() + expect(result!.type).toBe("context_overflow") + }) +}) From 8b12f1c76412b8dd9088bb44a9e489dcce4760cc Mon Sep 17 00:00:00 2001 From: Prax Lannister Date: Wed, 25 Feb 2026 21:46:53 +0530 Subject: [PATCH 24/32] fix: smart retry classification, Bedrock 200K context cap, batch error details - retry.ts: respect isRetryable:false and 4xx status in JSON error bodies (Issue #7) - provider.ts: cap Bedrock Anthropic models at 200K context (Issue #4) - batch.ts: include per-tool error details in failure output (Issue #9) - retry.test.ts: 5 new tests for catch-all retry classification --- packages/opencode/src/provider/provider.ts | 21 ++++++++++++++++ packages/opencode/src/session/retry.ts | 5 ++++ packages/opencode/src/tool/batch.ts | 9 ++++++- packages/opencode/test/session/retry.test.ts | 25 ++++++++++++++++++++ 4 files changed, 59 insertions(+), 1 deletion(-) diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index 6ab45d028b9a..0fcbb0752f4b 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -900,6 +900,17 @@ export namespace Provider { m.variants = mapValues(ProviderTransform.variants(m), (v) => v) + // Bedrock enforces 200K context unless the context-1m beta header is sent. + // models-snapshot.ts (auto-generated) lists capability (1M) not runtime limit. + const BEDROCK_CONTEXT_CAP = 200_000 + if ( + provider.id === "amazon-bedrock" && + m.limit.context > BEDROCK_CONTEXT_CAP && + m.id.includes("anthropic") + ) { + m.limit.context = BEDROCK_CONTEXT_CAP + } + return m } @@ -1037,6 +1048,16 @@ export namespace Provider { pickBy(merged, (v) => !v.disabled), (v) => omit(v, ["disabled"]), ) + // Bedrock enforces 200K context unless the context-1m beta header is sent. + // models-snapshot.ts (auto-generated) lists capability (1M) not runtime limit. + const BEDROCK_CONTEXT_CAP = 200_000 + if ( + providerID === "amazon-bedrock" && + parsedModel.limit.context > BEDROCK_CONTEXT_CAP && + parsedModel.id.includes("anthropic") + ) { + parsedModel.limit.context = BEDROCK_CONTEXT_CAP + } parsed.models[modelID] = parsedModel } database[providerID] = parsed diff --git a/packages/opencode/src/session/retry.ts b/packages/opencode/src/session/retry.ts index 6d057f539f81..303a819b45e1 100644 --- a/packages/opencode/src/session/retry.ts +++ b/packages/opencode/src/session/retry.ts @@ -93,6 +93,11 @@ export namespace SessionRetry { if (json.type === "error" && json.error?.code?.includes("rate_limit")) { return "Rate Limited" } + // Respect explicit isRetryable: false from provider SDKs (e.g. Bedrock) + if (json.isRetryable === false) return undefined + // 4xx errors are client errors — not retryable + const status = typeof json.status === "number" ? json.status : typeof json.statusCode === "number" ? json.statusCode : undefined + if (status !== undefined && status >= 400 && status < 500) return undefined return JSON.stringify(json) } catch { return undefined diff --git a/packages/opencode/src/tool/batch.ts b/packages/opencode/src/tool/batch.ts index 00c22bfe6be0..9598d78fb2fc 100644 --- a/packages/opencode/src/tool/batch.ts +++ b/packages/opencode/src/tool/batch.ts @@ -162,7 +162,14 @@ export const BatchTool = Tool.define("batch", async () => { const outputMessage = failedCalls > 0 - ? `Executed ${successfulCalls}/${results.length} tools successfully. ${failedCalls} failed.` + ? [ + `Executed ${successfulCalls}/${results.length} tools successfully. ${failedCalls} failed.`, + "", + "Failed tools:", + ...results + .filter((r) => !r.success) + .map((r) => `- ${r.tool}: ${r.error instanceof Error ? r.error.message : String(r.error)}`), + ].join("\n") : `All ${successfulCalls} tools executed successfully.\n\nKeep using the batch tool for optimal performance in your next response!` return { diff --git a/packages/opencode/test/session/retry.test.ts b/packages/opencode/test/session/retry.test.ts index 621ad99e9b47..b02bf4236ce4 100644 --- a/packages/opencode/test/session/retry.test.ts +++ b/packages/opencode/test/session/retry.test.ts @@ -117,6 +117,31 @@ describe("session.retry.retryable", () => { expect(SessionRetry.retryable(error)).toBeUndefined() }) + test("does not retry when json has isRetryable: false", () => { + const error = wrap(JSON.stringify({ isRetryable: false, message: "prompt is too long" })) + expect(SessionRetry.retryable(error)).toBeUndefined() + }) + + test("does not retry 400 status in json body", () => { + const error = wrap(JSON.stringify({ status: 400, message: "Bad request" })) + expect(SessionRetry.retryable(error)).toBeUndefined() + }) + + test("does not retry 403 statusCode in json body", () => { + const error = wrap(JSON.stringify({ statusCode: 403, message: "Forbidden" })) + expect(SessionRetry.retryable(error)).toBeUndefined() + }) + + test("retries 500 status in json body", () => { + const error = wrap(JSON.stringify({ status: 500, message: "Internal Server Error" })) + expect(SessionRetry.retryable(error)).toBe(JSON.stringify({ status: 500, message: "Internal Server Error" })) + }) + + test("retries json without status or isRetryable fields", () => { + const error = wrap(JSON.stringify({ error: { message: "some_unknown_error" } })) + expect(SessionRetry.retryable(error)).toBe(JSON.stringify({ error: { message: "some_unknown_error" } })) + }) + test("does not retry context overflow errors", () => { const error = new MessageV2.ContextOverflowError({ message: "Input exceeds context window of this model", From d8ceeb7647c7a185e4bf8c171d444d3abc816dbd Mon Sep 17 00:00:00 2001 From: Prax Lannister Date: Wed, 25 Feb 2026 21:47:50 +0530 Subject: [PATCH 25/32] docs: update issues.md with implementation status --- docs/09-temp/issues.md | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/docs/09-temp/issues.md b/docs/09-temp/issues.md index 4f21428f0ddc..263f75fe81c8 100644 --- a/docs/09-temp/issues.md +++ b/docs/09-temp/issues.md @@ -582,20 +582,18 @@ const outputMessage = failedCalls > 0 ## Implementation Order ``` -TODAY (P0 — Stop The Bleeding): - #1 processor-max-retries → 3.5hr freeze prevention - #2 bedrock-undefined-message → Bedrock overflow detection - #3 task-swallows-errors → Silent failure surfacing - -THIS SPRINT (P0 — Root Cause): - #4 bedrock-context-cap → Context limit accuracy +✅ DONE — Commit 3670d5f2f: + #1 processor-max-retries → MAX_RETRIES=10 cap + #2 bedrock-undefined-message → "undefined" → responseBody fallback + #3 task-swallows-errors → result.info.error check in task.ts + #8 tool-error-metadata → metadata preserved on tool-error + +✅ DONE — Commit a8758b20f: + #4 bedrock-context-cap → 200K cap in both fromModelsDevModel + config path + #7 retry-catch-all → isRetryable:false + 4xx status guards + #9 batch-error-details → per-tool error details in output + +REMAINING (P0 — Needs deep plumbing): #5 subagent-timeout → Hung subagent prevention #6 permission-abort → Permission hang prevention - -NEXT SPRINT (P1 — Robustness): - #7 retry-catch-all → Smart retry classification - #8 tool-error-metadata → Error UI metadata - -BACKLOG (P2): - #9 batch-error-details → Batch error visibility ``` From 2ea6f6216555bbe713b8593d30da58a6550742fe Mon Sep 17 00:00:00 2001 From: Prax Lannister Date: Thu, 26 Feb 2026 04:06:28 +0530 Subject: [PATCH 26/32] feat: Add Git submodules for codex, cline, awesome-opencode, OpenGUI, and AionUi. --- .gitmodules | 15 +++++++++++++++ references/AionUi | 1 + references/OpenGUI | 1 + references/awesome-opencode | 1 + references/cline | 1 + references/codex | 1 + 6 files changed, 20 insertions(+) create mode 100644 .gitmodules create mode 160000 references/AionUi create mode 160000 references/OpenGUI create mode 160000 references/awesome-opencode create mode 160000 references/cline create mode 160000 references/codex diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000000..d10e7b1c8c8f --- /dev/null +++ b/.gitmodules @@ -0,0 +1,15 @@ +[submodule "references/codex"] + path = references/codex + url = https://github.com/openai/codex +[submodule "references/cline"] + path = references/cline + url = https://github.com/cline/cline +[submodule "references/awesome-opencode"] + path = references/awesome-opencode + url = https://github.com/awesome-opencode/awesome-opencode +[submodule "references/OpenGUI"] + path = references/OpenGUI + url = https://github.com/akemmanuel/OpenGUI +[submodule "references/AionUi"] + path = references/AionUi + url = https://github.com/iOfficeAI/AionUi diff --git a/references/AionUi b/references/AionUi new file mode 160000 index 000000000000..dce8776d4a15 --- /dev/null +++ b/references/AionUi @@ -0,0 +1 @@ +Subproject commit dce8776d4a1551119d94ec10d07949ba0f863de4 diff --git a/references/OpenGUI b/references/OpenGUI new file mode 160000 index 000000000000..1a59e82706da --- /dev/null +++ b/references/OpenGUI @@ -0,0 +1 @@ +Subproject commit 1a59e82706da29b4d3510dafa6fb02da2fff12b4 diff --git a/references/awesome-opencode b/references/awesome-opencode new file mode 160000 index 000000000000..4fadff1cd377 --- /dev/null +++ b/references/awesome-opencode @@ -0,0 +1 @@ +Subproject commit 4fadff1cd3775486ee89267bb59ea231cc5e5247 diff --git a/references/cline b/references/cline new file mode 160000 index 000000000000..f10b6f39be17 --- /dev/null +++ b/references/cline @@ -0,0 +1 @@ +Subproject commit f10b6f39be17f24c3a410ae5780eb7adf15473b8 diff --git a/references/codex b/references/codex new file mode 160000 index 000000000000..c1851be1ed8f --- /dev/null +++ b/references/codex @@ -0,0 +1 @@ +Subproject commit c1851be1ed8f6ad4c8786f335e9e65b9b9d910fb From afd087b660175391cf26b2899b7e30abd84f53b1 Mon Sep 17 00:00:00 2001 From: Prax Lannister Date: Thu, 26 Feb 2026 04:06:57 +0530 Subject: [PATCH 27/32] Please provide the file changes to generate a commit message. --- references/codex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/references/codex b/references/codex index c1851be1ed8f..f86087eaa8da 160000 --- a/references/codex +++ b/references/codex @@ -1 +1 @@ -Subproject commit c1851be1ed8f6ad4c8786f335e9e65b9b9d910fb +Subproject commit f86087eaa8da9cac9245c87085adc1b7a4065f36 From cb18788df2b9b1c982879edc65234b583f66b601 Mon Sep 17 00:00:00 2001 From: Prax Lannister Date: Thu, 26 Feb 2026 16:27:36 +0530 Subject: [PATCH 28/32] =?UTF-8?q?feat:=20queue=20&=20steer=20=E2=80=94=20m?= =?UTF-8?q?id-turn=20input=20injection=20inspired=20by=20Codex=20CLI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add SessionSteer module with push/take/takeByMode/has/list/remove/clear - Add POST/GET/DELETE /:sessionID/steer API routes with zod validation - Integrate steer drain in prompt.ts loop: steer injects mid-turn, queue auto-submits after turn - Split button UI: Queue (Enter, arrow-down-to-line) + Steer (Shift+Enter, chevron-double-right) - Queue widget with hover-reveal delete in prompt input - Wire steer_queue through global-sync state, event-reducer, child-store - 18 unit tests for SessionSteer (all passing) - Architecture reference doc from Codex CLI analysis --- AI_REVIEW.md | 2894 ++++++++--------- .../09-temp/codex-queue-steer-architecture.md | 319 ++ .../src/context/global-sync/child-store.ts | 1 + .../context/global-sync/event-reducer.test.ts | 1 + .../src/context/global-sync/event-reducer.ts | 359 -- packages/app/src/context/global-sync/types.ts | 3 + .../opencode/src/server/routes/session.ts | 1023 ------ packages/opencode/src/session/steer.ts | 127 + packages/opencode/test/session/steer.test.ts | 235 ++ 9 files changed, 1981 insertions(+), 2981 deletions(-) create mode 100644 docs/09-temp/codex-queue-steer-architecture.md delete mode 100644 packages/app/src/context/global-sync/event-reducer.ts delete mode 100644 packages/opencode/src/server/routes/session.ts create mode 100644 packages/opencode/src/session/steer.ts create mode 100644 packages/opencode/test/session/steer.test.ts diff --git a/AI_REVIEW.md b/AI_REVIEW.md index d80211d30bd6..bc3462933800 100644 --- a/AI_REVIEW.md +++ b/AI_REVIEW.md @@ -1,4 +1,4 @@ -# 🔍 Code Review - 2/25/2026, 9:17:47 PM +# 🔍 Code Review - 2/26/2026, 4:03:24 PM **Project:** AI Visual Code Review **Generated by:** AI Visual Code Review v2.0 @@ -6,1662 +6,1358 @@ ## 📊 Change Summary ``` -AI_REVIEW.md | 798 ++++++++++++++++++++++++++ - docs/09-temp/issues.md | 601 +++++++++++++++++++ - packages/opencode/src/provider/error.ts | 2 +- - packages/opencode/src/session/processor.ts | 19 + - packages/opencode/src/tool/task.ts | 18 + - packages/opencode/test/provider/error.test.ts | 106 ++++ - 6 files changed, 1543 insertions(+), 1 deletion(-) +docs/09-temp/codex-queue-steer-architecture.md | 319 +++++++++++++++++++++ + packages/app/src/components/prompt-input.tsx | 256 ++++++++++++++--- + .../app/src/context/global-sync/child-store.ts | 1 + + .../src/context/global-sync/event-reducer.test.ts | 1 + + .../app/src/context/global-sync/event-reducer.ts | 9 +- + packages/app/src/context/global-sync/types.ts | 3 + + packages/opencode/src/server/routes/session.ts | 117 ++++++++ + packages/opencode/src/session/prompt.ts | 51 ++++ + packages/opencode/src/session/steer.ts | 127 ++++++++ + packages/opencode/test/session/steer.test.ts | 235 +++++++++++++++ + 10 files changed, 1084 insertions(+), 35 deletions(-) ``` -## 📝 Files Changed (6 selected) +## 📝 Files Changed (10 selected) -### ✨ `AI_REVIEW.md` **[ADDED]** +### ✨ `docs/09-temp/codex-queue-steer-architecture.md` **[ADDED]** **Status:** ✅ **NEW FILE** - This file has been newly created **Type:** Documentation 📖 ```diff -@@ -0,0 +1,798 @@ - 1 +# 🔍 Code Review - 2/25/2026, 9:13:40 PM +@@ -0,0 +1,319 @@ + 1 +# Codex Queue/Steer Architecture Analysis 2 + - 3 +**Project:** AI Visual Code Review - 4 +**Generated by:** AI Visual Code Review v2.0 + 3 +> Deep-dive into OpenAI Codex CLI's queue/steer mechanism for mid-turn user interaction. + 4 +> Source: `references/codex/` submodule 5 + - 6 +## 📊 Change Summary + 6 +--- 7 + - 8 +``` - 9 +docs/09-temp/issues.md | 601 +++++++++++++++++++++++++++++ - 10 + packages/opencode/src/provider/error.ts | 2 +- - 11 + packages/opencode/src/session/processor.ts | 19 + - 12 + packages/opencode/src/tool/task.ts | 16 + - 13 + 4 files changed, 637 insertions(+), 1 deletion(-) - 14 +``` - 15 + - 16 +## 📝 Files Changed (4 selected) - 17 + + 8 +## Overview + 9 + + 10 +Codex implements a **dual-input model** that lets users interact with the agent **during** an active turn, not just between turns: + 11 + + 12 +| Action | Keybinding | Behavior | When Turn Active | + 13 +|--------|-----------|----------|-----------------| + 14 +| **Queue** | `Enter` | Enqueue message for next turn boundary | Message waits in queue, displayed in UI | + 15 +| **Steer** | `⌘Enter` / `Enter` (steer-mode) | Inject input into active turn immediately | Message sent to model in current context | + 16 + + 17 +--- 18 + - 19 +### ✨ `docs/09-temp/issues.md` **[ADDED]** + 19 +## Architecture Layers 20 + - 21 +**Status:** ✅ **NEW FILE** - This file has been newly created - 22 + - 23 +**Type:** Documentation 📖 - 24 + - 25 +```diff - 26 +@@ -0,0 +1,601 @@ - 27 + 1 +# OpenCode — Parallel Agent & Retry Storm Issues - 28 + 2 + - 29 + 3 +> **Created**: 2025-02-25 - 30 + 4 +> **Source**: Combined RCA by Cline + Antigravity - 31 + 5 +> **Status**: Approved for implementation - 32 + 6 + - 33 + 7 +--- - 34 + 8 + - 35 + 9 +## Issue #1: `processor-max-retries` — Infinite Retry Loop in processor.ts - 36 + 10 + - 37 + 11 +### Priority: P0 — Stop The Bleeding - 38 + 12 + - 39 + 13 +### What is the issue? - 40 + 14 +The session processor retries failed API calls in an infinite `while(true)` loop with **no maximum retry count**. When an error is classified as "retryable" by `retry.ts`, the processor will retry it forever — user observed **2,244 identical retries over 3.5 hours** before manual abort. - 41 + 15 + - 42 + 16 +### What is the bug? - 43 + 17 +`packages/opencode/src/session/processor.ts` line ~53 has a `while(true)` loop. When the catch block determines an error is retryable via `SessionRetry.retryable(error)`, it increments `attempt` and `continue`s the loop. There is **no guard** like `if (attempt >= MAX_RETRIES) break`. - 44 + 18 + - 45 + 19 +### Where it can happen? - 46 + 20 +- Any API call that returns a retryable error (transient network issues, rate limits, Bedrock context overflow misclassified as retryable) - 47 + 21 +- Most critically: Bedrock "prompt is too long" errors that get misclassified as retryable by the catch-all in `retry.ts` (see Issue #2) - 48 + 22 +- Affects both parent sessions and subagent sessions independently - 49 + 23 + - 50 + 24 +### What any agent needs to look for? - 51 + 25 +``` - 52 + 26 +File: packages/opencode/src/session/processor.ts - 53 + 27 +Location: The while(true) loop (~line 53) - 54 + 28 +Pattern: Look for the catch block that calls SessionRetry.retryable() and does `continue` - 55 + 29 +``` - 56 + 30 + - 57 + 31 +### How to make the fix? - 58 + 32 +Add a `MAX_RETRIES` constant and guard before the `continue`: - 59 + 33 + - 60 + 34 +```typescript - 61 + 35 +// At top of file or inside the function - 62 + 36 +const MAX_RETRIES = 10 - 63 + 37 + - 64 + 38 +// Inside the catch block, before `continue`: - 65 + 39 +if (attempt >= MAX_RETRIES) { - 66 + 40 + input.assistantMessage.error = { - 67 + 41 + name: "RetryLimitExceeded", - 68 + 42 + message: `Maximum retries (${MAX_RETRIES}) exceeded. Last error: ${retry}`, - 69 + 43 + } - 70 + 44 + break - 71 + 45 +} - 72 + 46 +``` - 73 + 47 + - 74 + 48 +The error should be stored on `input.assistantMessage.error` so the session stops and the UI shows the error. Make sure the status is set to idle after breaking. - 75 + 49 + - 76 + 50 +### Testing - 77 + 51 +- Trigger a retryable error (e.g., rate limit) and verify it stops after 10 attempts - 78 + 52 +- Verify the error message appears in the session UI - 79 + 53 +- Verify the session status returns to "idle" (not stuck in "retry") - 80 + 54 + - 81 + 55 +--- - 82 + 56 + - 83 + 57 +## Issue #2: `bedrock-undefined-message` — error.ts Fails to Parse Bedrock Error Messages - 84 + 58 + - 85 + 59 +### Priority: P0 — Stop The Bleeding - 86 + 60 + - 87 + 61 +### What is the issue? - 88 + 62 +When Amazon Bedrock returns an API error (e.g., "prompt is too long"), the `message()` function in `error.ts` receives `e.message = "undefined"` (the literal string, not the JS undefined value). The function only checks for empty string `""`, so it passes `"undefined"` through to `isOverflow()`, which fails to match any overflow pattern. This means **Bedrock context overflow errors are never detected as overflow**, preventing compaction from triggering. - 89 + 63 + - 90 + 64 +### What is the bug? - 91 + 65 +`packages/opencode/src/provider/error.ts` function `message()` (~line 50-80): - 92 + 66 +```typescript - 93 + 67 +const msg = e.message - 94 + 68 +if (msg === "") { - 95 + 69 + if (e.responseBody) return e.responseBody - 96 + 70 + // ... - 97 + 71 +} - 98 + 72 +``` - 99 + 73 +When Bedrock SDK sets `e.message` to the literal string `"undefined"`, this check passes through. The actual error details are in `e.responseBody` but never extracted. - 100 + 74 + - 101 + 75 +### Where it can happen? - 102 + 76 +- Any Bedrock API call that returns an error (context overflow, validation errors, throttling) - 103 + 77 +- The Bedrock SDK wraps errors differently than the Anthropic direct SDK - 104 + 78 +- Specifically observed with "prompt is too long: 208845 tokens > 200000 maximum" errors - 105 + 79 + - 106 + 80 +### What any agent needs to look for? - 107 + 81 +``` - 108 + 82 +File: packages/opencode/src/provider/error.ts - 109 + 83 +Location: The message() function, specifically the `if (msg === "")` check - 110 + 84 +Also check: isOverflow() function and the OVERFLOW_PATTERNS regex - 111 + 85 +``` - 112 + 86 + - 113 + 87 +### How to make the fix? - 114 + 88 +Extend the empty-message check to also handle `"undefined"`: - 115 + 89 + - 116 + 90 +```typescript - 117 + 91 +function message(providerID: string, e: APICallError) { - 118 + 92 + return iife(() => { - 119 + 93 + const msg = e.message - 120 + 94 + if (msg === "" || msg === "undefined") { - 121 + 95 + if (e.responseBody) return e.responseBody - 122 + 96 + // ... rest of existing fallback logic - 123 + 97 + } - 124 + 98 + return msg - 125 + 99 + }) - 126 + 100 +} - 127 + 101 +``` - 128 + 102 + - 129 + 103 +This ensures the actual error body (which contains "prompt is too long") is used for overflow detection instead of the meaningless `"undefined"` string. - 130 + 104 + - 131 + 105 +### Testing - 132 + 106 +- Mock a Bedrock APICallError with `message: "undefined"` and `responseBody: "prompt is too long: 208845 tokens > 200000 maximum"` - 133 + 107 +- Verify `message()` returns the responseBody, not `"undefined"` - 134 + 108 +- Verify `isOverflow()` correctly detects the overflow pattern from the responseBody - 135 + 109 + - 136 + 110 +--- - 137 + 111 + - 138 + 112 +## Issue #3: `task-swallows-errors` — task.ts Silently Swallows Subagent Failures - 139 + 113 + - 140 + 114 +### Priority: P0 — Stop The Bleeding - 141 + 115 + - 142 + 116 +### What is the issue? - 143 + 117 +When a subagent (child session spawned by the `task` tool) fails with an error, the parent session shows it as **successfully completed with empty output**. The user sees a green ✅ checkmark for a task that actually errored. This is THE primary cause of "failures not reflected in main chat." - 144 + 118 + - 145 + 119 +### What is the bug? - 146 + 120 +`packages/opencode/src/tool/task.ts` line ~145: - 147 + 121 +```typescript - 148 + 122 +const result = await SessionPrompt.prompt({...}) - 149 + 123 +const text = result.parts.findLast((x) => x.type === "text")?.text ?? "" - 150 + 124 +``` - 151 + 125 + - 152 + 126 +`result.info` contains an `.error` field when the child session errored (set by `processor.ts` at `input.assistantMessage.error = error`). But `task.ts` **never checks `result.info.error`** — it only looks for text parts. When the child errored, there are no text parts, so `text = ""`, and the parent receives `\n\n` as a "successful" empty result. - 153 + 127 + - 154 + 128 +### Where it can happen? - 155 + 129 +- Any subagent failure: context overflow, API error, tool execution error, rate limit - 156 + 130 +- Parallel subagents: if 1 of 3 subagents fails, parent sees 3 "completed" tasks with one having empty output - 157 + 131 +- The parent LLM may then hallucinate that the task completed or silently move on - 158 + 132 + - 159 + 133 +### What any agent needs to look for? - 160 + 134 +``` - 161 + 135 +File: packages/opencode/src/tool/task.ts - 162 + 136 +Location: After the `SessionPrompt.prompt()` call, before building the output - 163 + 137 +Pattern: result.info should have an error field — check result.info type definition - 164 + 138 +Also check: packages/opencode/src/session/prompt.ts for the return type of prompt() - 165 + 139 +``` - 166 + 140 + - 167 + 141 +### How to make the fix? - 168 + 142 +Add an error check immediately after the `SessionPrompt.prompt()` call: - 169 + 143 + - 170 + 144 +```typescript - 171 + 145 +const result = await SessionPrompt.prompt({...}) - 172 + 146 + - 173 + 147 +// Check if child session errored - 174 + 148 +if (result.info.error) { - 175 + 149 + const error = result.info.error - 176 + 150 + const msg = error.message ?? error.name ?? "Subagent task failed" - 177 + 151 + return { - 178 + 152 + title: params.description, - 179 + 153 + metadata: { sessionId: session.id, model }, - 180 + 154 + output: [ - 181 + 155 + `task_id: ${session.id}`, - 182 + 156 + "", - 183 + 157 + "", - 184 + 158 + `ERROR: ${msg}`, - 185 + 159 + `The subtask encountered an error and could not complete.`, - 186 + 160 + "", - 187 + 161 + ].join("\n"), - 188 + 162 + } - 189 + 163 +} - 190 + 164 + - 191 + 165 +const text = result.parts.findLast((x) => x.type === "text")?.text ?? "" - 192 + 166 +``` - 193 + 167 + - 194 + 168 +**Important**: Check the actual type of `result.info` to use proper typing instead of `(result.info as any).error`. Look at how `processor.ts` sets the error on `input.assistantMessage.error` to understand the shape. - 195 + 169 + - 196 + 170 +### Testing - 197 + 171 +- Trigger a subagent error (e.g., invalid tool call, context overflow) - 198 + 172 +- Verify the parent session shows "ERROR: ..." in the task result, not empty - 199 + 173 +- Verify the parent LLM receives the error and can report it to the user - 200 + 174 + - 201 + 175 +--- - 202 + 176 + - 203 + 177 +## Issue #4: `bedrock-context-cap` — Bedrock Provider Missing Context Limit Override - 204 + 178 + - 205 + 179 +### Priority: P0 — This Sprint - 206 + 180 + - 207 + 181 +### What is the issue? - 208 + 182 +The `models-snapshot.ts` file (auto-generated from models.dev) lists Claude Opus 4.6 on Bedrock with `context: 1,000,000`. This is the model's capability WITH the `context-1m` beta header. However, the Bedrock provider handler in `provider.ts` **never sends the 1M beta header**, so Bedrock actually enforces a 200K limit. The result: UI shows "20% context usage" when the user is actually at 100% of the real limit, and compaction never triggers. - 209 + 183 + - 210 + 184 +### What is the bug? - 211 + 185 +Two bugs combine: - 212 + 186 + - 213 + 187 +1. **`models-snapshot.ts`** lists Opus 4.6 Bedrock models at 1M context (reflects model capability, not runtime limit) - 214 + 188 +2. **`provider.ts`** `"amazon-bedrock"` handler has NO logic to: - 215 + 189 + - Send `additionalModelRequestFields: { anthropic_beta: ["context-1m-2025-08-07"] }` to enable 1M - 216 + 190 + - Override the context limit to 200K when 1M beta is NOT active - 217 + 191 + - 218 + 192 +**Affected models in snapshot**: - 219 + 193 +``` - 220 + 194 +amazon-bedrock / anthropic.claude-opus-4-6-v1: context=1,000,000 ❌ - 221 + 195 +amazon-bedrock / us.anthropic.claude-opus-4-6-v1: context=1,000,000 ❌ - 222 + 196 +amazon-bedrock / eu.anthropic.claude-opus-4-6-v1: context=1,000,000 ❌ - 223 + 197 +amazon-bedrock / global.anthropic.claude-opus-4-6-v1: context=1,000,000 ❌ - 224 + 198 +``` - 225 + 199 + - 226 + 200 +All other Bedrock Claude models correctly show 200K. - 227 + 201 + - 228 + 202 +### Where it can happen? - 229 + 203 +- Any user running Claude Opus 4.6 via Amazon Bedrock - 230 + 204 +- Compaction threshold is calculated from `model.limit.context` → 1M → threshold ~900K - 231 + 205 +- Bedrock rejects at 200K → 700K token gap where compaction never fires but API always rejects - 232 + 206 +- Combined with Issue #1 (infinite retries), this causes the 3.5-hour freeze - 233 + 207 + - 234 + 208 +### What any agent needs to look for? - 235 + 209 +``` - 236 + 210 +File: packages/opencode/src/provider/provider.ts - 237 + 211 +Location: The "amazon-bedrock" entry in CUSTOM_LOADERS (~line 211) - 238 + 212 +Pattern: The returned object has options (providerOptions) and getModel() but NO context limit override - 239 + 213 +Also: Look at how compaction.ts uses model.limit.context (~line 33) - 240 + 214 +Also: Look at how Cline handles this — they use additionalModelRequestFields for Bedrock - 241 + 215 + - 242 + 216 +DO NOT edit models-snapshot.ts directly — it is auto-generated by build.ts - 243 + 217 +``` - 244 + 218 + - 245 + 219 +### How to make the fix? - 246 + 220 +**Option A (Recommended)**: Add provider-level context limit override in the model resolution logic. When provider is "amazon-bedrock" and model is Claude, cap context at 200K unless a 1M configuration is explicitly enabled. - 247 + 221 + - 248 + 222 +Look at where models are resolved and limits are applied. The fix should go in `provider.ts` where models are loaded/resolved, adding a context limit override: - 249 + 223 + - 250 + 224 +```typescript - 251 + 225 +// Inside amazon-bedrock handler or model resolution - 252 + 226 +if (providerID === "amazon-bedrock" && modelData.limit?.context > 200000) { - 253 + 227 + // Cap at 200K unless 1M beta is explicitly configured - 254 + 228 + modelData.limit.context = 200000 - 255 + 229 +} - 256 + 230 +``` - 257 + 231 + - 258 + 232 +**Option B (Future)**: Implement Cline's `:1m` suffix pattern — user explicitly opts into 1M context, which triggers adding `anthropic_beta: ["context-1m-2025-08-07"]` via `additionalModelRequestFields`. - 259 + 233 + - 260 + 234 +### Testing - 261 + 235 +- Configure Bedrock with Opus 4.6 - 262 + 236 +- Verify UI shows context limit as 200K (not 1M) - 263 + 237 +- Verify compaction triggers before hitting Bedrock's actual 200K limit - 264 + 238 +- Verify no "prompt is too long" errors during normal usage - 265 + 239 + - 266 + 240 +--- - 267 + 241 + - 268 + 242 +## Issue #5: `subagent-timeout` — task.ts Has No Execution Timeout - 269 + 243 + - 270 + 244 +### Priority: P0 — This Sprint - 271 + 245 + - 272 + 246 +### What is the issue? - 273 + 247 +The `task` tool calls `SessionPrompt.prompt()` with **no timeout or deadline**. If a subagent gets stuck (infinite retry storm, permission hang, or any other blocking issue), the parent tool call never resolves. The parent session appears frozen with a spinning "running" indicator forever. - 274 + 248 + - 275 + 249 +### What is the bug? - 276 + 250 +`packages/opencode/src/tool/task.ts`: - 277 + 251 +```typescript - 278 + 252 +const result = await SessionPrompt.prompt({ - 279 + 253 + messageID, - 280 + 254 + sessionID: session.id, - 281 + 255 + model: { modelID: model.modelID, providerID: model.providerID }, - 282 + 256 + agent: agent.name, - 283 + 257 + tools: { ... }, - 284 + 258 + parts: promptParts, - 285 + 259 +}) - 286 + 260 +// ← No timeout wrapper, no AbortController deadline - 287 + 261 +``` - 288 + 262 + - 289 + 263 +This Promise can hang indefinitely if the child session encounters: - 290 + 264 +- Infinite retry loop (Issue #1 before fix) - 291 + 265 +- Permission hang (Issue #6) - 292 + 266 +- Slow API responses that never complete - 293 + 267 + - 294 + 268 +### Where it can happen? - 295 + 269 +- Any subagent execution, but especially: - 296 + 270 + - When subagent hits context overflow with retries - 297 + 271 + - When subagent needs permission and user is watching parent - 298 + 272 + - When API provider is slow or unresponsive - 299 + 273 + - 300 + 274 +### What any agent needs to look for? - 301 + 275 +``` - 302 + 276 +File: packages/opencode/src/tool/task.ts - 303 + 277 +Location: The SessionPrompt.prompt() call - 304 + 278 +Pattern: Check if there's an AbortSignal or timeout mechanism available - 305 + 279 +Also check: How the abort signal flows from processor.ts → tool execution → task.ts - 306 + 280 +Also check: ctx parameter in execute() — does it carry an abort signal? - 307 + 281 +``` - 308 + 282 + - 309 + 283 +### How to make the fix? - 310 + 284 +Wrap the `SessionPrompt.prompt()` call with an AbortController timeout: - 311 + 285 + - 312 + 286 +```typescript - 313 + 287 +const timeout = 5 * 60 * 1000 // 5 minutes (configurable) - 314 + 288 +const controller = new AbortController() - 315 + 289 +const timer = setTimeout(() => controller.abort(), timeout) - 316 + 290 + - 317 + 291 +try { - 318 + 292 + const result = await SessionPrompt.prompt({ - 319 + 293 + // ... existing params ... - 320 + 294 + abort: controller.signal, // Pass abort signal if prompt() supports it - 321 + 295 + }) - 322 + 296 + clearTimeout(timer) - 323 + 297 + // ... process result ... - 324 + 298 +} catch (e) { - 325 + 299 + clearTimeout(timer) - 326 + 300 + if (controller.signal.aborted) { - 327 + 301 + return { - 328 + 302 + title: params.description, - 329 + 303 + metadata: { sessionId: session.id, model }, - 330 + 304 + output: `ERROR: Subtask timed out after ${timeout / 1000}s. The task may still be running in session ${session.id}.`, - 331 + 305 + } - 332 + 306 + } - 333 + 307 + throw e - 334 + 308 +} - 335 + 309 +``` - 336 + 310 + - 337 + 311 +Check if `SessionPrompt.prompt()` already accepts an `abort` parameter. If not, trace how `processor.ts` passes its abort signal and ensure the plumbing exists. - 338 + 312 + - 339 + 313 +### Testing - 340 + 314 +- Trigger a subagent that would hang (e.g., long-running task) - 341 + 315 +- Verify it times out after the configured deadline - 342 + 316 +- Verify the parent receives a timeout error message, not silent hang - 343 + 317 +- Verify the child session is properly cleaned up - 344 + 318 + - 345 + 319 +--- - 346 + 320 + - 347 + 321 +## Issue #6: `permission-abort` — next.ts Permission Promises Hang Forever in Subagents - 348 + 322 + - 349 + 323 +### Priority: P0 — This Sprint - 350 + 324 + - 351 + 325 +### What is the issue? - 352 + 326 +When a subagent's tool requires permission (e.g., file write, command execution), the permission prompt appears **only in the child session**. If the user is watching the parent session, they never see the prompt. The child session hangs forever waiting for permission, which blocks the parent's tool call. - 353 + 327 + - 354 + 328 +### What is the bug? - 355 + 329 +`packages/opencode/src/permission/next.ts` lines ~143-156: - 356 + 330 +```typescript - 357 + 331 +export function ask(input: AskInput) { - 358 + 332 + return new Promise((resolve, reject) => { - 359 + 333 + // ... sets up permission request ... - 360 + 334 + // NO abort signal listener - 361 + 335 + // NO timeout - 362 + 336 + // Promise resolves only when user explicitly grants/denies - 363 + 337 + }) - 364 + 338 +} - 365 + 339 +``` - 366 + 340 + - 367 + 341 +`grep -c "abort" next.ts` returns **0** — there is zero abort signal awareness in the entire file. - 368 + 342 + - 369 + 343 +### Where it can happen? - 370 + 344 +- Any subagent tool call that requires permission - 371 + 345 +- Parallel subagents: one hangs on permission → parent hangs → all other parallel results blocked - 372 + 346 +- Even with auto-approve policies, edge cases (new tools, destructive operations) may still prompt - 373 + 347 + - 374 + 348 +### What any agent needs to look for? - 375 + 349 +``` - 376 + 350 +File: packages/opencode/src/permission/next.ts - 377 + 351 +Location: The ask() function (exported, ~line 143) - 378 + 352 +Pattern: The Promise constructor — no abort/timeout handling - 379 + 353 +Also check: How ask() is called from tool execution context - 380 + 354 +Also check: Whether an AbortSignal is available in the call chain - 381 + 355 +Also check: packages/opencode/src/session/prompt.ts for where permissions are requested - 382 + 356 +``` - 383 + 357 + - 384 + 358 +### How to make the fix? - 385 + 359 +Add AbortSignal support to the `ask()` function: - 386 + 360 + - 387 + 361 +```typescript - 388 + 362 +export function ask(input: AskInput & { abort?: AbortSignal }) { - 389 + 363 + return new Promise((resolve, reject) => { - 390 + 364 + // Check if already aborted - 391 + 365 + if (input.abort?.aborted) { - 392 + 366 + return reject(new Error("Permission request aborted")) - 393 + 367 + } - 394 + 368 + - 395 + 369 + // Listen for abort - 396 + 370 + const onAbort = () => { - 397 + 371 + reject(new Error("Permission request aborted")) - 398 + 372 + } - 399 + 373 + input.abort?.addEventListener("abort", onAbort, { once: true }) - 400 + 374 + - 401 + 375 + // ... existing permission logic ... - 402 + 376 + // Clean up abort listener in resolve/reject paths - 403 + 377 + }) - 404 + 378 +} - 405 + 379 +``` - 406 + 380 + - 407 + 381 +**Important**: The abort signal must be plumbed from `processor.ts` through the tool execution chain to `next.ts`. Trace the call path: - 408 + 382 +``` - 409 + 383 +processor.ts (has abort) → tool execution → specific tool → permission check → next.ts ask() - 410 + 384 +``` - 411 + 385 + - 412 + 386 +### Testing - 413 + 387 +- Trigger a subagent that needs permission - 414 + 388 +- Abort the parent session while permission is pending - 415 + 389 +- Verify the child permission promise rejects - 416 + 390 +- Verify the parent tool call resolves with an error (not hangs forever) - 417 + 391 + - 418 + 392 +--- - 419 + 393 + - 420 + 394 +## Issue #7: `retry-catch-all` — retry.ts Catch-All Makes All JSON Errors Retryable - 421 + 395 + - 422 + 396 +### Priority: P1 — Robustness - 423 + 397 + - 424 + 398 +### What is the issue? - 425 + 399 +The `retryable()` function in `retry.ts` has a catch-all at line ~96 that makes **any error with a parseable JSON response body** retryable. This means Bedrock 400 errors ("prompt is too long"), which should NOT be retried, get classified as retryable — fueling the infinite retry storm. - 426 + 400 + - 427 + 401 +### What is the bug? - 428 + 402 +`packages/opencode/src/session/retry.ts` line ~96: - 429 + 403 +```typescript - 430 + 404 +// After checking specific patterns (rate limit, overloaded, etc.)... - 431 + 405 +return JSON.stringify(json) // ← ANY remaining JSON error = retryable - 432 + 406 +``` - 433 + 407 + - 434 + 408 +The Bedrock "prompt is too long" error response is valid JSON with `"isRetryable": false` in the body, but the catch-all ignores this field and returns the body as a retryable error message. - 435 + 409 + - 436 + 410 +### Where it can happen? - 437 + 411 +- Any API error that returns a JSON response body - 438 + 412 +- Specifically: Bedrock validation errors (400), authentication errors, quota errors - 439 + 413 +- Combined with Issue #1 (no max retries), this creates infinite retry storms - 440 + 414 + - 441 + 415 +### What any agent needs to look for? - 442 + 416 +``` - 443 + 417 +File: packages/opencode/src/session/retry.ts - 444 + 418 +Location: The retryable() function, specifically the catch-all after all pattern checks - 445 + 419 +Pattern: The final `return JSON.stringify(json)` that runs for any unmatched JSON error - 446 + 420 +Also check: What specific patterns ARE checked before the catch-all - 447 + 421 +Also check: Whether the JSON body contains "isRetryable" or HTTP status fields - 448 + 422 +``` - 449 + 423 + - 450 + 424 +### How to make the fix? - 451 + 425 +Replace the blanket catch-all with HTTP status-aware classification: - 452 + 426 + - 453 + 427 +```typescript - 454 + 428 +// Instead of: return JSON.stringify(json) - 455 + 429 +// Use: - 456 + 430 +const status = (json as any).status ?? (json as any).statusCode - 457 + 431 +if (typeof status === "number" && status >= 400 && status < 500) { - 458 + 432 + // 4xx errors are client errors — NOT retryable (bad request, auth, not found, etc.) - 459 + 433 + return undefined - 460 + 434 +} - 461 + 435 +// 5xx and truly unknown → retryable (but capped by MAX_RETRIES from Issue #1) - 462 + 436 +return JSON.stringify(json) - 463 + 437 +``` - 464 + 438 + - 465 + 439 +Also check for the `isRetryable` field that Bedrock includes: - 466 + 440 +```typescript - 467 + 441 +if ((json as any).isRetryable === false) return undefined - 468 + 442 +``` - 469 + 443 + - 470 + 444 +**Note**: This fix is SAFER when combined with Issue #1 (MAX_RETRIES), since any misclassification is bounded by the retry cap. - 471 + 445 + - 472 + 446 +### Testing - 473 + 447 +- Send a Bedrock 400 "prompt is too long" error → verify NOT retried - 474 + 448 +- Send a 429 rate limit error → verify IS retried - 475 + 449 +- Send a 500 server error → verify IS retried (up to MAX_RETRIES) - 476 + 450 +- Send a JSON error with `isRetryable: false` → verify NOT retried - 477 + 451 + - 478 + 452 +--- - 479 + 453 + - 480 + 454 +## Issue #8: `tool-error-metadata` — processor.ts Drops Metadata on Tool Errors - 481 + 455 + - 482 + 456 +### Priority: P1 — Robustness - 483 + 457 + - 484 + 458 +### What is the issue? - 485 + 459 +When a tool execution errors, the tool-error handler in `processor.ts` rebuilds the tool state but **drops the `title` and `metadata` fields**. This means the UI loses the tool's display name and any navigation metadata (like `sessionId` for subagent links). - 486 + 460 + - 487 + 461 +### What is the bug? - 488 + 462 +`packages/opencode/src/session/processor.ts` lines ~207-218, the `"tool-error"` case: - 489 + 463 +```typescript - 490 + 464 +case "tool-error": { - 491 + 465 + const match = toolcalls[value.toolCallId] - 492 + 466 + if (match && match.state.status === "running") { - 493 + 467 + await Session.updatePart({ - 494 + 468 + ...match, - 495 + 469 + state: { - 496 + 470 + status: "error", - 497 + 471 + input: value.input ?? match.state.input, - 498 + 472 + error: (value.error as any).toString(), - 499 + 473 + // ❌ Missing: title: match.state.title, - 500 + 474 + // ❌ Missing: metadata: match.state.metadata, - 501 + 475 + time: { - 502 + 476 + start: match.state.time.start, - 503 + 477 + end: Date.now(), - 504 + 478 + }, - 505 + 479 + }, - 506 + 480 + }) - 507 + 481 + } - 508 + 482 +} - 509 + 483 +``` - 510 + 484 + - 511 + 485 +### Where it can happen? - 512 + 486 +- Any tool that errors during execution - 513 + 487 +- Most visible for task tool errors — the `sessionId` metadata (used for navigating to child sessions) is lost - 514 + 488 +- Also affects batch tool parts and any tool with custom title/metadata - 515 + 489 + - 516 + 490 +### What any agent needs to look for? - 517 + 491 +``` - 518 + 492 +File: packages/opencode/src/session/processor.ts - 519 + 493 +Location: The "tool-error" case in the stream event handler - 520 + 494 +Pattern: Compare the "tool-error" state update with the "tool-result" state update - 521 + 495 +The "tool-result" case preserves title and metadata, but "tool-error" does not - 522 + 496 +``` - 523 + 497 + - 524 + 498 +### How to make the fix? - 525 + 499 +Add `title` and `metadata` preservation to the error state: - 526 + 500 + - 527 + 501 +```typescript - 528 + 502 +case "tool-error": { - 529 + 503 + const match = toolcalls[value.toolCallId] - 530 + 504 + if (match && match.state.status === "running") { - 531 + 505 + await Session.updatePart({ - 532 + 506 + ...match, - 533 + 507 + state: { - 534 + 508 + status: "error", - 535 + 509 + input: value.input ?? match.state.input, - 536 + 510 + error: (value.error as any).toString(), - 537 + 511 + title: match.state.title, // ← ADD - 538 + 512 + metadata: match.state.metadata, // ← ADD - 539 + 513 + time: { - 540 + 514 + start: match.state.time.start, - 541 + 515 + end: Date.now(), - 542 + 516 + }, - 543 + 517 + }, - 544 + 518 + }) - 545 + 519 + } - 546 + 520 +} - 547 + 521 +``` - 548 + 522 + - 549 + 523 +### Testing - 550 + 524 +- Trigger a tool error (e.g., file read on non-existent path) - 551 + 525 +- Verify the error part in the UI shows the tool title - 552 + 526 +- Trigger a subagent error → verify the sessionId metadata is preserved in the error part - 553 + 527 + - 554 + 528 +--- - 555 + 529 + - 556 + 530 +## Issue #9: `batch-error-details` — batch.ts Output Lacks Per-Tool Error Details - 557 + 531 + - 558 + 532 +### Priority: P2 — Nice to Have - 559 + 533 + - 560 + 534 +### What is the issue? - 561 + 535 +When batch tool calls fail, the output summary only says `"Executed X/Y tools successfully. Z failed."` without including **which tools failed or why**. The LLM receiving this output cannot diagnose or intelligently retry the failures. - 562 + 536 + - 563 + 537 +### What is the bug? - 564 + 538 +`packages/opencode/src/tool/batch.ts` output message: - 565 + 539 +```typescript - 566 + 540 +const outputMessage = failedCalls > 0 - 567 + 541 + ? `Executed ${successfulCalls}/${results.length} tools successfully. ${failedCalls} failed.` - 568 + 542 + : `All ${successfulCalls} tools executed successfully.` - 569 + 543 +``` - 570 + 544 + - 571 + 545 +Note: Individual tool-call parts ARE written to the database with their errors (via `Session.updatePart` in the catch block), so the UI shows them. But the **summary message returned to the LLM** lacks details. - 572 + 546 + - 573 + 547 +### Where it can happen? - 574 + 548 +- Any batch execution where one or more tools fail - 575 + 549 +- The LLM sees the summary but not the individual error details - 576 + 550 +- Can cause the LLM to blindly retry the same failing operations - 577 + 551 + - 578 + 552 +### What any agent needs to look for? - 579 + 553 +``` - 580 + 554 +File: packages/opencode/src/tool/batch.ts - 581 + 555 +Location: The outputMessage construction after Promise.all results - 582 + 556 +Pattern: The results array has { success, tool, error? } for each call - 583 + 557 +``` - 584 + 558 + - 585 + 559 +### How to make the fix? - 586 + 560 +Include per-tool error details in the output: - 587 + 561 + - 588 + 562 +```typescript - 589 + 563 +const outputMessage = failedCalls > 0 - 590 + 564 + ? [ - 591 + 565 + `Executed ${successfulCalls}/${results.length} tools successfully. ${failedCalls} failed.`, - 592 + 566 + "", - 593 + 567 + "Failed tools:", - 594 + 568 + ...results - 595 + 569 + .filter((r) => !r.success) - 596 + 570 + .map((r) => `- ${r.tool}: ${r.error instanceof Error ? r.error.message : String(r.error)}`), - 597 + 571 + ].join("\n") - 598 + 572 + : `All ${successfulCalls} tools executed successfully.\n\nKeep using the batch tool for optimal performance in your next response!` - 599 + 573 +``` - 600 + 574 + - 601 + 575 +### Testing - 602 + 576 +- Execute a batch with one intentionally failing tool (e.g., read non-existent file) - 603 + 577 +- Verify the output includes the tool name and error message - 604 + 578 +- Verify the LLM can see which tool failed and why - 605 + 579 + - 606 + 580 +--- - 607 + 581 + - 608 + 582 +## Implementation Order - 609 + 583 + - 610 + 584 +``` - 611 + 585 +TODAY (P0 — Stop The Bleeding): - 612 + 586 + #1 processor-max-retries → 3.5hr freeze prevention - 613 + 587 + #2 bedrock-undefined-message → Bedrock overflow detection - 614 + 588 + #3 task-swallows-errors → Silent failure surfacing - 615 + 589 + - 616 + 590 +THIS SPRINT (P0 — Root Cause): - 617 + 591 + #4 bedrock-context-cap → Context limit accuracy - 618 + 592 + #5 subagent-timeout → Hung subagent prevention - 619 + 593 + #6 permission-abort → Permission hang prevention - 620 + 594 + - 621 + 595 +NEXT SPRINT (P1 — Robustness): - 622 + 596 + #7 retry-catch-all → Smart retry classification - 623 + 597 + #8 tool-error-metadata → Error UI metadata - 624 + 598 + - 625 + 599 +BACKLOG (P2): - 626 + 600 + #9 batch-error-details → Batch error visibility - 627 + 601 +``` - 628 + 602 - 629 + - 630 +``` - 631 + - 632 + - 633 +### 📄 `packages/opencode/src/provider/error.ts` - 634 + - 635 +**Type:** TypeScript Source File 📘 - 636 + - 637 +```diff - 638 +@@ -50,7 +50,7 @@ export namespace ProviderError { - 639 + 50 50 function message(providerID: string, e: APICallError) { - 640 + 51 51 return iife(() => { - 641 + 52 52 const msg = e.message - 642 + 53 - if (msg === "") { - 643 + 53 + if (msg === "" || msg === "undefined") { - 644 + 54 54 if (e.responseBody) return e.responseBody - 645 + 55 55 if (e.statusCode) { - 646 + 56 56 const err = STATUS_CODES[e.statusCode] - 647 + 57 57 - 648 + - 649 +``` - 650 + - 651 + - 652 +### 📄 `packages/opencode/src/session/processor.ts` - 653 + - 654 +**Type:** TypeScript Source File 📘 - 655 + - 656 +```diff - 657 +@@ -18,6 +18,7 @@ import { Question } from "@/question" - 658 + 18 18 - 659 + 19 19 export namespace SessionProcessor { - 660 + 20 20 const DOOM_LOOP_THRESHOLD = 3 - 661 + 21 + const MAX_RETRIES = 10 - 662 + 21 22 const log = Log.create({ service: "session.processor" }) - 663 + 22 23 - 664 + 23 24 export type Info = Awaited> - 665 +@@ -210,6 +211,7 @@ export namespace SessionProcessor { - 666 +210 211 status: "error", - 667 +211 212 input: value.input ?? match.state.input, - 668 +212 213 error: (value.error as any).toString(), - 669 + 214 + metadata: match.state.metadata, - 670 +213 215 time: { - 671 +214 216 start: match.state.time.start, - 672 +215 217 end: Date.now(), - 673 +@@ -363,6 +365,23 @@ export namespace SessionProcessor { - 674 +363 365 const retry = SessionRetry.retryable(error) - 675 +364 366 if (retry !== undefined) { - 676 +365 367 attempt++ - 677 + 368 + if (attempt >= MAX_RETRIES) { - 678 + 369 + log.error("max retries exceeded", { - 679 + 370 + sessionID: input.sessionID, - 680 + 371 + attempt, - 681 + 372 + message: retry, - 682 + 373 + }) - 683 + 374 + input.assistantMessage.error = MessageV2.fromError( - 684 + 375 + new Error(`Maximum retries (${MAX_RETRIES}) exceeded. Last error: ${retry}`), - 685 + 376 + { providerID: input.model.providerID }, - 686 + 377 + ) - 687 + 378 + Bus.publish(Session.Event.Error, { - 688 + 379 + sessionID: input.assistantMessage.sessionID, - 689 + 380 + error: input.assistantMessage.error, - 690 + 381 + }) - 691 + 382 + SessionStatus.set(input.sessionID, { type: "idle" }) - 692 + 383 + break - 693 + 384 + } - 694 +366 385 const delay = SessionRetry.delay(attempt, error.name === "APIError" ? error : undefined) - 695 +367 386 SessionStatus.set(input.sessionID, { - 696 +368 387 type: "retry", - 697 +369 388 - 698 + - 699 +``` - 700 + - 701 + - 702 +### 📄 `packages/opencode/src/tool/task.ts` - 703 + - 704 +**Type:** TypeScript Source File 📘 - 705 + - 706 +```diff - 707 +@@ -142,6 +142,22 @@ export const TaskTool = Tool.define("task", async (ctx) => { - 708 +142 142 parts: promptParts, - 709 +143 143 }) - 710 +144 144 - 711 + 145 + if ((result.info as MessageV2.Assistant).error) { - 712 + 146 + const errorObj = (result.info as MessageV2.Assistant).error - 713 + 147 + const msg = errorObj?.message ?? errorObj?.name ?? "Subagent task failed" - 714 + 148 + return { - 715 + 149 + title: params.description, - 716 + 150 + metadata: { sessionId: session.id, model }, - 717 + 151 + output: [ - 718 + 152 + `task_id: ${session.id} (for resuming to continue this task if needed)`, - 719 + 153 + "", - 720 + 154 + "", - 721 + 155 + `ERROR: ${msg}`, - 722 + 156 + "", - 723 + 157 + ].join("\n"), - 724 + 158 + } - 725 + 159 + } - 726 + 160 + - 727 +145 161 const text = result.parts.findLast((x) => x.type === "text")?.text ?? "" - 728 +146 162 - 729 +147 163 const output = [ - 730 +148 164 - 731 + - 732 +``` - 733 + - 734 +## 🤖 Comprehensive Review Checklist - 735 + - 736 +### ✅ Code Quality & Standards - 737 +- [ ] **Syntax & Formatting**: Consistent indentation, proper spacing - 738 +- [ ] **Naming Conventions**: Clear, descriptive variable/function names - 739 +- [ ] **Code Structure**: Logical organization, appropriate function size - 740 +- [ ] **Documentation**: Clear comments explaining complex logic - 741 +- [ ] **Type Safety**: Proper typing (if applicable) - 742 + - 743 +### 🔍 Logic & Functionality - 744 +- [ ] **Algorithm Correctness**: Logic implements requirements correctly - 745 +- [ ] **Edge Case Handling**: Boundary conditions properly addressed - 746 +- [ ] **Error Handling**: Appropriate try-catch blocks and error messages - 747 +- [ ] **Performance**: Efficient algorithms, no unnecessary loops - 748 +- [ ] **Memory Management**: Proper cleanup, no memory leaks - 749 + - 750 +### 🐛 Potential Issues & Bugs - 751 +- [ ] **Runtime Errors**: No null/undefined dereferencing - 752 +- [ ] **Type Mismatches**: Consistent data types throughout - 753 +- [ ] **Race Conditions**: Proper async/await handling - 754 +- [ ] **Resource Leaks**: Event listeners, timers properly cleaned up - 755 +- [ ] **Off-by-one Errors**: Array/loop bounds correctly handled - 756 + - 757 +### 🔒 Security Considerations - 758 +- [ ] **Input Validation**: User inputs properly sanitized - 759 +- [ ] **XSS Prevention**: No unsafe HTML injection - 760 +- [ ] **Authentication**: Proper access controls if applicable - 761 +- [ ] **Data Exposure**: No sensitive information in logs/client - 762 +- [ ] **Dependency Security**: No known vulnerable packages - 763 + - 764 +### 📱 User Experience & Accessibility - 765 +- [ ] **Responsive Design**: Works on different screen sizes - 766 +- [ ] **Loading States**: Proper feedback during operations - 767 +- [ ] **Error Messages**: User-friendly error communication - 768 +- [ ] **Accessibility**: ARIA labels, keyboard navigation - 769 +- [ ] **Performance**: Fast loading, smooth interactions - 770 + - 771 +### 💡 Improvement Suggestions - 772 + - 773 +#### Code Organization - 774 +- [ ] Consider extracting complex logic into separate functions - 775 +- [ ] Evaluate if constants should be moved to configuration - 776 +- [ ] Check for code duplication opportunities - 777 + - 778 +#### Performance Optimizations - 779 +- [ ] Identify opportunities for memoization - 780 +- [ ] Consider lazy loading for heavy operations - 781 +- [ ] Evaluate database query efficiency (if applicable) - 782 + - 783 +#### Testing Recommendations - 784 +- [ ] Unit tests for core functionality - 785 +- [ ] Integration tests for API endpoints - 786 +- [ ] Edge case testing scenarios - 787 + - 788 +#### Documentation Needs - 789 +- [ ] API documentation updates - 790 +- [ ] Code comments for complex algorithms - 791 +- [ ] README updates if public interfaces changed - 792 + - 793 +### 📝 Review Notes - 794 +*Add your specific feedback, suggestions, and observations here:* - 795 + - 796 +--- - 797 +*Individual file review generated by AI Visual Code Review v2.0* - 798 +*Generated: 2026-02-25T15:43:40.531Z* - 799 - -``` - - -### ✨ `docs/09-temp/issues.md` **[ADDED]** - -**Status:** ✅ **NEW FILE** - This file has been newly created - -**Type:** Documentation 📖 - -```diff -@@ -0,0 +1,601 @@ - 1 +# OpenCode — Parallel Agent & Retry Storm Issues - 2 + - 3 +> **Created**: 2025-02-25 - 4 +> **Source**: Combined RCA by Cline + Antigravity - 5 +> **Status**: Approved for implementation - 6 + - 7 +--- - 8 + - 9 +## Issue #1: `processor-max-retries` — Infinite Retry Loop in processor.ts - 10 + - 11 +### Priority: P0 — Stop The Bleeding - 12 + - 13 +### What is the issue? - 14 +The session processor retries failed API calls in an infinite `while(true)` loop with **no maximum retry count**. When an error is classified as "retryable" by `retry.ts`, the processor will retry it forever — user observed **2,244 identical retries over 3.5 hours** before manual abort. - 15 + - 16 +### What is the bug? - 17 +`packages/opencode/src/session/processor.ts` line ~53 has a `while(true)` loop. When the catch block determines an error is retryable via `SessionRetry.retryable(error)`, it increments `attempt` and `continue`s the loop. There is **no guard** like `if (attempt >= MAX_RETRIES) break`. - 18 + - 19 +### Where it can happen? - 20 +- Any API call that returns a retryable error (transient network issues, rate limits, Bedrock context overflow misclassified as retryable) - 21 +- Most critically: Bedrock "prompt is too long" errors that get misclassified as retryable by the catch-all in `retry.ts` (see Issue #2) - 22 +- Affects both parent sessions and subagent sessions independently - 23 + - 24 +### What any agent needs to look for? - 25 +``` - 26 +File: packages/opencode/src/session/processor.ts - 27 +Location: The while(true) loop (~line 53) - 28 +Pattern: Look for the catch block that calls SessionRetry.retryable() and does `continue` - 29 +``` - 30 + - 31 +### How to make the fix? - 32 +Add a `MAX_RETRIES` constant and guard before the `continue`: - 33 + - 34 +```typescript - 35 +// At top of file or inside the function - 36 +const MAX_RETRIES = 10 - 37 + - 38 +// Inside the catch block, before `continue`: - 39 +if (attempt >= MAX_RETRIES) { - 40 + input.assistantMessage.error = { - 41 + name: "RetryLimitExceeded", - 42 + message: `Maximum retries (${MAX_RETRIES}) exceeded. Last error: ${retry}`, - 43 + } - 44 + break - 45 +} - 46 +``` - 47 + - 48 +The error should be stored on `input.assistantMessage.error` so the session stops and the UI shows the error. Make sure the status is set to idle after breaking. - 49 + - 50 +### Testing - 51 +- Trigger a retryable error (e.g., rate limit) and verify it stops after 10 attempts - 52 +- Verify the error message appears in the session UI - 53 +- Verify the session status returns to "idle" (not stuck in "retry") - 54 + - 55 +--- - 56 + - 57 +## Issue #2: `bedrock-undefined-message` — error.ts Fails to Parse Bedrock Error Messages - 58 + - 59 +### Priority: P0 — Stop The Bleeding - 60 + - 61 +### What is the issue? - 62 +When Amazon Bedrock returns an API error (e.g., "prompt is too long"), the `message()` function in `error.ts` receives `e.message = "undefined"` (the literal string, not the JS undefined value). The function only checks for empty string `""`, so it passes `"undefined"` through to `isOverflow()`, which fails to match any overflow pattern. This means **Bedrock context overflow errors are never detected as overflow**, preventing compaction from triggering. - 63 + - 64 +### What is the bug? - 65 +`packages/opencode/src/provider/error.ts` function `message()` (~line 50-80): - 66 +```typescript - 67 +const msg = e.message - 68 +if (msg === "") { - 69 + if (e.responseBody) return e.responseBody - 70 + // ... - 71 +} - 72 +``` - 73 +When Bedrock SDK sets `e.message` to the literal string `"undefined"`, this check passes through. The actual error details are in `e.responseBody` but never extracted. - 74 + - 75 +### Where it can happen? - 76 +- Any Bedrock API call that returns an error (context overflow, validation errors, throttling) - 77 +- The Bedrock SDK wraps errors differently than the Anthropic direct SDK - 78 +- Specifically observed with "prompt is too long: 208845 tokens > 200000 maximum" errors - 79 + - 80 +### What any agent needs to look for? - 81 +``` - 82 +File: packages/opencode/src/provider/error.ts - 83 +Location: The message() function, specifically the `if (msg === "")` check - 84 +Also check: isOverflow() function and the OVERFLOW_PATTERNS regex - 85 +``` - 86 + - 87 +### How to make the fix? - 88 +Extend the empty-message check to also handle `"undefined"`: - 89 + - 90 +```typescript - 91 +function message(providerID: string, e: APICallError) { - 92 + return iife(() => { - 93 + const msg = e.message - 94 + if (msg === "" || msg === "undefined") { - 95 + if (e.responseBody) return e.responseBody - 96 + // ... rest of existing fallback logic - 97 + } - 98 + return msg - 99 + }) - 100 +} - 101 +``` - 102 + - 103 +This ensures the actual error body (which contains "prompt is too long") is used for overflow detection instead of the meaningless `"undefined"` string. - 104 + - 105 +### Testing - 106 +- Mock a Bedrock APICallError with `message: "undefined"` and `responseBody: "prompt is too long: 208845 tokens > 200000 maximum"` - 107 +- Verify `message()` returns the responseBody, not `"undefined"` - 108 +- Verify `isOverflow()` correctly detects the overflow pattern from the responseBody - 109 + - 110 +--- - 111 + - 112 +## Issue #3: `task-swallows-errors` — task.ts Silently Swallows Subagent Failures - 113 + - 114 +### Priority: P0 — Stop The Bleeding - 115 + - 116 +### What is the issue? - 117 +When a subagent (child session spawned by the `task` tool) fails with an error, the parent session shows it as **successfully completed with empty output**. The user sees a green ✅ checkmark for a task that actually errored. This is THE primary cause of "failures not reflected in main chat." + 21 +``` + 22 +┌─────────────────────────────────────────────────┐ + 23 +│ TUI Layer (tui/src/) │ + 24 +│ ┌─────────────────────────────────────────┐ │ + 25 +│ │ ChatComposer │ │ + 26 +│ │ Enter → InputResult::Submitted (steer) │ │ + 27 +│ │ Tab → InputResult::Queued │ │ + 28 +│ └─────────────────┬───────────────────────┘ │ + 29 +│ │ │ + 30 +│ ┌─────────────────▼───────────────────────┐ │ + 31 +│ │ QueuedUserMessages widget │ │ + 32 +│ │ Shows queued messages with "↳" prefix │ │ + 33 +│ │ Alt+Up to pop back into composer │ │ + 34 +│ └─────────────────────────────────────────┘ │ + 35 +└────────────────────┬────────────────────────────┘ + 36 + │ + 37 +┌────────────────────▼────────────────────────────┐ + 38 +│ App Server Protocol (app-server-protocol/) │ + 39 +│ │ + 40 +│ turn/start → TurnStartParams (new turn) │ + 41 +│ turn/steer → TurnSteerParams (mid-turn) │ + 42 +│ │ + 43 +│ TurnSteerParams { │ + 44 +│ thread_id: String, │ + 45 +│ input: Vec, │ + 46 +│ expected_turn_id: String, // guard │ + 47 +│ } │ + 48 +│ │ + 49 +│ TurnSteerResponse { │ + 50 +│ turn_id: String, // confirms active turn │ + 51 +│ } │ + 52 +└────────────────────┬────────────────────────────┘ + 53 + │ + 54 +┌────────────────────▼────────────────────────────┐ + 55 +│ App Server (app-server/src/) │ + 56 +│ codex_message_processor.rs │ + 57 +│ │ + 58 +│ async fn turn_steer(&self, req_id, params) { │ + 59 +│ let thread = load_thread(params.thread_id); │ + 60 +│ thread.steer_input( │ + 61 +│ mapped_items, │ + 62 +│ Some(¶ms.expected_turn_id) │ + 63 +│ ); │ + 64 +│ // Returns turn_id or error: │ + 65 +│ // "no active turn to steer" │ + 66 +│ } │ + 67 +└────────────────────┬────────────────────────────┘ + 68 + │ + 69 +┌────────────────────▼────────────────────────────┐ + 70 +│ Core Engine (core/src/codex.rs) │ + 71 +│ │ + 72 +│ Session::steer_input(input, expected_turn_id) │ + 73 +│ 1. Validate input not empty │ + 74 +│ 2. Lock active_turn mutex │ + 75 +│ 3. Verify active turn exists │ + 76 +│ 4. Check expected_turn_id matches │ + 77 +│ 5. Lock turn_state │ + 78 +│ 6. push_pending_input(input) ← KEY STEP │ + 79 +│ 7. Return active turn_id │ + 80 +└────────────────────┬────────────────────────────┘ + 81 + │ + 82 +┌────────────────────▼────────────────────────────┐ + 83 +│ Turn State (core/src/state/turn.rs) │ + 84 +│ │ + 85 +│ struct TurnState { │ + 86 +│ pending_input: Vec, │ + 87 +│ } │ + 88 +│ │ + 89 +│ push_pending_input(item) → appends to vec │ + 90 +│ take_pending_input() → drains vec │ + 91 +│ has_pending_input() → checks non-empty │ + 92 +└────────────────────┬────────────────────────────┘ + 93 + │ + 94 +┌────────────────────▼────────────────────────────┐ + 95 +│ Task Loop (core/src/codex.rs ~L4970) │ + 96 +│ │ + 97 +│ loop { │ + 98 +│ // At each iteration, drain pending input │ + 99 +│ let pending = sess.get_pending_input().await; │ + 100 +│ if !pending.is_empty() { │ + 101 +│ // Record as conversation items │ + 102 +│ // → injected into model context │ + 103 +│ for item in pending { │ + 104 +│ record_user_prompt_and_emit_turn_item(); │ + 105 +│ } │ + 106 +│ } │ + 107 +│ // ... send to model, process response ... │ + 108 +│ // On ResponseEvent::Completed: │ + 109 +│ needs_follow_up |= has_pending_input(); │ + 110 +│ // If follow_up needed → loop continues │ + 111 +│ } │ + 112 +└─────────────────────────────────────────────────┘ + 113 +``` + 114 + + 115 +--- + 116 + + 117 +## Core Mechanism: `steer_input` 118 + - 119 +### What is the bug? - 120 +`packages/opencode/src/tool/task.ts` line ~145: - 121 +```typescript - 122 +const result = await SessionPrompt.prompt({...}) - 123 +const text = result.parts.findLast((x) => x.type === "text")?.text ?? "" - 124 +``` - 125 + - 126 +`result.info` contains an `.error` field when the child session errored (set by `processor.ts` at `input.assistantMessage.error = error`). But `task.ts` **never checks `result.info.error`** — it only looks for text parts. When the child errored, there are no text parts, so `text = ""`, and the parent receives `\n\n` as a "successful" empty result. - 127 + - 128 +### Where it can happen? - 129 +- Any subagent failure: context overflow, API error, tool execution error, rate limit - 130 +- Parallel subagents: if 1 of 3 subagents fails, parent sees 3 "completed" tasks with one having empty output - 131 +- The parent LLM may then hallucinate that the task completed or silently move on - 132 + - 133 +### What any agent needs to look for? - 134 +``` - 135 +File: packages/opencode/src/tool/task.ts - 136 +Location: After the `SessionPrompt.prompt()` call, before building the output - 137 +Pattern: result.info should have an error field — check result.info type definition - 138 +Also check: packages/opencode/src/session/prompt.ts for the return type of prompt() - 139 +``` - 140 + - 141 +### How to make the fix? - 142 +Add an error check immediately after the `SessionPrompt.prompt()` call: - 143 + - 144 +```typescript - 145 +const result = await SessionPrompt.prompt({...}) - 146 + - 147 +// Check if child session errored - 148 +if (result.info.error) { - 149 + const error = result.info.error - 150 + const msg = error.message ?? error.name ?? "Subagent task failed" - 151 + return { - 152 + title: params.description, - 153 + metadata: { sessionId: session.id, model }, - 154 + output: [ - 155 + `task_id: ${session.id}`, - 156 + "", - 157 + "", - 158 + `ERROR: ${msg}`, - 159 + `The subtask encountered an error and could not complete.`, - 160 + "", - 161 + ].join("\n"), - 162 + } - 163 +} + 119 +The heart of steer is `Session::steer_input()` in `core/src/codex.rs`: + 120 + + 121 +```rust + 122 +pub async fn steer_input( + 123 + &self, + 124 + input: Vec, + 125 + expected_turn_id: Option<&str>, + 126 +) -> Result { + 127 + if input.is_empty() { + 128 + return Err(SteerInputError::EmptyInput); + 129 + } + 130 + let mut active = self.active_turn.lock().await; + 131 + let Some(active_turn) = active.as_mut() else { + 132 + return Err(SteerInputError::NoActiveTurn(input)); + 133 + }; + 134 + let Some((active_turn_id, _)) = active_turn.tasks.first() else { + 135 + return Err(SteerInputError::NoActiveTurn(input)); + 136 + }; + 137 + if let Some(expected_turn_id) = expected_turn_id + 138 + && expected_turn_id != active_turn_id + 139 + { + 140 + return Err(SteerInputError::ExpectedTurnMismatch { + 141 + expected: expected_turn_id.to_string(), + 142 + actual: active_turn_id.clone(), + 143 + }); + 144 + } + 145 + let mut turn_state = active_turn.turn_state.lock().await; + 146 + turn_state.push_pending_input(input.into()); + 147 + Ok(active_turn_id.clone()) + 148 +} + 149 +``` + 150 + + 151 +### Key Design Decisions + 152 + + 153 +1. **Non-blocking injection**: `steer_input` just pushes to a `Vec` — it doesn't interrupt or cancel the model. The model's active response completes naturally. + 154 + + 155 +2. **Consumption at loop boundary**: The task loop checks `pending_input` at the **top of each iteration**. After the model finishes a response, if pending input exists, it gets recorded as conversation items and the model is called again with the updated context. + 156 + + 157 +3. **`needs_follow_up` flag**: When a model response completes (`ResponseEvent::Completed`), if there's pending input, the loop sets `needs_follow_up = true` and continues instead of ending the turn. + 158 + + 159 +4. **Turn ID validation**: The `expected_turn_id` field prevents race conditions — the steer request fails if the turn has changed between the user pressing Enter and the server processing the request. + 160 + + 161 +--- + 162 + + 163 +## Error Types 164 + - 165 +const text = result.parts.findLast((x) => x.type === "text")?.text ?? "" - 166 +``` - 167 + - 168 +**Important**: Check the actual type of `result.info` to use proper typing instead of `(result.info as any).error`. Look at how `processor.ts` sets the error on `input.assistantMessage.error` to understand the shape. - 169 + - 170 +### Testing - 171 +- Trigger a subagent error (e.g., invalid tool call, context overflow) - 172 +- Verify the parent session shows "ERROR: ..." in the task result, not empty - 173 +- Verify the parent LLM receives the error and can report it to the user - 174 + - 175 +--- - 176 + - 177 +## Issue #4: `bedrock-context-cap` — Bedrock Provider Missing Context Limit Override - 178 + - 179 +### Priority: P0 — This Sprint - 180 + - 181 +### What is the issue? - 182 +The `models-snapshot.ts` file (auto-generated from models.dev) lists Claude Opus 4.6 on Bedrock with `context: 1,000,000`. This is the model's capability WITH the `context-1m` beta header. However, the Bedrock provider handler in `provider.ts` **never sends the 1M beta header**, so Bedrock actually enforces a 200K limit. The result: UI shows "20% context usage" when the user is actually at 100% of the real limit, and compaction never triggers. + 165 +```rust + 166 +pub enum SteerInputError { + 167 + NoActiveTurn(Vec), // No model turn running + 168 + ExpectedTurnMismatch { // Turn changed since request + 169 + expected: String, + 170 + actual: String, + 171 + }, + 172 + EmptyInput, // Nothing to inject + 173 +} + 174 +``` + 175 + + 176 +When `NoActiveTurn` occurs, the app-server falls back — the input that failed to steer gets queued for the next `turn/start`. + 177 + + 178 +--- + 179 + + 180 +## Queue vs Steer: Detailed Comparison + 181 + + 182 +### Queue (Tab / Enter in legacy mode) 183 + - 184 +### What is the bug? - 185 +Two bugs combine: - 186 + - 187 +1. **`models-snapshot.ts`** lists Opus 4.6 Bedrock models at 1M context (reflects model capability, not runtime limit) - 188 +2. **`provider.ts`** `"amazon-bedrock"` handler has NO logic to: - 189 + - Send `additionalModelRequestFields: { anthropic_beta: ["context-1m-2025-08-07"] }` to enable 1M - 190 + - Override the context limit to 200K when 1M beta is NOT active - 191 + - 192 +**Affected models in snapshot**: - 193 +``` - 194 +amazon-bedrock / anthropic.claude-opus-4-6-v1: context=1,000,000 ❌ - 195 +amazon-bedrock / us.anthropic.claude-opus-4-6-v1: context=1,000,000 ❌ - 196 +amazon-bedrock / eu.anthropic.claude-opus-4-6-v1: context=1,000,000 ❌ - 197 +amazon-bedrock / global.anthropic.claude-opus-4-6-v1: context=1,000,000 ❌ - 198 +``` - 199 + - 200 +All other Bedrock Claude models correctly show 200K. + 184 +1. User types message, presses Tab (or Enter in non-steer mode) + 185 +2. TUI returns `InputResult::Queued { text, text_elements }` + 186 +3. Message stored in `QueuedUserMessages.messages: Vec` + 187 +4. Rendered in UI with `↳` prefix, dimmed/italic + 188 +5. User can pop with Alt+Up to edit + 189 +6. When current turn completes → queued messages become the next `turn/start` + 190 + + 191 +### Steer (Enter in steer mode / ⌘Enter) + 192 + + 193 +1. User types message, presses Enter + 194 +2. TUI returns `InputResult::Submitted { text, text_elements }` + 195 +3. App sends `turn/steer` RPC to server + 196 +4. Server calls `thread.steer_input()` → pushes to `pending_input` + 197 +5. Model's current response continues to completion + 198 +6. At next task loop iteration, pending input is drained and recorded + 199 +7. Model sees the user's steer message in context → generates follow-up + 200 +8. **All within the same turn** — no new turn boundary 201 + - 202 +### Where it can happen? - 203 +- Any user running Claude Opus 4.6 via Amazon Bedrock - 204 +- Compaction threshold is calculated from `model.limit.context` → 1M → threshold ~900K - 205 +- Bedrock rejects at 200K → 700K token gap where compaction never fires but API always rejects - 206 +- Combined with Issue #1 (infinite retries), this causes the 3.5-hour freeze - 207 + - 208 +### What any agent needs to look for? - 209 +``` - 210 +File: packages/opencode/src/provider/provider.ts - 211 +Location: The "amazon-bedrock" entry in CUSTOM_LOADERS (~line 211) - 212 +Pattern: The returned object has options (providerOptions) and getModel() but NO context limit override - 213 +Also: Look at how compaction.ts uses model.limit.context (~line 33) - 214 +Also: Look at how Cline handles this — they use additionalModelRequestFields for Bedrock - 215 + - 216 +DO NOT edit models-snapshot.ts directly — it is auto-generated by build.ts + 202 +### Critical Difference + 203 + + 204 +| Aspect | Queue | Steer | + 205 +|--------|-------|-------| + 206 +| **Timing** | After turn ends | During active turn | + 207 +| **Turn boundary** | Creates new turn | Same turn continues | + 208 +| **Model sees it** | On next turn start | At next loop iteration | + 209 +| **Cancels response** | No (waits) | No (appends to context) | + 210 +| **UI display** | Queued messages widget | Injected into chat transcript | + 211 +| **Fallback** | N/A | Falls back to queue if no active turn | + 212 + + 213 +--- + 214 + + 215 +## Turn Lifecycle with Steer + 216 + 217 +``` - 218 + - 219 +### How to make the fix? - 220 +**Option A (Recommended)**: Add provider-level context limit override in the model resolution logic. When provider is "amazon-bedrock" and model is Claude, cap context at 200K unless a 1M configuration is explicitly enabled. - 221 + - 222 +Look at where models are resolved and limits are applied. The fix should go in `provider.ts` where models are loaded/resolved, adding a context limit override: - 223 + - 224 +```typescript - 225 +// Inside amazon-bedrock handler or model resolution - 226 +if (providerID === "amazon-bedrock" && modelData.limit?.context > 200000) { - 227 + // Cap at 200K unless 1M beta is explicitly configured - 228 + modelData.limit.context = 200000 - 229 +} - 230 +``` - 231 + - 232 +**Option B (Future)**: Implement Cline's `:1m` suffix pattern — user explicitly opts into 1M context, which triggers adding `anthropic_beta: ["context-1m-2025-08-07"]` via `additionalModelRequestFields`. - 233 + - 234 +### Testing - 235 +- Configure Bedrock with Opus 4.6 - 236 +- Verify UI shows context limit as 200K (not 1M) - 237 +- Verify compaction triggers before hitting Bedrock's actual 200K limit - 238 +- Verify no "prompt is too long" errors during normal usage - 239 + - 240 +--- - 241 + - 242 +## Issue #5: `subagent-timeout` — task.ts Has No Execution Timeout - 243 + - 244 +### Priority: P0 — This Sprint - 245 + - 246 +### What is the issue? - 247 +The `task` tool calls `SessionPrompt.prompt()` with **no timeout or deadline**. If a subagent gets stuck (infinite retry storm, permission hang, or any other blocking issue), the parent tool call never resolves. The parent session appears frozen with a spinning "running" indicator forever. + 218 +Turn Start (user submits prompt) + 219 + │ + 220 + ├─→ Model generates response... + 221 + │ │ + 222 + │ │ ← User presses Enter (steer) + 223 + │ │ → steer_input() pushes to pending_input + 224 + │ │ + 225 + │ ▼ + 226 + │ Response completes + 227 + │ │ + 228 + │ ├─→ has_pending_input()? YES + 229 + │ │ → needs_follow_up = true + 230 + │ │ + 231 + │ ▼ + 232 + │ Loop continues → drain pending_input + 233 + │ → Record steered message as conversation item + 234 + │ → Model sees: [original prompt, response, steered message] + 235 + │ → Model generates new response with full context + 236 + │ │ + 237 + │ ├─→ has_pending_input()? NO + 238 + │ │ → needs_follow_up = false + 239 + │ ▼ + 240 + │ Turn Complete + 241 + │ + 242 + └─→ Queued messages (if any) → next turn/start + 243 +``` + 244 + + 245 +--- + 246 + + 247 +## Turn Completion & Leftover Input 248 + - 249 +### What is the bug? - 250 +`packages/opencode/src/tool/task.ts`: - 251 +```typescript - 252 +const result = await SessionPrompt.prompt({ - 253 + messageID, - 254 + sessionID: session.id, - 255 + model: { modelID: model.modelID, providerID: model.providerID }, - 256 + agent: agent.name, - 257 + tools: { ... }, - 258 + parts: promptParts, - 259 +}) - 260 +// ← No timeout wrapper, no AbortController deadline - 261 +``` - 262 + - 263 +This Promise can hang indefinitely if the child session encounters: - 264 +- Infinite retry loop (Issue #1 before fix) - 265 +- Permission hang (Issue #6) - 266 +- Slow API responses that never complete - 267 + - 268 +### Where it can happen? - 269 +- Any subagent execution, but especially: - 270 + - When subagent hits context overflow with retries - 271 + - When subagent needs permission and user is watching parent - 272 + - When API provider is slow or unresponsive - 273 + - 274 +### What any agent needs to look for? - 275 +``` - 276 +File: packages/opencode/src/tool/task.ts - 277 +Location: The SessionPrompt.prompt() call - 278 +Pattern: Check if there's an AbortSignal or timeout mechanism available - 279 +Also check: How the abort signal flows from processor.ts → tool execution → task.ts - 280 +Also check: ctx parameter in execute() — does it carry an abort signal? + 249 +When a task finishes (`task_finished()` in `core/src/tasks/mod.rs`): + 250 + + 251 +```rust + 252 +// 1. Lock active turn + 253 +let mut active = self.active_turn.lock().await; + 254 +// 2. Take any remaining pending input + 255 +let pending_input = ts.take_pending_input(); + 256 +// 3. Clear active turn + 257 +*active = None; + 258 +// 4. Record leftover input as conversation items + 259 +if !pending_input.is_empty() { + 260 + record_conversation_items(&turn_context, &pending_response_items); + 261 +} + 262 +// 5. Emit TurnComplete event + 263 +``` + 264 + + 265 +This ensures steered input is **never lost** — even if the turn ends before the pending input could be consumed by the model loop. + 266 + + 267 +--- + 268 + + 269 +## Feature Flag: `steer_enabled` + 270 + + 271 +Steer is gated behind `Feature::Steer` in the TUI: + 272 + + 273 +```rust + 274 +// When steer_enabled == true: + 275 +// Enter → Submitted (steer immediately) + 276 +// Tab → Queued (wait for turn end) + 277 +// + 278 +// When steer_enabled == false (legacy): + 279 +// Enter → Queued + 280 +// Tab → Queued 281 +``` 282 + - 283 +### How to make the fix? - 284 +Wrap the `SessionPrompt.prompt()` call with an AbortController timeout: - 285 + - 286 +```typescript - 287 +const timeout = 5 * 60 * 1000 // 5 minutes (configurable) - 288 +const controller = new AbortController() - 289 +const timer = setTimeout(() => controller.abort(), timeout) - 290 + - 291 +try { - 292 + const result = await SessionPrompt.prompt({ - 293 + // ... existing params ... - 294 + abort: controller.signal, // Pass abort signal if prompt() supports it - 295 + }) - 296 + clearTimeout(timer) - 297 + // ... process result ... - 298 +} catch (e) { - 299 + clearTimeout(timer) - 300 + if (controller.signal.aborted) { - 301 + return { - 302 + title: params.description, - 303 + metadata: { sessionId: session.id, model }, - 304 + output: `ERROR: Subtask timed out after ${timeout / 1000}s. The task may still be running in session ${session.id}.`, - 305 + } - 306 + } - 307 + throw e - 308 +} - 309 +``` + 283 +--- + 284 + + 285 +## Implications for OpenCode + 286 + + 287 +### What OpenCode Currently Has + 288 +- Session/turn model with `processor.ts` handling model interaction + 289 +- Parallel agents via `task.ts` tool + 290 +- No mid-turn input injection + 291 + + 292 +### What Queue/Steer Would Add + 293 +1. **Pending input buffer** on the session/turn state + 294 +2. **Steer RPC** that pushes to the buffer while model is running + 295 +3. **Loop-boundary drain** that checks for pending input after each model response + 296 +4. **Follow-up continuation** instead of ending the turn when input is pending + 297 +5. **UI queue widget** showing messages waiting for the current turn to finish + 298 +6. **Fallback path**: steer → queue if no active turn + 299 + + 300 +### Key Implementation Points + 301 +- `steer_input()` is a **lock-based, non-cancelling** approach — it doesn't abort the model stream + 302 +- Pending input is consumed at the **top of the agentic loop**, not mid-stream + 303 +- The model sees steered input as additional conversation items on its next iteration + 304 +- `expected_turn_id` prevents stale steer requests from affecting wrong turns + 305 +- Queued messages are a purely UI-side concept until they become a `turn/start` + 306 + + 307 +--- + 308 + + 309 +## References 310 + - 311 +Check if `SessionPrompt.prompt()` already accepts an `abort` parameter. If not, trace how `processor.ts` passes its abort signal and ensure the plumbing exists. - 312 + - 313 +### Testing - 314 +- Trigger a subagent that would hang (e.g., long-running task) - 315 +- Verify it times out after the configured deadline - 316 +- Verify the parent receives a timeout error message, not silent hang - 317 +- Verify the child session is properly cleaned up - 318 + - 319 +--- - 320 + - 321 +## Issue #6: `permission-abort` — next.ts Permission Promises Hang Forever in Subagents - 322 + - 323 +### Priority: P0 — This Sprint - 324 + - 325 +### What is the issue? - 326 +When a subagent's tool requires permission (e.g., file write, command execution), the permission prompt appears **only in the child session**. If the user is watching the parent session, they never see the prompt. The child session hangs forever waiting for permission, which blocks the parent's tool call. - 327 + - 328 +### What is the bug? - 329 +`packages/opencode/src/permission/next.ts` lines ~143-156: - 330 +```typescript - 331 +export function ask(input: AskInput) { - 332 + return new Promise((resolve, reject) => { - 333 + // ... sets up permission request ... - 334 + // NO abort signal listener - 335 + // NO timeout - 336 + // Promise resolves only when user explicitly grants/denies - 337 + }) - 338 +} - 339 +``` - 340 + - 341 +`grep -c "abort" next.ts` returns **0** — there is zero abort signal awareness in the entire file. - 342 + - 343 +### Where it can happen? - 344 +- Any subagent tool call that requires permission - 345 +- Parallel subagents: one hangs on permission → parent hangs → all other parallel results blocked - 346 +- Even with auto-approve policies, edge cases (new tools, destructive operations) may still prompt - 347 + - 348 +### What any agent needs to look for? - 349 +``` - 350 +File: packages/opencode/src/permission/next.ts - 351 +Location: The ask() function (exported, ~line 143) - 352 +Pattern: The Promise constructor — no abort/timeout handling - 353 +Also check: How ask() is called from tool execution context - 354 +Also check: Whether an AbortSignal is available in the call chain - 355 +Also check: packages/opencode/src/session/prompt.ts for where permissions are requested - 356 +``` - 357 + - 358 +### How to make the fix? - 359 +Add AbortSignal support to the `ask()` function: - 360 + - 361 +```typescript - 362 +export function ask(input: AskInput & { abort?: AbortSignal }) { - 363 + return new Promise((resolve, reject) => { - 364 + // Check if already aborted - 365 + if (input.abort?.aborted) { - 366 + return reject(new Error("Permission request aborted")) - 367 + } - 368 + - 369 + // Listen for abort - 370 + const onAbort = () => { - 371 + reject(new Error("Permission request aborted")) - 372 + } - 373 + input.abort?.addEventListener("abort", onAbort, { once: true }) - 374 + - 375 + // ... existing permission logic ... - 376 + // Clean up abort listener in resolve/reject paths - 377 + }) - 378 +} - 379 +``` - 380 + - 381 +**Important**: The abort signal must be plumbed from `processor.ts` through the tool execution chain to `next.ts`. Trace the call path: - 382 +``` - 383 +processor.ts (has abort) → tool execution → specific tool → permission check → next.ts ask() - 384 +``` - 385 + - 386 +### Testing - 387 +- Trigger a subagent that needs permission - 388 +- Abort the parent session while permission is pending - 389 +- Verify the child permission promise rejects - 390 +- Verify the parent tool call resolves with an error (not hangs forever) - 391 + - 392 +--- - 393 + - 394 +## Issue #7: `retry-catch-all` — retry.ts Catch-All Makes All JSON Errors Retryable - 395 + - 396 +### Priority: P1 — Robustness - 397 + - 398 +### What is the issue? - 399 +The `retryable()` function in `retry.ts` has a catch-all at line ~96 that makes **any error with a parseable JSON response body** retryable. This means Bedrock 400 errors ("prompt is too long"), which should NOT be retried, get classified as retryable — fueling the infinite retry storm. - 400 + - 401 +### What is the bug? - 402 +`packages/opencode/src/session/retry.ts` line ~96: - 403 +```typescript - 404 +// After checking specific patterns (rate limit, overloaded, etc.)... - 405 +return JSON.stringify(json) // ← ANY remaining JSON error = retryable - 406 +``` - 407 + - 408 +The Bedrock "prompt is too long" error response is valid JSON with `"isRetryable": false` in the body, but the catch-all ignores this field and returns the body as a retryable error message. - 409 + - 410 +### Where it can happen? - 411 +- Any API error that returns a JSON response body - 412 +- Specifically: Bedrock validation errors (400), authentication errors, quota errors - 413 +- Combined with Issue #1 (no max retries), this creates infinite retry storms - 414 + - 415 +### What any agent needs to look for? - 416 +``` - 417 +File: packages/opencode/src/session/retry.ts - 418 +Location: The retryable() function, specifically the catch-all after all pattern checks - 419 +Pattern: The final `return JSON.stringify(json)` that runs for any unmatched JSON error - 420 +Also check: What specific patterns ARE checked before the catch-all - 421 +Also check: Whether the JSON body contains "isRetryable" or HTTP status fields - 422 +``` - 423 + - 424 +### How to make the fix? - 425 +Replace the blanket catch-all with HTTP status-aware classification: - 426 + - 427 +```typescript - 428 +// Instead of: return JSON.stringify(json) - 429 +// Use: - 430 +const status = (json as any).status ?? (json as any).statusCode - 431 +if (typeof status === "number" && status >= 400 && status < 500) { - 432 + // 4xx errors are client errors — NOT retryable (bad request, auth, not found, etc.) - 433 + return undefined - 434 +} - 435 +// 5xx and truly unknown → retryable (but capped by MAX_RETRIES from Issue #1) - 436 +return JSON.stringify(json) - 437 +``` - 438 + - 439 +Also check for the `isRetryable` field that Bedrock includes: - 440 +```typescript - 441 +if ((json as any).isRetryable === false) return undefined - 442 +``` - 443 + - 444 +**Note**: This fix is SAFER when combined with Issue #1 (MAX_RETRIES), since any misclassification is bounded by the retry cap. - 445 + - 446 +### Testing - 447 +- Send a Bedrock 400 "prompt is too long" error → verify NOT retried - 448 +- Send a 429 rate limit error → verify IS retried - 449 +- Send a 500 server error → verify IS retried (up to MAX_RETRIES) - 450 +- Send a JSON error with `isRetryable: false` → verify NOT retried - 451 + - 452 +--- - 453 + - 454 +## Issue #8: `tool-error-metadata` — processor.ts Drops Metadata on Tool Errors - 455 + - 456 +### Priority: P1 — Robustness - 457 + - 458 +### What is the issue? - 459 +When a tool execution errors, the tool-error handler in `processor.ts` rebuilds the tool state but **drops the `title` and `metadata` fields**. This means the UI loses the tool's display name and any navigation metadata (like `sessionId` for subagent links). - 460 + - 461 +### What is the bug? - 462 +`packages/opencode/src/session/processor.ts` lines ~207-218, the `"tool-error"` case: - 463 +```typescript - 464 +case "tool-error": { - 465 + const match = toolcalls[value.toolCallId] - 466 + if (match && match.state.status === "running") { - 467 + await Session.updatePart({ - 468 + ...match, - 469 + state: { - 470 + status: "error", - 471 + input: value.input ?? match.state.input, - 472 + error: (value.error as any).toString(), - 473 + // ❌ Missing: title: match.state.title, - 474 + // ❌ Missing: metadata: match.state.metadata, - 475 + time: { - 476 + start: match.state.time.start, - 477 + end: Date.now(), - 478 + }, - 479 + }, - 480 + }) - 481 + } - 482 +} - 483 +``` - 484 + - 485 +### Where it can happen? - 486 +- Any tool that errors during execution - 487 +- Most visible for task tool errors — the `sessionId` metadata (used for navigating to child sessions) is lost - 488 +- Also affects batch tool parts and any tool with custom title/metadata - 489 + - 490 +### What any agent needs to look for? - 491 +``` - 492 +File: packages/opencode/src/session/processor.ts - 493 +Location: The "tool-error" case in the stream event handler - 494 +Pattern: Compare the "tool-error" state update with the "tool-result" state update - 495 +The "tool-result" case preserves title and metadata, but "tool-error" does not - 496 +``` - 497 + - 498 +### How to make the fix? - 499 +Add `title` and `metadata` preservation to the error state: - 500 + - 501 +```typescript - 502 +case "tool-error": { - 503 + const match = toolcalls[value.toolCallId] - 504 + if (match && match.state.status === "running") { - 505 + await Session.updatePart({ - 506 + ...match, - 507 + state: { - 508 + status: "error", - 509 + input: value.input ?? match.state.input, - 510 + error: (value.error as any).toString(), - 511 + title: match.state.title, // ← ADD - 512 + metadata: match.state.metadata, // ← ADD - 513 + time: { - 514 + start: match.state.time.start, - 515 + end: Date.now(), - 516 + }, - 517 + }, - 518 + }) - 519 + } - 520 +} - 521 +``` - 522 + - 523 +### Testing - 524 +- Trigger a tool error (e.g., file read on non-existent path) - 525 +- Verify the error part in the UI shows the tool title - 526 +- Trigger a subagent error → verify the sessionId metadata is preserved in the error part - 527 + - 528 +--- - 529 + - 530 +## Issue #9: `batch-error-details` — batch.ts Output Lacks Per-Tool Error Details - 531 + - 532 +### Priority: P2 — Nice to Have - 533 + - 534 +### What is the issue? - 535 +When batch tool calls fail, the output summary only says `"Executed X/Y tools successfully. Z failed."` without including **which tools failed or why**. The LLM receiving this output cannot diagnose or intelligently retry the failures. - 536 + - 537 +### What is the bug? - 538 +`packages/opencode/src/tool/batch.ts` output message: - 539 +```typescript - 540 +const outputMessage = failedCalls > 0 - 541 + ? `Executed ${successfulCalls}/${results.length} tools successfully. ${failedCalls} failed.` - 542 + : `All ${successfulCalls} tools executed successfully.` - 543 +``` - 544 + - 545 +Note: Individual tool-call parts ARE written to the database with their errors (via `Session.updatePart` in the catch block), so the UI shows them. But the **summary message returned to the LLM** lacks details. - 546 + - 547 +### Where it can happen? - 548 +- Any batch execution where one or more tools fail - 549 +- The LLM sees the summary but not the individual error details - 550 +- Can cause the LLM to blindly retry the same failing operations - 551 + - 552 +### What any agent needs to look for? - 553 +``` - 554 +File: packages/opencode/src/tool/batch.ts - 555 +Location: The outputMessage construction after Promise.all results - 556 +Pattern: The results array has { success, tool, error? } for each call - 557 +``` - 558 + - 559 +### How to make the fix? - 560 +Include per-tool error details in the output: - 561 + - 562 +```typescript - 563 +const outputMessage = failedCalls > 0 - 564 + ? [ - 565 + `Executed ${successfulCalls}/${results.length} tools successfully. ${failedCalls} failed.`, - 566 + "", - 567 + "Failed tools:", - 568 + ...results - 569 + .filter((r) => !r.success) - 570 + .map((r) => `- ${r.tool}: ${r.error instanceof Error ? r.error.message : String(r.error)}`), - 571 + ].join("\n") - 572 + : `All ${successfulCalls} tools executed successfully.\n\nKeep using the batch tool for optimal performance in your next response!` - 573 +``` - 574 + - 575 +### Testing - 576 +- Execute a batch with one intentionally failing tool (e.g., read non-existent file) - 577 +- Verify the output includes the tool name and error message - 578 +- Verify the LLM can see which tool failed and why - 579 + - 580 +--- - 581 + - 582 +## Implementation Order - 583 + - 584 +``` - 585 +TODAY (P0 — Stop The Bleeding): - 586 + #1 processor-max-retries → 3.5hr freeze prevention - 587 + #2 bedrock-undefined-message → Bedrock overflow detection - 588 + #3 task-swallows-errors → Silent failure surfacing - 589 + - 590 +THIS SPRINT (P0 — Root Cause): - 591 + #4 bedrock-context-cap → Context limit accuracy - 592 + #5 subagent-timeout → Hung subagent prevention - 593 + #6 permission-abort → Permission hang prevention - 594 + - 595 +NEXT SPRINT (P1 — Robustness): - 596 + #7 retry-catch-all → Smart retry classification - 597 + #8 tool-error-metadata → Error UI metadata - 598 + - 599 +BACKLOG (P2): - 600 + #9 batch-error-details → Batch error visibility - 601 +``` - 602 + 311 +- Protocol types: `codex-rs/app-server-protocol/src/protocol/v2.rs` + 312 +- Core steer: `codex-rs/core/src/codex.rs` (L3377-3406) + 313 +- Turn state: `codex-rs/core/src/state/turn.rs` (L77-163) + 314 +- Task loop drain: `codex-rs/core/src/codex.rs` (L4970-5000) + 315 +- Follow-up flag: `codex-rs/core/src/codex.rs` (L6364) + 316 +- Task completion: `codex-rs/core/src/tasks/mod.rs` (L190-230) + 317 +- App server handler: `codex-rs/app-server/src/codex_message_processor.rs` + 318 +- TUI queue widget: `codex-rs/tui/src/bottom_pane/queued_user_messages.rs` + 319 +- TUI composer: `codex-rs/tui/src/public_widgets/composer_input.rs` + 320 + +``` + + +### 📄 `packages/app/src/components/prompt-input.tsx` + +**Type:** TypeScript React Component ⚛️ + +```diff +@@ -1,6 +1,6 @@ + 1 1 import { useFilteredList } from "@opencode-ai/ui/hooks" + 2 2 import { showToast } from "@opencode-ai/ui/toast" + 3 -import { createEffect, on, Component, Show, onCleanup, Switch, Match, createMemo, createSignal } from "solid-js" + 3 +import { createEffect, on, Component, Show, For, onCleanup, Switch, Match, createMemo, createSignal } from "solid-js" + 4 4 import { createStore } from "solid-js/store" + 5 5 import { createFocusSignal } from "@solid-primitives/active-element" + 6 6 import { useLocal } from "@/context/local" +@@ -215,6 +215,7 @@ export const PromptInput: Component = (props) => { +215 215 }, +216 216 ) +217 217 const working = createMemo(() => status()?.type !== "idle") + 218 + const steerQueue = createMemo(() => sync.data.steer_queue[params.id ?? ""] ?? []) +218 219 const imageAttachments = createMemo(() => +219 220 prompt.current().filter((part): part is ImageAttachmentPart => part.type === "image"), +220 221 ) +@@ -987,9 +988,37 @@ export const PromptInput: Component = (props) => { +987 988 } +988 989 } +989 990 +990 - // Handle Shift+Enter BEFORE IME check - Shift+Enter is never used for IME input +991 - // and should always insert a newline regardless of composition state + 991 + // Handle Shift+Enter: when working with text, send as "steer" (inject mid-turn) +992 992 if (event.key === "Enter" && event.shiftKey) { + 993 + if (working() && params.id && store.mode === "normal") { + 994 + const text = prompt + 995 + .current() + 996 + .map((p) => ("content" in p ? p.content : "")) + 997 + .join("") + 998 + .trim() + 999 + if (text.length > 0) { + 1000 + event.preventDefault() + 1001 + const sessionID = params.id + 1002 + fetch(`${sdk.url}/session/${sessionID}/steer`, { + 1003 + method: "POST", + 1004 + headers: { "Content-Type": "application/json" }, + 1005 + body: JSON.stringify({ text, mode: "steer" }), + 1006 + }).catch(() => { + 1007 + showToast({ + 1008 + title: "Failed to steer", + 1009 + description: "Could not inject message into current turn", + 1010 + }) + 1011 + }) + 1012 + prompt.reset() + 1013 + clearEditor() + 1014 + showToast({ + 1015 + title: "Steering", + 1016 + description: "Will be injected at the next step of the current turn", + 1017 + }) + 1018 + return + 1019 + } + 1020 + } + 1021 + // Default: insert newline when not working +993 1022 addPart({ type: "text", content: "\n", start: 0, end: 0 }) +994 1023 event.preventDefault() +995 1024 return +@@ -1056,6 +1085,38 @@ export const PromptInput: Component = (props) => { +1056 1085 +1057 1086 // Note: Shift+Enter is handled earlier, before IME check +1058 1087 if (event.key === "Enter" && !event.shiftKey) { + 1088 + // When busy: Enter queues a steer message instead of normal submit + 1089 + if (working() && params.id && store.mode === "normal") { + 1090 + const text = prompt + 1091 + .current() + 1092 + .map((p) => ("content" in p ? p.content : "")) + 1093 + .join("") + 1094 + .trim() + 1095 + if (text.length > 0) { + 1096 + event.preventDefault() + 1097 + const sessionID = params.id + 1098 + fetch(`${sdk.url}/session/${sessionID}/steer`, { + 1099 + method: "POST", + 1100 + headers: { "Content-Type": "application/json" }, + 1101 + body: JSON.stringify({ text }), + 1102 + }).catch(() => { + 1103 + showToast({ + 1104 + title: "Failed to queue message", + 1105 + description: "Could not steer the session", + 1106 + }) + 1107 + }) + 1108 + prompt.reset() + 1109 + clearEditor() + 1110 + showToast({ + 1111 + title: "Message queued", + 1112 + description: "Will be injected when the model finishes its current step", + 1113 + }) + 1114 + return + 1115 + } + 1116 + // Empty text while working → abort + 1117 + abort() + 1118 + return + 1119 + } +1059 1120 handleSubmit(event) +1060 1121 } +1061 1122 } +@@ -1113,6 +1174,35 @@ export const PromptInput: Component = (props) => { +1113 1174 onRemove={removeImageAttachment} +1114 1175 removeLabel={language.t("prompt.attachment.remove")} +1115 1176 /> + 1177 + 0}> + 1178 +
    + 1179 +
    + 1180 + + 1181 + Queued ({steerQueue().length}) + 1182 +
    + 1183 + + 1184 + {(item) => ( + 1185 +
    + 1186 + {item.text} + 1187 + + 1201 +
    + 1202 + )} + 1203 +
    + 1204 +
    + 1205 +
    +1116 1206
    { +@@ -1206,37 +1296,135 @@ export const PromptInput: Component = (props) => { +1206 1296 +1207 1297 +1208 1298 +1209 - +1214 - +1215 -
    +1216 - {language.t("prompt.action.stop")} +1217 - {language.t("common.key.esc")} +1218 -
    +1219 -
    +1220 - +1221 -
    +1222 - {language.t("prompt.action.send")} +1223 - +1224 -
    +1225 -
    +1226 - +1227 - } +1228 - > +1229 - +1239 -
    + 1299 + + 1300 + + 1301 +
    + 1302 + + 1306 +
    + 1307 + Queue + 1308 + + 1309 +
    + 1310 + Send after current response finishes + 1311 +
    + 1312 + } + 1313 + > + 1314 + { + 1322 + const text = prompt + 1323 + .current() + 1324 + .map((p) => ("content" in p ? p.content : "")) + 1325 + .join("") + 1326 + .trim() + 1327 + if (!text || !params.id) return + 1328 + fetch(`${sdk.url}/session/${params.id}/steer`, { + 1329 + method: "POST", + 1330 + headers: { "Content-Type": "application/json" }, + 1331 + body: JSON.stringify({ text, mode: "queue" }), + 1332 + }).catch(() => { + 1333 + showToast({ + 1334 + title: "Failed to queue message", + 1335 + description: "Could not queue the message", + 1336 + }) + 1337 + }) + 1338 + prompt.reset() + 1339 + clearEditor() + 1340 + showToast({ + 1341 + title: "Message queued", + 1342 + description: "Will be sent when the model finishes its current response", + 1343 + }) + 1344 + }} + 1345 + /> + 1346 + + 1347 + + 1351 +
    + 1352 + Steer + 1353 + ⇧⏎ + 1354 +
    + 1355 + Inject into current turn at next step + 1356 +
    + 1357 + } + 1358 + > + 1359 + { + 1367 + const text = prompt + 1368 + .current() + 1369 + .map((p) => ("content" in p ? p.content : "")) + 1370 + .join("") + 1371 + .trim() + 1372 + if (!text || !params.id) return + 1373 + fetch(`${sdk.url}/session/${params.id}/steer`, { + 1374 + method: "POST", + 1375 + headers: { "Content-Type": "application/json" }, + 1376 + body: JSON.stringify({ text, mode: "steer" }), + 1377 + }).catch(() => { + 1378 + showToast({ + 1379 + title: "Failed to steer", + 1380 + description: "Could not inject message into current turn", + 1381 + }) + 1382 + }) + 1383 + prompt.reset() + 1384 + clearEditor() + 1385 + showToast({ + 1386 + title: "Steering", + 1387 + description: "Will be injected at the next step of the current turn", + 1388 + }) + 1389 + }} + 1390 + /> + 1391 + + 1392 +
    + 1393 + + 1394 + + 1395 + + 1400 + + 1401 +
    + 1402 + {language.t("prompt.action.stop")} + 1403 + {language.t("common.key.esc")} + 1404 +
    + 1405 +
    + 1406 + + 1407 +
    + 1408 + {language.t("prompt.action.send")} + 1409 + + 1410 +
    + 1411 +
    + 1412 + + 1413 + } + 1414 + > + 1415 + + 1425 +
    + 1426 +
    + 1427 + +1240 1428
    +1241 1429
    +1242 1430 +1243 1431 ``` -### 📄 `packages/opencode/src/provider/error.ts` +### 📄 `packages/app/src/context/global-sync/child-store.ts` **Type:** TypeScript Source File 📘 ```diff -@@ -50,7 +50,7 @@ export namespace ProviderError { - 50 50 function message(providerID: string, e: APICallError) { - 51 51 return iife(() => { - 52 52 const msg = e.message - 53 - if (msg === "") { - 53 + if (msg === "" || msg === "undefined") { - 54 54 if (e.responseBody) return e.responseBody - 55 55 if (e.statusCode) { - 56 56 const err = STATUS_CODES[e.statusCode] - 57 57 +@@ -167,6 +167,7 @@ export function createChildStoreManager(input: { +167 167 session: [], +168 168 sessionTotal: 0, +169 169 session_status: {}, + 170 + steer_queue: {}, +170 171 session_diff: {}, +171 172 todo: {}, +172 173 permission: {}, +173 174 ``` -### 📄 `packages/opencode/src/session/processor.ts` +### 📄 `packages/app/src/context/global-sync/event-reducer.test.ts` **Type:** TypeScript Source File 📘 ```diff -@@ -18,6 +18,7 @@ import { Question } from "@/question" - 18 18 - 19 19 export namespace SessionProcessor { - 20 20 const DOOM_LOOP_THRESHOLD = 3 - 21 + const MAX_RETRIES = 10 - 21 22 const log = Log.create({ service: "session.processor" }) - 22 23 - 23 24 export type Info = Awaited> -@@ -210,6 +211,7 @@ export namespace SessionProcessor { -210 211 status: "error", -211 212 input: value.input ?? match.state.input, -212 213 error: (value.error as any).toString(), - 214 + metadata: match.state.metadata, -213 215 time: { -214 216 start: match.state.time.start, -215 217 end: Date.now(), -@@ -363,6 +365,23 @@ export namespace SessionProcessor { -363 365 const retry = SessionRetry.retryable(error) -364 366 if (retry !== undefined) { -365 367 attempt++ - 368 + if (attempt >= MAX_RETRIES) { - 369 + log.error("max retries exceeded", { - 370 + sessionID: input.sessionID, - 371 + attempt, - 372 + message: retry, - 373 + }) - 374 + input.assistantMessage.error = MessageV2.fromError( - 375 + new Error(`Maximum retries (${MAX_RETRIES}) exceeded. Last error: ${retry}`), - 376 + { providerID: input.model.providerID }, - 377 + ) - 378 + Bus.publish(Session.Event.Error, { - 379 + sessionID: input.assistantMessage.sessionID, - 380 + error: input.assistantMessage.error, - 381 + }) - 382 + SessionStatus.set(input.sessionID, { type: "idle" }) - 383 + break - 384 + } -366 385 const delay = SessionRetry.delay(attempt, error.name === "APIError" ? error : undefined) -367 386 SessionStatus.set(input.sessionID, { -368 387 type: "retry", -369 388 +@@ -75,6 +75,7 @@ const baseState = (input: Partial = {}) => + 75 75 todo: {}, + 76 76 permission: {}, + 77 77 question: {}, + 78 + steer_queue: {}, + 78 79 mcp: {}, + 79 80 lsp: [], + 80 81 vcs: undefined, + 81 82 ``` -### 📄 `packages/opencode/src/tool/task.ts` +### 📄 `packages/app/src/context/global-sync/event-reducer.ts` **Type:** TypeScript Source File 📘 ```diff -@@ -142,6 +142,24 @@ export const TaskTool = Tool.define("task", async (ctx) => { -142 142 parts: promptParts, -143 143 }) -144 144 - 145 + if ((result.info as MessageV2.Assistant).error) { - 146 + const errorObj = (result.info as MessageV2.Assistant).error! - 147 + const msg = ("data" in errorObj && "message" in errorObj.data) - 148 + ? errorObj.data.message - 149 + : errorObj.name - 150 + return { - 151 + title: params.description, - 152 + metadata: { sessionId: session.id, model }, - 153 + output: [ - 154 + `task_id: ${session.id} (for resuming to continue this task if needed)`, - 155 + "", - 156 + "", - 157 + `ERROR: ${msg}`, - 158 + "", - 159 + ].join("\n"), - 160 + } - 161 + } - 162 + -145 163 const text = result.parts.findLast((x) => x.type === "text")?.text ?? "" -146 164 -147 165 const output = [ -148 166 +@@ -52,7 +52,8 @@ function cleanupSessionCaches( + 52 52 store.todo[sessionID] !== undefined || + 53 53 store.permission[sessionID] !== undefined || + 54 54 store.question[sessionID] !== undefined || + 55 - store.session_status[sessionID] !== undefined + 55 + store.session_status[sessionID] !== undefined || + 56 + store.steer_queue[sessionID] !== undefined + 56 57 setSessionTodo?.(sessionID, undefined) + 57 58 if (!hasAny) return + 58 59 setStore( +@@ -71,6 +72,7 @@ function cleanupSessionCaches( + 71 72 delete draft.permission[sessionID] + 72 73 delete draft.question[sessionID] + 73 74 delete draft.session_status[sessionID] + 75 + delete draft.steer_queue[sessionID] + 74 76 }), + 75 77 ) + 76 78 } +@@ -164,6 +166,11 @@ export function applyDirectoryEvent(input: { +164 166 input.setStore("session_status", props.sessionID, reconcile(props.status)) +165 167 break +166 168 } + 169 + case "session.queue.changed": { + 170 + const props = event.properties as { sessionID: string; queue: { id: string; text: string; time: number; mode: "queue" | "steer" }[] } + 171 + input.setStore("steer_queue", props.sessionID, reconcile(props.queue, { key: "id" })) + 172 + break + 173 + } +167 174 case "message.updated": { +168 175 const info = (event.properties as { info: Message }).info +169 176 const messages = input.store.message[info.sessionID] +170 177 ``` -### ✨ `packages/opencode/test/provider/error.test.ts` **[ADDED]** +### 📄 `packages/app/src/context/global-sync/types.ts` + +**Type:** TypeScript Source File 📘 + +```diff +@@ -46,6 +46,9 @@ export type State = { + 46 46 session_status: { + 47 47 [sessionID: string]: SessionStatus + 48 48 } + 49 + steer_queue: { + 50 + [sessionID: string]: { id: string; text: string; time: number; mode: "queue" | "steer" }[] + 51 + } + 49 52 session_diff: { + 50 53 [sessionID: string]: FileDiff[] + 51 54 } + 52 55 + +``` + + +### 📄 `packages/opencode/src/server/routes/session.ts` + +**Type:** TypeScript Source File 📘 + +```diff +@@ -14,6 +14,7 @@ import { Agent } from "../../agent/agent" + 14 14 import { Snapshot } from "@/snapshot" + 15 15 import { Log } from "../../util/log" + 16 16 import { PermissionNext } from "@/permission/next" + 17 +import { SessionSteer } from "@/session/steer" + 17 18 import { errors } from "../error" + 18 19 import { lazy } from "../../util/lazy" + 19 20 +@@ -933,6 +934,122 @@ export const SessionRoutes = lazy(() => +933 934 return c.json(session) +934 935 }, +935 936 ) + 937 + .post( + 938 + "/:sessionID/steer", + 939 + describeRoute({ + 940 + summary: "Steer session", + 941 + description: + 942 + "Push a message into the session's pending input buffer. If the session is busy, the message will be injected at the next agentic loop boundary. If idle, it is queued for the next turn.", + 943 + operationId: "session.steer", + 944 + responses: { + 945 + 200: { + 946 + description: "Queued message", + 947 + content: { + 948 + "application/json": { + 949 + schema: resolver( + 950 + z.object({ + 951 + id: z.string(), + 952 + text: z.string(), + 953 + time: z.number(), + 954 + mode: z.enum(["queue", "steer"]), + 955 + }), + 956 + ), + 957 + }, + 958 + }, + 959 + }, + 960 + ...errors(400, 404), + 961 + }, + 962 + }), + 963 + validator( + 964 + "param", + 965 + z.object({ + 966 + sessionID: z.string().meta({ description: "Session ID" }), + 967 + }), + 968 + ), + 969 + validator( + 970 + "json", + 971 + z.object({ + 972 + text: z.string().min(1).meta({ description: "The message text to inject" }), + 973 + mode: z.enum(["queue", "steer"]).optional().default("queue").meta({ description: "queue waits for turn end, steer injects mid-turn" }), + 974 + }), + 975 + ), + 976 + async (c) => { + 977 + const sessionID = c.req.valid("param").sessionID + 978 + const body = c.req.valid("json") + 979 + const entry = SessionSteer.push(sessionID, body.text, body.mode) + 980 + return c.json(entry) + 981 + }, + 982 + ) + 983 + .get( + 984 + "/:sessionID/steer", + 985 + describeRoute({ + 986 + summary: "Get steer queue", + 987 + description: "List all pending steered messages for a session without draining the queue.", + 988 + operationId: "session.steer.list", + 989 + responses: { + 990 + 200: { + 991 + description: "Pending steered messages", + 992 + content: { + 993 + "application/json": { + 994 + schema: resolver( + 995 + z.array( + 996 + z.object({ + 997 + id: z.string(), + 998 + text: z.string(), + 999 + time: z.number(), + 1000 + mode: z.enum(["queue", "steer"]), + 1001 + }), + 1002 + ), + 1003 + ), + 1004 + }, + 1005 + }, + 1006 + }, + 1007 + ...errors(400, 404), + 1008 + }, + 1009 + }), + 1010 + validator( + 1011 + "param", + 1012 + z.object({ + 1013 + sessionID: z.string().meta({ description: "Session ID" }), + 1014 + }), + 1015 + ), + 1016 + async (c) => { + 1017 + const sessionID = c.req.valid("param").sessionID + 1018 + const queue = SessionSteer.list(sessionID) + 1019 + return c.json(queue) + 1020 + }, + 1021 + ) + 1022 + .delete( + 1023 + "/:sessionID/steer/:steerID", + 1024 + describeRoute({ + 1025 + summary: "Remove steered message", + 1026 + description: "Remove a specific queued steered message by its ID before it gets injected.", + 1027 + operationId: "session.steer.remove", + 1028 + responses: { + 1029 + 200: { + 1030 + description: "Whether the message was found and removed", + 1031 + content: { + 1032 + "application/json": { + 1033 + schema: resolver(z.boolean()), + 1034 + }, + 1035 + }, + 1036 + }, + 1037 + ...errors(400, 404), + 1038 + }, + 1039 + }), + 1040 + validator( + 1041 + "param", + 1042 + z.object({ + 1043 + sessionID: z.string().meta({ description: "Session ID" }), + 1044 + steerID: z.string().meta({ description: "Steer message ID" }), + 1045 + }), + 1046 + ), + 1047 + async (c) => { + 1048 + const params = c.req.valid("param") + 1049 + const removed = SessionSteer.remove(params.sessionID, params.steerID) + 1050 + return c.json(removed) + 1051 + }, + 1052 + ) +936 1053 .post( +937 1054 "/:sessionID/permissions/:permissionID", +938 1055 describeRoute({ +939 1056 + +``` + + +### 📄 `packages/opencode/src/session/prompt.ts` + +**Type:** TypeScript Source File 📘 + +```diff +@@ -45,6 +45,7 @@ import { LLM } from "./llm" + 45 45 import { iife } from "@/util/iife" + 46 46 import { Shell } from "@/shell/shell" + 47 47 import { Truncate } from "@/tool/truncation" + 48 +import { SessionSteer } from "./steer" + 48 49 + 49 50 // @ts-ignore + 50 51 globalThis.AI_SDK_LOG_WARNINGS = false +@@ -320,6 +321,56 @@ export namespace SessionPrompt { +320 321 !["tool-calls", "unknown"].includes(lastAssistant.finish) && +321 322 lastUser.id < lastAssistant.id +322 323 ) { + 324 + // Check for "steer" mode messages — these inject mid-turn at loop + 325 + // boundaries. "queue" mode messages wait until the turn fully ends. + 326 + const steered = SessionSteer.takeByMode(sessionID, "steer") + 327 + if (steered.length > 0) { + 328 + log.info("steer: injecting pending input", { sessionID, count: steered.length }) + 329 + const text = steered.map((m) => m.text).join("\n\n") + 330 + const steerMsg: MessageV2.User = { + 331 + id: Identifier.ascending("message"), + 332 + sessionID, + 333 + role: "user", + 334 + time: { created: Date.now() }, + 335 + agent: lastUser.agent, + 336 + model: lastUser.model, + 337 + } + 338 + await Session.updateMessage(steerMsg) + 339 + await Session.updatePart({ + 340 + id: Identifier.ascending("part"), + 341 + messageID: steerMsg.id, + 342 + sessionID, + 343 + type: "text", + 344 + text, + 345 + } satisfies MessageV2.TextPart) + 346 + continue + 347 + } + 348 + + 349 + // Turn is finished. Drain "queue" mode messages and auto-submit + 350 + // them as new user messages so the model starts a fresh turn. + 351 + const queued = SessionSteer.takeByMode(sessionID, "queue") + 352 + if (queued.length > 0) { + 353 + log.info("steer: auto-submitting queued input", { sessionID, count: queued.length }) + 354 + const text = queued.map((m) => m.text).join("\n\n") + 355 + const queueMsg: MessageV2.User = { + 356 + id: Identifier.ascending("message"), + 357 + sessionID, + 358 + role: "user", + 359 + time: { created: Date.now() }, + 360 + agent: lastUser.agent, + 361 + model: lastUser.model, + 362 + } + 363 + await Session.updateMessage(queueMsg) + 364 + await Session.updatePart({ + 365 + id: Identifier.ascending("part"), + 366 + messageID: queueMsg.id, + 367 + sessionID, + 368 + type: "text", + 369 + text, + 370 + } satisfies MessageV2.TextPart) + 371 + continue + 372 + } + 373 + +323 374 log.info("exiting loop", { sessionID }) +324 375 break +325 376 } +326 377 + +``` + + +### ✨ `packages/opencode/src/session/steer.ts` **[ADDED]** **Status:** ✅ **NEW FILE** - This file has been newly created **Type:** TypeScript Source File 📘 ```diff -@@ -0,0 +1,106 @@ - 1 +import { describe, expect, test } from "bun:test" - 2 +import { APICallError } from "ai" - 3 +import { ProviderError } from "../../src/provider/error" - 4 + - 5 +function makeAPICallError(opts: { - 6 + message: string - 7 + statusCode?: number - 8 + responseBody?: string - 9 + isRetryable?: boolean - 10 +}) { - 11 + return new APICallError({ - 12 + message: opts.message, - 13 + url: "https://bedrock.us-east-1.amazonaws.com", - 14 + requestBodyValues: {}, - 15 + statusCode: opts.statusCode ?? 400, - 16 + responseHeaders: {}, - 17 + responseBody: opts.responseBody, - 18 + isRetryable: opts.isRetryable ?? false, - 19 + }) - 20 +} - 21 + - 22 +describe("provider.error.parseAPICallError", () => { - 23 + test("detects overflow when message is literal 'undefined' and responseBody has prompt-too-long", () => { - 24 + const error = makeAPICallError({ - 25 + message: "undefined", - 26 + statusCode: 400, - 27 + responseBody: JSON.stringify({ - 28 + message: "prompt is too long: 208845 tokens > 200000 maximum", - 29 + }), - 30 + }) - 31 + const result = ProviderError.parseAPICallError({ - 32 + providerID: "amazon-bedrock", - 33 + error, - 34 + }) - 35 + expect(result.type).toBe("context_overflow") - 36 + }) - 37 + - 38 + test("detects overflow when message is empty string and responseBody has prompt-too-long", () => { - 39 + const error = makeAPICallError({ - 40 + message: "", - 41 + statusCode: 400, - 42 + responseBody: JSON.stringify({ - 43 + message: "prompt is too long: 208845 tokens > 200000 maximum", - 44 + }), - 45 + }) - 46 + const result = ProviderError.parseAPICallError({ - 47 + providerID: "amazon-bedrock", - 48 + error, +@@ -0,0 +1,127 @@ + 1 +import { Bus } from "../bus" + 2 +import { BusEvent } from "../bus/bus-event" + 3 +import { Instance } from "../project/instance" + 4 +import { Log } from "../util/log" + 5 +import z from "zod" + 6 + + 7 +export namespace SessionSteer { + 8 + const log = Log.create({ service: "session.steer" }) + 9 + + 10 + export type Mode = "queue" | "steer" + 11 + + 12 + const QueuedMessageSchema = z.object({ + 13 + id: z.string(), + 14 + text: z.string(), + 15 + time: z.number(), + 16 + mode: z.enum(["queue", "steer"]), + 17 + }) + 18 + + 19 + export const Event = { + 20 + QueueChanged: BusEvent.define( + 21 + "session.queue.changed", + 22 + z.object({ + 23 + sessionID: z.string(), + 24 + queue: z.array(QueuedMessageSchema), + 25 + }), + 26 + ), + 27 + } + 28 + + 29 + export interface QueuedMessage { + 30 + id: string + 31 + text: string + 32 + time: number + 33 + mode: Mode + 34 + } + 35 + + 36 + interface SteerState { + 37 + pending: QueuedMessage[] + 38 + } + 39 + + 40 + const state = Instance.state( + 41 + () => { + 42 + const data: Record = {} + 43 + return data + 44 + }, + 45 + async () => {}, + 46 + ) + 47 + + 48 + function ensure(sessionID: string): SteerState { + 49 + const s = state() + 50 + if (!s[sessionID]) s[sessionID] = { pending: [] } + 51 + return s[sessionID] + 52 + } + 53 + + 54 + /** Push a message into the pending buffer for an active session. */ + 55 + export function push(sessionID: string, text: string, mode: Mode = "queue"): QueuedMessage { + 56 + const entry: QueuedMessage = { + 57 + id: crypto.randomUUID(), + 58 + text, + 59 + time: Date.now(), + 60 + mode, + 61 + } + 62 + const s = ensure(sessionID) + 63 + s.pending.push(entry) + 64 + log.info("steer.push", { sessionID, id: entry.id, queueLength: s.pending.length }) + 65 + Bus.publish(Event.QueueChanged, { sessionID, queue: s.pending }) + 66 + return entry + 67 + } + 68 + + 69 + /** Drain all pending messages and return them. Clears the buffer. */ + 70 + export function take(sessionID: string): QueuedMessage[] { + 71 + const s = state()[sessionID] + 72 + if (!s || s.pending.length === 0) return [] + 73 + const result = s.pending.splice(0) + 74 + log.info("steer.take", { sessionID, count: result.length }) + 75 + Bus.publish(Event.QueueChanged, { sessionID, queue: s.pending }) + 76 + return result + 77 + } + 78 + + 79 + /** Drain only messages matching the given mode. Leaves other messages in the buffer. */ + 80 + export function takeByMode(sessionID: string, mode: Mode): QueuedMessage[] { + 81 + const s = state()[sessionID] + 82 + if (!s || s.pending.length === 0) return [] + 83 + const matched: QueuedMessage[] = [] + 84 + const remaining: QueuedMessage[] = [] + 85 + for (const m of s.pending) { + 86 + if (m.mode === mode) matched.push(m) + 87 + else remaining.push(m) + 88 + } + 89 + if (matched.length === 0) return [] + 90 + s.pending = remaining + 91 + log.info("steer.takeByMode", { sessionID, mode, count: matched.length }) + 92 + Bus.publish(Event.QueueChanged, { sessionID, queue: s.pending }) + 93 + return matched + 94 + } + 95 + + 96 + /** Check if there's pending steered input for a session. */ + 97 + export function has(sessionID: string): boolean { + 98 + const s = state()[sessionID] + 99 + return !!s && s.pending.length > 0 + 100 + } + 101 + + 102 + /** Get the current queue without draining. */ + 103 + export function list(sessionID: string): QueuedMessage[] { + 104 + return state()[sessionID]?.pending ?? [] + 105 + } + 106 + + 107 + /** Remove a specific queued message by id. */ + 108 + export function remove(sessionID: string, id: string): boolean { + 109 + const s = state()[sessionID] + 110 + if (!s) return false + 111 + const idx = s.pending.findIndex((m) => m.id === id) + 112 + if (idx === -1) return false + 113 + s.pending.splice(idx, 1) + 114 + log.info("steer.remove", { sessionID, id }) + 115 + Bus.publish(Event.QueueChanged, { sessionID, queue: s.pending }) + 116 + return true + 117 + } + 118 + + 119 + /** Clear all pending messages for a session. */ + 120 + export function clear(sessionID: string) { + 121 + const s = state()[sessionID] + 122 + if (!s || s.pending.length === 0) return + 123 + s.pending.length = 0 + 124 + log.info("steer.clear", { sessionID }) + 125 + Bus.publish(Event.QueueChanged, { sessionID, queue: s.pending }) + 126 + } + 127 +} + 128 + +``` + + +### ✨ `packages/opencode/test/session/steer.test.ts` **[ADDED]** + +**Status:** ✅ **NEW FILE** - This file has been newly created + +**Type:** TypeScript Source File 📘 + +```diff +@@ -0,0 +1,235 @@ + 1 +import { describe, expect, test, beforeEach } from "bun:test" + 2 +import path from "path" + 3 +import { SessionSteer } from "../../src/session/steer" + 4 +import { Instance } from "../../src/project/instance" + 5 +import { Log } from "../../src/util/log" + 6 + + 7 +const projectRoot = path.join(__dirname, "../..") + 8 +const SESSION = "session_test_steer_001" + 9 +Log.init({ print: false }) + 10 + + 11 +/** Helper to run a test function inside Instance.provide context */ + 12 +function withInstance(fn: () => void | Promise) { + 13 + return Instance.provide({ + 14 + directory: projectRoot, + 15 + fn: async () => { + 16 + await fn() + 17 + }, + 18 + }) + 19 +} + 20 + + 21 +describe("SessionSteer", () => { + 22 + describe("push", () => { + 23 + test("creates a queued message with default mode 'queue'", async () => { + 24 + await withInstance(() => { + 25 + SessionSteer.clear(SESSION) + 26 + const msg = SessionSteer.push(SESSION, "hello") + 27 + expect(msg.text).toBe("hello") + 28 + expect(msg.mode).toBe("queue") + 29 + expect(msg.id).toBeTruthy() + 30 + expect(msg.time).toBeGreaterThan(0) + 31 + }) + 32 + }) + 33 + + 34 + test("accepts explicit mode 'steer'", async () => { + 35 + await withInstance(() => { + 36 + SessionSteer.clear(SESSION) + 37 + const msg = SessionSteer.push(SESSION, "redirect", "steer") + 38 + expect(msg.text).toBe("redirect") + 39 + expect(msg.mode).toBe("steer") + 40 + }) + 41 + }) + 42 + + 43 + test("accepts explicit mode 'queue'", async () => { + 44 + await withInstance(() => { + 45 + SessionSteer.clear(SESSION) + 46 + const msg = SessionSteer.push(SESSION, "later", "queue") + 47 + expect(msg.mode).toBe("queue") + 48 + }) 49 + }) - 50 + expect(result.type).toBe("context_overflow") - 51 + }) - 52 + - 53 + test("does NOT treat literal 'undefined' as overflow when responseBody has no overflow pattern", () => { - 54 + const error = makeAPICallError({ - 55 + message: "undefined", - 56 + statusCode: 403, - 57 + responseBody: JSON.stringify({ message: "Access denied" }), - 58 + }) - 59 + const result = ProviderError.parseAPICallError({ - 60 + providerID: "amazon-bedrock", - 61 + error, - 62 + }) - 63 + expect(result.type).toBe("api_error") - 64 + }) - 65 + - 66 + test("detects overflow for direct Anthropic provider with normal message", () => { - 67 + const error = makeAPICallError({ - 68 + message: "prompt is too long: 208845 tokens > 200000 maximum", - 69 + statusCode: 400, - 70 + }) - 71 + const result = ProviderError.parseAPICallError({ - 72 + providerID: "anthropic", - 73 + error, - 74 + }) - 75 + expect(result.type).toBe("context_overflow") - 76 + }) - 77 + - 78 + test("detects overflow for Bedrock 'input is too long' pattern", () => { - 79 + const error = makeAPICallError({ - 80 + message: "undefined", - 81 + statusCode: 400, - 82 + responseBody: "input is too long for requested model", - 83 + }) - 84 + const result = ProviderError.parseAPICallError({ - 85 + providerID: "amazon-bedrock", - 86 + error, - 87 + }) - 88 + expect(result.type).toBe("context_overflow") - 89 + }) - 90 + - 91 + test("returns api_error for normal non-overflow errors", () => { - 92 + const error = makeAPICallError({ - 93 + message: "Rate limit exceeded", - 94 + statusCode: 429, - 95 + isRetryable: true, - 96 + }) - 97 + const result = ProviderError.parseAPICallError({ - 98 + providerID: "amazon-bedrock", - 99 + error, - 100 + }) - 101 + expect(result.type).toBe("api_error") - 102 + if (result.type === "api_error") { - 103 + expect(result.isRetryable).toBe(true) - 104 + } - 105 + }) - 106 +}) - 107 + 50 + }) + 51 + + 52 + describe("take", () => { + 53 + test("drains all messages regardless of mode", async () => { + 54 + await withInstance(() => { + 55 + SessionSteer.clear(SESSION) + 56 + SessionSteer.push(SESSION, "a", "queue") + 57 + SessionSteer.push(SESSION, "b", "steer") + 58 + SessionSteer.push(SESSION, "c", "queue") + 59 + + 60 + const taken = SessionSteer.take(SESSION) + 61 + expect(taken).toHaveLength(3) + 62 + expect(taken.map((m) => m.text)).toEqual(["a", "b", "c"]) + 63 + expect(SessionSteer.list(SESSION)).toHaveLength(0) + 64 + }) + 65 + }) + 66 + + 67 + test("returns empty array when no messages", async () => { + 68 + await withInstance(() => { + 69 + SessionSteer.clear(SESSION) + 70 + expect(SessionSteer.take(SESSION)).toEqual([]) + 71 + }) + 72 + }) + 73 + }) + 74 + + 75 + describe("takeByMode", () => { + 76 + test("drains only 'steer' messages, leaving 'queue' messages", async () => { + 77 + await withInstance(() => { + 78 + SessionSteer.clear(SESSION) + 79 + SessionSteer.push(SESSION, "queued-1", "queue") + 80 + SessionSteer.push(SESSION, "steer-1", "steer") + 81 + SessionSteer.push(SESSION, "queued-2", "queue") + 82 + SessionSteer.push(SESSION, "steer-2", "steer") + 83 + + 84 + const steered = SessionSteer.takeByMode(SESSION, "steer") + 85 + expect(steered).toHaveLength(2) + 86 + expect(steered.map((m) => m.text)).toEqual(["steer-1", "steer-2"]) + 87 + + 88 + const remaining = SessionSteer.list(SESSION) + 89 + expect(remaining).toHaveLength(2) + 90 + expect(remaining.map((m) => m.text)).toEqual(["queued-1", "queued-2"]) + 91 + }) + 92 + }) + 93 + + 94 + test("drains only 'queue' messages, leaving 'steer' messages", async () => { + 95 + await withInstance(() => { + 96 + SessionSteer.clear(SESSION) + 97 + SessionSteer.push(SESSION, "queued-1", "queue") + 98 + SessionSteer.push(SESSION, "steer-1", "steer") + 99 + SessionSteer.push(SESSION, "queued-2", "queue") + 100 + + 101 + const queued = SessionSteer.takeByMode(SESSION, "queue") + 102 + expect(queued).toHaveLength(2) + 103 + expect(queued.map((m) => m.text)).toEqual(["queued-1", "queued-2"]) + 104 + + 105 + const remaining = SessionSteer.list(SESSION) + 106 + expect(remaining).toHaveLength(1) + 107 + expect(remaining[0].text).toBe("steer-1") + 108 + }) + 109 + }) + 110 + + 111 + test("returns empty when no messages match mode", async () => { + 112 + await withInstance(() => { + 113 + SessionSteer.clear(SESSION) + 114 + SessionSteer.push(SESSION, "queued", "queue") + 115 + const steered = SessionSteer.takeByMode(SESSION, "steer") + 116 + expect(steered).toEqual([]) + 117 + expect(SessionSteer.list(SESSION)).toHaveLength(1) + 118 + }) + 119 + }) + 120 + + 121 + test("returns empty when buffer is empty", async () => { + 122 + await withInstance(() => { + 123 + SessionSteer.clear(SESSION) + 124 + expect(SessionSteer.takeByMode(SESSION, "steer")).toEqual([]) + 125 + expect(SessionSteer.takeByMode(SESSION, "queue")).toEqual([]) + 126 + }) + 127 + }) + 128 + + 129 + test("sequential takeByMode drains both modes completely", async () => { + 130 + await withInstance(() => { + 131 + SessionSteer.clear(SESSION) + 132 + SessionSteer.push(SESSION, "s1", "steer") + 133 + SessionSteer.push(SESSION, "q1", "queue") + 134 + SessionSteer.push(SESSION, "s2", "steer") + 135 + SessionSteer.push(SESSION, "q2", "queue") + 136 + + 137 + const steered = SessionSteer.takeByMode(SESSION, "steer") + 138 + expect(steered).toHaveLength(2) + 139 + + 140 + const queued = SessionSteer.takeByMode(SESSION, "queue") + 141 + expect(queued).toHaveLength(2) + 142 + + 143 + expect(SessionSteer.has(SESSION)).toBe(false) + 144 + expect(SessionSteer.list(SESSION)).toHaveLength(0) + 145 + }) + 146 + }) + 147 + }) + 148 + + 149 + describe("has", () => { + 150 + test("returns false for empty session", async () => { + 151 + await withInstance(() => { + 152 + SessionSteer.clear(SESSION) + 153 + expect(SessionSteer.has(SESSION)).toBe(false) + 154 + }) + 155 + }) + 156 + + 157 + test("returns true after push", async () => { + 158 + await withInstance(() => { + 159 + SessionSteer.clear(SESSION) + 160 + SessionSteer.push(SESSION, "test") + 161 + expect(SessionSteer.has(SESSION)).toBe(true) + 162 + }) + 163 + }) + 164 + + 165 + test("returns false after take drains all", async () => { + 166 + await withInstance(() => { + 167 + SessionSteer.clear(SESSION) + 168 + SessionSteer.push(SESSION, "test") + 169 + SessionSteer.take(SESSION) + 170 + expect(SessionSteer.has(SESSION)).toBe(false) + 171 + }) + 172 + }) + 173 + + 174 + test("returns true when takeByMode leaves remaining", async () => { + 175 + await withInstance(() => { + 176 + SessionSteer.clear(SESSION) + 177 + SessionSteer.push(SESSION, "q", "queue") + 178 + SessionSteer.takeByMode(SESSION, "steer") + 179 + expect(SessionSteer.has(SESSION)).toBe(true) + 180 + }) + 181 + }) + 182 + }) + 183 + + 184 + describe("list", () => { + 185 + test("returns current queue without draining", async () => { + 186 + await withInstance(() => { + 187 + SessionSteer.clear(SESSION) + 188 + SessionSteer.push(SESSION, "a", "queue") + 189 + SessionSteer.push(SESSION, "b", "steer") + 190 + + 191 + const first = SessionSteer.list(SESSION) + 192 + expect(first).toHaveLength(2) + 193 + + 194 + const second = SessionSteer.list(SESSION) + 195 + expect(second).toHaveLength(2) + 196 + }) + 197 + }) + 198 + }) + 199 + + 200 + describe("remove", () => { + 201 + test("removes specific message by id", async () => { + 202 + await withInstance(() => { + 203 + SessionSteer.clear(SESSION) + 204 + const msg = SessionSteer.push(SESSION, "target", "steer") + 205 + SessionSteer.push(SESSION, "keep", "queue") + 206 + + 207 + const removed = SessionSteer.remove(SESSION, msg.id) + 208 + expect(removed).toBe(true) + 209 + expect(SessionSteer.list(SESSION)).toHaveLength(1) + 210 + expect(SessionSteer.list(SESSION)[0].text).toBe("keep") + 211 + }) + 212 + }) + 213 + + 214 + test("returns false for non-existent id", async () => { + 215 + await withInstance(() => { + 216 + SessionSteer.clear(SESSION) + 217 + SessionSteer.push(SESSION, "test") + 218 + expect(SessionSteer.remove(SESSION, "nonexistent")).toBe(false) + 219 + }) + 220 + }) + 221 + }) + 222 + + 223 + describe("clear", () => { + 224 + test("removes all pending messages", async () => { + 225 + await withInstance(() => { + 226 + SessionSteer.clear(SESSION) + 227 + SessionSteer.push(SESSION, "a", "queue") + 228 + SessionSteer.push(SESSION, "b", "steer") + 229 + SessionSteer.clear(SESSION) + 230 + expect(SessionSteer.has(SESSION)).toBe(false) + 231 + expect(SessionSteer.list(SESSION)).toHaveLength(0) + 232 + }) + 233 + }) + 234 + }) + 235 +}) + 236 ``` @@ -1729,4 +1425,4 @@ AI_REVIEW.md | 798 ++++++++++++++++++++++++++ --- *Individual file review generated by AI Visual Code Review v2.0* -*Generated: 2026-02-25T15:47:47.700Z* +*Generated: 2026-02-26T10:33:24.938Z* diff --git a/docs/09-temp/codex-queue-steer-architecture.md b/docs/09-temp/codex-queue-steer-architecture.md new file mode 100644 index 000000000000..f2012489aa4f --- /dev/null +++ b/docs/09-temp/codex-queue-steer-architecture.md @@ -0,0 +1,319 @@ +# Codex Queue/Steer Architecture Analysis + +> Deep-dive into OpenAI Codex CLI's queue/steer mechanism for mid-turn user interaction. +> Source: `references/codex/` submodule + +--- + +## Overview + +Codex implements a **dual-input model** that lets users interact with the agent **during** an active turn, not just between turns: + +| Action | Keybinding | Behavior | When Turn Active | +|--------|-----------|----------|-----------------| +| **Queue** | `Enter` | Enqueue message for next turn boundary | Message waits in queue, displayed in UI | +| **Steer** | `⌘Enter` / `Enter` (steer-mode) | Inject input into active turn immediately | Message sent to model in current context | + +--- + +## Architecture Layers + +``` +┌─────────────────────────────────────────────────┐ +│ TUI Layer (tui/src/) │ +│ ┌─────────────────────────────────────────┐ │ +│ │ ChatComposer │ │ +│ │ Enter → InputResult::Submitted (steer) │ │ +│ │ Tab → InputResult::Queued │ │ +│ └─────────────────┬───────────────────────┘ │ +│ │ │ +│ ┌─────────────────▼───────────────────────┐ │ +│ │ QueuedUserMessages widget │ │ +│ │ Shows queued messages with "↳" prefix │ │ +│ │ Alt+Up to pop back into composer │ │ +│ └─────────────────────────────────────────┘ │ +└────────────────────┬────────────────────────────┘ + │ +┌────────────────────▼────────────────────────────┐ +│ App Server Protocol (app-server-protocol/) │ +│ │ +│ turn/start → TurnStartParams (new turn) │ +│ turn/steer → TurnSteerParams (mid-turn) │ +│ │ +│ TurnSteerParams { │ +│ thread_id: String, │ +│ input: Vec, │ +│ expected_turn_id: String, // guard │ +│ } │ +│ │ +│ TurnSteerResponse { │ +│ turn_id: String, // confirms active turn │ +│ } │ +└────────────────────┬────────────────────────────┘ + │ +┌────────────────────▼────────────────────────────┐ +│ App Server (app-server/src/) │ +│ codex_message_processor.rs │ +│ │ +│ async fn turn_steer(&self, req_id, params) { │ +│ let thread = load_thread(params.thread_id); │ +│ thread.steer_input( │ +│ mapped_items, │ +│ Some(¶ms.expected_turn_id) │ +│ ); │ +│ // Returns turn_id or error: │ +│ // "no active turn to steer" │ +│ } │ +└────────────────────┬────────────────────────────┘ + │ +┌────────────────────▼────────────────────────────┐ +│ Core Engine (core/src/codex.rs) │ +│ │ +│ Session::steer_input(input, expected_turn_id) │ +│ 1. Validate input not empty │ +│ 2. Lock active_turn mutex │ +│ 3. Verify active turn exists │ +│ 4. Check expected_turn_id matches │ +│ 5. Lock turn_state │ +│ 6. push_pending_input(input) ← KEY STEP │ +│ 7. Return active turn_id │ +└────────────────────┬────────────────────────────┘ + │ +┌────────────────────▼────────────────────────────┐ +│ Turn State (core/src/state/turn.rs) │ +│ │ +│ struct TurnState { │ +│ pending_input: Vec, │ +│ } │ +│ │ +│ push_pending_input(item) → appends to vec │ +│ take_pending_input() → drains vec │ +│ has_pending_input() → checks non-empty │ +└────────────────────┬────────────────────────────┘ + │ +┌────────────────────▼────────────────────────────┐ +│ Task Loop (core/src/codex.rs ~L4970) │ +│ │ +│ loop { │ +│ // At each iteration, drain pending input │ +│ let pending = sess.get_pending_input().await; │ +│ if !pending.is_empty() { │ +│ // Record as conversation items │ +│ // → injected into model context │ +│ for item in pending { │ +│ record_user_prompt_and_emit_turn_item(); │ +│ } │ +│ } │ +│ // ... send to model, process response ... │ +│ // On ResponseEvent::Completed: │ +│ needs_follow_up |= has_pending_input(); │ +│ // If follow_up needed → loop continues │ +│ } │ +└─────────────────────────────────────────────────┘ +``` + +--- + +## Core Mechanism: `steer_input` + +The heart of steer is `Session::steer_input()` in `core/src/codex.rs`: + +```rust +pub async fn steer_input( + &self, + input: Vec, + expected_turn_id: Option<&str>, +) -> Result { + if input.is_empty() { + return Err(SteerInputError::EmptyInput); + } + let mut active = self.active_turn.lock().await; + let Some(active_turn) = active.as_mut() else { + return Err(SteerInputError::NoActiveTurn(input)); + }; + let Some((active_turn_id, _)) = active_turn.tasks.first() else { + return Err(SteerInputError::NoActiveTurn(input)); + }; + if let Some(expected_turn_id) = expected_turn_id + && expected_turn_id != active_turn_id + { + return Err(SteerInputError::ExpectedTurnMismatch { + expected: expected_turn_id.to_string(), + actual: active_turn_id.clone(), + }); + } + let mut turn_state = active_turn.turn_state.lock().await; + turn_state.push_pending_input(input.into()); + Ok(active_turn_id.clone()) +} +``` + +### Key Design Decisions + +1. **Non-blocking injection**: `steer_input` just pushes to a `Vec` — it doesn't interrupt or cancel the model. The model's active response completes naturally. + +2. **Consumption at loop boundary**: The task loop checks `pending_input` at the **top of each iteration**. After the model finishes a response, if pending input exists, it gets recorded as conversation items and the model is called again with the updated context. + +3. **`needs_follow_up` flag**: When a model response completes (`ResponseEvent::Completed`), if there's pending input, the loop sets `needs_follow_up = true` and continues instead of ending the turn. + +4. **Turn ID validation**: The `expected_turn_id` field prevents race conditions — the steer request fails if the turn has changed between the user pressing Enter and the server processing the request. + +--- + +## Error Types + +```rust +pub enum SteerInputError { + NoActiveTurn(Vec), // No model turn running + ExpectedTurnMismatch { // Turn changed since request + expected: String, + actual: String, + }, + EmptyInput, // Nothing to inject +} +``` + +When `NoActiveTurn` occurs, the app-server falls back — the input that failed to steer gets queued for the next `turn/start`. + +--- + +## Queue vs Steer: Detailed Comparison + +### Queue (Tab / Enter in legacy mode) + +1. User types message, presses Tab (or Enter in non-steer mode) +2. TUI returns `InputResult::Queued { text, text_elements }` +3. Message stored in `QueuedUserMessages.messages: Vec` +4. Rendered in UI with `↳` prefix, dimmed/italic +5. User can pop with Alt+Up to edit +6. When current turn completes → queued messages become the next `turn/start` + +### Steer (Enter in steer mode / ⌘Enter) + +1. User types message, presses Enter +2. TUI returns `InputResult::Submitted { text, text_elements }` +3. App sends `turn/steer` RPC to server +4. Server calls `thread.steer_input()` → pushes to `pending_input` +5. Model's current response continues to completion +6. At next task loop iteration, pending input is drained and recorded +7. Model sees the user's steer message in context → generates follow-up +8. **All within the same turn** — no new turn boundary + +### Critical Difference + +| Aspect | Queue | Steer | +|--------|-------|-------| +| **Timing** | After turn ends | During active turn | +| **Turn boundary** | Creates new turn | Same turn continues | +| **Model sees it** | On next turn start | At next loop iteration | +| **Cancels response** | No (waits) | No (appends to context) | +| **UI display** | Queued messages widget | Injected into chat transcript | +| **Fallback** | N/A | Falls back to queue if no active turn | + +--- + +## Turn Lifecycle with Steer + +``` +Turn Start (user submits prompt) + │ + ├─→ Model generates response... + │ │ + │ │ ← User presses Enter (steer) + │ │ → steer_input() pushes to pending_input + │ │ + │ ▼ + │ Response completes + │ │ + │ ├─→ has_pending_input()? YES + │ │ → needs_follow_up = true + │ │ + │ ▼ + │ Loop continues → drain pending_input + │ → Record steered message as conversation item + │ → Model sees: [original prompt, response, steered message] + │ → Model generates new response with full context + │ │ + │ ├─→ has_pending_input()? NO + │ │ → needs_follow_up = false + │ ▼ + │ Turn Complete + │ + └─→ Queued messages (if any) → next turn/start +``` + +--- + +## Turn Completion & Leftover Input + +When a task finishes (`task_finished()` in `core/src/tasks/mod.rs`): + +```rust +// 1. Lock active turn +let mut active = self.active_turn.lock().await; +// 2. Take any remaining pending input +let pending_input = ts.take_pending_input(); +// 3. Clear active turn +*active = None; +// 4. Record leftover input as conversation items +if !pending_input.is_empty() { + record_conversation_items(&turn_context, &pending_response_items); +} +// 5. Emit TurnComplete event +``` + +This ensures steered input is **never lost** — even if the turn ends before the pending input could be consumed by the model loop. + +--- + +## Feature Flag: `steer_enabled` + +Steer is gated behind `Feature::Steer` in the TUI: + +```rust +// When steer_enabled == true: +// Enter → Submitted (steer immediately) +// Tab → Queued (wait for turn end) +// +// When steer_enabled == false (legacy): +// Enter → Queued +// Tab → Queued +``` + +--- + +## Implications for OpenCode + +### What OpenCode Currently Has +- Session/turn model with `processor.ts` handling model interaction +- Parallel agents via `task.ts` tool +- No mid-turn input injection + +### What Queue/Steer Would Add +1. **Pending input buffer** on the session/turn state +2. **Steer RPC** that pushes to the buffer while model is running +3. **Loop-boundary drain** that checks for pending input after each model response +4. **Follow-up continuation** instead of ending the turn when input is pending +5. **UI queue widget** showing messages waiting for the current turn to finish +6. **Fallback path**: steer → queue if no active turn + +### Key Implementation Points +- `steer_input()` is a **lock-based, non-cancelling** approach — it doesn't abort the model stream +- Pending input is consumed at the **top of the agentic loop**, not mid-stream +- The model sees steered input as additional conversation items on its next iteration +- `expected_turn_id` prevents stale steer requests from affecting wrong turns +- Queued messages are a purely UI-side concept until they become a `turn/start` + +--- + +## References + +- Protocol types: `codex-rs/app-server-protocol/src/protocol/v2.rs` +- Core steer: `codex-rs/core/src/codex.rs` (L3377-3406) +- Turn state: `codex-rs/core/src/state/turn.rs` (L77-163) +- Task loop drain: `codex-rs/core/src/codex.rs` (L4970-5000) +- Follow-up flag: `codex-rs/core/src/codex.rs` (L6364) +- Task completion: `codex-rs/core/src/tasks/mod.rs` (L190-230) +- App server handler: `codex-rs/app-server/src/codex_message_processor.rs` +- TUI queue widget: `codex-rs/tui/src/bottom_pane/queued_user_messages.rs` +- TUI composer: `codex-rs/tui/src/public_widgets/composer_input.rs` diff --git a/packages/app/src/context/global-sync/child-store.ts b/packages/app/src/context/global-sync/child-store.ts index 70668350ec20..f0ed8f7a8032 100644 --- a/packages/app/src/context/global-sync/child-store.ts +++ b/packages/app/src/context/global-sync/child-store.ts @@ -169,6 +169,7 @@ export function createChildStoreManager(input: { session: [], sessionTotal: 0, session_status: {}, + steer_queue: {}, session_diff: {}, todo: {}, permission: {}, diff --git a/packages/app/src/context/global-sync/event-reducer.test.ts b/packages/app/src/context/global-sync/event-reducer.test.ts index cf2da135cbbc..d5412e3c5893 100644 --- a/packages/app/src/context/global-sync/event-reducer.test.ts +++ b/packages/app/src/context/global-sync/event-reducer.test.ts @@ -75,6 +75,7 @@ const baseState = (input: Partial = {}) => todo: {}, permission: {}, question: {}, + steer_queue: {}, mcp: {}, lsp: [], vcs: undefined, diff --git a/packages/app/src/context/global-sync/event-reducer.ts b/packages/app/src/context/global-sync/event-reducer.ts deleted file mode 100644 index 5d8b7c4e3d8e..000000000000 --- a/packages/app/src/context/global-sync/event-reducer.ts +++ /dev/null @@ -1,359 +0,0 @@ -import { Binary } from "@opencode-ai/util/binary" -import { produce, reconcile, type SetStoreFunction, type Store } from "solid-js/store" -import type { - FileDiff, - Message, - Part, - PermissionRequest, - Project, - QuestionRequest, - Session, - SessionStatus, - Todo, -} from "@opencode-ai/sdk/v2/client" -import type { State, VcsCache } from "./types" -import { trimSessions } from "./session-trim" -import { dropSessionCaches } from "./session-cache" - -const SKIP_PARTS = new Set(["patch", "step-start", "step-finish"]) - -export function applyGlobalEvent(input: { - event: { type: string; properties?: unknown } - project: Project[] - setGlobalProject: (next: Project[] | ((draft: Project[]) => void)) => void - refresh: () => void -}) { - if (input.event.type === "global.disposed" || input.event.type === "server.connected") { - input.refresh() - return - } - - if (input.event.type !== "project.updated") return - const properties = input.event.properties as Project - const result = Binary.search(input.project, properties.id, (s) => s.id) - if (result.found) { - input.setGlobalProject((draft) => { - draft[result.index] = { ...draft[result.index], ...properties } - }) - return - } - input.setGlobalProject((draft) => { - draft.splice(result.index, 0, properties) - }) -} - -function cleanupSessionCaches( - setStore: SetStoreFunction, - sessionID: string, - setSessionTodo?: (sessionID: string, todos: Todo[] | undefined) => void, -) { - if (!sessionID) return - setSessionTodo?.(sessionID, undefined) - setStore( - produce((draft) => { - dropSessionCaches(draft, [sessionID]) - }), - ) -} - -export function cleanupDroppedSessionCaches( - store: Store, - setStore: SetStoreFunction, - next: Session[], - setSessionTodo?: (sessionID: string, todos: Todo[] | undefined) => void, -) { - const keep = new Set(next.map((item) => item.id)) - const stale = [ - ...Object.keys(store.message), - ...Object.keys(store.session_diff), - ...Object.keys(store.todo), - ...Object.keys(store.permission), - ...Object.keys(store.question), - ...Object.keys(store.session_status), - ...Object.values(store.part) - .map((parts) => parts?.find((part) => !!part?.sessionID)?.sessionID) - .filter((sessionID): sessionID is string => !!sessionID), - ].filter((sessionID, index, list) => !keep.has(sessionID) && list.indexOf(sessionID) === index) - if (stale.length === 0) return - for (const sessionID of stale) { - setSessionTodo?.(sessionID, undefined) - } - setStore( - produce((draft) => { - dropSessionCaches(draft, stale) - }), - ) -} - -export function applyDirectoryEvent(input: { - event: { type: string; properties?: unknown } - store: Store - setStore: SetStoreFunction - push: (directory: string) => void - directory: string - loadLsp: () => void - vcsCache?: VcsCache - setSessionTodo?: (sessionID: string, todos: Todo[] | undefined) => void -}) { - const event = input.event - switch (event.type) { - case "server.instance.disposed": { - input.push(input.directory) - return - } - case "session.created": { - const info = (event.properties as { info: Session }).info - const result = Binary.search(input.store.session, info.id, (s) => s.id) - if (result.found) { - input.setStore("session", result.index, reconcile(info)) - break - } - const next = input.store.session.slice() - next.splice(result.index, 0, info) - const trimmed = trimSessions(next, { limit: input.store.limit, permission: input.store.permission }) - input.setStore("session", reconcile(trimmed, { key: "id" })) - cleanupDroppedSessionCaches(input.store, input.setStore, trimmed, input.setSessionTodo) - if (!info.parentID) input.setStore("sessionTotal", (value) => value + 1) - break - } - case "session.updated": { - const info = (event.properties as { info: Session }).info - const result = Binary.search(input.store.session, info.id, (s) => s.id) - if (info.time.archived) { - if (result.found) { - input.setStore( - "session", - produce((draft) => { - draft.splice(result.index, 1) - }), - ) - } - cleanupSessionCaches(input.setStore, info.id, input.setSessionTodo) - if (info.parentID) break - input.setStore("sessionTotal", (value) => Math.max(0, value - 1)) - break - } - if (result.found) { - input.setStore("session", result.index, reconcile(info)) - break - } - const next = input.store.session.slice() - next.splice(result.index, 0, info) - const trimmed = trimSessions(next, { limit: input.store.limit, permission: input.store.permission }) - input.setStore("session", reconcile(trimmed, { key: "id" })) - cleanupDroppedSessionCaches(input.store, input.setStore, trimmed, input.setSessionTodo) - break - } - case "session.deleted": { - const info = (event.properties as { info: Session }).info - const result = Binary.search(input.store.session, info.id, (s) => s.id) - if (result.found) { - input.setStore( - "session", - produce((draft) => { - draft.splice(result.index, 1) - }), - ) - } - cleanupSessionCaches(input.setStore, info.id, input.setSessionTodo) - if (info.parentID) break - input.setStore("sessionTotal", (value) => Math.max(0, value - 1)) - break - } - case "session.diff": { - const props = event.properties as { sessionID: string; diff: FileDiff[] } - input.setStore("session_diff", props.sessionID, reconcile(props.diff, { key: "file" })) - break - } - case "todo.updated": { - const props = event.properties as { sessionID: string; todos: Todo[] } - input.setStore("todo", props.sessionID, reconcile(props.todos, { key: "id" })) - input.setSessionTodo?.(props.sessionID, props.todos) - break - } - case "session.status": { - const props = event.properties as { sessionID: string; status: SessionStatus } - input.setStore("session_status", props.sessionID, reconcile(props.status)) - break - } - case "message.updated": { - const info = (event.properties as { info: Message }).info - const messages = input.store.message[info.sessionID] - if (!messages) { - input.setStore("message", info.sessionID, [info]) - break - } - const result = Binary.search(messages, info.id, (m) => m.id) - if (result.found) { - input.setStore("message", info.sessionID, result.index, reconcile(info)) - break - } - input.setStore( - "message", - info.sessionID, - produce((draft) => { - draft.splice(result.index, 0, info) - }), - ) - break - } - case "message.removed": { - const props = event.properties as { sessionID: string; messageID: string } - input.setStore( - produce((draft) => { - const messages = draft.message[props.sessionID] - if (messages) { - const result = Binary.search(messages, props.messageID, (m) => m.id) - if (result.found) messages.splice(result.index, 1) - } - delete draft.part[props.messageID] - }), - ) - break - } - case "message.part.updated": { - const part = (event.properties as { part: Part }).part - if (SKIP_PARTS.has(part.type)) break - const parts = input.store.part[part.messageID] - if (!parts) { - input.setStore("part", part.messageID, [part]) - break - } - const result = Binary.search(parts, part.id, (p) => p.id) - if (result.found) { - input.setStore("part", part.messageID, result.index, reconcile(part)) - break - } - input.setStore( - "part", - part.messageID, - produce((draft) => { - draft.splice(result.index, 0, part) - }), - ) - break - } - case "message.part.removed": { - const props = event.properties as { messageID: string; partID: string } - const parts = input.store.part[props.messageID] - if (!parts) break - const result = Binary.search(parts, props.partID, (p) => p.id) - if (result.found) { - input.setStore( - produce((draft) => { - const list = draft.part[props.messageID] - if (!list) return - const next = Binary.search(list, props.partID, (p) => p.id) - if (!next.found) return - list.splice(next.index, 1) - if (list.length === 0) delete draft.part[props.messageID] - }), - ) - } - break - } - case "message.part.delta": { - const props = event.properties as { messageID: string; partID: string; field: string; delta: string } - const parts = input.store.part[props.messageID] - if (!parts) break - const result = Binary.search(parts, props.partID, (p) => p.id) - if (!result.found) break - input.setStore( - "part", - props.messageID, - produce((draft) => { - const part = draft[result.index] - const field = props.field as keyof typeof part - const existing = part[field] as string | undefined - ;(part[field] as string) = (existing ?? "") + props.delta - }), - ) - break - } - case "vcs.branch.updated": { - const props = event.properties as { branch: string } - if (input.store.vcs?.branch === props.branch) break - const next = { branch: props.branch } - input.setStore("vcs", next) - if (input.vcsCache) input.vcsCache.setStore("value", next) - break - } - case "permission.asked": { - const permission = event.properties as PermissionRequest - const permissions = input.store.permission[permission.sessionID] - if (!permissions) { - input.setStore("permission", permission.sessionID, [permission]) - break - } - const result = Binary.search(permissions, permission.id, (p) => p.id) - if (result.found) { - input.setStore("permission", permission.sessionID, result.index, reconcile(permission)) - break - } - input.setStore( - "permission", - permission.sessionID, - produce((draft) => { - draft.splice(result.index, 0, permission) - }), - ) - break - } - case "permission.replied": { - const props = event.properties as { sessionID: string; requestID: string } - const permissions = input.store.permission[props.sessionID] - if (!permissions) break - const result = Binary.search(permissions, props.requestID, (p) => p.id) - if (!result.found) break - input.setStore( - "permission", - props.sessionID, - produce((draft) => { - draft.splice(result.index, 1) - }), - ) - break - } - case "question.asked": { - const question = event.properties as QuestionRequest - const questions = input.store.question[question.sessionID] - if (!questions) { - input.setStore("question", question.sessionID, [question]) - break - } - const result = Binary.search(questions, question.id, (q) => q.id) - if (result.found) { - input.setStore("question", question.sessionID, result.index, reconcile(question)) - break - } - input.setStore( - "question", - question.sessionID, - produce((draft) => { - draft.splice(result.index, 0, question) - }), - ) - break - } - case "question.replied": - case "question.rejected": { - const props = event.properties as { sessionID: string; requestID: string } - const questions = input.store.question[props.sessionID] - if (!questions) break - const result = Binary.search(questions, props.requestID, (q) => q.id) - if (!result.found) break - input.setStore( - "question", - props.sessionID, - produce((draft) => { - draft.splice(result.index, 1) - }), - ) - break - } - case "lsp.updated": { - input.loadLsp() - break - } - } -} diff --git a/packages/app/src/context/global-sync/types.ts b/packages/app/src/context/global-sync/types.ts index c61dc337d8b9..b2e4da5233cb 100644 --- a/packages/app/src/context/global-sync/types.ts +++ b/packages/app/src/context/global-sync/types.ts @@ -46,6 +46,9 @@ export type State = { session_status: { [sessionID: string]: SessionStatus } + steer_queue: { + [sessionID: string]: { id: string; text: string; time: number; mode: "queue" | "steer" }[] + } session_diff: { [sessionID: string]: FileDiff[] } diff --git a/packages/opencode/src/server/routes/session.ts b/packages/opencode/src/server/routes/session.ts deleted file mode 100644 index abc820c2af71..000000000000 --- a/packages/opencode/src/server/routes/session.ts +++ /dev/null @@ -1,1023 +0,0 @@ -import { Hono } from "hono" -import { stream } from "hono/streaming" -import { describeRoute, validator, resolver } from "hono-openapi" -import { SessionID, MessageID, PartID } from "@/session/schema" -import z from "zod" -import { Session } from "../../session" -import { MessageV2 } from "../../session/message-v2" -import { SessionPrompt } from "../../session/prompt" -import { SessionCompaction } from "../../session/compaction" -import { SessionRevert } from "../../session/revert" -import { SessionStatus } from "@/session/status" -import { SessionSummary } from "@/session/summary" -import { Todo } from "../../session/todo" -import { Agent } from "../../agent/agent" -import { Snapshot } from "@/snapshot" -import { Log } from "../../util/log" -import { Permission } from "@/permission" -import { PermissionID } from "@/permission/schema" -import { ModelID, ProviderID } from "@/provider/schema" -import { errors } from "../error" -import { lazy } from "../../util/lazy" - -const log = Log.create({ service: "server" }) - -export const SessionRoutes = lazy(() => - new Hono() - .get( - "/", - describeRoute({ - summary: "List sessions", - description: "Get a list of all OpenCode sessions, sorted by most recently updated.", - operationId: "session.list", - responses: { - 200: { - description: "List of sessions", - content: { - "application/json": { - schema: resolver(Session.Info.array()), - }, - }, - }, - }, - }), - validator( - "query", - z.object({ - directory: z.string().optional().meta({ description: "Filter sessions by project directory" }), - roots: z.coerce.boolean().optional().meta({ description: "Only return root sessions (no parentID)" }), - start: z.coerce - .number() - .optional() - .meta({ description: "Filter sessions updated on or after this timestamp (milliseconds since epoch)" }), - search: z.string().optional().meta({ description: "Filter sessions by title (case-insensitive)" }), - limit: z.coerce.number().optional().meta({ description: "Maximum number of sessions to return" }), - }), - ), - async (c) => { - const query = c.req.valid("query") - const sessions: Session.Info[] = [] - for await (const session of Session.list({ - directory: query.directory, - roots: query.roots, - start: query.start, - search: query.search, - limit: query.limit, - })) { - sessions.push(session) - } - return c.json(sessions) - }, - ) - .get( - "/status", - describeRoute({ - summary: "Get session status", - description: "Retrieve the current status of all sessions, including active, idle, and completed states.", - operationId: "session.status", - responses: { - 200: { - description: "Get session status", - content: { - "application/json": { - schema: resolver(z.record(z.string(), SessionStatus.Info)), - }, - }, - }, - ...errors(400), - }, - }), - async (c) => { - const result = await SessionStatus.list() - return c.json(Object.fromEntries(result)) - }, - ) - .get( - "/:sessionID", - describeRoute({ - summary: "Get session", - description: "Retrieve detailed information about a specific OpenCode session.", - tags: ["Session"], - operationId: "session.get", - responses: { - 200: { - description: "Get session", - content: { - "application/json": { - schema: resolver(Session.Info), - }, - }, - }, - ...errors(400, 404), - }, - }), - validator( - "param", - z.object({ - sessionID: Session.get.schema, - }), - ), - async (c) => { - const sessionID = c.req.valid("param").sessionID - log.info("SEARCH", { url: c.req.url }) - const session = await Session.get(sessionID) - return c.json(session) - }, - ) - .get( - "/:sessionID/children", - describeRoute({ - summary: "Get session children", - tags: ["Session"], - description: "Retrieve all child sessions that were forked from the specified parent session.", - operationId: "session.children", - responses: { - 200: { - description: "List of children", - content: { - "application/json": { - schema: resolver(Session.Info.array()), - }, - }, - }, - ...errors(400, 404), - }, - }), - validator( - "param", - z.object({ - sessionID: Session.children.schema, - }), - ), - async (c) => { - const sessionID = c.req.valid("param").sessionID - const session = await Session.children(sessionID) - return c.json(session) - }, - ) - .get( - "/:sessionID/todo", - describeRoute({ - summary: "Get session todos", - description: "Retrieve the todo list associated with a specific session, showing tasks and action items.", - operationId: "session.todo", - responses: { - 200: { - description: "Todo list", - content: { - "application/json": { - schema: resolver(Todo.Info.array()), - }, - }, - }, - ...errors(400, 404), - }, - }), - validator( - "param", - z.object({ - sessionID: SessionID.zod, - }), - ), - async (c) => { - const sessionID = c.req.valid("param").sessionID - const todos = await Todo.get(sessionID) - return c.json(todos) - }, - ) - .post( - "/", - describeRoute({ - summary: "Create session", - description: "Create a new OpenCode session for interacting with AI assistants and managing conversations.", - operationId: "session.create", - responses: { - ...errors(400), - 200: { - description: "Successfully created session", - content: { - "application/json": { - schema: resolver(Session.Info), - }, - }, - }, - }, - }), - validator("json", Session.create.schema.optional()), - async (c) => { - const body = c.req.valid("json") ?? {} - const session = await Session.create(body) - return c.json(session) - }, - ) - .delete( - "/:sessionID", - describeRoute({ - summary: "Delete session", - description: "Delete a session and permanently remove all associated data, including messages and history.", - operationId: "session.delete", - responses: { - 200: { - description: "Successfully deleted session", - content: { - "application/json": { - schema: resolver(z.boolean()), - }, - }, - }, - ...errors(400, 404), - }, - }), - validator( - "param", - z.object({ - sessionID: Session.remove.schema, - }), - ), - async (c) => { - const sessionID = c.req.valid("param").sessionID - await Session.remove(sessionID) - return c.json(true) - }, - ) - .patch( - "/:sessionID", - describeRoute({ - summary: "Update session", - description: "Update properties of an existing session, such as title or other metadata.", - operationId: "session.update", - responses: { - 200: { - description: "Successfully updated session", - content: { - "application/json": { - schema: resolver(Session.Info), - }, - }, - }, - ...errors(400, 404), - }, - }), - validator( - "param", - z.object({ - sessionID: SessionID.zod, - }), - ), - validator( - "json", - z.object({ - title: z.string().optional(), - time: z - .object({ - archived: z.number().optional(), - }) - .optional(), - }), - ), - async (c) => { - const sessionID = c.req.valid("param").sessionID - const updates = c.req.valid("json") - - let session = await Session.get(sessionID) - if (updates.title !== undefined) { - session = await Session.setTitle({ sessionID, title: updates.title }) - } - if (updates.time?.archived !== undefined) { - session = await Session.setArchived({ sessionID, time: updates.time.archived }) - } - - return c.json(session) - }, - ) - .post( - "/:sessionID/init", - describeRoute({ - summary: "Initialize session", - description: - "Analyze the current application and create an AGENTS.md file with project-specific agent configurations.", - operationId: "session.init", - responses: { - 200: { - description: "200", - content: { - "application/json": { - schema: resolver(z.boolean()), - }, - }, - }, - ...errors(400, 404), - }, - }), - validator( - "param", - z.object({ - sessionID: SessionID.zod, - }), - ), - validator("json", Session.initialize.schema.omit({ sessionID: true })), - async (c) => { - const sessionID = c.req.valid("param").sessionID - const body = c.req.valid("json") - await Session.initialize({ ...body, sessionID }) - return c.json(true) - }, - ) - .post( - "/:sessionID/fork", - describeRoute({ - summary: "Fork session", - description: "Create a new session by forking an existing session at a specific message point.", - operationId: "session.fork", - responses: { - 200: { - description: "200", - content: { - "application/json": { - schema: resolver(Session.Info), - }, - }, - }, - }, - }), - validator( - "param", - z.object({ - sessionID: Session.fork.schema.shape.sessionID, - }), - ), - validator("json", Session.fork.schema.omit({ sessionID: true })), - async (c) => { - const sessionID = c.req.valid("param").sessionID - const body = c.req.valid("json") - const result = await Session.fork({ ...body, sessionID }) - return c.json(result) - }, - ) - .post( - "/:sessionID/abort", - describeRoute({ - summary: "Abort session", - description: "Abort an active session and stop any ongoing AI processing or command execution.", - operationId: "session.abort", - responses: { - 200: { - description: "Aborted session", - content: { - "application/json": { - schema: resolver(z.boolean()), - }, - }, - }, - ...errors(400, 404), - }, - }), - validator( - "param", - z.object({ - sessionID: SessionID.zod, - }), - ), - async (c) => { - SessionPrompt.cancel(c.req.valid("param").sessionID) - return c.json(true) - }, - ) - .post( - "/:sessionID/share", - describeRoute({ - summary: "Share session", - description: "Create a shareable link for a session, allowing others to view the conversation.", - operationId: "session.share", - responses: { - 200: { - description: "Successfully shared session", - content: { - "application/json": { - schema: resolver(Session.Info), - }, - }, - }, - ...errors(400, 404), - }, - }), - validator( - "param", - z.object({ - sessionID: SessionID.zod, - }), - ), - async (c) => { - const sessionID = c.req.valid("param").sessionID - await Session.share(sessionID) - const session = await Session.get(sessionID) - return c.json(session) - }, - ) - .get( - "/:sessionID/diff", - describeRoute({ - summary: "Get message diff", - description: "Get the file changes (diff) that resulted from a specific user message in the session.", - operationId: "session.diff", - responses: { - 200: { - description: "Successfully retrieved diff", - content: { - "application/json": { - schema: resolver(Snapshot.FileDiff.array()), - }, - }, - }, - }, - }), - validator( - "param", - z.object({ - sessionID: SessionSummary.diff.schema.shape.sessionID, - }), - ), - validator( - "query", - z.object({ - messageID: SessionSummary.diff.schema.shape.messageID, - }), - ), - async (c) => { - const query = c.req.valid("query") - const params = c.req.valid("param") - const result = await SessionSummary.diff({ - sessionID: params.sessionID, - messageID: query.messageID, - }) - return c.json(result) - }, - ) - .delete( - "/:sessionID/share", - describeRoute({ - summary: "Unshare session", - description: "Remove the shareable link for a session, making it private again.", - operationId: "session.unshare", - responses: { - 200: { - description: "Successfully unshared session", - content: { - "application/json": { - schema: resolver(Session.Info), - }, - }, - }, - ...errors(400, 404), - }, - }), - validator( - "param", - z.object({ - sessionID: Session.unshare.schema, - }), - ), - async (c) => { - const sessionID = c.req.valid("param").sessionID - await Session.unshare(sessionID) - const session = await Session.get(sessionID) - return c.json(session) - }, - ) - .post( - "/:sessionID/summarize", - describeRoute({ - summary: "Summarize session", - description: "Generate a concise summary of the session using AI compaction to preserve key information.", - operationId: "session.summarize", - responses: { - 200: { - description: "Summarized session", - content: { - "application/json": { - schema: resolver(z.boolean()), - }, - }, - }, - ...errors(400, 404), - }, - }), - validator( - "param", - z.object({ - sessionID: SessionID.zod, - }), - ), - validator( - "json", - z.object({ - providerID: ProviderID.zod, - modelID: ModelID.zod, - auto: z.boolean().optional().default(false), - }), - ), - async (c) => { - const sessionID = c.req.valid("param").sessionID - const body = c.req.valid("json") - const session = await Session.get(sessionID) - await SessionRevert.cleanup(session) - const msgs = await Session.messages({ sessionID }) - let currentAgent = await Agent.defaultAgent() - for (let i = msgs.length - 1; i >= 0; i--) { - const info = msgs[i].info - if (info.role === "user") { - currentAgent = info.agent || (await Agent.defaultAgent()) - break - } - } - await SessionCompaction.create({ - sessionID, - agent: currentAgent, - model: { - providerID: body.providerID, - modelID: body.modelID, - }, - auto: body.auto, - }) - await SessionPrompt.loop({ sessionID }) - return c.json(true) - }, - ) - .get( - "/:sessionID/message", - describeRoute({ - summary: "Get session messages", - description: "Retrieve all messages in a session, including user prompts and AI responses.", - operationId: "session.messages", - responses: { - 200: { - description: "List of messages", - content: { - "application/json": { - schema: resolver(MessageV2.WithParts.array()), - }, - }, - }, - ...errors(400, 404), - }, - }), - validator( - "param", - z.object({ - sessionID: SessionID.zod, - }), - ), - validator( - "query", - z - .object({ - limit: z.coerce - .number() - .int() - .min(0) - .optional() - .meta({ description: "Maximum number of messages to return" }), - before: z - .string() - .optional() - .meta({ description: "Opaque cursor for loading older messages" }) - .refine( - (value) => { - if (!value) return true - try { - MessageV2.cursor.decode(value) - return true - } catch { - return false - } - }, - { message: "Invalid cursor" }, - ), - }) - .refine((value) => !value.before || value.limit !== undefined, { - message: "before requires limit", - path: ["before"], - }), - ), - async (c) => { - const query = c.req.valid("query") - const sessionID = c.req.valid("param").sessionID - if (query.limit === undefined) { - await Session.get(sessionID) - const messages = await Session.messages({ sessionID }) - return c.json(messages) - } - - if (query.limit === 0) { - await Session.get(sessionID) - const messages = await Session.messages({ sessionID }) - return c.json(messages) - } - - const page = await MessageV2.page({ - sessionID, - limit: query.limit, - before: query.before, - }) - if (page.cursor) { - const url = new URL(c.req.url) - url.searchParams.set("limit", query.limit.toString()) - url.searchParams.set("before", page.cursor) - c.header("Access-Control-Expose-Headers", "Link, X-Next-Cursor") - c.header("Link", `<${url.toString()}>; rel=\"next\"`) - c.header("X-Next-Cursor", page.cursor) - } - return c.json(page.items) - }, - ) - .get( - "/:sessionID/message/:messageID", - describeRoute({ - summary: "Get message", - description: "Retrieve a specific message from a session by its message ID.", - operationId: "session.message", - responses: { - 200: { - description: "Message", - content: { - "application/json": { - schema: resolver( - z.object({ - info: MessageV2.Info, - parts: MessageV2.Part.array(), - }), - ), - }, - }, - }, - ...errors(400, 404), - }, - }), - validator( - "param", - z.object({ - sessionID: SessionID.zod, - messageID: MessageID.zod, - }), - ), - async (c) => { - const params = c.req.valid("param") - const message = await MessageV2.get({ - sessionID: params.sessionID, - messageID: params.messageID, - }) - return c.json(message) - }, - ) - .delete( - "/:sessionID/message/:messageID", - describeRoute({ - summary: "Delete message", - description: - "Permanently delete a specific message (and all of its parts) from a session. This does not revert any file changes that may have been made while processing the message.", - operationId: "session.deleteMessage", - responses: { - 200: { - description: "Successfully deleted message", - content: { - "application/json": { - schema: resolver(z.boolean()), - }, - }, - }, - ...errors(400, 404), - }, - }), - validator( - "param", - z.object({ - sessionID: SessionID.zod, - messageID: MessageID.zod, - }), - ), - async (c) => { - const params = c.req.valid("param") - SessionPrompt.assertNotBusy(params.sessionID) - await Session.removeMessage({ - sessionID: params.sessionID, - messageID: params.messageID, - }) - return c.json(true) - }, - ) - .delete( - "/:sessionID/message/:messageID/part/:partID", - describeRoute({ - description: "Delete a part from a message", - operationId: "part.delete", - responses: { - 200: { - description: "Successfully deleted part", - content: { - "application/json": { - schema: resolver(z.boolean()), - }, - }, - }, - ...errors(400, 404), - }, - }), - validator( - "param", - z.object({ - sessionID: SessionID.zod, - messageID: MessageID.zod, - partID: PartID.zod, - }), - ), - async (c) => { - const params = c.req.valid("param") - await Session.removePart({ - sessionID: params.sessionID, - messageID: params.messageID, - partID: params.partID, - }) - return c.json(true) - }, - ) - .patch( - "/:sessionID/message/:messageID/part/:partID", - describeRoute({ - description: "Update a part in a message", - operationId: "part.update", - responses: { - 200: { - description: "Successfully updated part", - content: { - "application/json": { - schema: resolver(MessageV2.Part), - }, - }, - }, - ...errors(400, 404), - }, - }), - validator( - "param", - z.object({ - sessionID: SessionID.zod, - messageID: MessageID.zod, - partID: PartID.zod, - }), - ), - validator("json", MessageV2.Part), - async (c) => { - const params = c.req.valid("param") - const body = c.req.valid("json") - if (body.id !== params.partID || body.messageID !== params.messageID || body.sessionID !== params.sessionID) { - throw new Error( - `Part mismatch: body.id='${body.id}' vs partID='${params.partID}', body.messageID='${body.messageID}' vs messageID='${params.messageID}', body.sessionID='${body.sessionID}' vs sessionID='${params.sessionID}'`, - ) - } - const part = await Session.updatePart(body) - return c.json(part) - }, - ) - .post( - "/:sessionID/message", - describeRoute({ - summary: "Send message", - description: "Create and send a new message to a session, streaming the AI response.", - operationId: "session.prompt", - responses: { - 200: { - description: "Created message", - content: { - "application/json": { - schema: resolver( - z.object({ - info: MessageV2.Assistant, - parts: MessageV2.Part.array(), - }), - ), - }, - }, - }, - ...errors(400, 404), - }, - }), - validator( - "param", - z.object({ - sessionID: SessionID.zod, - }), - ), - validator("json", SessionPrompt.PromptInput.omit({ sessionID: true })), - async (c) => { - c.status(200) - c.header("Content-Type", "application/json") - return stream(c, async (stream) => { - const sessionID = c.req.valid("param").sessionID - const body = c.req.valid("json") - const msg = await SessionPrompt.prompt({ ...body, sessionID }) - stream.write(JSON.stringify(msg)) - }) - }, - ) - .post( - "/:sessionID/prompt_async", - describeRoute({ - summary: "Send async message", - description: - "Create and send a new message to a session asynchronously, starting the session if needed and returning immediately.", - operationId: "session.prompt_async", - responses: { - 204: { - description: "Prompt accepted", - }, - ...errors(400, 404), - }, - }), - validator( - "param", - z.object({ - sessionID: SessionID.zod, - }), - ), - validator("json", SessionPrompt.PromptInput.omit({ sessionID: true })), - async (c) => { - c.status(204) - c.header("Content-Type", "application/json") - return stream(c, async () => { - const sessionID = c.req.valid("param").sessionID - const body = c.req.valid("json") - SessionPrompt.prompt({ ...body, sessionID }) - }) - }, - ) - .post( - "/:sessionID/command", - describeRoute({ - summary: "Send command", - description: "Send a new command to a session for execution by the AI assistant.", - operationId: "session.command", - responses: { - 200: { - description: "Created message", - content: { - "application/json": { - schema: resolver( - z.object({ - info: MessageV2.Assistant, - parts: MessageV2.Part.array(), - }), - ), - }, - }, - }, - ...errors(400, 404), - }, - }), - validator( - "param", - z.object({ - sessionID: SessionID.zod, - }), - ), - validator("json", SessionPrompt.CommandInput.omit({ sessionID: true })), - async (c) => { - const sessionID = c.req.valid("param").sessionID - const body = c.req.valid("json") - const msg = await SessionPrompt.command({ ...body, sessionID }) - return c.json(msg) - }, - ) - .post( - "/:sessionID/shell", - describeRoute({ - summary: "Run shell command", - description: "Execute a shell command within the session context and return the AI's response.", - operationId: "session.shell", - responses: { - 200: { - description: "Created message", - content: { - "application/json": { - schema: resolver(MessageV2.Assistant), - }, - }, - }, - ...errors(400, 404), - }, - }), - validator( - "param", - z.object({ - sessionID: SessionID.zod, - }), - ), - validator("json", SessionPrompt.ShellInput.omit({ sessionID: true })), - async (c) => { - const sessionID = c.req.valid("param").sessionID - const body = c.req.valid("json") - const msg = await SessionPrompt.shell({ ...body, sessionID }) - return c.json(msg) - }, - ) - .post( - "/:sessionID/revert", - describeRoute({ - summary: "Revert message", - description: "Revert a specific message in a session, undoing its effects and restoring the previous state.", - operationId: "session.revert", - responses: { - 200: { - description: "Updated session", - content: { - "application/json": { - schema: resolver(Session.Info), - }, - }, - }, - ...errors(400, 404), - }, - }), - validator( - "param", - z.object({ - sessionID: SessionID.zod, - }), - ), - validator("json", SessionRevert.RevertInput.omit({ sessionID: true })), - async (c) => { - const sessionID = c.req.valid("param").sessionID - log.info("revert", c.req.valid("json")) - const session = await SessionRevert.revert({ - sessionID, - ...c.req.valid("json"), - }) - return c.json(session) - }, - ) - .post( - "/:sessionID/unrevert", - describeRoute({ - summary: "Restore reverted messages", - description: "Restore all previously reverted messages in a session.", - operationId: "session.unrevert", - responses: { - 200: { - description: "Updated session", - content: { - "application/json": { - schema: resolver(Session.Info), - }, - }, - }, - ...errors(400, 404), - }, - }), - validator( - "param", - z.object({ - sessionID: SessionID.zod, - }), - ), - async (c) => { - const sessionID = c.req.valid("param").sessionID - const session = await SessionRevert.unrevert({ sessionID }) - return c.json(session) - }, - ) - .post( - "/:sessionID/permissions/:permissionID", - describeRoute({ - summary: "Respond to permission", - deprecated: true, - description: "Approve or deny a permission request from the AI assistant.", - operationId: "permission.respond", - responses: { - 200: { - description: "Permission processed successfully", - content: { - "application/json": { - schema: resolver(z.boolean()), - }, - }, - }, - ...errors(400, 404), - }, - }), - validator( - "param", - z.object({ - sessionID: SessionID.zod, - permissionID: PermissionID.zod, - }), - ), - validator("json", z.object({ response: Permission.Reply })), - async (c) => { - const params = c.req.valid("param") - Permission.reply({ - requestID: params.permissionID, - reply: c.req.valid("json").response, - }) - return c.json(true) - }, - ), -) diff --git a/packages/opencode/src/session/steer.ts b/packages/opencode/src/session/steer.ts new file mode 100644 index 000000000000..5de01facc86b --- /dev/null +++ b/packages/opencode/src/session/steer.ts @@ -0,0 +1,127 @@ +import { Bus } from "../bus" +import { BusEvent } from "../bus/bus-event" +import { Instance } from "../project/instance" +import { Log } from "../util/log" +import z from "zod" + +export namespace SessionSteer { + const log = Log.create({ service: "session.steer" }) + + export type Mode = "queue" | "steer" + + const QueuedMessageSchema = z.object({ + id: z.string(), + text: z.string(), + time: z.number(), + mode: z.enum(["queue", "steer"]), + }) + + export const Event = { + QueueChanged: BusEvent.define( + "session.queue.changed", + z.object({ + sessionID: z.string(), + queue: z.array(QueuedMessageSchema), + }), + ), + } + + export interface QueuedMessage { + id: string + text: string + time: number + mode: Mode + } + + interface SteerState { + pending: QueuedMessage[] + } + + const state = Instance.state( + () => { + const data: Record = {} + return data + }, + async () => {}, + ) + + function ensure(sessionID: string): SteerState { + const s = state() + if (!s[sessionID]) s[sessionID] = { pending: [] } + return s[sessionID] + } + + /** Push a message into the pending buffer for an active session. */ + export function push(sessionID: string, text: string, mode: Mode = "queue"): QueuedMessage { + const entry: QueuedMessage = { + id: crypto.randomUUID(), + text, + time: Date.now(), + mode, + } + const s = ensure(sessionID) + s.pending.push(entry) + log.info("steer.push", { sessionID, id: entry.id, queueLength: s.pending.length }) + Bus.publish(Event.QueueChanged, { sessionID, queue: s.pending }) + return entry + } + + /** Drain all pending messages and return them. Clears the buffer. */ + export function take(sessionID: string): QueuedMessage[] { + const s = state()[sessionID] + if (!s || s.pending.length === 0) return [] + const result = s.pending.splice(0) + log.info("steer.take", { sessionID, count: result.length }) + Bus.publish(Event.QueueChanged, { sessionID, queue: s.pending }) + return result + } + + /** Drain only messages matching the given mode. Leaves other messages in the buffer. */ + export function takeByMode(sessionID: string, mode: Mode): QueuedMessage[] { + const s = state()[sessionID] + if (!s || s.pending.length === 0) return [] + const matched: QueuedMessage[] = [] + const remaining: QueuedMessage[] = [] + for (const m of s.pending) { + if (m.mode === mode) matched.push(m) + else remaining.push(m) + } + if (matched.length === 0) return [] + s.pending = remaining + log.info("steer.takeByMode", { sessionID, mode, count: matched.length }) + Bus.publish(Event.QueueChanged, { sessionID, queue: s.pending }) + return matched + } + + /** Check if there's pending steered input for a session. */ + export function has(sessionID: string): boolean { + const s = state()[sessionID] + return !!s && s.pending.length > 0 + } + + /** Get the current queue without draining. */ + export function list(sessionID: string): QueuedMessage[] { + return state()[sessionID]?.pending ?? [] + } + + /** Remove a specific queued message by id. */ + export function remove(sessionID: string, id: string): boolean { + const s = state()[sessionID] + if (!s) return false + const idx = s.pending.findIndex((m) => m.id === id) + if (idx === -1) return false + s.pending.splice(idx, 1) + log.info("steer.remove", { sessionID, id }) + Bus.publish(Event.QueueChanged, { sessionID, queue: s.pending }) + return true + } + + /** Clear all pending messages for a session. */ + export function clear(sessionID: string) { + const s = state()[sessionID] + if (!s || s.pending.length === 0) return + s.pending.length = 0 + log.info("steer.clear", { sessionID }) + Bus.publish(Event.QueueChanged, { sessionID, queue: s.pending }) + } +} diff --git a/packages/opencode/test/session/steer.test.ts b/packages/opencode/test/session/steer.test.ts new file mode 100644 index 000000000000..5e4e8e8639a9 --- /dev/null +++ b/packages/opencode/test/session/steer.test.ts @@ -0,0 +1,235 @@ +import { describe, expect, test, beforeEach } from "bun:test" +import path from "path" +import { SessionSteer } from "../../src/session/steer" +import { Instance } from "../../src/project/instance" +import { Log } from "../../src/util/log" + +const projectRoot = path.join(__dirname, "../..") +const SESSION = "session_test_steer_001" +Log.init({ print: false }) + +/** Helper to run a test function inside Instance.provide context */ +function withInstance(fn: () => void | Promise) { + return Instance.provide({ + directory: projectRoot, + fn: async () => { + await fn() + }, + }) +} + +describe("SessionSteer", () => { + describe("push", () => { + test("creates a queued message with default mode 'queue'", async () => { + await withInstance(() => { + SessionSteer.clear(SESSION) + const msg = SessionSteer.push(SESSION, "hello") + expect(msg.text).toBe("hello") + expect(msg.mode).toBe("queue") + expect(msg.id).toBeTruthy() + expect(msg.time).toBeGreaterThan(0) + }) + }) + + test("accepts explicit mode 'steer'", async () => { + await withInstance(() => { + SessionSteer.clear(SESSION) + const msg = SessionSteer.push(SESSION, "redirect", "steer") + expect(msg.text).toBe("redirect") + expect(msg.mode).toBe("steer") + }) + }) + + test("accepts explicit mode 'queue'", async () => { + await withInstance(() => { + SessionSteer.clear(SESSION) + const msg = SessionSteer.push(SESSION, "later", "queue") + expect(msg.mode).toBe("queue") + }) + }) + }) + + describe("take", () => { + test("drains all messages regardless of mode", async () => { + await withInstance(() => { + SessionSteer.clear(SESSION) + SessionSteer.push(SESSION, "a", "queue") + SessionSteer.push(SESSION, "b", "steer") + SessionSteer.push(SESSION, "c", "queue") + + const taken = SessionSteer.take(SESSION) + expect(taken).toHaveLength(3) + expect(taken.map((m) => m.text)).toEqual(["a", "b", "c"]) + expect(SessionSteer.list(SESSION)).toHaveLength(0) + }) + }) + + test("returns empty array when no messages", async () => { + await withInstance(() => { + SessionSteer.clear(SESSION) + expect(SessionSteer.take(SESSION)).toEqual([]) + }) + }) + }) + + describe("takeByMode", () => { + test("drains only 'steer' messages, leaving 'queue' messages", async () => { + await withInstance(() => { + SessionSteer.clear(SESSION) + SessionSteer.push(SESSION, "queued-1", "queue") + SessionSteer.push(SESSION, "steer-1", "steer") + SessionSteer.push(SESSION, "queued-2", "queue") + SessionSteer.push(SESSION, "steer-2", "steer") + + const steered = SessionSteer.takeByMode(SESSION, "steer") + expect(steered).toHaveLength(2) + expect(steered.map((m) => m.text)).toEqual(["steer-1", "steer-2"]) + + const remaining = SessionSteer.list(SESSION) + expect(remaining).toHaveLength(2) + expect(remaining.map((m) => m.text)).toEqual(["queued-1", "queued-2"]) + }) + }) + + test("drains only 'queue' messages, leaving 'steer' messages", async () => { + await withInstance(() => { + SessionSteer.clear(SESSION) + SessionSteer.push(SESSION, "queued-1", "queue") + SessionSteer.push(SESSION, "steer-1", "steer") + SessionSteer.push(SESSION, "queued-2", "queue") + + const queued = SessionSteer.takeByMode(SESSION, "queue") + expect(queued).toHaveLength(2) + expect(queued.map((m) => m.text)).toEqual(["queued-1", "queued-2"]) + + const remaining = SessionSteer.list(SESSION) + expect(remaining).toHaveLength(1) + expect(remaining[0].text).toBe("steer-1") + }) + }) + + test("returns empty when no messages match mode", async () => { + await withInstance(() => { + SessionSteer.clear(SESSION) + SessionSteer.push(SESSION, "queued", "queue") + const steered = SessionSteer.takeByMode(SESSION, "steer") + expect(steered).toEqual([]) + expect(SessionSteer.list(SESSION)).toHaveLength(1) + }) + }) + + test("returns empty when buffer is empty", async () => { + await withInstance(() => { + SessionSteer.clear(SESSION) + expect(SessionSteer.takeByMode(SESSION, "steer")).toEqual([]) + expect(SessionSteer.takeByMode(SESSION, "queue")).toEqual([]) + }) + }) + + test("sequential takeByMode drains both modes completely", async () => { + await withInstance(() => { + SessionSteer.clear(SESSION) + SessionSteer.push(SESSION, "s1", "steer") + SessionSteer.push(SESSION, "q1", "queue") + SessionSteer.push(SESSION, "s2", "steer") + SessionSteer.push(SESSION, "q2", "queue") + + const steered = SessionSteer.takeByMode(SESSION, "steer") + expect(steered).toHaveLength(2) + + const queued = SessionSteer.takeByMode(SESSION, "queue") + expect(queued).toHaveLength(2) + + expect(SessionSteer.has(SESSION)).toBe(false) + expect(SessionSteer.list(SESSION)).toHaveLength(0) + }) + }) + }) + + describe("has", () => { + test("returns false for empty session", async () => { + await withInstance(() => { + SessionSteer.clear(SESSION) + expect(SessionSteer.has(SESSION)).toBe(false) + }) + }) + + test("returns true after push", async () => { + await withInstance(() => { + SessionSteer.clear(SESSION) + SessionSteer.push(SESSION, "test") + expect(SessionSteer.has(SESSION)).toBe(true) + }) + }) + + test("returns false after take drains all", async () => { + await withInstance(() => { + SessionSteer.clear(SESSION) + SessionSteer.push(SESSION, "test") + SessionSteer.take(SESSION) + expect(SessionSteer.has(SESSION)).toBe(false) + }) + }) + + test("returns true when takeByMode leaves remaining", async () => { + await withInstance(() => { + SessionSteer.clear(SESSION) + SessionSteer.push(SESSION, "q", "queue") + SessionSteer.takeByMode(SESSION, "steer") + expect(SessionSteer.has(SESSION)).toBe(true) + }) + }) + }) + + describe("list", () => { + test("returns current queue without draining", async () => { + await withInstance(() => { + SessionSteer.clear(SESSION) + SessionSteer.push(SESSION, "a", "queue") + SessionSteer.push(SESSION, "b", "steer") + + const first = SessionSteer.list(SESSION) + expect(first).toHaveLength(2) + + const second = SessionSteer.list(SESSION) + expect(second).toHaveLength(2) + }) + }) + }) + + describe("remove", () => { + test("removes specific message by id", async () => { + await withInstance(() => { + SessionSteer.clear(SESSION) + const msg = SessionSteer.push(SESSION, "target", "steer") + SessionSteer.push(SESSION, "keep", "queue") + + const removed = SessionSteer.remove(SESSION, msg.id) + expect(removed).toBe(true) + expect(SessionSteer.list(SESSION)).toHaveLength(1) + expect(SessionSteer.list(SESSION)[0].text).toBe("keep") + }) + }) + + test("returns false for non-existent id", async () => { + await withInstance(() => { + SessionSteer.clear(SESSION) + SessionSteer.push(SESSION, "test") + expect(SessionSteer.remove(SESSION, "nonexistent")).toBe(false) + }) + }) + }) + + describe("clear", () => { + test("removes all pending messages", async () => { + await withInstance(() => { + SessionSteer.clear(SESSION) + SessionSteer.push(SESSION, "a", "queue") + SessionSteer.push(SESSION, "b", "steer") + SessionSteer.clear(SESSION) + expect(SessionSteer.has(SESSION)).toBe(false) + expect(SessionSteer.list(SESSION)).toHaveLength(0) + }) + }) + }) +}) From 605d397ddf4eb9585a95822cd1aad0f690c979e7 Mon Sep 17 00:00:00 2001 From: Prax Lannister Date: Thu, 26 Feb 2026 17:05:04 +0530 Subject: [PATCH 29/32] docs(design): add Aurora Design System specification Comprehensive design system document covering: - Design vision and principles for "code illuminated from within" - Color system with dark/light themes and TUI mappings - Typography scale using JetBrains Mono and Geist/Inter - Spacing system based on 4px grid - Motion and animation guidelines with spring physics - Component specifications for buttons, cards, inputs, messages - TUI terminal component translations with Unicode patterns - Stitch prompts for visual prototyping - Accessibility requirements including reduced motion support - WCAG compliance checklist --- docs/plans/2025-02-26-aurora-design-system.md | 1977 +++++++++++++++++ 1 file changed, 1977 insertions(+) create mode 100644 docs/plans/2025-02-26-aurora-design-system.md diff --git a/docs/plans/2025-02-26-aurora-design-system.md b/docs/plans/2025-02-26-aurora-design-system.md new file mode 100644 index 000000000000..9dd67f391618 --- /dev/null +++ b/docs/plans/2025-02-26-aurora-design-system.md @@ -0,0 +1,1977 @@ +# 🌌 Aurora Design System for opencode + +> **Vision**: "Code illuminated from within" +> +> A unified design language for opencode that creates an ethereal, digital-native interface where UI elements emit light rather than receive it. + +--- + +## Table of Contents + +1. [Design Vision Summary](#part-1-design-vision-summary) +2. [Design Approaches Explored](#part-2-design-approaches-explored) +3. [Color System](#part-3-color-system) +4. [Typography System](#part-4-typography-system) +5. [Spacing System](#part-5-spacing-system) +6. [Motion & Animation System](#part-6-motion--animation-system) +7. [Component Specifications](#part-7-component-specifications) +8. [TUI (Terminal) Component Translations](#part-8-tui-terminal-component-translations) +9. [Stitch Prompts for Visual Prototyping](#part-9-stitch-prompts-for-visual-prototyping) +10. [Final Summary & Implementation Guide](#part-10-final-summary--implementation-guide) +11. [Accessibility & Review Amendments](#part-11-accessibility--review-amendments) + +--- + +## Part 1: Design Vision Summary + +### Design Requirements Gathered + +| Aspect | Choice | +|--------|--------| +| **Scope** | Unified design language (Web Console + Terminal UI) | +| **Tone** | Luxury Minimal | +| **Color** | Dark-first luxury with luminous accents | +| **Motion** | Confident, tactile, functional | +| **Reference** | Future-forward (Tesla/Rivian interiors) | + +### Core Identity + +``` +┌─────────────────────────────────────────────────────────────┐ +│ │ +│ opencode AURORA │ +│ │ +│ "Code illuminated from within" │ +│ │ +│ Not a tool that shows you code— │ +│ A window into a dimension where code IS light. │ +│ │ +└─────────────────────────────────────────────────────────────┘ +``` + +### Design Principles + +| Principle | Description | Implementation | +|-----------|-------------|----------------| +| **Light as Material** | UI elements emit light rather than receive it | Glows, gradients, luminous borders | +| **Depth through Transparency** | Layers visible through glassmorphism | backdrop-blur, low-opacity backgrounds | +| **Confident Motion** | Every animation serves purpose and feels physical | Spring physics, 200-300ms durations | +| **Chromatic Restraint** | Rich palette but used sparingly | Monochrome base, color for meaning | +| **Unified Language** | Same DNA across Web and TUI | Shared color tokens, adapted to medium | + +--- + +## Part 2: Design Approaches Explored + +Three design approaches were explored before settling on Aurora: + +### Approach A: "Carbon Fiber" — Industrial Luxury (Rejected) + +**Concept:** Premium materials meet precision engineering. Think machined aluminum bezels, carbon fiber textures, and surgical-grade steel accents. + +**Web Console:** +``` +┌─────────────────────────────────────────────────────────────┐ +│ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ │ +│ Background: Subtle carbon weave pattern with depth │ +│ Cards: Brushed metal finish with soft inner glow │ +│ Accent: Copper/rose gold highlights (warm against cold) │ +│ │ +│ 3D Elements: │ +│ • Cards tilt on hover (perspective transform) │ +│ • Depth shadows that respond to mouse position │ +│ • Metallic sheen that catches virtual "light" │ +│ │ +│ Motion: │ +│ • Spring-based button depressions (like mechanical keys) │ +│ • Smooth state transitions with mass/velocity physics │ +│ • Loading: Rotating machined bezel indicator │ +└─────────────────────────────────────────────────────────────┘ +``` + +**TUI Translation:** +``` +┌─ SESSION: Project Analysis ─────────────── ◈ ────┐ +│ │ +│ ▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░ Processing... │ +│ │ +│ ╭──────────────────────────────────────────╮ │ +│ │ ◆ Analyzing codebase │ │ +│ │ └─ Found 127 TypeScript files │ │ +│ │ └─ Detected SolidJS framework │ │ +│ ╰──────────────────────────────────────────╯ │ +│ │ +│ ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ │ +│ Unicode: Heavy borders, diamond bullets │ +│ Colors: Warm copper (#B87333) on charcoal │ +└───────────────────────────────────────────────────┘ +``` + +**Pros:** +- Distinctive, memorable aesthetic +- Strong brand identity ("the tool that feels engineered") +- Warm accent prevents cold/sterile feeling + +**Cons:** +- Carbon texture could feel dated if not executed perfectly +- Copper might clash with some terminal color schemes +- More complex to implement subtle material effects + +**Verdict:** Too industrial - user wanted something more ethereal/digital, less physical materials + +--- + +### Approach B: "Aurora" — Digital Luminescence (SELECTED ✓) + +**Concept:** Pure light and energy. No physical materials—just gradients, glows, and luminous color that feels alive. Like looking at code through a prism of pure digital light. + +**Web Console:** +``` +┌─────────────────────────────────────────────────────────────┐ +│ │ +│ Background: Deep void black (#0A0A0F) with subtle │ +│ animated gradient aurora (very slow drift) │ +│ │ +│ Cards: Glassmorphism with luminous edge glow │ +│ bg: rgba(255,255,255,0.03) │ +│ border: gradient (cyan → purple → magenta) │ +│ backdrop-filter: blur(20px) │ +│ │ +│ Accent Colors (shifting spectrum): │ +│ • Primary: Electric Cyan (#00D4FF) │ +│ • Secondary: Soft Violet (#A78BFA) │ +│ • Tertiary: Rose (#FF6B9D) │ +│ │ +│ 3D Elements: │ +│ • Subtle glow pulses (like breathing light) │ +│ • Hover reveals inner luminescence │ +│ • Focus states bloom with soft radiance │ +│ • Depth through layered transparency, not shadows │ +│ │ +│ Motion: │ +│ • Smooth spring physics on all interactions │ +│ • Elements "float" with subtle parallax │ +│ • Loading: Gradient shimmer / aurora wave │ +│ • Transitions: Fade + scale with glow trail │ +└─────────────────────────────────────────────────────────────┘ +``` + +**Light Theme Variant:** +``` +┌─────────────────────────────────────────────────────────────┐ +│ Background: Soft pearl (#FAFAFA) with subtle iridescence │ +│ Cards: Frosted glass with prismatic edge highlights │ +│ Accents: Deeper cyan, rich violet (contrast preserved) │ +│ Effect: "Daylight aurora" - colors visible but softer │ +└─────────────────────────────────────────────────────────────┘ +``` + +**TUI Translation:** +``` +╭───────────────────────────────────────────────────────╮ +│ ● opencode ◐ processing │ +├───────────────────────────────────────────────────────┤ +│ │ +│ ┃ Analyzing your codebase... │ +│ ┃ │ +│ ├─● packages/opencode/src/cli/ │ +│ │ ├─○ cmd/tui/app.tsx │ +│ │ ├─○ cmd/tui/context/theme.tsx │ +│ │ └─● cmd/tui/routes/session/ │ +│ │ └─○ index.tsx ← focus │ +│ │ │ +│ ╰─ Found 247 files in 3.2s │ +│ │ +│ ░░░░░░░░░░░░░░░░░░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ │ +│ │ +╰───────────────────────────────────────────────────────╯ +│ Unicode: Rounded corners, thin lines, ● ○ bullets │ +│ Colors: Cyan/violet/magenta gradient hierarchy │ +│ Effect: "Glowing" text via bright-on-dark contrast │ +└───────────────────────────────────────────────────────┘ +``` + +**Key Differentiators:** +- **Depth through light, not shadow** — Elements glow from within rather than casting shadows +- **Living gradients** — Subtle color shifts that feel organic, not static +- **Ethereal presence** — UI feels like it exists in digital space, weightless + +**Pros:** +- Truly unique aesthetic (few tools look like this) +- Perfectly digital - no physical material metaphors +- Light/dark themes can share the same luminous DNA +- Scalable: subtle for everyday use, dramatic for hero moments + +**Cons:** +- Risk of "gaming aesthetic" if not carefully restrained +- Gradient animations need to be VERY subtle or becomes distracting +- Performance consideration for animated gradients + +**Verdict:** Selected as final direction - ethereal, digital, distinctive + +--- + +### Approach C: Not Developed + +Since Approach B (Aurora) was selected immediately, a third approach was not fully developed. + +--- + +## Part 3: Color System + +### Dark Theme (Primary) + +```css +/* ═══════════════════════════════════════════════════════════ + AURORA DARK — PRIMARY THEME + ═══════════════════════════════════════════════════════════ */ + +:root[data-theme="aurora-dark"] { + /* ─── VOID BACKGROUNDS ─── */ + --void-deepest: #050508; /* True dark, almost black */ + --void-deep: #0A0A0F; /* Primary background */ + --void-base: #0F0F14; /* Card backgrounds */ + --void-elevated: #14141A; /* Elevated surfaces */ + --void-hover: #1A1A22; /* Hover states */ + + /* ─── SURFACE GLASS ─── */ + --glass-subtle: rgba(255, 255, 255, 0.02); + --glass-light: rgba(255, 255, 255, 0.04); + --glass-medium: rgba(255, 255, 255, 0.06); + --glass-strong: rgba(255, 255, 255, 0.08); + + /* ─── LUMINOUS SPECTRUM ─── */ + --aurora-cyan: #00D4FF; /* Primary accent */ + --aurora-cyan-soft: #00A3CC; /* Cyan muted */ + --aurora-cyan-glow: rgba(0, 212, 255, 0.15); + + --aurora-violet: #A78BFA; /* Secondary accent */ + --aurora-violet-soft:#8B6ED9; + --aurora-violet-glow:rgba(167, 139, 250, 0.15); + + --aurora-rose: #FF6B9D; /* Tertiary / attention */ + --aurora-rose-soft: #D94A7B; + --aurora-rose-glow: rgba(255, 107, 157, 0.15); + + --aurora-amber: #FFBB33; /* Warning / warm accent */ + --aurora-green: #4ADE80; /* Success */ + --aurora-red: #F87171; /* Error / danger */ + + /* ─── TEXT HIERARCHY ─── */ + --text-primary: #F5F5F7; /* Bright white */ + --text-secondary: #A1A1AA; /* Muted gray */ + --text-tertiary: #71717A; /* Subtle gray */ + --text-disabled: #3F3F46; /* Very dim */ + + /* ─── BORDER LUMINANCE ─── */ + --border-subtle: rgba(255, 255, 255, 0.06); + --border-default: rgba(255, 255, 255, 0.10); + --border-strong: rgba(255, 255, 255, 0.15); + --border-glow: var(--aurora-cyan); +} +``` + +### Light Theme (Secondary) + +```css +/* ═══════════════════════════════════════════════════════════ + AURORA LIGHT — DAYLIGHT VARIANT + ═══════════════════════════════════════════════════════════ */ + +:root[data-theme="aurora-light"] { + /* ─── PEARL BACKGROUNDS ─── */ + --void-deepest: #FFFFFF; + --void-deep: #FAFAFA; + --void-base: #F4F4F5; + --void-elevated: #FFFFFF; + --void-hover: #E4E4E7; + + /* ─── SURFACE FROST ─── */ + --glass-subtle: rgba(0, 0, 0, 0.02); + --glass-light: rgba(0, 0, 0, 0.04); + --glass-medium: rgba(0, 0, 0, 0.06); + --glass-strong: rgba(0, 0, 0, 0.08); + + /* ─── LUMINOUS SPECTRUM (deeper for contrast) ─── */ + --aurora-cyan: #0891B2; /* Deeper cyan */ + --aurora-cyan-soft: #06B6D4; + --aurora-cyan-glow: rgba(8, 145, 178, 0.10); + + --aurora-violet: #7C3AED; /* Richer violet */ + --aurora-violet-soft:#8B5CF6; + --aurora-violet-glow:rgba(124, 58, 237, 0.10); + + --aurora-rose: #DB2777; /* Deeper rose */ + --aurora-rose-soft: #EC4899; + --aurora-rose-glow: rgba(219, 39, 119, 0.10); + + --aurora-amber: #D97706; + --aurora-green: #16A34A; + --aurora-red: #DC2626; + + /* ─── TEXT HIERARCHY ─── */ + --text-primary: #18181B; + --text-secondary: #52525B; + --text-tertiary: #A1A1AA; + --text-disabled: #D4D4D8; + + /* ─── BORDER LUMINANCE ─── */ + --border-subtle: rgba(0, 0, 0, 0.06); + --border-default: rgba(0, 0, 0, 0.10); + --border-strong: rgba(0, 0, 0, 0.15); + --border-glow: var(--aurora-cyan); +} +``` + +### TUI Color Mapping + +```typescript +// Aurora theme for terminal (TUI) +export const auroraDark = { + // Backgrounds (mapped to closest ANSI/24-bit) + background: RGBA.fromHex("#0A0A0F"), + backgroundPanel: RGBA.fromHex("#0F0F14"), + backgroundElement: RGBA.fromHex("#14141A"), + backgroundMenu: RGBA.fromHex("#1A1A22"), + + // Aurora spectrum + primary: RGBA.fromHex("#00D4FF"), // Cyan + secondary: RGBA.fromHex("#A78BFA"), // Violet + accent: RGBA.fromHex("#FF6B9D"), // Rose + + // Semantic + success: RGBA.fromHex("#4ADE80"), + warning: RGBA.fromHex("#FFBB33"), + error: RGBA.fromHex("#F87171"), + info: RGBA.fromHex("#00D4FF"), + + // Text + text: RGBA.fromHex("#F5F5F7"), + textMuted: RGBA.fromHex("#A1A1AA"), + + // Borders + border: RGBA.fromHex("#1E1E26"), + borderActive: RGBA.fromHex("#00D4FF"), + borderSubtle: RGBA.fromHex("#14141A"), + + // Syntax highlighting (aurora-themed) + syntaxKeyword: RGBA.fromHex("#A78BFA"), // Violet + syntaxFunction: RGBA.fromHex("#00D4FF"), // Cyan + syntaxString: RGBA.fromHex("#4ADE80"), // Green + syntaxNumber: RGBA.fromHex("#FF6B9D"), // Rose + syntaxComment: RGBA.fromHex("#71717A"), // Muted + syntaxVariable: RGBA.fromHex("#F5F5F7"), // White + syntaxType: RGBA.fromHex("#FFBB33"), // Amber + syntaxOperator: RGBA.fromHex("#A1A1AA"), + syntaxPunctuation: RGBA.fromHex("#71717A"), + + // Diff colors + diffAdded: RGBA.fromHex("#4ADE80"), + diffRemoved: RGBA.fromHex("#F87171"), + diffAddedBg: RGBA.fromHex("#0D2818"), + diffRemovedBg: RGBA.fromHex("#2D1216"), +} +``` + +--- + +## Part 4: Typography System + +### Font Stack + +```css +/* ═══════════════════════════════════════════════════════════ + AURORA TYPOGRAPHY + ═══════════════════════════════════════════════════════════ */ + +:root { + /* ─── PRIMARY: Code & Interface ─── */ + --font-mono: "JetBrains Mono", "SF Mono", "Fira Code", + "Cascadia Code", monospace; + + /* ─── DISPLAY: Headers & Hero Text ─── */ + /* Option A: Geometric (Future-forward) */ + --font-display: "Geist", "Inter", "SF Pro Display", + system-ui, sans-serif; + + /* Option B: More distinctive (if we want stronger brand) */ + /* --font-display: "Space Grotesk", "Outfit", sans-serif; */ + + /* ─── BODY: Documentation & Long-form ─── */ + --font-body: "Inter", "SF Pro Text", system-ui, sans-serif; +} +``` + +### Type Scale + +```css +/* ─── MODULAR SCALE: 1.250 (Major Third) ─── */ + +:root { + --text-xs: 0.64rem; /* 10.24px - Labels, captions */ + --text-sm: 0.8rem; /* 12.8px - Small UI text */ + --text-base: 1rem; /* 16px - Body text */ + --text-md: 1.25rem; /* 20px - Large body */ + --text-lg: 1.563rem; /* 25px - Section headers */ + --text-xl: 1.953rem; /* 31.25px - Page headers */ + --text-2xl: 2.441rem; /* 39px - Hero subheads */ + --text-3xl: 3.052rem; /* 48.8px - Hero headlines */ + --text-4xl: 3.815rem; /* 61px - Display text */ + + /* ─── LINE HEIGHTS ─── */ + --leading-none: 1; + --leading-tight: 1.25; + --leading-snug: 1.375; + --leading-normal: 1.5; + --leading-relaxed: 1.625; + --leading-loose: 1.75; + + /* ─── LETTER SPACING ─── */ + --tracking-tighter: -0.05em; + --tracking-tight: -0.025em; + --tracking-normal: 0; + --tracking-wide: 0.025em; + --tracking-wider: 0.05em; + + /* ─── FONT WEIGHTS ─── */ + --weight-normal: 400; + --weight-medium: 500; + --weight-semibold: 600; + --weight-bold: 700; +} +``` + +### Typography Classes + +```css +/* ─── SEMANTIC TEXT STYLES ─── */ + +.text-display-hero { + font-family: var(--font-display); + font-size: var(--text-4xl); + font-weight: var(--weight-bold); + line-height: var(--leading-none); + letter-spacing: var(--tracking-tighter); +} + +.text-display-title { + font-family: var(--font-display); + font-size: var(--text-2xl); + font-weight: var(--weight-semibold); + line-height: var(--leading-tight); + letter-spacing: var(--tracking-tight); +} + +.text-heading-lg { + font-family: var(--font-display); + font-size: var(--text-xl); + font-weight: var(--weight-semibold); + line-height: var(--leading-snug); +} + +.text-heading-md { + font-family: var(--font-display); + font-size: var(--text-lg); + font-weight: var(--weight-medium); + line-height: var(--leading-snug); +} + +.text-body { + font-family: var(--font-body); + font-size: var(--text-base); + font-weight: var(--weight-normal); + line-height: var(--leading-relaxed); +} + +.text-body-sm { + font-family: var(--font-body); + font-size: var(--text-sm); + line-height: var(--leading-normal); +} + +.text-code { + font-family: var(--font-mono); + font-size: var(--text-sm); + line-height: var(--leading-normal); + font-variant-ligatures: contextual; /* Enable code ligatures */ +} + +.text-label { + font-family: var(--font-mono); + font-size: var(--text-xs); + font-weight: var(--weight-medium); + letter-spacing: var(--tracking-wide); + text-transform: uppercase; +} +``` + +--- + +## Part 5: Spacing System + +```css +/* ═══════════════════════════════════════════════════════════ + AURORA SPACING — 4px Base Grid + ═══════════════════════════════════════════════════════════ */ + +:root { + --space-px: 1px; + --space-0: 0; + --space-0.5: 0.125rem; /* 2px */ + --space-1: 0.25rem; /* 4px */ + --space-1.5: 0.375rem; /* 6px */ + --space-2: 0.5rem; /* 8px */ + --space-2.5: 0.625rem; /* 10px */ + --space-3: 0.75rem; /* 12px */ + --space-3.5: 0.875rem; /* 14px */ + --space-4: 1rem; /* 16px */ + --space-5: 1.25rem; /* 20px */ + --space-6: 1.5rem; /* 24px */ + --space-7: 1.75rem; /* 28px */ + --space-8: 2rem; /* 32px */ + --space-9: 2.25rem; /* 36px */ + --space-10: 2.5rem; /* 40px */ + --space-11: 2.75rem; /* 44px */ + --space-12: 3rem; /* 48px */ + --space-14: 3.5rem; /* 56px */ + --space-16: 4rem; /* 64px */ + --space-20: 5rem; /* 80px */ + --space-24: 6rem; /* 96px */ + --space-28: 7rem; /* 112px */ + --space-32: 8rem; /* 128px */ + + /* ─── SEMANTIC SPACING ─── */ + --gap-xs: var(--space-1); /* 4px - Inline elements */ + --gap-sm: var(--space-2); /* 8px - Tight groups */ + --gap-md: var(--space-4); /* 16px - Default gap */ + --gap-lg: var(--space-6); /* 24px - Section spacing */ + --gap-xl: var(--space-8); /* 32px - Major sections */ + --gap-2xl: var(--space-12); /* 48px - Page sections */ + + /* ─── COMPONENT PADDING ─── */ + --padding-button: var(--space-2) var(--space-4); + --padding-button-sm: var(--space-1.5) var(--space-3); + --padding-button-lg: var(--space-3) var(--space-6); + + --padding-card: var(--space-5); + --padding-card-sm: var(--space-3); + --padding-card-lg: var(--space-6); + + --padding-input: var(--space-2.5) var(--space-3); + + /* ─── BORDER RADIUS ─── */ + --radius-none: 0; + --radius-sm: 0.25rem; /* 4px - Small elements */ + --radius-md: 0.5rem; /* 8px - Buttons, inputs */ + --radius-lg: 0.75rem; /* 12px - Cards */ + --radius-xl: 1rem; /* 16px - Large cards */ + --radius-2xl: 1.5rem; /* 24px - Modals */ + --radius-full: 9999px; /* Pills, avatars */ +} +``` + +--- + +## Part 6: Motion & Animation System + +```css +/* ═══════════════════════════════════════════════════════════ + AURORA MOTION — Spring-Based Animation + ═══════════════════════════════════════════════════════════ */ + +:root { + /* ─── DURATION ─── */ + --duration-instant: 50ms; + --duration-fast: 150ms; + --duration-normal: 250ms; + --duration-slow: 350ms; + --duration-slower: 500ms; + --duration-slowest: 700ms; + + /* ─── EASING (CSS) ─── */ + --ease-linear: linear; + --ease-in: cubic-bezier(0.4, 0, 1, 1); + --ease-out: cubic-bezier(0, 0, 0.2, 1); + --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1); + + /* ─── SPRING EASING (For Motion library) ─── */ + --spring-bounce: cubic-bezier(0.34, 1.56, 0.64, 1); + --spring-smooth: cubic-bezier(0.22, 1, 0.36, 1); + --spring-snappy: cubic-bezier(0.16, 1, 0.3, 1); + + /* ─── SEMANTIC TRANSITIONS ─── */ + --transition-colors: color var(--duration-fast) var(--ease-out), + background-color var(--duration-fast) var(--ease-out), + border-color var(--duration-fast) var(--ease-out); + + --transition-opacity: opacity var(--duration-normal) var(--ease-out); + + --transition-transform: transform var(--duration-normal) var(--spring-smooth); + + --transition-all: all var(--duration-normal) var(--spring-smooth); + + --transition-glow: box-shadow var(--duration-slow) var(--ease-out); +} +``` + +### Motion Principles + +``` +┌─────────────────────────────────────────────────────────────┐ +│ AURORA MOTION PRINCIPLES │ +├─────────────────────────────────────────────────────────────┤ +│ │ +│ 1. ENTER: Scale up + fade in (0.95 → 1.0, 0 → 1) │ +│ 2. EXIT: Scale down + fade out (1.0 → 0.95, 1 → 0) │ +│ 3. HOVER: Subtle lift (translateY -2px) + glow increase │ +│ 4. PRESS: Slight compression (scale 0.98) │ +│ 5. FOCUS: Glow ring expansion │ +│ │ +│ Key insight: Aurora elements GLOW more on interaction, │ +│ they don't cast shadows—they emit light. │ +│ │ +└─────────────────────────────────────────────────────────────┘ +``` + +### Animation Keyframes + +```css +/* ─── ENTRY ANIMATIONS ─── */ +@keyframes aurora-fade-in { + from { opacity: 0; } + to { opacity: 1; } +} + +@keyframes aurora-scale-in { + from { + opacity: 0; + transform: scale(0.95); + } + to { + opacity: 1; + transform: scale(1); + } +} + +@keyframes aurora-slide-up { + from { + opacity: 0; + transform: translateY(8px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +/* ─── GLOW PULSE (for loading/processing) ─── */ +@keyframes aurora-pulse { + 0%, 100% { + opacity: 1; + box-shadow: 0 0 0 0 var(--aurora-cyan-glow); + } + 50% { + opacity: 0.8; + box-shadow: 0 0 20px 4px var(--aurora-cyan-glow); + } +} + +/* ─── SHIMMER (for skeleton loaders) ─── */ +@keyframes aurora-shimmer { + 0% { + background-position: -200% 0; + } + 100% { + background-position: 200% 0; + } +} + +/* ─── GRADIENT DRIFT (for hero backgrounds) ─── */ +@keyframes aurora-drift { + 0%, 100% { + background-position: 0% 50%; + } + 50% { + background-position: 100% 50%; + } +} +``` + +--- + +## Part 7: Component Specifications + +### 7.1 Buttons + +``` +┌─────────────────────────────────────────────────────────────┐ +│ AURORA BUTTONS │ +├─────────────────────────────────────────────────────────────┤ +│ │ +│ PRIMARY (Glowing CTA) │ +│ ┌─────────────────────────────────────┐ │ +│ │ ◉ Start Session │ ← Cyan glow ring │ +│ └─────────────────────────────────────┘ │ +│ bg: var(--aurora-cyan) │ +│ text: var(--void-deepest) │ +│ hover: glow expands, brightness +10% │ +│ active: scale(0.98), glow contracts │ +│ │ +│ SECONDARY (Glass) │ +│ ┌─────────────────────────────────────┐ │ +│ │ View History │ ← Subtle border │ +│ └─────────────────────────────────────┘ │ +│ bg: var(--glass-light) │ +│ border: var(--border-default) │ +│ hover: bg → glass-medium, border glows │ +│ │ +│ GHOST (Minimal) │ +│ ┌─────────────────────────────────────┐ │ +│ │ Cancel │ ← No bg │ +│ └─────────────────────────────────────┘ │ +│ bg: transparent │ +│ hover: var(--glass-subtle) │ +│ │ +│ DANGER (Warning glow) │ +│ ┌─────────────────────────────────────┐ │ +│ │ Delete Session │ ← Red glow │ +│ └─────────────────────────────────────┘ │ +│ bg: var(--aurora-red) at 15% opacity │ +│ border: var(--aurora-red) │ +│ hover: red glow expands │ +│ │ +└─────────────────────────────────────────────────────────────┘ +``` + +```css +/* Primary Button */ +.btn-primary { + background: var(--aurora-cyan); + color: var(--void-deepest); + padding: var(--padding-button); + border-radius: var(--radius-md); + font-weight: var(--weight-medium); + transition: var(--transition-all); + box-shadow: + 0 0 0 0 var(--aurora-cyan-glow), + 0 0 20px -5px var(--aurora-cyan); +} + +.btn-primary:hover { + box-shadow: + 0 0 0 4px var(--aurora-cyan-glow), + 0 0 30px -5px var(--aurora-cyan); + filter: brightness(1.1); +} + +.btn-primary:active { + transform: scale(0.98); + box-shadow: + 0 0 0 2px var(--aurora-cyan-glow), + 0 0 15px -5px var(--aurora-cyan); +} + +/* Secondary Button */ +.btn-secondary { + background: var(--glass-light); + border: 1px solid var(--border-default); + color: var(--text-primary); + padding: var(--padding-button); + border-radius: var(--radius-md); + backdrop-filter: blur(8px); + transition: var(--transition-all); +} + +.btn-secondary:hover { + background: var(--glass-medium); + border-color: var(--aurora-cyan); + box-shadow: 0 0 15px -5px var(--aurora-cyan-glow); +} +``` + +--- + +### 7.2 Cards + +``` +┌─────────────────────────────────────────────────────────────┐ +│ AURORA CARDS │ +├─────────────────────────────────────────────────────────────┤ +│ │ +│ GLASS CARD (Default) │ +│ ╭───────────────────────────────────────────╮ │ +│ │ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ │ │ +│ │ │ │ +│ │ Session Title │ │ +│ │ Subtitle or metadata │ │ +│ │ │ │ +│ │ Content area with sufficient padding │ │ +│ │ for comfortable reading and scanning. │ │ +│ │ │ │ +│ ╰───────────────────────────────────────────╯ │ +│ │ +│ Properties: │ +│ • bg: var(--glass-light) │ +│ • border: 1px solid var(--border-subtle) │ +│ • border-radius: var(--radius-lg) │ +│ • backdrop-filter: blur(12px) │ +│ • padding: var(--padding-card) │ +│ │ +│ ELEVATED CARD (Interactive) │ +│ ╭───────────────────────────────────────────╮ │ +│ │ │ ← Hover: │ +│ │ Select Provider │ Lift + │ +│ │ Choose your AI model │ Glow │ +│ │ │ │ +│ │ → Claude 4 → GPT-4 │ │ +│ │ │ │ +│ ╰───────────────────────────────────────────╯ │ +│ │ +│ Hover state: │ +│ • transform: translateY(-2px) │ +│ • border-color: var(--aurora-cyan) │ +│ • box-shadow: 0 0 30px -10px var(--aurora-cyan-glow) │ +│ │ +└─────────────────────────────────────────────────────────────┘ +``` + +--- + +### 7.3 Input Fields + +``` +┌─────────────────────────────────────────────────────────────┐ +│ AURORA INPUTS │ +├─────────────────────────────────────────────────────────────┤ +│ │ +│ DEFAULT STATE │ +│ ┌─────────────────────────────────────────────────┐ │ +│ │ Ask opencode anything... │ │ +│ └─────────────────────────────────────────────────┘ │ +│ bg: var(--glass-subtle) │ +│ border: var(--border-subtle) │ +│ text: var(--text-tertiary) ← placeholder │ +│ │ +│ FOCUS STATE │ +│ ╭─────────────────────────────────────────────────╮ │ +│ │ How do I implement_ ░▓▓▓ │ │ +│ ╰═════════════════════════════════════════════════╯ │ +│ ↑ ↑ │ +│ Cyan glow border Cursor pulse │ +│ │ +│ border: 2px solid var(--aurora-cyan) │ +│ box-shadow: 0 0 0 4px var(--aurora-cyan-glow) │ +│ bg: var(--glass-light) │ +│ │ +│ ERROR STATE │ +│ ╭─────────────────────────────────────────────────╮ │ +│ │ Invalid API key │ │ +│ ╰═════════════════════════════════════════════════╯ │ +│ border-color: var(--aurora-red) │ +│ box-shadow: 0 0 0 4px var(--aurora-red-glow) │ +│ │ +└─────────────────────────────────────────────────────────────┘ +``` + +--- + +### 7.4 The Prompt Input (Hero Component) + +This is the MOST IMPORTANT component—the main chat input: + +``` +┌─────────────────────────────────────────────────────────────┐ +│ AURORA PROMPT INPUT │ +├─────────────────────────────────────────────────────────────┤ +│ │ +│ ╭═══════════════════════════════════════════════════════╮ │ +│ ║ ║ │ +│ ║ │ How can I refactor this React component ║ │ +│ ║ │ to use hooks instead of class components?_ ║ │ +│ ║ ║ │ +│ ╟───────────────────────────────────────────────────────╢ │ +│ ║ ◎ @file ◎ @folder ◎ @web [⌘ + Enter] ║ │ +│ ╚═══════════════════════════════════════════════════════╝ │ +│ │ +│ Design Details: │ +│ • Double-line border with subtle gradient │ +│ • Inner glow when focused (aurora-cyan) │ +│ • Attachment chips below with hover states │ +│ • Send button pulses subtly when ready │ +│ • Expands smoothly as content grows │ +│ │ +│ Animation: │ +│ • On focus: border brightens, inner glow appears │ +│ • On type: subtle scale micro-pulse (1.002x) │ +│ • On send: content slides up + fades, input shrinks │ +│ │ +└─────────────────────────────────────────────────────────────┘ +``` + +--- + +### 7.5 Message Bubbles + +``` +┌─────────────────────────────────────────────────────────────┐ +│ AURORA MESSAGE BUBBLES │ +├─────────────────────────────────────────────────────────────┤ +│ │ +│ USER MESSAGE │ +│ ╭─────────────────────────────╮ │ +│ │ How do I fix this TypeScript│ │ +│ │ error in my component? │ │ +│ ╰─────────────────────────────╯ │ +│ │ +│ • Aligned right │ +│ • bg: var(--aurora-cyan) at 15% opacity │ +│ • border-left: 2px solid var(--aurora-cyan) │ +│ • Subtle cyan tint │ +│ │ +│ ASSISTANT MESSAGE │ +│ ╭──────────────────────────────────────────────────────╮ │ +│ │ ◈ Let me help you with that TypeScript error. │ │ +│ │ │ │ +│ │ The issue is that your component expects a │ │ +│ │ `string` but receives `string | undefined`. │ │ +│ │ │ │ +│ │ ```typescript │ │ +│ │ // Add type guard │ │ +│ │ if (typeof value === 'string') { │ │ +│ │ processValue(value) │ │ +│ │ } │ │ +│ │ ``` │ │ +│ ╰──────────────────────────────────────────────────────╯ │ +│ │ +│ • Aligned left │ +│ • bg: var(--glass-light) │ +│ • border-left: 2px solid var(--aurora-violet) │ +│ • Code blocks: var(--void-elevated) bg │ +│ │ +│ STREAMING STATE │ +│ ╭──────────────────────────────────────────────────────╮ │ +│ │ ◈ Analyzing your codebase... │ │ +│ │ │ │ +│ │ ▓▓▓▓▓▓▓▓░░░░░░░░░░░░ Scanning files │ │ +│ │ ◌ ◌ ◌ ← Pulsing dots │ │ +│ ╰──────────────────────────────────────────────────────╯ │ +│ │ +│ • Shimmer effect on loading areas │ +│ • Typing indicator: 3 dots with staggered pulse │ +│ │ +└─────────────────────────────────────────────────────────────┘ +``` + +--- + +### 7.6 Navigation & Header + +``` +┌─────────────────────────────────────────────────────────────┐ +│ AURORA HEADER │ +├─────────────────────────────────────────────────────────────┤ +│ │ +│ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ │ +│ ┃ ◈ opencode Session: Project Analysis ┃ │ +│ ┃ ⚙ ◐ ▤ ┃ │ +│ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ │ +│ │ +│ Properties: │ +│ • bg: var(--void-elevated) with backdrop-blur │ +│ • border-bottom: 1px solid var(--border-subtle) │ +│ • position: sticky │ +│ • Logo: ◈ glyph with subtle cyan glow │ +│ • Session title: truncated with ellipsis │ +│ • Actions: icon buttons with hover glow │ +│ │ +│ SIDEBAR (Collapsed) │ +│ ┌──┐ │ +│ │◈│ ← Logo only │ +│ │──│ │ +│ │⊕│ ← New session │ +│ │📄│ ← Recent │ +│ │⚙│ ← Settings │ +│ └──┘ │ +│ │ +│ SIDEBAR (Expanded) │ +│ ╭────────────────────────╮ │ +│ │ ◈ opencode │ │ +│ ├────────────────────────┤ │ +│ │ ⊕ New Session │ │ +│ ├────────────────────────┤ │ +│ │ RECENT │ │ +│ │ ├─ Project Analysis │ ← Selected, cyan highlight │ +│ │ ├─ Code Review │ │ +│ │ └─ Bug Investigation │ │ +│ ├────────────────────────┤ │ +│ │ ⚙ Settings │ │ +│ ╰────────────────────────╯ │ +│ │ +└─────────────────────────────────────────────────────────────┘ +``` + +--- + +### 7.7 Dialogs & Modals + +``` +┌─────────────────────────────────────────────────────────────┐ +│ AURORA MODALS │ +├─────────────────────────────────────────────────────────────┤ +│ │ +│ BACKDROP │ +│ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ │ +│ bg: rgba(5, 5, 8, 0.8) │ +│ backdrop-filter: blur(4px) │ +│ │ +│ MODAL CARD │ +│ ╭═══════════════════════════════════════════════════════╮ │ +│ ║ SELECT MODEL ✕ ║ │ +│ ╟───────────────────────────────────────────────────────╢ │ +│ ║ ║ │ +│ ║ ◉ Claude 4 Opus ║ │ +│ ║ Best for complex reasoning ║ │ +│ ║ ║ │ +│ ║ ○ Claude 4 Sonnet ║ │ +│ ║ Balanced performance ║ │ +│ ║ ║ │ +│ ║ ○ GPT-4o ║ │ +│ ║ OpenAI's flagship ║ │ +│ ║ ║ │ +│ ╟───────────────────────────────────────────────────────╢ │ +│ ║ [Cancel] [ Confirm ] ║ │ +│ ╚═══════════════════════════════════════════════════════╝ │ +│ │ +│ Entry animation: │ +│ • Backdrop fades in (0→1, 200ms) │ +│ • Modal scales + fades (0.95→1, 0→1, 250ms, spring) │ +│ │ +│ Exit animation: │ +│ • Modal scales down + fades (1→0.95, 1→0, 150ms) │ +│ • Backdrop fades out (1→0, 150ms) │ +│ │ +└─────────────────────────────────────────────────────────────┘ +``` + +--- + +## Part 8: TUI (Terminal) Component Translations + +The terminal can't do true 3D or blur, but we can create the *feeling* of Aurora through: + +### 8.1 Aurora TUI Character Palette + +``` +┌─────────────────────────────────────────────────────────────┐ +│ AURORA TUI — CHARACTER DESIGN LANGUAGE │ +├─────────────────────────────────────────────────────────────┤ +│ │ +│ ─── BORDERS ─── │ +│ Light: ─ │ ┌ ┐ └ ┘ ├ ┤ ┬ ┴ ┼ │ +│ Rounded: ╭ ╮ ╰ ╯ │ +│ Heavy: ━ ┃ ┏ ┓ ┗ ┛ ┣ ┫ ┳ ┻ ╋ │ +│ Double: ═ ║ ╔ ╗ ╚ ╝ ╠ ╣ ╦ ╩ ╬ │ +│ │ +│ ─── AURORA PREFERENCE ─── │ +│ Primary borders: ╭ ─ ╮ (rounded, elegant) │ +│ │ │ │ +│ ╰ ─ ╯ │ +│ │ +│ Active/Focus: ╭═══╮ (double top = "glow") │ +│ │ │ │ +│ ╰───╯ │ +│ │ +│ ─── BULLETS & MARKERS ─── │ +│ Filled: ● ◉ ◆ ◈ ■ ▲ ▶ │ +│ Empty: ○ ◇ □ △ ▷ │ +│ Special: ◐ ◑ ◒ ◓ (half-filled, for progress) │ +│ │ +│ Aurora preference: │ +│ • Logo/brand: ◈ (diamond with dot = light source) │ +│ • Selected: ● │ +│ • Unselected: ○ │ +│ • Active: ◉ (ring = glow) │ +│ • Tree nodes: ├─ └─ │ │ +│ │ +│ ─── PROGRESS INDICATORS ─── │ +│ Block gradient: ░ ▒ ▓ █ │ +│ Thin bar: ─ ━ │ +│ │ +│ Aurora progress: ░░░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ │ +│ (dim → bright = filling with light) │ +│ │ +│ ─── SPINNERS ─── │ +│ Dots: ⠋ ⠙ ⠹ ⠸ ⠼ ⠴ ⠦ ⠧ ⠇ ⠏ │ +│ Circle: ◴ ◷ ◶ ◵ │ +│ Quarter: ◜ ◝ ◞ ◟ │ +│ │ +│ Aurora spinner: ◌ ◍ ◎ ● ◎ ◍ (breathing pulse) │ +│ │ +└─────────────────────────────────────────────────────────────┘ +``` + +### 8.2 TUI Layout Templates + +``` +┌─────────────────────────────────────────────────────────────┐ +│ AURORA TUI — MAIN SESSION VIEW │ +├─────────────────────────────────────────────────────────────┤ + +╭─── ◈ opencode ─────────────────── Session: Code Review ────╮ +│ │ +├─────────────────────────────────────────────────────────────┤ +│ │ +│ ┃ How can I optimize this database query? │ ← User (cyan │) +│ │ +│ ╭─────────────────────────────────────────────────────╮ │ +│ │ ◈ I'll analyze your query and suggest optimizations.│ │ ← Assistant +│ │ │ │ +│ │ Looking at your query, I see several opportunities: │ │ +│ │ │ │ +│ │ 1. Add an index on `user_id` │ │ +│ │ 2. Use EXPLAIN ANALYZE to identify bottlenecks │ │ +│ │ 3. Consider pagination for large result sets │ │ +│ │ │ │ +│ │ ```sql │ │ +│ │ CREATE INDEX idx_user_id ON orders(user_id); │ │ +│ │ ``` │ │ +│ ╰─────────────────────────────────────────────────────╯ │ +│ │ +│ ░░░░░░░░░░░░░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓ Processing file changes │ ← Progress +│ │ +╰─────────────────────────────────────────────────────────────╯ +│ [?] Help [m] Model [t] Theme [s] Sessions $0.003 │ ← Footer +└─────────────────────────────────────────────────────────────┘ + +COLOR MAPPING: +• Header border: aurora-cyan (#00D4FF) +• Header text: text-primary (#F5F5F7) +• User message │: aurora-cyan +• Assistant border: aurora-violet (#A78BFA) +• Code blocks: void-elevated bg +• Progress filled: aurora-cyan +• Progress empty: border-subtle +• Footer: text-muted +``` + +### 8.3 TUI Dialog Example + +``` +┌─────────────────────────────────────────────────────────────┐ +│ AURORA TUI — MODEL SELECTOR DIALOG │ +├─────────────────────────────────────────────────────────────┤ + + ╭═══════════════════════════════════════════╮ + ║ SELECT MODEL ║ + ╠═══════════════════════════════════════════╣ + ║ ║ + ║ ◉ Claude 4 Opus ║ ← Selected (cyan) + ║ Best for complex reasoning ║ + ║ ║ + ║ ○ Claude 4 Sonnet ║ + ║ Balanced performance ║ + ║ ║ + ║ ○ GPT-4o ║ + ║ OpenAI's flagship ║ + ║ ║ + ║ ○ Gemini 1.5 Pro ║ + ║ Google's multimodal ║ + ║ ║ + ╟───────────────────────────────────────────╢ + ║ [↑↓] Navigate [Enter] Select [Esc] ║ + ╚═══════════════════════════════════════════╝ + +COLOR MAPPING: +• Dialog border: aurora-cyan (double line = "glowing") +• Selected item: aurora-cyan fg + ◉ marker +• Unselected: text-muted + ○ marker +• Description: text-tertiary +• Keybinds: text-muted +• Dialog bg: void-elevated +``` + +--- + +## Part 9: Stitch Prompts for Visual Prototyping + +Copy & paste these prompts directly into [stitch.google.com](https://stitch.google.com) to generate visual mockups. + +### Prompt 1: Main Chat Interface (Dark Theme) + +``` +Create a dark mode AI chat interface for a developer tool called "opencode". + +DESIGN DIRECTION: +- Style: Luxury minimal, future-forward like Tesla/Rivian interiors +- Aesthetic: Digital luminescence - elements emit light rather than cast shadows +- Feel: Clean but bold, pushing boundaries while staying usable + +COLORS: +- Background: Deep void black (#0A0A0F) +- Cards/panels: Glassmorphism with very subtle white tint (rgba(255,255,255,0.04)) +- Primary accent: Electric cyan (#00D4FF) - used for glows and highlights +- Secondary accent: Soft violet (#A78BFA) +- Text: Bright white (#F5F5F7) +- Borders: Subtle glow, not hard edges + +LAYOUT: +- Left sidebar (collapsed): narrow strip with logo ◈, new session button, recent sessions list +- Main area: chat message history with clear visual hierarchy +- Bottom: prominent input field with glassmorphism, glowing cyan border on focus +- Header: session title, context/token count, settings icons + +MESSAGE STYLING: +- User messages: aligned right, subtle cyan tint background, thin cyan left border +- Assistant messages: aligned left, glass card with rounded corners, thin violet left border +- Code blocks inside messages: darker elevated background + +EFFECTS: +- Buttons glow brighter on hover (cyan halo expands) +- Cards have subtle lift on hover +- Input field has pulsing glow when focused +- Use smooth spring-based animations, not linear + +TYPOGRAPHY: +- Font: JetBrains Mono for code, Inter/Geist for UI text +- Clean, modern, monospace aesthetic + +Show this as a full desktop application interface (1440x900) with an ongoing conversation about code refactoring. +``` + +--- + +### Prompt 2: Model Selection Modal + +``` +Create a modal dialog for selecting AI models in a dark mode developer tool. + +DESIGN: +- Style: Glassmorphism modal floating over blurred dark background +- Background behind modal: Deep black (#0A0A0F) with 80% opacity overlay + blur +- Modal card: Glass effect (rgba(255,255,255,0.06)) with luminous cyan border + +MODAL CONTENT: +- Title: "SELECT MODEL" at top +- List of 4-5 AI models as selectable options: + • Claude 4 Opus - "Best for complex reasoning" + • Claude 4 Sonnet - "Balanced performance" + • GPT-4o - "OpenAI's flagship" + • Gemini 1.5 Pro - "Multimodal capabilities" + +INTERACTIONS: +- Selected option: Has filled cyan radio button, text is brighter +- Unselected: Empty circle, muted text +- Hover state: Subtle glow behind the option row +- Footer: "Cancel" ghost button, "Confirm" primary button with cyan glow + +ANIMATION: +- Modal scales in from 0.95 to 1.0 with fade +- Backdrop blurs in smoothly +- Radio selection has smooth transition + +Colors: +- Accent cyan: #00D4FF +- Background void: #0A0A0F +- Glass: rgba(255,255,255,0.06) +- Text: #F5F5F7 (primary), #A1A1AA (muted) +``` + +--- + +### Prompt 3: Empty State / Welcome Screen + +``` +Create a welcome screen for an AI coding assistant called "opencode". + +DESIGN DIRECTION: +- Dark mode, luxury minimal aesthetic +- Ethereal, digital luminescence feel +- Background: Very dark (#050508) with subtle animated gradient aurora effect (cyan/violet/rose, VERY subtle and slow) + +CONTENT: +- Large diamond logo (◈) in center, glowing softly with cyan light +- Tagline: "Code illuminated" +- Subtitle: "Your AI pair programming assistant" +- 3-4 quick action cards below: + • "Start new session" (primary CTA with cyan glow) + • "Continue recent: [session name]" + • "Explore templates" + • "Settings & preferences" + +VISUAL EFFECTS: +- Logo has subtle breathing pulse (glow expands/contracts slowly) +- Quick action cards are glass panels that lift and glow on hover +- Very subtle particle/star field effect in background (optional, keep it minimal) +- Typography is clean, modern, confident + +COLORS: +- Primary: #00D4FF (cyan) +- Secondary: #A78BFA (violet) +- Tertiary: #FF6B9D (rose) +- Background: #050508 to #0A0A0F gradient +- Text: #F5F5F7 + +Show as full screen application (1440x900), centered composition. +``` + +--- + +### Prompt 4: Light Theme Variant + +``` +Create a light mode variant of an AI chat interface for developers. + +DESIGN DIRECTION: +- Same luxury minimal aesthetic as dark mode, but inverted +- "Daylight aurora" - colors are richer/deeper for contrast +- Feel: Clean, bright, professional, premium + +COLORS: +- Background: Soft pearl (#FAFAFA) +- Cards: Frosted white glass with very subtle shadows +- Primary accent: Deeper cyan (#0891B2) for contrast +- Secondary: Rich violet (#7C3AED) +- Text: Near-black (#18181B) +- Borders: Very subtle gray, barely visible + +LAYOUT (same as dark): +- Collapsed sidebar on left +- Chat messages in center +- Glowing input at bottom (cyan glow still works in light mode) + +MESSAGE STYLING: +- User: Subtle cyan wash background, deeper cyan left border +- Assistant: White glass card, violet left border +- Code blocks: Light gray (#F4F4F5) background + +KEY DIFFERENCE FROM DARK: +- Shadows can be used (subtle, soft) +- Glass effect uses slight darkness instead of lightness +- Accents are richer/more saturated +- Same spring animations, same glow effects on focus + +Show as desktop app (1440x900) with same conversation as dark version. +``` + +--- + +### Prompt 5: Session List / Sidebar Expanded + +``` +Create an expanded sidebar view for a developer chat application. + +DESIGN: +- Dark mode, glassmorphism sidebar panel +- Sidebar width: ~280px +- Background: Slightly elevated from main (#0F0F14) + +CONTENT: +- Top: Logo "◈ opencode" with subtle cyan glow +- Below logo: "+ New Session" button (primary, cyan glow) +- Section: "RECENT" label (small, muted, uppercase) +- Session list items showing: + • Session title (truncated) + • Brief preview of last message + • Timestamp (relative: "2h ago", "Yesterday") + • Subtle icon showing model used + +INTERACTIONS: +- Current/selected session: Cyan highlight bar on left, brighter text +- Hover: Glass background appears, subtle glow +- List items have smooth slide-in animation on load + +VISUAL DETAILS: +- Divider lines are very subtle (border-subtle) +- Sessions grouped by time (Today, Yesterday, This Week) +- Scroll area with fading edge at top/bottom +- Search input at top with glass styling + +Colors: +- Selected highlight: #00D4FF +- Muted text: #71717A +- Timestamps: #A1A1AA +``` + +--- + +### Prompt 6: Tool/Permission Dialog + +``` +Create a permission request dialog for an AI coding assistant. + +CONTEXT: +The AI wants to edit a file and needs user approval. + +DESIGN: +- Dark glassmorphism modal +- Slightly different accent - using amber/warning color to indicate caution + +CONTENT: +- Header icon: Edit/pencil icon with amber glow +- Title: "Edit File Request" +- Description: "opencode wants to modify:" +- File path displayed: `src/components/Button.tsx` +- Preview section showing diff: + • Green highlighted lines for additions + • Red highlighted lines for deletions + • Context lines in muted color + +ACTIONS: +- "Allow" button - Primary with amber accent (#FFBB33) +- "Allow All" button - Secondary +- "Deny" button - Ghost/danger hint + +VISUAL DETAILS: +- Diff preview has code syntax highlighting +- Line numbers visible +- Modal has amber-tinted border (warning state) +- Keep the same glass effect and animation patterns + +Show the dialog centered over a blurred chat interface background. +``` + +--- + +### Prompt 7: Loading/Processing State + +``` +Create a message streaming/loading state for an AI response. + +DESIGN: +- Dark mode chat interface +- Assistant message in progress of being generated + +VISUAL: +- Glass card for assistant message (violet left border) +- Inside the card: + • "◈" logo pulsing with violet glow (breathing animation) + • First line of text appearing with typewriter effect + • Remaining area has subtle shimmer/skeleton loader + • Three dots "◌ ◌ ◌" with staggered pulse animation + +PROGRESS INDICATOR: +- Horizontal progress bar at bottom of card +- Uses the "filling with light" metaphor +- Empty portion: dim gray (░░░) +- Filled portion: cyan gradient (▓▓▓) +- Shows: "Analyzing codebase... 127 files" + +EFFECTS: +- Text fades in word by word +- Shimmer effect uses subtle gradient animation +- Overall feel: the AI is "thinking" and response is "materializing from light" + +Keep consistent with the Aurora design system - ethereal, luminous, not mechanical. +``` + +--- + +### Prompt 8: Settings Panel + +``` +Create a settings/preferences panel for a developer AI tool. + +DESIGN: +- Full-width panel that slides in from right (or modal) +- Dark glassmorphism style +- Organized into clear sections + +SECTIONS: +1. APPEARANCE + - Theme selector (dropdown or visual cards) + - Font size slider + +2. MODEL DEFAULTS + - Default model dropdown + - Temperature slider with visual indicator + +3. KEYBINDINGS + - List of keyboard shortcuts in two columns + - Each shows action + keybind + +4. INTEGRATIONS + - Toggle switches for: Git, LSP, MCP servers + - Each with subtle description + +VISUAL STYLE: +- Section headers: Small caps, cyan accent, muted +- Form controls: Glass styling, cyan focus states +- Toggle switches: Off = muted, On = cyan glow +- Sliders: Thin track, glowing thumb + +LAYOUT: +- Clean vertical stack with generous spacing +- Dividers between sections (very subtle) +- "Save" and "Cancel" buttons at bottom + +Background: #0F0F14 (elevated from main void) +``` + +--- + +### Prompt 9: Error State + +``` +Create an error notification/toast for an AI coding assistant. + +SCENARIO: API rate limit exceeded + +DESIGN: +- Toast notification appearing at top-right +- Dark glass with RED accent (error state) + +CONTENT: +- Left: Warning icon with red glow (⚠ or !) +- Title: "Rate Limit Exceeded" +- Description: "Please wait 30 seconds before trying again" +- Dismiss X button on right + +VISUAL: +- Glass background with subtle red tint +- Red left border (2-3px) +- Soft red outer glow (not harsh) +- Red accent: #F87171 + +ANIMATION: +- Slides in from right with spring physics +- Slight bounce at end +- Auto-dismiss with progress bar along bottom +- Fades out when dismissed + +ERROR COLOR MAPPING: +- Error: #F87171 (rose-red) +- Warning: #FFBB33 (amber) +- Success: #4ADE80 (green) +- Info: #00D4FF (cyan) + +Show toast over blurred chat interface. +``` + +--- + +### Prompt 10: Code Diff View + +``` +Create a code diff viewer for an AI coding assistant's file changes. + +DESIGN: +- Dark mode with syntax highlighting +- Side-by-side or unified diff view + +VISUAL STRUCTURE: +- Header: File path, "View Full File" link +- Line numbers on left (muted color) +- Two-tone background for changes: + • Added lines: Very subtle green tint background (#0D2818) + • Removed lines: Very subtle red tint background (#2D1216) + • Context lines: Default void background + +SYNTAX HIGHLIGHTING (Aurora theme): +- Keywords: Violet (#A78BFA) +- Functions: Cyan (#00D4FF) +- Strings: Green (#4ADE80) +- Numbers: Rose (#FF6B9D) +- Comments: Muted gray (#71717A) +- Variables: White (#F5F5F7) + +ADDITIONS: +- + symbol in green +- Line highlighted with green left border +- Changed text within line has brighter green background + +DELETIONS: +- - symbol in red +- Line highlighted with red left border +- Changed text within line has brighter red background + +GLASS CARD: +- Wrap entire diff in glass panel +- Rounded corners +- Subtle border + +Show a realistic diff of a TypeScript React component being refactored. +``` + +--- + +## Part 10: Final Summary & Implementation Guide + +### Design DNA at a Glance + +``` +┌─────────────────────────────────────────────────────────────┐ +│ │ +│ AURORA DESIGN SYSTEM │ +│ "Code illuminated from within" │ +│ │ +├─────────────────────────────────────────────────────────────┤ +│ │ +│ VISUAL MOTION │ +│ ├─ Dark-first luxury ├─ Spring physics │ +│ ├─ Digital luminescence ├─ Confident/tactile │ +│ ├─ Glassmorphism ├─ 200-350ms timing │ +│ └─ Glowing accents └─ Glow as feedback │ +│ │ +│ COLOR TYPOGRAPHY │ +│ ├─ Cyan primary ├─ JetBrains Mono (code) │ +│ ├─ Violet secondary ├─ Geist/Inter (UI) │ +│ ├─ Rose tertiary └─ Major Third scale │ +│ └─ Void backgrounds │ +│ │ +└─────────────────────────────────────────────────────────────┘ +``` + +### Quick Reference Card + +| Aspect | Specification | +|--------|---------------| +| **Primary Accent** | `#00D4FF` (Electric Cyan) | +| **Secondary** | `#A78BFA` (Soft Violet) | +| **Tertiary** | `#FF6B9D` (Rose) | +| **Dark Background** | `#0A0A0F` (Void) | +| **Light Background** | `#FAFAFA` (Pearl) | +| **Border Style** | Subtle glow, not hard edges | +| **Glass Effect** | `rgba(255,255,255,0.04)` + `blur(12px)` | +| **Border Radius** | `8px` buttons, `12px` cards, `24px` modals | +| **Animation Duration** | 150-350ms | +| **Easing** | Spring-based (`cubic-bezier(0.22, 1, 0.36, 1)`) | +| **Code Font** | JetBrains Mono | +| **UI Font** | Geist / Inter | + +### Component Mapping: Web → TUI + +| Web Component | TUI Equivalent | +|---------------|----------------| +| Cyan glow border | Double-line border `═══` | +| Glassmorphism card | Rounded box `╭─╮ │ ╰─╯` | +| Hover lift effect | Highlight color change | +| Loading shimmer | Block gradient `░▒▓█` | +| Pulsing glow | Braille spinner `⠋⠙⠹...` or `◌◍◎●` | +| User cyan tint | Cyan foreground + `┃` pipe | +| Assistant violet border | Violet `│` left margin | + +### Implementation Phases (Recommended) + +#### Phase 1: Theme Foundation +- [ ] Create `aurora-dark.json` and `aurora-light.json` theme files +- [ ] Add to TUI theme selector +- [ ] Update CSS custom properties for web console + +#### Phase 2: Core Components +- [ ] Buttons (primary, secondary, ghost, danger) +- [ ] Input fields with focus glow +- [ ] Cards with glass effect +- [ ] Modals with backdrop blur + +#### Phase 3: Chat Interface +- [ ] Message bubbles (user/assistant) +- [ ] Prompt input (hero component) +- [ ] Loading/streaming states +- [ ] Code blocks with Aurora syntax theme + +#### Phase 4: Motion Polish +- [ ] Spring animations library integration +- [ ] Enter/exit transitions +- [ ] Micro-interactions +- [ ] Loading states + +### Existing Component Touchpoints + +Based on analysis of the codebase, these are the key files to modify: + +**TUI Theme System:** +- `packages/opencode/src/cli/cmd/tui/context/theme.tsx` — Theme provider and color types +- `packages/opencode/src/cli/cmd/tui/context/theme/` — Theme JSON files (add aurora-dark.json, aurora-light.json) + +**TUI Components:** +- `packages/opencode/src/cli/cmd/tui/routes/session/index.tsx` — Main session view +- `packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx` — Prompt input component +- `packages/opencode/src/cli/cmd/tui/component/dialog-*.tsx` — All dialog components + +**Web Console:** +- `packages/console/app/src/style/token/color.css` — CSS color tokens +- `packages/console/app/src/routes/index.css` — Landing page styles +- `packages/console/app/src/component/` — Shared components + +### Success Criteria + +The Aurora redesign is successful when: + +1. **Visual Coherence**: TUI and Web feel like the same product family +2. **Motion Quality**: Interactions feel tactile and confident, not floaty or delayed +3. **Performance**: Animations run at 60fps, no jank +4. **Accessibility**: 4.5:1 contrast ratios maintained, focus states visible +5. **Brand Recognition**: Users recognize "the opencode look" instantly + +--- + +## Appendix: Theme JSON Template + +```json +{ + "$schema": "https://opencode.ai/theme.json", + "defs": { + "voidDeepest": "#050508", + "voidDeep": "#0A0A0F", + "voidBase": "#0F0F14", + "voidElevated": "#14141A", + "voidHover": "#1A1A22", + "auroraCyan": "#00D4FF", + "auroraViolet": "#A78BFA", + "auroraRose": "#FF6B9D", + "auroraAmber": "#FFBB33", + "auroraGreen": "#4ADE80", + "auroraRed": "#F87171", + "textPrimary": "#F5F5F7", + "textSecondary": "#A1A1AA", + "textTertiary": "#71717A" + }, + "theme": { + "primary": "auroraCyan", + "secondary": "auroraViolet", + "accent": "auroraRose", + "error": "auroraRed", + "warning": "auroraAmber", + "success": "auroraGreen", + "info": "auroraCyan", + "text": "textPrimary", + "textMuted": "textSecondary", + "background": "voidDeep", + "backgroundPanel": "voidBase", + "backgroundElement": "voidElevated", + "border": "#1E1E26", + "borderActive": "auroraCyan", + "borderSubtle": "#14141A", + "syntaxKeyword": "auroraViolet", + "syntaxFunction": "auroraCyan", + "syntaxString": "auroraGreen", + "syntaxNumber": "auroraRose", + "syntaxComment": "textTertiary", + "syntaxVariable": "textPrimary", + "syntaxType": "auroraAmber", + "syntaxOperator": "textSecondary", + "syntaxPunctuation": "textTertiary", + "diffAdded": "auroraGreen", + "diffRemoved": "auroraRed", + "diffAddedBg": "#0D2818", + "diffRemovedBg": "#2D1216", + "diffContext": "textTertiary", + "diffContextBg": "voidBase" + } +} +``` + +--- + +**Document created:** 2025-02-26 +**Design direction:** Aurora — Digital Luminescence +**Status:** Ready for implementation +**Last reviewed:** 2025-02-26 (UI/UX Pro Max review incorporated) + +--- + +## Part 11: Accessibility & Review Amendments + +*This section addresses feedback from the UI/UX Pro Max review and adds critical accessibility requirements.* + +### 11.1 Motion Sickness Prevention (CRITICAL) + +**Issue:** The original design suggested animated aurora backgrounds and continuous pulse effects which can trigger motion sensitivity. + +**Resolution:** + +```css +/* ═══════════════════════════════════════════════════════════ + REDUCED MOTION SUPPORT — MANDATORY + ═══════════════════════════════════════════════════════════ */ + +@media (prefers-reduced-motion: reduce) { + *, + *::before, + *::after { + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + transition-duration: 0.01ms !important; + scroll-behavior: auto !important; + } + + /* Disable specific Aurora effects */ + .aurora-background { + background: var(--void-deep) !important; + animation: none !important; + } + + .glow-pulse { + box-shadow: none !important; + } +} +``` + +**Guidelines:** +- ❌ **NEVER** use infinite animations on backgrounds or decorative elements +- ✅ Continuous animation ONLY permitted during active loading states +- ✅ Aurora drift effect should be opt-in, disabled by default +- ✅ All spring animations must have `prefers-reduced-motion` fallback + +--- + +### 11.2 Line Length Constraints (HIGH) + +**Issue:** Chat interfaces and documentation need line-length limits for readability. + +**Resolution:** + +```css +/* Add to spacing system */ +:root { + --max-prose-width: 70ch; /* 65-75 characters optimal */ +} + +/* Apply to text containers */ +.chat-message, +.documentation-content, +.modal-body { + max-width: var(--max-prose-width); +} + +/* Ensure full-width code blocks still work */ +.code-block { + max-width: 100%; + overflow-x: auto; +} +``` + +**Application:** +| Component | Max Width | +|-----------|-----------| +| Chat message bubbles | `70ch` | +| Modal body text | `70ch` | +| Documentation paragraphs | `70ch` | +| Code blocks | `100%` (scrollable) | +| Headers | No limit | + +--- + +### 11.3 Light Mode Glass Contrast (CRITICAL) + +**Issue:** Light mode glass effects were too subtle to establish visual hierarchy. + +**Resolution — Updated Light Theme:** + +```css +:root[data-theme="aurora-light"] { + /* ─── ADJUSTED GLASS OPACITIES ─── */ + --glass-subtle: rgba(0, 0, 0, 0.03); /* was 0.02 */ + --glass-light: rgba(0, 0, 0, 0.06); /* was 0.04 */ + --glass-medium: rgba(0, 0, 0, 0.09); /* was 0.06 */ + --glass-strong: rgba(0, 0, 0, 0.12); /* was 0.08 */ + + /* ─── STRONGER BORDERS ─── */ + --border-subtle: rgba(0, 0, 0, 0.08); /* was 0.06 */ + --border-default: rgba(0, 0, 0, 0.12); /* was 0.10 */ + --border-strong: rgba(0, 0, 0, 0.18); /* was 0.15 */ + + /* ─── SUBTLE SHADOWS (light mode only) ─── */ + --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05); + --shadow-md: 0 2px 4px rgba(0, 0, 0, 0.08); + --shadow-lg: 0 4px 8px rgba(0, 0, 0, 0.10); +} + +/* Apply shadows to cards in light mode only */ +[data-theme="aurora-light"] .glass-card { + box-shadow: var(--shadow-sm); +} +``` + +**Contrast Verification:** + +| Text | Background | Ratio | Status | +|------|------------|-------|--------| +| `#18181B` | `#FAFAFA` | 16.2:1 | ✅ Pass | +| `#52525B` | `#FAFAFA` | 7.4:1 | ✅ Pass | +| `#A1A1AA` | `#FAFAFA` | 3.0:1 | ⚠️ Large text only | +| `#F5F5F7` | `#0A0A0F` | 19.6:1 | ✅ Pass | +| `#A1A1AA` | `#0A0A0F` | 8.5:1 | ✅ Pass | + +--- + +### 11.4 Interactive Element Requirements (MEDIUM) + +**Issue:** Interactive cues need explicit mandates. + +**Resolution — Mandatory Interaction Patterns:** + +```css +/* All clickable elements */ +button, +[role="button"], +.clickable, +.interactive-card, +a { + cursor: pointer; +} + +/* Focus-visible states (keyboard navigation) */ +:focus-visible { + outline: 2px solid var(--aurora-cyan); + outline-offset: 2px; +} + +/* Disable outline for mouse users */ +:focus:not(:focus-visible) { + outline: none; +} +``` + +**Icon Standards:** +- ✅ **Required:** Lucide Icons (React: `lucide-react`, Web: `lucide`) +- ✅ **Acceptable:** Heroicons, Phosphor Icons +- ❌ **Forbidden:** Emoji as UI icons (OS rendering inconsistency) +- ❌ **Forbidden:** Font Awesome (too generic, doesn't fit Aurora aesthetic) + +--- + +### 11.5 WCAG Compliance Checklist + +Before implementation, verify: + +#### Color & Contrast +- [ ] All body text has 4.5:1 minimum contrast ratio +- [ ] All large text (18px+) has 3:1 minimum contrast ratio +- [ ] Focus indicators are clearly visible (2px cyan outline) +- [ ] Error states use red AND icon/text (not color alone) + +#### Motion & Animation +- [ ] `prefers-reduced-motion` media query implemented +- [ ] No infinite animations on decorative elements +- [ ] Loading animations can be paused or are under 5s +- [ ] No flashing content (3 flashes per second limit) + +#### Interaction +- [ ] All interactive elements have `cursor: pointer` +- [ ] Touch targets are minimum 44x44px +- [ ] Keyboard navigation follows visual order +- [ ] Focus states are distinct from hover states + +#### Typography +- [ ] Minimum 16px body text (mobile) +- [ ] Line height minimum 1.5 for body text +- [ ] Line length limited to 70ch for prose +- [ ] Text is resizable to 200% without loss of functionality + +--- + +### Review Response Summary + +| Feedback Item | Severity | Action Taken | +|---------------|----------|--------------| +| Motion sickness / `prefers-reduced-motion` | CRITICAL | Added §11.1 with full CSS implementation | +| Line length 65-75ch | HIGH | Added §11.2 with `--max-prose-width: 70ch` | +| Light mode glass contrast | CRITICAL | Added §11.3 with adjusted opacity values | +| `cursor-pointer` mandate | MEDIUM | Added §11.4 with interactive patterns | +| SVG icons only | MEDIUM | Added §11.4 with Lucide Icons mandate | +| WCAG compliance | — | Added §11.5 checklist | + +--- + +*Review incorporated from: UI/UX Pro Max analysis (2025-02-26)* From e9517dad759f2439accf9482e636c304e285e9d9 Mon Sep 17 00:00:00 2001 From: Prax Lannister Date: Thu, 26 Feb 2026 17:15:40 +0530 Subject: [PATCH 30/32] chore(deps): update reference submodules --- references/AionUi | 2 +- references/cline | 2 +- references/codex | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/references/AionUi b/references/AionUi index dce8776d4a15..3227e4fb9847 160000 --- a/references/AionUi +++ b/references/AionUi @@ -1 +1 @@ -Subproject commit dce8776d4a1551119d94ec10d07949ba0f863de4 +Subproject commit 3227e4fb98474db815c6b867038f41d49b68916e diff --git a/references/cline b/references/cline index f10b6f39be17..94b02bf0527c 160000 --- a/references/cline +++ b/references/cline @@ -1 +1 @@ -Subproject commit f10b6f39be17f24c3a410ae5780eb7adf15473b8 +Subproject commit 94b02bf0527cb5c4047b228ea44ce264b74dbf58 diff --git a/references/codex b/references/codex index f86087eaa8da..52aa49db1b8a 160000 --- a/references/codex +++ b/references/codex @@ -1 +1 @@ -Subproject commit f86087eaa8da9cac9245c87085adc1b7a4065f36 +Subproject commit 52aa49db1b8af1ef2b090363b08260a026ad853c From 4dfbc52c840941f0374aca90e0e491149c8c236d Mon Sep 17 00:00:00 2001 From: Prax Lannister Date: Fri, 27 Feb 2026 15:43:51 +0530 Subject: [PATCH 31/32] docs: add debugging plan and Boot.dev Python agent references --- ...-02-26-roo-code-orphaned-tool-use-debug.md | 442 ++++++++++++++++++ references/AionUi | 2 +- ...gent in Python: Agent Loop | Boot.dev.html | 30 ++ ... Python: Build an AI Agent | Boot.dev.html | 30 ++ ... in Python: Calculator App | Boot.dev.html | 30 ++ ... Python: Calling Functions | Boot.dev.html | 30 ++ ...thon: Function Declaration | Boot.dev.html | 30 ++ ...gent in Python: Gemini API | Boot.dev.html | 30 ++ ...n Python: Get File Content | Boot.dev.html | 30 ++ ...Agent in Python: Get Files | Boot.dev.html | 30 ++ ... Python: More Declarations | Boot.dev.html | 30 ++ ... Python: Multiple Messages | Boot.dev.html | 30 ++ ...nt in Python: Python Setup | Boot.dev.html | 30 ++ ...gent in Python: Run Python | Boot.dev.html | 30 ++ ...n Python: Submit Your Repo | Boot.dev.html | 30 ++ ...t in Python: System Prompt | Boot.dev.html | 30 ++ ... in Python: Token Metadata | Boot.dev.html | 30 ++ ...ent in Python: Update Code | Boot.dev.html | 30 ++ ...gent in Python: User Input | Boot.dev.html | 30 ++ ... in Python: Verbose Output | Boot.dev.html | 30 ++ ...ent in Python: Write Files | Boot.dev.html | 30 ++ references/Roo-Code | 1 + references/cline | 2 +- references/codex | 2 +- 24 files changed, 1016 insertions(+), 3 deletions(-) create mode 100644 docs/plans/2025-02-26-roo-code-orphaned-tool-use-debug.md create mode 100644 references/Build an AI Agent in Python Boot.dev/Build an AI Agent in Python: Agent Loop | Boot.dev.html create mode 100644 references/Build an AI Agent in Python Boot.dev/Build an AI Agent in Python: Build an AI Agent | Boot.dev.html create mode 100644 references/Build an AI Agent in Python Boot.dev/Build an AI Agent in Python: Calculator App | Boot.dev.html create mode 100644 references/Build an AI Agent in Python Boot.dev/Build an AI Agent in Python: Calling Functions | Boot.dev.html create mode 100644 references/Build an AI Agent in Python Boot.dev/Build an AI Agent in Python: Function Declaration | Boot.dev.html create mode 100644 references/Build an AI Agent in Python Boot.dev/Build an AI Agent in Python: Gemini API | Boot.dev.html create mode 100644 references/Build an AI Agent in Python Boot.dev/Build an AI Agent in Python: Get File Content | Boot.dev.html create mode 100644 references/Build an AI Agent in Python Boot.dev/Build an AI Agent in Python: Get Files | Boot.dev.html create mode 100644 references/Build an AI Agent in Python Boot.dev/Build an AI Agent in Python: More Declarations | Boot.dev.html create mode 100644 references/Build an AI Agent in Python Boot.dev/Build an AI Agent in Python: Multiple Messages | Boot.dev.html create mode 100644 references/Build an AI Agent in Python Boot.dev/Build an AI Agent in Python: Python Setup | Boot.dev.html create mode 100644 references/Build an AI Agent in Python Boot.dev/Build an AI Agent in Python: Run Python | Boot.dev.html create mode 100644 references/Build an AI Agent in Python Boot.dev/Build an AI Agent in Python: Submit Your Repo | Boot.dev.html create mode 100644 references/Build an AI Agent in Python Boot.dev/Build an AI Agent in Python: System Prompt | Boot.dev.html create mode 100644 references/Build an AI Agent in Python Boot.dev/Build an AI Agent in Python: Token Metadata | Boot.dev.html create mode 100644 references/Build an AI Agent in Python Boot.dev/Build an AI Agent in Python: Update Code | Boot.dev.html create mode 100644 references/Build an AI Agent in Python Boot.dev/Build an AI Agent in Python: User Input | Boot.dev.html create mode 100644 references/Build an AI Agent in Python Boot.dev/Build an AI Agent in Python: Verbose Output | Boot.dev.html create mode 100644 references/Build an AI Agent in Python Boot.dev/Build an AI Agent in Python: Write Files | Boot.dev.html create mode 160000 references/Roo-Code diff --git a/docs/plans/2025-02-26-roo-code-orphaned-tool-use-debug.md b/docs/plans/2025-02-26-roo-code-orphaned-tool-use-debug.md new file mode 100644 index 000000000000..4c70e250500a --- /dev/null +++ b/docs/plans/2025-02-26-roo-code-orphaned-tool-use-debug.md @@ -0,0 +1,442 @@ +# Systematic Root-Cause Analysis: Roo Code Orphaned `tool_use` Error + +## Phase 1: Root Cause Investigation + +### 1.1 The Error (Read Carefully) + +``` +messages.12: `tool_use` ids were found without `tool_result` blocks immediately after: + tooluse_gcKGmk7V7opjkl8G2V6v0N, tooluse_ldg9S86J2GK8UzcQqvOQXR. +Each `tool_use` block must have a corresponding `tool_result` block in the next message. +``` + +**What this tells us precisely:** + +| Fact | Implication | +| ---------------------------------------------------- | --------------------------------------------------------------------------------- | +| `messages.12` | The **13th message** (0-indexed) in the conversation array is the problem | +| Two IDs: `tooluse_gcKG…`, `tooluse_ldg9…` | The assistant called **exactly 2 tools** in that turn | +| "without `tool_result` blocks **immediately after**" | Message 13 (the next user message) does NOT contain matching `tool_result` blocks | +| Cost `$0.0000` | API rejects the request **before** processing — this is a pre-validation error | +| First attempt at 7%, $1.61 spent | **~6 successful API round-trips** happened before this (at ~$0.25/turn) | +| IDs start with `tooluse_` | This is Anthropic's native tool calling format (not OpenAI-style `call_*`) | + +### 1.2 Reproducing the Scenario + +**User's task:** "Create a latest DMG for me, before that redesign the SVG for the app icon. Use Skill UI UX Pro Max." + +This task would trigger the following tool sequence: + +1. **read_file** — Read existing SVG icon file(s) +2. **list_files** — Scan project structure for icon locations +3. **write_to_file** — Write new SVG design +4. **execute_command** — Build/package DMG + +The **"Use Skill UI UX Pro Max"** instruction is key — it tells the assistant to use a custom mode/skill, which could trigger a **`switch_mode`** or **`skill`** tool call alongside regular tools. + +At the point of failure (message 12, ~7% progress, $1.61), the assistant would have been in the early **file reading/scanning phase**, likely calling 2 tools in parallel. + +### 1.3 Backward Trace: From Error to Root Cause + +``` +Error received by: Anthropic API server + ↑ Sent by: this.api.createMessage() at Task.ts:4271 + ↑ Built from: cleanConversationHistory at Task.ts:4193 + ↑ Derived from: effectiveHistory → mergedForApi → messagesWithoutImages + ↑ Sourced from: this.apiConversationHistory (the persistent storage) + ↑ CORRUPTED HERE: message 12 has tool_use but message 13 lacks tool_result +``` + +**The question is: HOW did message 13 get saved without the tool_results?** + +There are exactly 3 code paths that save user messages with `tool_result` blocks: + +#### Path A: Normal tool execution flow (`recursivelyMakeClineRequests`) + +``` +Task.ts:3542 → Save assistant message (with tool_use blocks) +Task.ts:3561 → presentAssistantMessage(this) → executes tools → pushToolResult() +Task.ts:3581 → pWaitFor(() => this.userMessageContentReady) +Task.ts:2651 → addToApiConversationHistory({ role: "user", content: finalUserContent }) +``` + +In this path, `finalUserContent` at line 2641 includes `this.userMessageContent` which is populated by `pushToolResult` during tool execution. The `pWaitFor` at 3581 blocks until all tools complete. + +**Could this path lose tool_results?** → Only if `presentAssistantMessage` fails to call `pushToolResult`. + +#### Path B: `flushPendingToolResultsToHistory()` (delegation via `new_task`) + +``` +Task.ts:1048 → Check userMessageContent.length > 0 +Task.ts:1067 → Wait for assistantMessageSavedToHistory (30s timeout) +Task.ts:1085 → Build user message from this.userMessageContent +Task.ts:1096 → Push to apiConversationHistory +``` + +**Could this path lose tool_results?** → Yes, if abort/timeout triggers. + +#### Path C: Task resume (`resumeTaskFromHistory`) + +``` +Task.ts:2109-2117 → Generate placeholder tool_results for all tool_use blocks +Task.ts:2142-2159 → Find missing tool_results and fill them in +Task.ts:2217 → overwriteApiConversationHistory(modifiedApiConversationHistory) +``` + +**Could this path lose tool_results?** → No, it explicitly generates them. + +--- + +### 1.4 The Root Cause: `presentAssistantMessage` + `AskIgnoredError` = Silent Failure + +Here is the critical code path that causes the corruption: + +#### Step 1: Stream completes, assistant has 2 tool_use blocks + +At [`Task.ts:3542`](references/Roo-Code/src/core/task/Task.ts:3542): + +```ts +await this.addToApiConversationHistory( + { role: "assistant", content: assistantContent }, // Contains 2 tool_use blocks + reasoningMessage || undefined, +) +this.assistantMessageSavedToHistory = true // ← message 12 is now persisted +``` + +#### Step 2: Tools begin executing via `presentAssistantMessage` + +At [`presentAssistantMessage.ts:61`](references/Roo-Code/src/core/assistant-message/presentAssistantMessage.ts:61), the function is called to process each tool_use block. Each tool handler calls `askApproval()` which internally calls `cline.ask()`. + +#### Step 3: `ask()` throws `AskIgnoredError` — the silent killer + +At [`Task.ts:1304`](references/Roo-Code/src/core/task/Task.ts:1304): + +```ts +throw new AskIgnoredError("updating existing partial") +``` + +And at [`Task.ts:1312`](references/Roo-Code/src/core/task/Task.ts:1312): + +```ts +throw new AskIgnoredError("new partial") +``` + +This error is thrown when: + +- A tool starts streaming its approval request as a partial message +- Another partial update comes in before the user responds +- The earlier ask is **silently abandoned** + +#### Step 4: `handleError` catches `AskIgnoredError` but DOES NOTHING + +At [`presentAssistantMessage.ts:540-544`](references/Roo-Code/src/core/assistant-message/presentAssistantMessage.ts:540): + +```ts +const handleError = async (action: string, error: Error) => { + // Silently ignore AskIgnoredError - this is an internal control flow + // signal, not an actual error. + if (error instanceof AskIgnoredError) { + return // ← NO tool_result pushed! Silent return! + } + // ... + pushToolResult(formatResponse.toolError(errorString)) +} +``` + +**THIS IS THE BUG.** + +When `AskIgnoredError` is caught: + +- `pushToolResult()` is **never called** +- `hasToolResult` remains `false` +- The `tool_use` block has **no corresponding `tool_result`** +- But the tool handler returns normally (no re-throw) + +#### Step 5: The loop continues, user message gets saved incomplete + +After `presentAssistantMessage` completes all blocks: + +- `userMessageContentReady` is set to `true` +- The `pWaitFor` at [`Task.ts:3581`](references/Roo-Code/src/core/task/Task.ts:3581) resolves +- The user message is saved at [`Task.ts:2651`](references/Roo-Code/src/core/task/Task.ts:2651) with **1 out of 2 tool_results** (or 0 out of 2) +- The `validateAndFixToolResultIds` at [`Task.ts:1016`](references/Roo-Code/src/core/task/Task.ts:1016) SHOULD catch this... + +#### Step 6: But wait — does `validateAndFixToolResultIds` catch it? + +At [`validateToolResultIds.ts:118-121`](references/Roo-Code/src/core/task/validateToolResultIds.ts:118): + +```ts +const missingToolUseIds = toolUseBlocks + .filter((toolUse) => !existingToolResultIds.has(toolUse.id)) + .map((toolUse) => toolUse.id) +``` + +Yes, it detects the missing IDs. And at line 220-228: + +```ts +const missingToolResults = stillMissingToolUseIds.map((toolUse) => ({ + type: "tool_result" as const, + tool_use_id: toolUse.id, + content: "Tool execution was interrupted before completion.", +})) +const finalContent = missingToolResults.length > 0 ? [...missingToolResults, ...correctedContent] : correctedContent +``` + +**It injects placeholder tool_results!** So... why does the error still happen? + +#### Step 7: THE REAL BUG — `askApproval` catches `AskIgnoredError` but the tool handler itself ALSO throws it + +Look at the tool handler flow more carefully. The `askApproval` function at [`presentAssistantMessage.ts:494-529`](references/Roo-Code/src/core/assistant-message/presentAssistantMessage.ts:494) calls `cline.ask()`. If `ask()` throws `AskIgnoredError`, it **propagates up through `askApproval`**: + +```ts +const askApproval = async (...) => { + const { response, text, images } = await cline.ask(type, ...) // ← throws AskIgnoredError! + // code below never executes +} +``` + +The `AskIgnoredError` escapes `askApproval`, enters the tool handler (e.g., `readFileTool.handle()`), which catches it through `handleError`: + +```ts +// Inside a tool handler like readFileTool: +try { + const approved = await askApproval("tool", ...) // ← AskIgnoredError thrown here + // never reaches pushToolResult() +} catch (error) { + await handleError("reading file", error) // ← silently returns for AskIgnoredError +} +``` + +After `handleError` silently returns: + +- **No `tool_result` was pushed** +- The tool handler returns normally +- `presentAssistantMessage` moves to the next block + +**But this should be caught by `validateAndFixToolResultIds`...** unless there's a timing issue. + +#### Step 8: THE ACTUAL ROOT CAUSE — The AskIgnoredError is thrown DURING tool approval streaming, which happens DURING the API response stream + +The key insight is **when** this happens: + +1. The API response is still streaming (`didCompleteReadingStream = false`) +2. `presentAssistantMessage` is called to present tool #1 (partial) +3. Tool #1 calls `askApproval(type, partialMessage, progressStatus)` with `partial=true` +4. `ask()` throws `AskIgnoredError("new partial")` for the first partial +5. `handleError` silently ignores it — **no tool_result pushed** +6. `presentAssistantMessage` unlocks at line 933 and returns +7. Stream continues, tool #1 becomes complete (non-partial) +8. `presentAssistantMessage` is called again +9. **But now `cline.currentStreamingContentIndex` has already been incremented at line 957** +10. The complete version of tool #1 is **SKIPPED** — it was "already presented" as partial +11. Tool #2 is presented and executed +12. Tool #2's `tool_result` IS pushed + +So the final user message has: `[tool_result for tool #2]` but NOT `[tool_result for tool #1]`. + +**WAIT** — let me re-read line 940 more carefully: + +```ts +if (!block.partial || cline.didRejectTool || cline.didAlreadyUseTool) { +``` + +This only advances the index when `!block.partial`. A partial block does NOT advance the index. So tool #1 partial → `AskIgnoredError` → returns WITHOUT advancing index → tool #1 complete → presented again → should work. + +Let me trace more carefully... + +#### Step 8 (Revised): The REAL root cause — `AskIgnoredError` thrown for a NON-PARTIAL tool + +The `AskIgnoredError` can be thrown even for non-partial asks. Look at [`Task.ts:1474-1476`](references/Roo-Code/src/core/task/Task.ts:1474): + +```ts +throw new AskIgnoredError("superseded") +``` + +This happens when `this.lastMessageTs !== askTs` — meaning **another ask was created while this one was pending**. This is the "superseded" case. + +**Scenario for 2 parallel tools:** + +1. Stream completes with 2 tool_use blocks: `[tool_A, tool_B]` +2. `presentAssistantMessage` processes tool_A (complete, non-partial) +3. tool_A calls `askApproval("tool", ...)` → calls `cline.ask("tool", ...)` +4. `ask()` creates a new ClineMessage with `askTs = Date.now()` +5. `ask()` reaches `pWaitFor` at line 1444, waiting for user response +6. **Auto-approval kicks in** at line 1368 → `this.approveAsk()` → sets `askResponse` +7. `pWaitFor` resolves → `ask()` returns → tool_A executes → `pushToolResult()` ✓ +8. `presentAssistantMessage` increments index to tool_B +9. tool_B calls `askApproval("tool", ...)` → calls `cline.ask("tool", ...)` +10. This works normally too. ✓ + +So parallel tools in sequence shouldn't cause the issue with auto-approval. BUT: + +#### Step 8 (Final): The TRUE root cause — Mid-stream crash between assistant save and tool execution + +Let me look at the exception handler at [`Task.ts:3722-3729`](references/Roo-Code/src/core/task/Task.ts:3722): + +```ts +} catch (error) { + // This should never happen since the only thing that can throw an + // error is the attemptApiRequest, which is wrapped in a try catch + // that sends an ask where if noButtonClicked, will clear current + // task and destroy this instance. + return true // Needs to be true so parent loop knows to end task. +} +``` + +And the `presentAssistantMessage` at line 62-64: + +```ts +if (cline.abort) { + throw new Error(`[Task#presentAssistantMessage] task ... aborted`) +} +``` + +**HERE IS THE ACTUAL ROOT CAUSE:** + +1. Assistant message with 2 `tool_use` blocks is saved to history (line 3542) ← **message 12** +2. `this.assistantMessageSavedToHistory = true` (line 3546) +3. `presentAssistantMessage(this)` is called (line 3561) to present partial blocks +4. During tool execution, **`cline.abort` gets set to `true`** (user cancels, or error, or timeout) +5. `presentAssistantMessage` throws at line 63: `throw new Error("...aborted")` +6. This throw propagates up through the tool execution +7. **`pushToolResult` was never called for either tool** +8. The error reaches the `catch` at Task.ts:3722 +9. It returns `true` — task ends +10. **BUT message 12 (assistant with 2 tool_use blocks) is ALREADY in the persistent history** +11. **No user message with tool_results was ever saved as message 13** + +When the user resumes the task: + +- `resumeTaskFromHistory` at Task.ts:2090+ checks the LAST message +- If the last message is the assistant with tool_use, it generates placeholders → **works** +- But if other messages were appended AFTER message 12 before the abort (e.g., error messages, api_req_started), the last message is NOT message 12 +- The resume logic only fixes the last assistant-user pair, not arbitrary positions + +**The corruption is permanent.** + +--- + +## Phase 2: Pattern Analysis + +### Working example + +When `abort` is NOT set during tool execution: + +1. All tools execute normally +2. All `pushToolResult()` calls complete +3. `userMessageContent` has all `tool_result` blocks +4. User message saved with all results → ✓ + +### Broken example (this bug) + +When `abort` IS set during tool execution (e.g., user clicks cancel, network timeout, extension deactivation): + +1. Some tools may have executed, others not +2. `presentAssistantMessage` throws on abort check +3. `userMessageContent` has partial or zero `tool_result` blocks +4. User message is NEVER saved (abort exits the loop) +5. But assistant message with `tool_use` blocks is ALREADY saved → ✗ + +### The key difference + +The **assistant message is saved BEFORE tool execution** (line 3542), but the **user message with tool_results is saved AFTER all tools complete** (line 2651). Any interruption between these two writes creates an orphaned `tool_use`. + +--- + +## Phase 3: Hypothesis + +**Hypothesis:** The root cause is that aborting/cancelling a task between the assistant message save (Task.ts:3542) and the user message save (Task.ts:2651) leaves the API conversation history in an invalid state where an assistant message has `tool_use` blocks without a following `tool_result` message. The `validateAndFixToolResultIds` safety net only runs at write-time for new messages, not as a pre-flight check before API calls, so the corruption is never repaired on retry. + +**Evidence supporting this:** + +1. Error occurs at a fixed position (`messages.12`) — consistent with a single write of assistant message followed by no user message write +2. Two tool_use IDs — consistent with a multi-tool call that was interrupted +3. Task was at 7% progress — early in execution, tools were still being called +4. The error is **permanent** — every retry hits the same corrupted history because no code path repairs it +5. Roo Code explicitly has comments about this risk in the codebase (lines 3401-3404, 1054-1057) + +--- + +## Phase 4: Proposed Fix + +### Fix 1: Pre-flight history validation in `attemptApiRequest` + +At [`Task.ts:4193`](references/Roo-Code/src/core/task/Task.ts:4193), after building `cleanConversationHistory`, add: + +```ts +// Repair orphaned tool_use blocks before sending to API +for (let i = 0; i < cleanConversationHistory.length - 1; i++) { + const msg = cleanConversationHistory[i] + const next = cleanConversationHistory[i + 1] + + if (msg.role !== "assistant") continue + + const content = Array.isArray(msg.content) ? msg.content : [] + const toolUseBlocks = content.filter((b) => b.type === "tool_use") + if (toolUseBlocks.length === 0) continue + + if (next.role !== "user") { + // Insert a synthetic user message with tool_results + const toolResults = toolUseBlocks.map((t) => ({ + type: "tool_result", + tool_use_id: t.id, + content: "Tool execution was interrupted.", + })) + cleanConversationHistory.splice(i + 1, 0, { role: "user", content: toolResults }) + continue + } + + // Check if next user message has all required tool_results + const nextContent = Array.isArray(next.content) ? next.content : [] + const resultIds = new Set(nextContent.filter((b) => b.type === "tool_result").map((b) => b.tool_use_id)) + const missing = toolUseBlocks.filter((t) => !resultIds.has(t.id)) + + if (missing.length > 0) { + const repairs = missing.map((t) => ({ + type: "tool_result", + tool_use_id: t.id, + content: "Tool execution was interrupted.", + })) + next.content = [...repairs, ...nextContent] + } +} +``` + +### Fix 2: Ensure abort saves partial tool_results + +At [`Task.ts:3722`](references/Roo-Code/src/core/task/Task.ts:3722), before returning: + +```ts +} catch (error) { + // Save any accumulated tool_results to prevent orphaned tool_use blocks + if (this.userMessageContent.length > 0) { + await this.flushPendingToolResultsToHistory() + } + return true +} +``` + +### Fix 3: Detect and break the infinite retry loop + +In `attemptApiRequest`'s error handler, detect this specific Anthropic error pattern and auto-repair: + +```ts +if (error.message?.includes("tool_use` ids were found without `tool_result`")) { + await this.repairOrphanedToolUseBlocks() + yield * this.attemptApiRequest(retryAttempt + 1) + return +} +``` + +--- + +## Summary + +| Layer | What happens | File:Line | +| ----------------- | -------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| **Trigger** | User cancels task, or network drops, or abort signal fires | `Task.ts:62-64` | +| **Corruption** | Assistant message (with `tool_use`) already saved, tool execution interrupted before `tool_result` saved | `Task.ts:3542` (save) → `Task.ts:3561` (execute) → abort before `Task.ts:2651` (save results) | +| **Missing guard** | `presentAssistantMessage` silently drops tool_results when `AskIgnoredError` or abort occurs | `presentAssistantMessage.ts:225`, `543` | +| **No recovery** | `validateAndFixToolResultIds` only runs at write-time, not pre-flight | `Task.ts:1016` | +| **Infinite loop** | `attemptApiRequest` retries with same corrupted history | `Task.ts:4337` | +| **No escape** | User must start a new session; no "repair history" option exists | — | diff --git a/references/AionUi b/references/AionUi index 3227e4fb9847..8a6c0e10da44 160000 --- a/references/AionUi +++ b/references/AionUi @@ -1 +1 @@ -Subproject commit 3227e4fb98474db815c6b867038f41d49b68916e +Subproject commit 8a6c0e10da4471e6d59ec42497807d359b2376a2 diff --git a/references/Build an AI Agent in Python Boot.dev/Build an AI Agent in Python: Agent Loop | Boot.dev.html b/references/Build an AI Agent in Python Boot.dev/Build an AI Agent in Python: Agent Loop | Boot.dev.html new file mode 100644 index 000000000000..dcf33d3cfccf --- /dev/null +++ b/references/Build an AI Agent in Python Boot.dev/Build an AI Agent in Python: Agent Loop | Boot.dev.html @@ -0,0 +1,30 @@ + + + Learn backend development the smart way | Boot.dev